Zachary Snow
6ee558b6b9
initial pass improving decl parsing error messages
...
- all decl tokens are given an accurate starting position
- key grammar productions return token positions to facilitate the above
- helpers for standardized parse error generation
- replaced annoying pattern-matching type argument restrictions
- moving away from dumping raw decl tokens in error messages
2021-07-03 13:23:33 -04:00
Zachary Snow
ff0c7b026c
properly distinguish nets and variables internally
...
- new net decl to replace net pseudo-type
- support nets with complex base types, including typenames
- support var declaration type prefix for all data types
- support var as lone type shorthand
- refactor AST representation of strengths
- traversal helpers for treating nets as variables
- use decl traversals where appropriate
2021-07-02 17:59:21 -04:00
Zachary Snow
d32c0a1b09
convert logics with initial values to regs, not wires
2021-07-01 23:17:08 -04:00
Zachary Snow
9de4a3c99c
simplify type and decl traversals
2021-06-30 19:13:44 -04:00
Zachary Snow
9d7f917608
handle naming and scoping of unnamed generate blocks
2021-06-30 14:24:35 -04:00
Zachary Snow
6e85245118
remove indirection in collectDescriptionsM
2021-06-28 15:55:35 -04:00
Zachary Snow
c7375d9016
fix pass-through codegen and parsing issues
...
- automatic pass-through test suite coverage
- fix codegen for interface based typedefs
- allow declaration of generic interface ports in module body
- fix codegen for comments within for loop initialization
- fix codegen of class param decls
2021-06-25 12:53:03 -06: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
bb938f1e0b
add ability to --pass-through input without conversion
2021-06-25 11:05:49 -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
a15b0c735f
fix codegen for binop size cast
2021-06-21 15:49:23 -04:00
Zachary Snow
7843ff6da3
filter out empty port connections
2021-06-21 15:49:13 -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
404385b00f
allow arbitrary .v output file using -w/--write
2021-06-16 20:31:37 -04:00
Zachary Yedidia
5eef44c8f4
Add file output write mode
2021-06-16 20:31:37 -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
003d4dbc4e
param type conversion initial cleanup
2021-06-07 23:39:26 -04:00
Zachary Snow
a47afa96b8
don't force int types to be regs
2021-06-05 16:44:56 -04:00
Zachary Snow
ecaaec9c00
minor codegen cleanup
2021-06-04 15:38:51 -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
e0e296349a
check for unknown named bindings
2021-06-01 13:09:36 -04:00
Zachary Snow
e52de9d4a6
remove legacy ordered binding handling in param type conversion
2021-05-31 16:52:57 -04:00
Zachary Snow
69bc64ed15
remove legacy ordered binding handling in logic conversion
2021-05-31 16:38:29 -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
c0282862ea
error if procedural block has a decl after a stmt
2021-05-29 21:55:50 -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
280d3dc5a6
fix codegen for generic interface types
2021-05-25 22:10:33 -04:00
Zachary Snow
315733f293
output unpacked localparam types as typedefs
2021-05-24 23:06:07 -04:00
Zachary Snow
74a10a8e13
fix else branch association in verbose mode
2021-05-23 15:54:49 -04:00
Zachary Snow
fbde7aaca6
faster test runner pattern matching
2021-05-22 22:00:32 -04:00
Zachary Snow
801955ffab
support for empty port connections
2021-05-21 14:08:12 -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
12c57ecc24
preprocessor cleanup and extended test coverage
2021-05-06 16:14:41 -04:00
Zachary Snow
2885e21cdd
fix handling of preproc conditionals within macros
...
- preproc reads identifiers unconditionally
- drop leading whitespace for default macro args
- very minor preproc cleanup
2021-05-04 16:19:07 -04:00
Zachary Snow
c59334ceb8
allow preproc idents to begin with macro arguments
2021-05-03 17:53:41 -04:00
Zachary Snow
10b30d7d1e
detect infinite include loops
2021-05-01 21:12:00 -04:00