Stephen Williams
279b2665af
Merge pull request #577 from larsclausen/packed_array
...
Support signals of packed arrays of packed types
2022-01-14 20:53:30 -08:00
Lars-Peter Clausen
9ec42b1b8c
Check that packed array base-type is packed
...
When creating a signal of a packed array it is checked that the base-type
of the packed array is a packed type.
But this check is only done if the packed array itself is the type of the
signal. Placing the packed array in a struct or class will elaborate fine,
but then crash during simulation.
E.g.
```
typedef real myreal;
struct packed {
myreal [1:0] p;
} s;
```
Move the check from signal creation to type elaboration, so that it is not
possible to create a packed type with a non-packed base-type.
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2022-01-09 20:31:21 +01:00
Lars-Peter Clausen
90edf48ac6
Handle invalid enum dimensions
...
Specifying and enum with an invalid dimension range results in an assert or
segfault. E.g. `enum [$] E { ... }`.
Use the `evaluate_ranges()` function to elaborate the enum dimensions. This
functions has proper error checking and recovery built-in.
In addition verify that there is at most one packed dimension.
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2022-01-08 16:21:45 +01:00
Martin Whitaker
e1d6fd78f4
Fix genvar increment/decrement operations to be signed (issue #568 )
2021-12-13 20:45:57 +00:00
Martin Whitaker
3c23180af3
Remove unreachable code.
...
pform_get_or_make_wire() should always return a valid pointer. Replace the
existing unreachable code with an assertion.
2021-11-11 19:02:40 +00:00
Martin Whitaker
dcc9b59f6d
Support SV [size] dimension for module and gate instances (issue #553 ).
...
Also output a proper error message if multiple dimensions are supplied
instead of failing an assertion.
2021-11-06 00:02:38 +00:00
Martin Whitaker
ecbbb60fb6
Remove "using namespace std" from compiler header files and fix the fallout.
2021-11-04 16:55:03 +00:00
Martin Whitaker
ceb2581368
Fix naming of unnamed generate blocks (issue #528 )
...
The IEEE standard specifies that the numbering of generate blocks
restarts at 1 in each new scope, and that the 'else' part of an 'if'
construct is part of the same constuct, so has the same number.
2021-08-04 11:58:18 +01:00
Martin Whitaker
c34167b2c0
Fix detection of directly nested generate constructs.
...
If a generate construct is enclosed in a begin-end pair, it can't
be directly nested (1364-2005 section 12.4.2).
2021-08-04 10:37:26 +01:00
Martin Whitaker
389e2a3a94
Use a list instead of a set for storing the potential package imports.
...
This eliminates some indeterminism in the error messages, which was
causing occasional failures in CI. We don't expect this list to be
very large, so the O(n) insertion time should not be a problem.
2021-07-31 18:36:18 +01:00
Martin Whitaker
cf0bf4d9aa
Record the actual data type when a module port has an enum type.
...
This fixes assignment compatibility problems (issue #498 ).
2021-04-28 20:18:04 +01:00
Martin Whitaker
c7eaa06a2b
Add support for module input port default values (issue #489 ).
2021-03-10 08:21:42 +00:00
Cary R
60a77b08d2
Add compiler and the start of vvp support for ->>
2021-02-19 23:21:51 -08:00
Cary R
7bb8a4463f
Time literals need to be rounded using the time precision
2021-02-13 01:11:43 -08:00
Cary R
18392a464d
Some clean up and add initial support for elaboration system tasks
2021-02-01 00:22:01 -08:00
Cary R
d1eb4befcc
Add initial parsing for let construct
2021-01-18 13:06:44 -08:00
Cary R
da7484eea1
Update compiler with suggestions from cppcheck
2021-01-02 14:04:46 -08:00
Stephen Williams
752401b88c
output ports of real type are variables, not wires.
2020-12-29 22:00:04 -08:00
Stephen Williams
16646c547c
Rework parsing of parameter types
...
Use the common data_type_or_implicit rules to support type
definitions for parameters. This eliminates a bunch of special
rules in parse.y, and opens the door for parameters having
more complex types.
2020-12-27 21:17:57 -08:00
Martin Whitaker
d6e01d0c55
Fix assertion failure when no value supplied with -P option (GitHub issue #377 )
2020-10-24 22:48:00 +01:00
Martin Whitaker
33b822d997
Add support for local genvar declaration in generate loops.
...
As requested in GitHub issue #304 .
2020-01-31 20:29:22 +00:00
Martin Whitaker
0023804777
Add support for increment/decrement operators in generate loop iteration.
...
As requested in GitHub issue #303 .
2020-01-30 21:45:04 +00:00
Martin Whitaker
8dc395940d
Fix issue #298 : elaborate types in the scope where they were declared.
...
The compiler elaborates types on the fly as they are used. For user-
defined types (typedefs) we must do the elaboration in the scope where
the type was declared, not in the scope where it is used.
2019-12-22 17:29:23 +00:00
Martin Whitaker
732a763188
Record typedef name in data_type_t struct.
...
This will be used to locate the scope where the type was declared.
2019-12-22 11:21:05 +00:00
Martin Whitaker
95147a2cc2
Record data type for all pform "wires" added the new way.
...
For unpacked arrays, record both the array type and the base type.
This will be needed to elaborate typedefs in the correct scope.
2019-12-22 11:03:50 +00:00
Martin Whitaker
862010ac19
SV does not require constant expression in variable initialisation.
2019-10-05 20:11:38 +01:00
Stephen Williams
2ced291d33
Replace an assert with an internal error message.
2019-10-03 08:38:36 -07:00
Martin Whitaker
ed75bc22ec
Fix incorrect loop termination test when searching for typedefs.
2019-10-03 00:32:09 +01:00
Cary R
eeae2bfee9
Fix a syntax issue found while compiling with gcc 5.4
2019-10-01 18:58:28 -07:00
Martin Whitaker
7cead04e6a
Merge branch 'master' of github.com:steveicarus/iverilog
2019-10-02 00:16:18 +01:00
Stephen Williams
5651adf73a
Handle breakage in nested module parsing.
2019-10-01 15:19:46 -07:00
Martin Whitaker
1cc872be8c
Downward references may also activate potential imports.
2019-10-01 09:08:15 +01:00
Martin Whitaker
1fca7b41a4
Delay potential imports for task/function calls until end of scope.
...
A local task/function definition takes precedence, even if it appears
after the call.
2019-10-01 09:08:07 +01:00
Martin Whitaker
c5c264400e
Add support for package scope resolution for named events.
2019-10-01 09:07:54 +01:00
Martin Whitaker
12fe4f2bf3
Fix handling of wildcard-imported types.
...
Don't add them to the explicit imports until they are referenced legally.
Stop searching when a matching name is found, even if it isn't a type name.
2019-10-01 09:07:48 +01:00
Martin Whitaker
b0142a6406
Add support for named events in packages.
2019-10-01 09:07:39 +01:00
Martin Whitaker
439688fa46
Add anonymous enums to the scope local symbols.
2019-09-27 22:19:30 +01:00
Martin Whitaker
2ae910750b
Put generate case item block names in correct scope.
...
The compiler creates an artificial scope around the case items. We need
to add the block names to the real containing scope.
2019-09-27 22:19:30 +01:00
Martin Whitaker
03c4c63df1
Fix file/line reported for duplicate named blocks.
2019-09-27 22:19:30 +01:00
Martin Whitaker
628f5645bf
Fix file/line reported for duplicate parameter declarations.
...
We need to retain the old parameter information until we have reported
the error.
2019-09-27 22:19:30 +01:00
Martin Whitaker
d3bced57cc
Correctly handle explicit and wildcard package imports.
...
Explicit imports should always conflict with local declarations using
the same name. Wildcard imports only conflict if they are referenced
before a local declaration with the same name.
This also unifies the detection of identifier conflicts.
2019-09-27 22:19:30 +01:00
Martin Whitaker
269ec2f042
Remove redundant checks for package imports during parsing.
...
The find_* and symbol_search functions now handle this.
2019-09-27 22:19:30 +01:00
Martin Whitaker
02ee1c65d0
Support dynamic array initialisation in variable declarations.
2019-09-16 20:35:27 +01:00
Martin Whitaker
89cbc42094
Reset parser tracking variables when starting a new compilation unit.
...
This fixes the problem reported in GitHub issue #254 , where if the
parser aborted on one compilation unit, spurious errors were reported
for the next compilation unit.
2019-07-23 22:18:39 +01:00
Stefan Biereigel
7f5145d758
emit only warning for primitive redefinition
2019-05-17 15:20:49 +02:00
Martin Whitaker
f8a2a4816c
Enable parameter/localparameter definitions in the compilation unit scope.
2018-02-18 19:21:18 +00:00
Martin Whitaker
2a21fe77ac
Output an error message when a SV variable declaration reuses a name.
...
Assertion failures are not the right way to handle user code errors.
2018-02-18 17:51:56 +00:00
Martin Whitaker
caf83b02c1
Enable variable declarations/initialisations in the compilation unit scope.
2018-02-18 14:09:03 +00:00
Cary R
585a0232cb
Add preliminary support for always_comb, always_ff and always_latch
2017-11-20 07:50:05 -08:00
Martin Whitaker
f83e01847a
Fix a couple of minor bugs in the timescale parsing rework.
2017-11-06 00:37:56 +00:00