diff options
author | Tristan Gingold <tgingold@free.fr> | 2022-12-21 08:27:56 +0100 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2022-12-21 08:27:56 +0100 |
commit | d45f4a31e557d54314765265d8f488a45dc8fc30 (patch) | |
tree | b07084d767d2652029cd34649d0b9cbe6788b2eb /testsuite | |
parent | 432c019c1113b880fc554e94e9a66b7efd1d303b (diff) | |
download | ghdl-d45f4a31e557d54314765265d8f488a45dc8fc30.tar.gz ghdl-d45f4a31e557d54314765265d8f488a45dc8fc30.tar.bz2 ghdl-d45f4a31e557d54314765265d8f488a45dc8fc30.zip |
testsuite/pyunit/libghdl: adjust Complex, add Complex_Multilines
Diffstat (limited to 'testsuite')
-rw-r--r-- | testsuite/pyunit/libghdl/Comments.py | 3 | ||||
-rw-r--r-- | testsuite/pyunit/libghdl/examples/Complex.vhdl | 6 | ||||
-rw-r--r-- | testsuite/pyunit/libghdl/examples/Complex_Multilines.vhdl | 138 |
3 files changed, 143 insertions, 4 deletions
diff --git a/testsuite/pyunit/libghdl/Comments.py b/testsuite/pyunit/libghdl/Comments.py index 68dfaf3b5..b46eef82d 100644 --- a/testsuite/pyunit/libghdl/Comments.py +++ b/testsuite/pyunit/libghdl/Comments.py @@ -306,4 +306,7 @@ class Complex(Base): """More exhaustive""" self.checkFile(self._root / "Complex.vhdl") + def test_complex(self) -> None: + self.checkFile(self._root / "Complex_Multilines.vhdl") + # Empty line before to easy cut & put diff --git a/testsuite/pyunit/libghdl/examples/Complex.vhdl b/testsuite/pyunit/libghdl/examples/Complex.vhdl index 87276a2d5..40eaa80ff 100644 --- a/testsuite/pyunit/libghdl/examples/Complex.vhdl +++ b/testsuite/pyunit/libghdl/examples/Complex.vhdl @@ -14,8 +14,6 @@ end architecture; package p1 is end package; --- package body should be supported too to keep parity, but I have currently no usecase for it. - -- :ctx1: comments before design units -- :ctx1: might be multiline context ctx1 is @@ -41,7 +39,7 @@ entity e2 is constant FREQUENCY : positive; constant BITS : positive; -- :BITS: comment after a generic are mostly single line, -- :BITS: but could be multi line too - -- in case comment is before and after + -- :BITS: in case comment is before and after constant DEBUG : boolean -- :DEBUG: the after has presidency ); port ( @@ -56,7 +54,7 @@ begin end architecture; --- As packages define public elements like constants, types and sub-programs, we are interested in such documentation too. +-- :p2: As packages define public elements like constants, types and sub-programs, we are interested in such documentation too. package p2 is -- :p2: comments in design units (python doc-string style) -- :p2: might be multi line diff --git a/testsuite/pyunit/libghdl/examples/Complex_Multilines.vhdl b/testsuite/pyunit/libghdl/examples/Complex_Multilines.vhdl new file mode 100644 index 000000000..01d7fe129 --- /dev/null +++ b/testsuite/pyunit/libghdl/examples/Complex_Multilines.vhdl @@ -0,0 +1,138 @@ +/* :e1: comments before desIgn units (javadoc / .net documentation style) + * :e1: mIGht be multiline + */ +entity e1 is +end entitY; + +/* :a1: comments before design units + * :a1: might be multiline + */ +architecture a1 of e1 is +begin +end architecture; + +/* :p1: comments before design units + * :p1: might be multiline + */ +package p1 is +end package; + +/* package body should be supported too to keep parity, but I have currently no usecase for it. */ + +/* :ctx1: comments before design units + * :ctx1: might be multiline + */ +context ctx1 is +end context; + +/* :cfg1: comments before design units + * :cfg1: might be multiline + */ +configuration cfg1 of e1 is + for a1 + end for; +end configuration; + + +library ieee; +use ieee.std_logic_1164.all; + +entity e2 is + /* :e2: comments in design units (python doc-string style) + * :e2: might be multi line + */ + generic ( + /* :FREQUENCY: comment before a generic + * :FREQUENCY: might be multiline + */ + constant FREQUENCY : positive; + constant BITS : positive; /* :BITS: comment after a generic are mostly single line, + * :BITS: but could be multi line too + */ + /* in case comment is before and after */ + constant DEBUG : boolean /* :DEBUG: the after has presidency */ + ); + port ( + signal Clock : in std_logic /* :Clock: same as for generics */ + ); +end entity; + +architecture a2 of e2 is + /* :a2: comments in design units (python doc-string style) + * :a2: might be multi line + */ +begin + +end architecture; + +/* As packages define public elements like constants, types and sub-programs, we are interested in such documentation too. */ +package p2 is + /* :p2: comments in design units (python doc-string style) + * :p2: might be multi line + */ + + /* :DEBUG: comment before */ + constant DEBUG : boolean := TRUE; + constant SYNC_STAGES : positive := 3; /* :SYNC_STAGES: comment after */ + + /* :AType1: comment before */ + type AType1 is array(natural range <>) of bit; + type AType2 is array(natural range <>) of bit; /* :AType2: comment after */ + + /* same applies to subtype, alias, attributes, ... */ + + /* :RType: comment before */ + type RType is record + /* :RType: xor comment inside */ + + /* :elem1: per element comment before (note the comment "block" is separated by newlines) */ + elem1 : integer; + elem2 : integer; /* :elem2: per element comment behind */ + end record; + + /* :log2: as functions are longer in definitions, it might be written before */ + function log2(param : positive) return natural; + + function log2( + /* :log2: otoh, we also want to document parameters too (similar to a record with comments) */ + + /* :param1: comment before */ + param1 : integer; + param2 : boolean /* :param2: comment after */ + ) return natural; + + /* this applies to procedures as well. */ +end package; + +context ctx2 is + /* :ctx2: comments in design units (python doc-string style) + * :ctx2: might be multi line + */ +end context; + +configuration cfg2 of e2 is + /* :cfg2: comments in design units (python doc-string style) + * :cfg2: might be multi line + */ + for a2 + end for; +end configuration; + + +/* This should allow for any kind of documentation style and embedded documentation language. + * A real implementation might use similar rules are Python+docutils+Sphinx. Here we would e.g. + * document a function either before (or inside) a function declaration and use the + * :arg name: description + * syntax. + */ + + +/* :math: Package `math` provides math extensions not provided by the IEEE packages. */ +package math is + /* :log2: Computes the logarithm to base 2. + * :log2: + * :log2: :arg param: Input value + * :log2: :returns: Logarithm + */ + function log2(param : positive) return natural; +end package; |