Zachary Snow
4ce177c074
multipack conversion visits exprs within types
2023-02-22 00:15:39 -05:00
Zachary Snow
9bab0448e3
drop explicit string type from parameters
2023-01-07 18:27:25 -07:00
Zachary Snow
96a108ded7
constant folding extensions
...
- fold string literal comparisons
- fold non-decimal bit shifts
- fold non-decimal integer comparisons
- fold decimal bitwise AND and OR
- simplify cast expressions before elaboration
- remove duplicate cast expression traversal
- flatten concatenated numbers in a single pass
2022-12-24 01:12:50 -07:00
Zachary Snow
c49fad1dba
drop unneeded module-scoped references
2022-10-29 13:22:53 -04:00
Zachary Snow
086eb78688
elaborate accesses to fields of struct constants
2022-10-23 11:52:22 -07:00
Zachary Snow
4533e4fffb
don't inline module-level constants into static prefixes
2022-10-22 18:02:54 -07:00
Zachary Snow
e00582de8f
check for conflicts with unused declarations
2022-07-18 21:05:21 -04:00
Zachary Snow
a9f00cce2a
avoid name conflicts when elaborating packages
2022-07-17 22:02:15 -04:00
Zachary Snow
a54be8dae6
instances supply names during reordering
2022-07-17 20:58:36 -04:00
Zachary Snow
59b416f9b4
isolate interface name resolution checks
2022-07-17 20:32:56 -04:00
Zachary Snow
6e8659a537
support hierarchical calls to functions with no inputs
2022-07-10 22:43:33 -04:00
Zachary Snow
5dcbce5f45
fix conversion of casts to structs containing multidimensional fields
2022-06-19 21:55:19 -04:00
Zachary Snow
336812ff21
fix conversion of signed struct fields accessed directly
2022-06-19 16:13:56 -04:00
Zachary Snow
e778a671e1
generate explicit sensitivity lists when necessary
2022-05-10 11:29:33 -04:00
Zachary Snow
b7a2327668
simple for loop elaboration applies in more cases
2022-04-30 20:19:02 -06:00
Zachary Snow
5e17ef0df3
bump iverilog
2022-04-11 18:04:57 -06:00
Zachary Snow
ed09fe88cf
support assignments within expressions
2022-03-12 23:57:17 +01:00
Zachary Snow
4ced649a87
convert do while loops
2022-03-11 11:32:54 +01:00
Zachary Snow
e6e96b622b
support for edge event
2022-02-16 12:01:58 +01:00
Zachary Snow
3db72c4c2d
logic conversion ignores LHSs in procedural assignment senses
2022-02-15 17:49:50 +01:00
Zachary Snow
5b5bed8c72
fix dev iverilog test incompatibilities
2022-02-15 15:38:16 +01:00
Zachary Snow
2e43dfeeaa
fix failed indirection of unassigned function results
2022-01-23 22:40:43 -07:00
Zachary Snow
4c3dcf5219
support for enumerated type ranges
2021-12-10 13:16:34 -07:00
Zachary Snow
814f96597e
fix assertion removal in verbose mode causing orphaned statements
2021-09-24 12:36:49 -04:00
Zachary Snow
b1f1b822e9
fix conversion of interface-based typedefs
2021-09-18 21:46:32 -04:00
Zachary Snow
6788ecbf82
fix interface traversal of exprs in types, and support module-scoped modport refs
2021-09-18 21:01:28 -04:00
Zachary Snow
598b4260b6
apply port standardization to tasks and functions
2021-09-06 21:48:08 -04:00
Zachary Snow
95c2bc996c
support for common non-ANSI style port declarations
...
Specifically, support has been added for non-ANSI style port
declarations where the port declaration is separate from the
corresponding net or variable declaration.
2021-09-06 21:10:49 -04:00
Zachary Snow
da2d4117f2
specialized parsing for parameter port lists
...
This adds support for typed valued parameters declared in parameter port
lists without explicitly providing a leading `parameter` or `localparam`
marker.
2021-08-20 18:08:14 -06:00
Zachary Snow
47c05c04b8
support parameters which use a type-of as the data type
2021-08-18 13:33:40 -06:00
Zachary Snow
9acdb848c9
ensure arrays used in nested ternary expressions are properly flattened
2021-08-18 10:25:14 -06:00
Zachary Snow
7ccab1c70a
fix parsing of sized ports with implicit directions
2021-08-17 10:27:17 -06:00
Zachary Snow
4ded2a598d
apply implicit port directions to tasks and functions
2021-08-15 12:25:32 -07:00
Zachary Snow
61ccf3cb22
remove unintentional tabs in struct_pattern_cast.v
2021-08-15 12:23:13 -07:00
Zachary Snow
306d71334b
refactor sizing and truncation of integer literals
...
- use iverilog's -gstrict-expr-width throughout test suite
- add warnings for excess bits or padding zeroes in number literals
- add new --oversized-numbers parameter to retain support for unsized
numbers wider than 32 bits
- localized use of oversized numbers to new truncate test suite which
verifies the behavior of both modes, and compares against the known
behavior of iverilog
2021-08-09 22:10:29 -06:00
Zachary Snow
5e5ddca444
fix broken two's complement logic
2021-08-08 21:36:36 -06:00
Zachary Snow
59d37468a4
fix internal interpretation of negative number literals
...
- detect and forbid non-positive size casts
- detect and forbid negative struct pattern literal indices
- avoid invalid constant folding of negative based literals
2021-08-07 21:11:35 -06:00
Zachary Snow
527b59ff12
upgrade iverilog to lastest on v11-branch
...
Workarounds for resolved iverilog issues have been removed.
2021-08-04 17:50:53 -06:00
Zachary Snow
543b4590cb
streamline iverilog test wrapper
2021-08-01 16:38:41 -06:00
Zachary Snow
fd96b8a710
unbased unsized conversion inlines module stubs
...
- support ports with sizes which depend on constant functions
- restore package item injection utility to package conversion module
- additional unbased unsized conversion test coverage
2021-07-29 19:54:20 -04:00
Zachary Snow
1aa30ea813
allow genvars to be shadowed
2021-07-27 19:17:03 -04:00
Zachary Snow
e0d425d976
default implicit output ports to logic
2021-07-27 17:20:09 -04:00
Zachary Snow
17b01b1683
simplify mod 1 to 0
2021-07-26 13:03:01 -04:00
Zachary Snow
5345a72c9e
elaborate `wire integer` to `wire signed [31:0]`
2021-07-25 15:37:27 -04:00
Zachary Snow
121fea5aec
avoid unnecessary casts on substituted hierarchical constants
2021-07-24 17:01:17 -04:00
Zachary Snow
1311e449fe
fix errant expr resolution flagging
...
- references to other instances are no longer flagged
- special handling for genvars to avoid flagging and modport scoping
- interface inlining visits expressions in declarations
- Scoper has interface for removing entries
2021-07-23 19:59:26 -04:00
Zachary Snow
b2b6f8f8f2
fix two paramtype edge cases
...
- don't keep unused template modules even if they are fully-specified
- don't reduce modules with unbound type parameters
2021-07-22 00:58:19 -04:00
Zachary Snow
ab867465da
fix handling of explicitly typed struct patterns in other contexts
2021-07-21 14:31:43 -04:00
Zachary Snow
dde734be26
handle params with unpacked typenames
2021-07-21 11:57:04 -04:00
Zachary Snow
b2fe865e17
fix interface modport substitution strategy
...
The interface conversion no longer substitutes parameters immediately,
instead fully scoping modports and allowing hierarchical constants to be
resolved separately. This fixes an issue where struct parameters could
lose their type information during substitution. The conversion also now
handles renaming references to the module or interface top-level scope.
2021-07-20 22:36:59 -04:00