vscode-terosHDL icon indicating copy to clipboard operation
vscode-terosHDL copied to clipboard

[Documenter] Consecutive virtualbus groups still not handled correctly in v5

Open Luca-s-Works opened this issue 2 years ago • 1 comments

Hi there,

I make large use of @virtualbus while documenting my code. I've noticed that the Documenter tool output is still broken for two or more consecutive virtualbus groups. In particular, only the ports of the first virtualbus is correctly grouped together; following ports are shown individually for all other groups.

To Reproduce Experimenting with the example in the TerosHDL documentation I am experiencing this issue only with the inline port comment coding-style (the one I prefer), for example:

      --! @virtualbus video_in_axi_stream @dir in a slave axi stream interface for video in
      video_in_tdata  : in  std_logic_vector(23 downto 0);      --! axis data bus, transfers two pixels per clock with pixel width of 12 bits in mono color
      video_in_tlast  : in  std_logic;                          --! axis last, used to indicate the end of packet which in video context refer to line
      video_in_tuser  : in  std_logic_vector(0 downto 0);       --! axis user, usually is user defined but in video context it marks the start of a frame
      video_in_tvalid : in  std_logic;                          --! axis valid handshake signal
      video_in_tready : out std_logic;                          --! axis ready handshake signal
      --! @end

vbus_issue

The issue seems to not manifest in case either:

  1. a single port is placed in between two virtualbus groups
  2. the first port of the virtualbus group is not commented,
      --! @virtualbus video_in_axi_stream @dir in a slave axi stream interface for video in
      video_in_tdata  : in  std_logic_vector(23 downto 0);
      video_in_tlast  : in  std_logic;                          --! axis last, used to indicate the end of packet which in video context refer to line
      video_in_tuser  : in  std_logic_vector(0 downto 0);       --! axis user, usually is user defined but in video context it marks the start of a frame
      video_in_tvalid : in  std_logic;                          --! axis valid handshake signal
      video_in_tready : out std_logic;                          --! axis ready handshake signal
      --! @end
  1. or the first port of the virtualbus group is commented above
      --! @virtualbus video_in_axi_stream @dir in a slave axi stream interface for video in
      --! axis data bus, transfers two pixels per clock with pixel width of 12 bits in mono color
      video_in_tdata  : in  std_logic_vector(23 downto 0);
      video_in_tlast  : in  std_logic;                          --! axis last, used to indicate the end of packet which in video context refer to line
      video_in_tuser  : in  std_logic_vector(0 downto 0);       --! axis user, usually is user defined but in video context it marks the start of a frame
      video_in_tvalid : in  std_logic;                          --! axis valid handshake signal
      video_in_tready : out std_logic;                          --! axis ready handshake signal
      --! @end

vbus_1

vbus_2

Luca-s-Works avatar Aug 25 '23 14:08 Luca-s-Works

Ehi, just came back to clarify that the desired behavior is to been able to write VHDL entity ports, grouping them in virtualbuses like this:

      --! @virtualbus video_in_axi_stream @dir in a slave axi stream interface for video in
      video_in_tdata  : in  std_logic_vector(23 downto 0);      --! axis data bus, transfers two pixels per clock with pixel width of 12 bits in mono color
      video_in_tlast  : in  std_logic;                          --! axis last, used to indicate the end of packet which in video context refer to line
      video_in_tuser  : in  std_logic_vector(0 downto 0);       --! axis user, usually is user defined but in video context it marks the start of a frame
      video_in_tvalid : in  std_logic;                          --! axis valid handshake signal
      video_in_tready : out std_logic;                          --! axis ready handshake signal
      --! @end
      --! @virtualbus video_out_axi_stream @dir out @keepports a master axi stream interface for video out
      video_out_tdata  : out std_logic_vector(23 downto 0);     --! axis data bus, transfers two pixels per clock with pixel width of 10 bits in mono color
      video_out_tlast  : out std_logic;                         --! axis last, used to indicate the end of packet which in video context refer to line
      video_out_tuser  : out std_logic_vector(0 downto 0);      --! axis user, usually is user defined but in video context it marks the start of a frame
      video_out_tvalid : out std_logic;                         --! axis valid handshake signal
      video_out_tready : in  std_logic;                         --! axis ready handshake signal
      --! @end

Luca-s-Works avatar Aug 25 '23 14:08 Luca-s-Works