Commit Graph

637 Commits

Author SHA1 Message Date
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
Zachary Snow ddaa7ff6c6 zero-pad sized integrals no larger than 256 bits 2020-08-09 17:36:25 -04:00
Zachary Snow 50a6966a4f fix three typeof conversion issues
- type of strings are left implicit
- type of implicitly-typed params uses the type of the default value
- prevent exponential blowup for large ternary expressions
2020-08-09 17:23:37 -04:00
Zachary Snow 67466eaa60 major interface conversion update
- module instances with modport bindings are now inlined
- support for modports in generate loops
- support for generic interfaces
- implied modport instance propagation
- add error message for interface instances missing port list
2020-08-08 20:43:47 -06:00
Zachary Snow 5161a9e71b allow scope traversals to rename tasks and functions 2020-08-01 20:21:32 -06:00
Zachary Snow 3834b9f109 support type lookup of genvars 2020-08-01 20:14:40 -06:00