Commit Graph

295 Commits

Author SHA1 Message Date
Zachary Snow 70ec448a31 remove iverilog workaround from typeof_scope.sv
With steveicarus/iverilog#483 resolved, this workaround is no longer
necessary.
2024-05-08 08:57:17 -04:00
Zachary Snow 9825bb9bcb tweak codegen for bitwise binary followed by reduction unary 2024-01-04 22:09:04 -07:00
Zachary Snow e9c01d2434 support wait statements 2023-12-03 13:16:01 -05:00
Zachary Snow b09fdaf76a simplify shadowing notes non-trivial localparams too 2023-08-08 22:30:36 -04:00
Zachary Snow 5b035613ee constant fold || and && 2023-08-08 22:25:39 -04:00
CORRADI Quentin 619bde4be1
support for attributes in unary, binary, and ternary expressions
Co-authored-by: qcorradi <q.corradi22@imperial.ac.uk>
Co-authored-by: Zachary Snow <zach@zachjs.com>
2023-07-31 22:52:28 -04:00
Zachary Snow 07caba64a5 simplify non-ANSI style port declaration dimensions 2023-07-31 21:31:34 -04:00
Zachary Snow bef9b1a3f0 allow inout task and function ports 2023-07-26 23:42:51 -04:00
Zachary Snow 9de4d44305 simplify handles shadowing via vars and genvars 2022-12-24 00:51:05 -07:00
Zachary Snow effeded6d1 support procedural continuous assignments 2022-05-10 12:11:32 -04:00
Zachary Snow f68bf187af refactor event control internals
- event expressions use Expr over LHS
- stricter AST representation of event controls
- property specs use event expressions directly
2022-04-11 17:44:47 -06:00
Zachary Snow 53fa152fc4 upgrade to latest iverilog 2022-02-15 19:14:55 +01:00
Zachary Snow 03a913ad65 fix illegal removal of width-extending `+ 0` and `* 1` 2021-11-15 21:26:08 +01:00
Zachary Snow 77ee49a80e allow space between @ and * 2021-08-19 16:01:45 -06:00
Zachary Snow 7325bd7976 support bare delay controls with real number delays 2021-08-17 09:53:28 -06:00
Zachary Snow cd45696ace parse alternate spacings of sense star 2021-08-16 22:39:33 -06: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 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 1e6fa7b858 fix looping simplification on unfolded based literals 2021-07-22 12:45:53 -04:00
Zachary Snow 2f7128428e fix errant untyped localparam substitution 2021-07-10 14:38:06 -04:00
Zachary Snow 52ccd3d383 additional test coverage for existing logic 2021-07-09 10:34:35 -04:00
Zachary Snow 91e3ac0fb1 normalize trailing whitespace in escaped identifiers 2021-07-08 17:17:45 -04:00
Zachary Snow 9d7f917608 handle naming and scoping of unnamed generate blocks 2021-06-30 14:24:35 -04:00
Zachary Snow d95a56286c split out basic suite tests with refs to new core suite 2021-06-25 11:21:47 -06:00
Zachary Snow 3f20055cd6 proper support for static class methods 2021-06-24 22:15:46 -06:00
Zachary Snow afc3ea435b fix interface conversion erroneously renaming colliding pattern names 2021-06-23 21:39:15 -04:00
Zachary Snow dbbf71c65a revised struct pattern representation
- pattern keys now represented as TypeOrExpr
- support for simple integer struct pattern keys
2021-06-20 15:32:12 -04:00
Zachary Snow 6743725cca support partial packing of multidimensional unpacked arrays 2021-06-19 18:45:35 -04:00
Zachary Snow 3955c47e7a support parameterized class items depending on local generate scopes
- previously the overrides for parameterized data types could only
  reference data declarations at the module scope
- their use within procedures is still allowed, but cannot currently
  refer to localparams declared within procedures
- add procedure scope location accessors to allow scoped traversals to
  mark where injected items will end up in advance
2021-06-19 14:46:00 -04:00
Zachary Snow 108852060e prefix bare generate blocks with conditionals in codegen 2021-06-17 15:27:51 -04:00
Zachary Snow c0cb401abe fix handling of end labels
- disallow using end label alone on blocks
- improved parse error for mismatches
- add label checking for non-block constructs
- allow generate block to have label before begin
2021-06-15 17:47:32 -04:00
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