Commit Graph

441 Commits

Author SHA1 Message Date
Zachary Snow a293002ad7 resolve package and class idents within class parameters 2021-05-29 23:25:47 -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 eae46b7ad2 improved interface modport type checking 2021-05-12 22:00:22 -04:00
Zachary Snow 68fa8290c0 interface instantiation checks for errant name resolution 2021-05-09 19:32:39 -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 5cc4dce01f refactor positional binding checking and resolution 2021-04-30 14:10:09 -04:00
Zachary Snow e6263d6caa support function calls within type parameters 2021-04-26 18:13:36 -04:00
Zachary Snow bdc7b5ad69 replace some invariant errors with pattern matching 2021-04-21 19:50:03 -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 c0b8ba17de simplify interface port type representation 2021-04-13 10:45:26 -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 c6dbdd09ca preliminary language support for basic classes 2021-03-22 20:01:38 -04: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 77b2f8b6ce improve for decl error messaging 2021-03-05 19:58:44 -05:00
Zachary Snow 5080265e4d typedef, multipack, and struct conversions scope substitutions 2021-02-22 14:13:37 -05:00
Zachary Snow 80d75d2ac0 confine genvar local typing to loops 2021-02-21 23:23:06 -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 82228f67b6 typedef conversion avoids excess traversals 2021-02-19 15:41:08 -05:00
Zachary Snow e9d62e01ad unify type range splitting 2021-02-19 14:50:05 -05:00
Zachary Snow aea2975d66 remove outdated TODOs 2021-02-19 12:24:56 -05:00
Zachary Snow 357b2921b3 restrict enum conversion to parts 2021-02-18 17:10:41 -05:00
Zachary Snow ec766657a8 simplify value range representation 2021-02-17 17:12:57 -05:00
Zachary Snow 0d095e6afb updated case inside representation 2021-02-17 13:29:44 -05:00
Zachary Snow 8e1f2bbafb more aggressive binop simplification 2021-02-11 18:28:53 -05:00
Zachary Snow 465060ce4f fold concatenations of number literals 2021-02-11 17:36:05 -05:00
Zachary Snow 19711ba17b minor scoper performance tweaks 2021-02-11 17:22:01 -05:00
Zachary Snow 642803a707 expression traversals no longer visit types by default 2021-02-11 17:07:58 -05:00
Zachary Snow de27065dba use runIdentity for traverseFiles 2021-02-11 16:42:26 -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 d847fdfaca split phases into sections 2021-02-08 12:42:34 -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