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
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
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
Zachary Snow
5cc4dce01f
refactor positional binding checking and resolution
2021-04-30 14:10:09 -04:00
Zachary Snow
ba270acb0e
forbid mixing ordered and named port or param bindings
2021-04-29 15:32:54 -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
bdc7b5ad69
replace some invariant errors with pattern matching
2021-04-21 19:50:03 -04:00
Zachary Snow
cfff359b51
isolate parse state abstraction
2021-04-20 19:47:55 -04:00
Zachary Snow
499bd5873e
fall back to lower-precedence multipack transformations
2021-04-16 17:46:40 -04:00
Zachary Snow
dc19b5f944
use cabal package version as fallback when repo is missing
2021-04-15 13:47:45 -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
5f26e755c9
preserve implicitness of task and function ports
2021-04-10 20:45:40 -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
2a4d1cc5a8
more useful error message on bad stmt asgn
2021-04-08 00:42:18 -04:00
Zachary Snow
5ac7a79f8b
add warning when no input files are specified
2021-03-29 11:16:53 -04:00
Zachary Snow
c6dbdd09ca
preliminary language support for basic classes
2021-03-22 20:01:38 -04:00
Zachary Snow
c048ce5b36
remove long deprecated flags
...
- remove -o/--oneunit, has been the default behavior
- revise test coverage for default vs. siloed behavior
- add test to ensure README usage matches CLI help text
- remove -V alias for --version
- remove -? alias for --help
2021-03-10 13:02:54 -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
31ebf181bb
improved parse errors for certain unmatched tokens
2021-03-06 15:03:04 -05:00
Zachary Snow
77b2f8b6ce
improve for decl error messaging
2021-03-05 19:58:44 -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
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
2b9fff78e7
fix indentation inconsistencies
2021-02-19 15:04:23 -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
4bfcfe4b28
module item attrs aren't mapped onto trace statements
2021-02-17 13:35:10 -05:00
Zachary Snow
0d095e6afb
updated case inside representation
2021-02-17 13:29:44 -05:00
Zachary Snow
2d7dc00b8d
fix concat of based xz literals with uneven chunks
2021-02-15 16:58:56 -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
c656cbb977
fix package and interface warnings in verbose mode
...
- warnings were skipped because verbose about was technically not empty
- add test suite for these warnings in both modes
2021-02-03 09:57:07 -05:00
Zachary Snow
5aea0ee95e
add write adjacent mode
2021-02-03 09:30:30 -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
Zachary Snow
e4adf6a74c
apply reordering in generate blocks
2021-01-25 12:01:03 -05:00
Zachary Snow
8c967ea9c7
cast function generated output stability
...
- cast functions in separate scopes are no longer omitted or removed
- package item reordering excludes locally declared names
- test runner ensures output is stable after first iteration
2021-01-24 14:29:54 -06:00
Zachary Snow
b28a3cac0d
represent typedefs as localparam types
2021-01-24 10:07:35 -07:00
Zachary Snow
378ede9e1a
standardize internal representation of unknown types
2021-01-24 09:55:03 -07:00
Zachary Snow
58e5bfa6d3
fix typeof incorrectly propagating implicit types
2021-01-23 21:55:11 -07:00
Zachary Snow
8eb3a251f7
package conversion overhaul
...
- full import and export support
- simplify AST representation of import and export
- allow package-scoped identifiers invoked as subroutines
- use scoped name resolution for identifiers in packages
- merge package item nesting conversion into package conversion
- fix handling of colliding enum items in separate modules
- fix visiting enum item exprs in types
2021-01-23 21:54:39 -07:00
Zachary Snow
40df902887
parser production rule for optional assignments
2021-01-21 12:05:44 -07:00
Zachary Snow
ccd09a1386
bump license year
2021-01-21 12:05:44 -07:00
Zachary Snow
ea56f51d03
support for parameters without defaults
2021-01-21 11:55:23 -07:00
Zachary Snow
5891a0eb7d
improve edge case messaging
...
- error for unbound module instance interface ports
- warning for converting an interface alone
- warning for converting a package alone
- update terminology for modules removed by interface conversion
2020-12-30 17:17:27 -07:00
Zachary Snow
2a2d819baa
additional codegen test coverage
...
- assertions, gen case, and inout
- simplify block codegen
- remove blank lines in tasks with no inputs
2020-12-11 12:41:59 -07:00
Zachary Snow
2311d3e2d6
additional interface conversion test coverage
2020-12-11 12:41:20 -07:00
Zachary Snow
b7b40af6b8
ensure collector results are evaluated
2020-12-10 18:30:23 -07:00
Zachary Snow
0c31936590
maintain explicit padding in unsized number literals
2020-12-10 14:52:43 -07:00
Zachary Snow
c39371c48a
simplify and optimize lexing
2020-12-10 13:33:06 -07:00
Zachary Snow
370e5e9e0c
package item nesting performance optimization
2020-12-08 13:16:10 -07:00
Zachary Snow
2081f6a32a
support attributes on port declarations
2020-12-08 11:28:28 -07:00
Zachary Snow
d137fd3d68
fix premature elaboration of single element patterns
2020-12-07 16:23:29 -07:00
Zachary Snow
ad18c583ab
support default pattern unbased unsized port bindings
2020-12-07 16:23:26 -07:00
Zachary Snow
2b377cef04
interface and instance array support
...
- support for interface instance arrays
- support for interface-using module instance arrays
- support for modport array bindings
- fix modport bindings shadowed in nested instances
2020-12-06 15:41:33 -07:00
Zachary Snow
8eac9b0149
use reg for empty args placeholder
2020-12-05 17:37:18 -07:00
Zachary Snow
1fd72d878f
fix double backtick handling in backtick string
2020-12-04 13:22:38 -07:00
Zachary Snow
5c0f414dfa
convert wildcard bindings before interfaces
2020-12-03 11:03:09 -07:00
Zachary Snow
091520e4cd
allow generate scoped basic subroutine invocations in statement blocks
2020-11-30 20:36:06 -07:00
Zachary Snow
454f8dcb24
faster package item nesting traversal
2020-11-28 15:22:58 -07:00
Zachary Snow
82290b16ee
simplify lexer character position lookup
2020-11-27 14:29:59 -07:00
Zachary Snow
2e499dbd03
support case inside with basic side effects
2020-11-27 14:09:16 -07:00
Zachary Snow
e471d37e5c
preprocessor batch consumption
2020-11-27 12:05:32 -07:00
Zachary Snow
260a6507eb
fix converted constant continuous assignment
2020-11-24 17:27:58 -07:00
Zachary Snow
e9f9696342
extend typeof operator support
2020-09-28 23:42:46 -04:00
Zachary Snow
5eaecc6635
fix redeclaration of implicitly typed ports
2020-09-28 19:59:43 -04:00
Zachary Snow
6d907e0985
typeof logical negation
2020-09-13 23:51:13 -04:00
Zachary Snow
7e2450ea5e
conversion to create declarations for implicit nets
2020-09-13 23:35:41 -04:00
Zachary Snow
eb908b8db7
fix ordering of and outputs
2020-09-13 23:24:21 -04:00
Zachary Snow
a170536382
unbased-unsized binding nested struct performance fix
2020-08-20 20:24:45 -04:00
Zachary Snow
7f0c33ab4e
constant fold adjacent adds through association
2020-08-16 14:28:13 -04:00
Zachary Snow
8a8b089a92
assume 0-based sized ranges are non-negative
2020-08-16 13:44:40 -04:00
Zachary Snow
2429a2c9f0
upgraded streaming concatenation conversion
...
- fix handling of truncation for unpacking
- fix handling of final limited-size chunk
- support unpacking in a declarations with assignments
- support streaming concatenations in continuous assignment
2020-08-16 13:12:11 -04:00
Zachary Snow
11bb05374c
simplify duplicate genvar conversion
2020-08-16 12:50:51 -04:00
Zachary Snow
99df32642e
remove old traverseScopesM
2020-08-16 12:47:41 -04:00
Zachary Snow
d4511871ca
typeof $clog2
2020-08-13 19:37:12 -04:00
Zachary Snow
d9e890c88e
signed size cast shorthand output
2020-08-13 18:38:30 -04:00
Zachary Snow
e80db12422
conversion for implicitly variably sized parameters
2020-08-12 21:59:57 -04:00
Zachary Snow
e4135bb896
use strict State and Writer monads
2020-08-11 19:14:18 -04:00
Zachary Snow
13b62fd81e
support structs of integers
2020-08-11 18:37:21 -04:00