Zachary Snow
a87ee7c11b
additional param type conversion bug fixes
...
- general refactoring throughout
- improved metrics for dropping unneeded modules
- fix re-visiting a converted instance in the same pass
2021-06-15 16:46:53 -04:00
Zachary Snow
a47afa96b8
don't force int types to be regs
2021-06-05 16:44:56 -04:00
Zachary Snow
d2a18e01f2
replace integer unsigned with size-32 reg
2021-06-03 21:18:32 -04:00
Zachary Snow
36fcce8934
fix param type default pollution
2021-06-03 20:51:26 -04:00
Zachary Snow
84986cc197
fix errant reordering on cs/ps alias idents
2021-06-03 15:25:21 -04:00
Zachary Snow
24a79ffebe
support multi-dimensional modports
2021-06-02 15:36:44 -04:00
Zachary Snow
13c84e4c7a
refactor parameter binding resolution
...
- fix type/expr ambiguity for interface and class parameters
- check for parameter kind mismatch up front
- centralize key logic in ResolveBindings
2021-05-31 14:13:49 -04:00
Zachary Snow
0aa59165a1
fix size of empty strings to be one byte
2021-05-30 22:07:51 -04:00
Zachary Snow
a293002ad7
resolve package and class idents within class parameters
2021-05-29 23:25:47 -04:00
Zachary Snow
0a65abd614
full support for package and class subroutine invocations
2021-05-29 22:34:03 -04:00
Zachary Snow
7ffea36ddd
improved handling of string parameters
...
- variable-size string parameter conversion restricted to modules which
depend on the size of the string parameter
- string localparams are typed as appropriately sized vectors
- remove ordered parameter binding logic from string param conversion
2021-05-28 20:27:14 -04:00
Zachary Snow
801955ffab
support for empty port connections
2021-05-21 14:08:12 -04:00
Zachary Snow
a6ebc0e3ff
fix elaboration of struct array fields referenced hierarchically
...
- `expr.name[idx]` considers `expr.name` could be a struct array
- remove fallback struct type lookups which were guaranteed to fail
2021-05-09 19:24:23 -04:00
Zachary Snow
f71accb3c8
fix simple delayed multi-pack conversion within interface
2021-05-09 18:06:46 -04:00
Zachary Snow
b0b7962529
additional dimension query coverage
2021-04-27 21:25:44 -04:00
Zachary Snow
e6263d6caa
support function calls within type parameters
2021-04-26 18:13:36 -04:00
Zachary Snow
5a8801a45f
allow trailing commas in parameter and port lists and bindings
2021-04-23 16:17:18 -04:00
Zachary Snow
499bd5873e
fall back to lower-precedence multipack transformations
2021-04-16 17:46:40 -04:00
Zachary Snow
ecee8b3358
support for interface based typedefs
2021-04-15 11:35:20 -04:00
Zachary Snow
1ba5ab2739
size using lhs for reg continuous assignment indirection
2021-04-14 14:31:31 -04:00
Zachary Snow
44afcf5b29
improved handling of break statement
...
- fix preservation of loop variables when breaking
- extend Yosys-compatible constant loop conversion to support loop
variables declared outside of the looop
2021-04-14 13:16:27 -04:00
Zachary Snow
04d6fa6199
fix additional type parameter instantiation issues
...
- avoid premature conversion of default struct type parameters
- allow use of $clog2, $signed, and $unsigned in type parameters
- more thorough and efficient top reference ident renaming
- precede type param conversion with hier const pass
2021-04-13 22:22:33 -04:00
Zachary Snow
623f0a2d39
fix missing top reference renames in param type instantiation
...
- renaming applies to nodes within generate blocks
- renaming applies to LHSs
2021-04-13 16:47:00 -04:00
Zachary Snow
4ddbff9b97
keep enum localparam types for later resolution
2021-04-13 15:08:38 -04:00
Zachary Snow
eeeade3e19
allow packages to reference their own items explicitly
2021-04-13 14:44:42 -04:00
Zachary Snow
7f79147c7b
initial parameterized class data type support
2021-04-12 21:22:14 -04:00
Zachary Snow
d0d897b4e4
package name resolution visits enum base types
2021-04-09 14:07:34 -04:00
Zachary Snow
dce7f14909
fix precedence of non-blocking assignment
2021-04-08 17:04:28 -04:00
Zachary Snow
9ae29853d5
use iverilog 11 in Linux CI
2021-03-09 18:46:37 -05:00
Zachary Snow
38cc25fad6
more test coverage and dead code removal
2021-03-09 15:48:10 -05:00
Zachary Snow
937a583e41
fix simple loop jump guarded conversion
2021-03-09 12:42:34 -05:00
Zachary Snow
da07619642
support const declarations of alias types
2021-02-23 16:45:53 -05:00
Zachary Snow
5080265e4d
typedef, multipack, and struct conversions scope substitutions
2021-02-22 14:13:37 -05:00
Zachary Snow
f84dd70186
fix handling of hierarchical references with type parameters
...
- wait for hierarchical references within an instance's type parameters
to be resolved before instantiating the module
- references to a module's top-level named scopes are now correctly
renamed when creating new type parameter modules
2021-02-21 17:16:20 -05:00
Zachary Snow
2b9fff78e7
fix indentation inconsistencies
2021-02-19 15:04:23 -05:00
Zachary Snow
aea2975d66
remove outdated TODOs
2021-02-19 12:24:56 -05:00
Zachary Snow
2d7dc00b8d
fix concat of based xz literals with uneven chunks
2021-02-15 16:58:56 -05:00
Zachary Snow
465060ce4f
fold concatenations of number literals
2021-02-11 17:36:05 -05:00
Zachary Snow
87ea9de853
substitute constants from type information across scopes
2021-02-10 12:56:26 -05:00
Zachary Snow
6d2cdf1d21
fix infinite loop on mutually recursive functions
2021-02-09 20:54:28 -05:00
Zachary Snow
5c2632982e
simplify substitution avoids shadowing
2021-02-07 14:08:19 -05:00
Zachary Snow
490d96ba46
generate consistent hashes within interface conversion
2021-02-05 10:00:59 -05:00
Zachary Snow
dd1a9efb40
refactor cast conversion
...
- delegate cast type and sign resolution to TypeOf conversion
- internal support for injecting data declarations into statements
- fix size and sign of unbased unsized literals used in casts
- avoid generating many unnecessary explicit casts
- support casts which depend on localparams within procedures
- expression traversal correctly visits types within type casts
- fix typeof on expressions of net types
- handle additional edge cases for unsized integer array patterns
- preserve signedness of implicitly flattened unpacked integer arrays
2021-02-03 16:28:53 -05:00
Zachary Snow
8eb9523d06
fix typeof bounds for part selects
...
- split out typeof handling of part selects
- account for directionality of base dimension
- refactor dimensions test case with detailed output
2021-02-02 11:26:41 -05:00
Zachary Snow
5c8d838eef
fix overzealous task/function decl hoisting
2021-02-01 15:54:32 -05:00
Zachary Snow
b8759776ca
limited progress on typeof signedness
...
- ensure concats and repeats stay unsigned
- defer unbased-unsized conversion to enable cast semantics
- disable inaccurate folding of binary operations of based numbers
- fix typeof and size cast binop signedness logic
- fix typeof $unsigned and $signed
- test harness allows production of `integer unsigned`
2021-02-01 10:17:50 -05:00
Zachary Snow
275130e0b0
move package param step to conversion
2021-01-27 16:41:39 -05:00
Zachary Snow
821b8bc947
fix loop in logic indirection typing
2021-01-26 15:39:41 -05:00
Zachary Snow
b22cd210a4
improved portability of logic conversion
...
- indirect converted reg continuous assignments through wires
- fix typeof for implicitly typed ports
- fix typeof for sized implicitly typed params
2021-01-25 19:23:54 -05:00
Zachary Snow
5f0dc6be0c
preserve generate else branch association in codegen
2021-01-25 12:33:04 -05:00