Commit Graph

514 Commits

Author SHA1 Message Date
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 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
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 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
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 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 dce7f14909 fix precedence of non-blocking assignment 2021-04-08 17:04:28 -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 9ae29853d5 use iverilog 11 in Linux CI 2021-03-09 18:46:37 -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 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 2b9fff78e7 fix indentation inconsistencies 2021-02-19 15:04:23 -05:00
Zachary Snow aea2975d66 remove outdated TODOs 2021-02-19 12:24:56 -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 465060ce4f fold concatenations of number literals 2021-02-11 17:36:05 -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 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 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 ea56f51d03 support for parameters without defaults 2021-01-21 11:55:23 -07:00
Zachary Snow e94c0346e8 add optional error message patterns to error test suite 2021-01-20 15:34:18 -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 1f05aa45cb add generated number tests 2020-12-10 14:52:46 -07:00
Zachary Snow 0c31936590 maintain explicit padding in unsized number literals 2020-12-10 14:52:43 -07:00
Zachary Snow e72d372d73 omit reference file for verilog-compatible test inputs 2020-12-08 11:39:17 -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 1fd72d878f fix double backtick handling in backtick string 2020-12-04 13:22:38 -07:00
Zachary Snow bf6ba338df additional default_nettype test coverage 2020-12-04 11:38:17 -07:00
Zachary Snow 3ac1b4ea3c additional error case coverage 2020-12-03 19:02:33 -07:00
Zachary Snow 16c63b8109 test coverage for wildcard inequality 2020-12-03 16:23:03 -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 2e499dbd03 support case inside with basic side effects 2020-11-27 14:09:16 -07:00
Zachary Snow a7874e1b2f test suite iverilog 11.0 compatibility 2020-11-24 18:09:07 -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 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 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 d4511871ca typeof $clog2 2020-08-13 19:37:12 -04:00
Zachary Snow e80db12422 conversion for implicitly variably sized parameters 2020-08-12 21:59:57 -04:00
Zachary Snow 13b62fd81e support structs of integers 2020-08-11 18:37:21 -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 3834b9f109 support type lookup of genvars 2020-08-01 20:14:40 -06:00
Zachary Snow 698e3b0b54 fix unbased unsized binding conversion for instances with type parameters 2020-07-27 19:04:41 -06:00
Zachary Snow 21ebbb5a19 use repeats for converted unbased-unsized literals
- reduces the number of cast functions which are generated
- adjust package_function_cast to preserve cast converage
- fix issue where cast functions would be generated before localparam
  substitution within a procedure
2020-07-24 21:29:59 -06:00
Zachary Snow f0a5a47371 fix break/continue causing return after loop 2020-07-23 19:04:20 -06:00
Zachary Snow bbb469463b fix typing bit and part selects 2020-07-23 18:23:40 -06:00
Zachary Snow 359a3de91e parser rejects errant declarations 2020-07-22 21:35:25 -06:00
Zachary Snow 8537a9efda fix scoping of single-item generate conditionals 2020-07-22 20:30:33 -06:00
Zachary Snow 5ad8de9ef7 standardize pattern conversion 2020-07-21 18:05:27 -06:00
Zachary Snow 49c0d297c9 fix package conversion not prefixing declarations with assignments (resolves #115) 2020-07-20 22:19:18 -06:00
Zachary Snow e88a6b9d84 fix type lookup of yet-unresolved types (resolves #111) 2020-07-20 17:06:13 -06:00
Zachary Snow 7eed2fc58e fix handling of multi-dimensional integer array literals (resolves #113) 2020-07-20 16:55:55 -06:00
Zachary Snow e6e62e8813 typedef conversion visits nested types in statements 2020-07-19 20:54:44 -06:00
Zachary Snow 90de4aa121 fix inadvertent duplicate casts 2020-07-19 19:09:57 -06:00
Zachary Snow 03b6ece939 address type lookup of $unsigned and $signed 2020-07-17 19:18:54 -06:00
Zachary Snow a38137b69a fix conversion of casts in gen item exprs 2020-07-15 19:04:11 -06:00
Zachary Snow 5667bdb589 unpacked array conversion supports generate scoped data
- added type class for looking up elements in scoped conversions
2020-07-14 22:59:59 -06:00
Zachary Snow b19259c694 upgraded size cast conversion
- support casts of generate scoped expressions
- support casts to sizes involving genvars
2020-07-14 20:10:38 -06:00
Zachary Snow 2d3973e624 synthesizable wildcard conversion 2020-07-13 23:15:06 -06:00
Zachary Snow db21869e69 fix premature conversion of casts containing dimension queries 2020-07-12 16:23:08 -06:00
Zachary Snow d46e1f24b4 run tests single threaded 2020-07-12 15:53:17 -06:00
Zachary Snow d88c516d33 enhanced handling of number literals
- number literals are parsed rather than stored as strings
- fix array query functions used on non-trivial number literals
- more efficient expression simplification recursion
- expanded constant folding scenarios
2020-07-12 15:06:27 -06:00
Zachary Snow 737c66a6c9 fix default type parameters which depend on other parameters 2020-07-10 17:45:36 -06:00
Zachary Snow a7673c55fd automatically fix simple declaration order issues 2020-07-08 22:20:40 -06:00
Zachary Snow 4b5e3232b9 support for localparam type 2020-07-08 19:39:26 -06:00
Zachary Snow 671101a30b allow type parameters to depend on other parameters 2020-07-08 18:56:41 -06:00
Zachary Snow 296e246158 fix multi-dimensional array unbased unsized pattern conversion 2020-07-06 22:26:04 -06:00
Zachary Snow 9520894720 unbased unsized conversion refactor
- support ubased unsized bound to ports using injected constants
- explicit context-aware literal sizing for complex expressions
- fix infinite loop case in NestPI conversion
- elaborate size-casts of converted literals
2020-07-06 22:11:53 -06:00
Zachary Snow 1903bc190d use unbounded integers 2020-07-02 23:33:03 -06:00
Zachary Snow cd8af036a0 logic conversion supports generate block scoping 2020-07-02 22:59:06 -06:00
Zachary Snow 85e3d0f5b5 initial generate block scoping support
- significant refactor of struct conversion
- significant refactor of typedef conversion
- scoping support in multipack conversion
- scoping support in typeof conversion
2020-07-02 22:58:59 -06:00
Zachary Snow 211e4b0ed8 fix literal casts larger than 32 bits 2020-07-01 23:35:30 -06:00
Zachary Snow 6b81f87a88 fix stale logs in test runner 2020-06-29 16:08:49 -06:00
Zachary Snow 82d06b3915 elaboration avoid introducing illegal selects 2020-06-25 17:36:09 -07:00
Zachary Snow 80154feb5e logic conversion notices procedural assignments in tasks and functions 2020-06-25 09:31:39 -07:00
Zachary Snow 24071d74ac paramtype conversion resolves dimension queries before substitution 2020-06-25 00:09:56 -07:00
Zachary Snow 2d134a8640 fix verbose mode crash 2020-06-22 21:50:00 -04:00
Zachary Snow 2535d689aa fix struct/interface/logic conversion interactions
- interface conversion only waits for type resolution of modports
- typeof conversion resolves struct field accesses
- logic conversion only converts logic data declarations
- struct conversion only converts within modules
- fix nested type traversal order causing premature struct conversion
2020-06-20 22:46:54 -04:00
Zachary Snow 4026ae8fa5 interface conversion respects shadowed variables 2020-06-20 15:56:01 -04:00
Zachary Snow 8d37db30e5 support complex modport expressions
- modports can use complex expressions
- update interface_infer test for consistency across simulators
- fix interface inlining of implicitly typed data declarations
2020-06-19 20:32:37 -04:00
Zachary Snow 8ae925d92e support modports depending on other interface data declarations 2020-06-19 20:07:57 -04:00
Zachary Snow 661703a8c2 address import resolution issues
- fix wildcard imports shadowing other items
- fix explicit imports depending on other items
- fix example export in package.sv
2020-06-18 21:18:08 -04:00
Zachary Snow 64f3067d78 allow dimension shorthand for instance arrays 2020-06-17 22:26:27 -04:00
Zachary Snow 3cfd368bc2 support multi-dimensional instances 2020-06-17 22:18:08 -04:00
Zachary Snow 5d02b918c3 fix inside and wildcard equality conversions
- handle cases where wildcard equality short-circuits to 0
- move checking for extraneous X/Z to wildcard conversion
- add exhaustive test coverage
2020-06-16 19:40:46 -04:00
Zachary Snow 99428b2f16 expanded support for interfaces with parameters 2020-06-14 22:57:46 -04:00
Zachary Snow 8cfd05de1a unbased unsized literals are context-aware 2020-06-14 21:43:32 -04:00
Zachary Snow cbe0071e43 fix bit param sizing (resolves #94) 2020-06-14 19:45:32 -04:00
Zachary Snow 682620b23f struct conversion includes exprs in decls 2020-06-13 22:14:53 -04:00
Zachary Snow 5ed053d317 add error test suite 2020-06-07 16:47:27 -04:00
Zachary Snow 2bc2eb59d8 advanced typeof support
- most binary operators
- ternary expressions
- bitwise negation
- number literals
- size casts
- concat and repeat expressions
2020-06-07 13:13:19 -04:00
Zachary Snow d0a6b0f529 fix 32 bit constant cast 2020-06-07 00:28:55 -04:00
Zachary Snow 82703834ac constant folding for shifts 2020-06-06 22:45:17 -04:00
Zachary Snow 2d7982f81e simplify $bits on simple part selects 2020-06-06 21:28:37 -04:00
Zachary Snow eb93ba67fc integer atom explicit sign cast support 2020-06-06 21:26:14 -04:00
Zachary Snow a8346f2f88 actually fix unbased unsized literals in ternary exprs 2020-06-06 17:01:27 -04:00
Zachary Snow 355b62da70 pack arrays in ternary expressions assigned to other arrays 2020-06-06 13:42:30 -04:00
Zachary Snow 7e20b74147 logic conversion handles shadowing 2020-06-05 21:41:03 -04:00
Zachary Snow 80bfbc1e8a fix unbased unsized literals in ternary exprs 2020-06-05 21:40:59 -04:00
Zachary Snow 9249c9fa2b typdef conversion obeys generate scoping 2020-06-05 21:38:31 -04:00
Zachary Snow ae392d4536 fix single bit enum sizing
- single bit localparams retain explicit range
- fix $bits on unsized literals
- use Implicit over Maybe for underlying type
2020-06-05 21:32:02 -04:00
Zachary Snow 97b2d1d166 fix declaration order of generated enum items 2020-06-05 21:32:02 -04:00
Zachary Snow ecf047e36e fix declaration order of nested package items 2020-06-05 21:31:58 -04:00
Zachary Snow b6f4f690e7 support simple bundle interfaces
- fix position modport-to-modport bindings
- inout logics converted to regs become outputs
2020-06-03 20:26:17 -04:00
Zachary Snow 478f0d19d2 fix premature typename cast conversion (resolves #88) 2020-06-01 18:19:47 -04:00
Zachary Snow 9042145695 substitute localparams into type params 2020-05-31 22:01:40 -04:00
Zachary Snow ea81d55cdc fix duplicate param type modules 2020-05-31 22:00:57 -04:00
Zachary Snow 3e85885def fix conversion of multi-packed arrays in packages 2020-05-04 19:22:36 -04:00
Zachary Snow f381476161 support nested interfaces 2020-04-13 22:50:41 -04:00
Zachary Snow e7381c4db2 fix double multipack conversion of Exprs in LHSs 2020-03-24 22:02:38 -04:00
Zachary Snow 5ad4849454 fix slicing direction for multi-packed arrays 2020-03-22 19:37:58 -04:00
Zachary Snow c03dba096f pack sliced arrays (resolves #78) 2020-03-18 23:40:21 -04:00
Zachary Snow a415d9eb3d fix type propagation of struct fields bit accesses 2020-02-20 00:19:14 -05:00
Zachary Snow 470fa01eb2 updated casting conventions
- explicit enum casts in source are converted to size casts
- conversion for basic pattern array literals of unsized numbers
- unsized number array literals preserve signing
- more aggressive ternary simplification
2020-02-19 18:58:25 -05:00
Zachary Snow 976f582287 push struct and multi-packed ternaries into ranges
- the ternary expressions were previously used to decide the direction
  of generated part selects
- this fixes an issue where ternaries were generated for LHSs
2020-02-18 21:25:20 -05:00
Zachary Snow 8f2d7dd5c7 fixed multiple issues with struct and multi-packed conversions
- struct conversion handles directionality of fields
- struct conversion supports minus part selects
- fixed incorrect handling of directional part selects in multi-packed
  conversion
- multi-packed conversion defines standard ranges in terms of
  directional part selects for clarity
- fixed potential loop due to overeager untagging in multi-packed
  conversion
2020-02-17 13:57:48 -05:00
Zachary Snow 5f0ccee065 conversion for unsized integer arrays 2020-02-17 12:12:51 -05:00
Zachary Snow 20dc92f6d8 fix typeof integer slices 2020-02-16 23:39:48 -05:00
Zachary Snow ad21277eb5 support macro names comprised of macro args and macros 2020-02-16 22:18:12 -05:00
Zachary Snow 9af38e7870 globally imported items are selectively nested 2020-02-16 15:44:03 -05:00
Zachary Snow 29b5136503 test runner supports explicit list of tests 2020-02-15 17:34:21 -05:00
Zachary Snow 799141af42 enum conversion covers nested module items (resolves #70) 2020-02-15 17:14:59 -05:00
Zachary Snow 463cdcb2c1 support complex sizes in size casts (resolves #69) 2020-02-15 16:48:09 -05:00
Zachary Snow fe8839eaec fix struct typing of ternary expressions (resolves #73) 2020-02-15 14:44:49 -05:00
Zachary Snow b124a561f2 updated binary and unary operator printing (resolves #72) 2020-02-15 14:11:17 -05:00
Zachary Snow aea64e903c pack arrays assigned to other arrays 2020-02-13 23:59:01 -05:00
Zachary Snow 104f98011e support for string literals with macros
- adds support for using macros and macro arguments within the argument
  list to other macros
- fixes an issue where macros with arguments would have extraneous
  whitespace
- fixes handling of multiline string literals
2020-02-12 23:58:41 -05:00
Zachary Snow c876c447e6 fix interface inlining renaming 2020-02-09 22:17:48 -05:00
Zachary Snow 4cf65dd4e2 support for struct type parameters
- param type conversion properly supports deferred param type resolution
- fixed struct conversion incomplete Subroutine traversal
- struct conversion excludes param types from conversion
- parameters are defaulted to have integer type
2020-02-09 17:31:24 -05:00
Zachary Snow 2f8ee303de keyword args conversion covers tasks 2020-02-09 14:17:18 -05:00
Zachary Snow 14644cd1ed fix output of empty generate loops 2020-02-09 14:01:05 -05:00
Zachary Snow 8a008c3024 interface conversion supports positional port bindings
- also fixes an issue where system tasks were inadvertently prefixed
  during the interface conversion
2020-02-09 13:42:45 -05:00
Zachary Snow 7a00c36a70 jump conversion keeps timing controls at the top level 2020-02-09 11:53:21 -05:00
Zachary Snow 4b3b09d2db allow extraneous semicolons in generate blocks 2020-02-08 22:15:35 -05:00
Zachary Snow 3c08767b63 redesigned preprocessor and lexer 2020-02-06 23:33:13 -05:00
Zachary Snow 2dcd35ade7 support typedefs with unpacked dimensions 2020-02-02 21:40:43 -05:00
Zachary Snow 9694799a23 more consistent procedural assignment support 2020-02-01 15:52:52 -05:00
Zachary Snow 610d9abacf support for gates with delays 2020-01-31 20:24:37 -05:00
Zachary Snow dd0eb5981d added source trace comments
- Trace comments cover module items, decls, and stmts
- Added pseudo-lexer to Alex parser for monadic Position production
- Added Position to every DeclToken
- Removed Comment PackageItem
- Added CommentStmt and CommentDecl
- Fixed traversal skipping outer MIAttr ModuleItems
- Generally cleaned up Parser modules
2020-01-30 22:17:17 -05:00
Zachary Snow ad98c14547 fix handling of macros at EOF (resolves #62) 2020-01-27 19:18:58 -05:00
Zachary Snow 17e17ebd7f fix struct array pattern conversion (resolves #60) 2020-01-20 17:26:03 -08:00
Zachary Snow cf4c2a5491 expanded support for macros in preprocessor directives 2020-01-14 23:19:39 -05:00
Zachary Snow e62074c756 type operator full select support 2020-01-11 22:52:12 -05:00
Zachary Snow 22d6ba4927 support evaluating functions as statements 2020-01-11 21:06:09 -05:00
Zachary Snow 2bd24b6086 expand type operator support 2020-01-11 20:35:51 -05:00
Zachary Snow b58248fc2c support type operator on simple expressions 2020-01-11 16:22:07 -05:00
Zachary Snow 8cc649a090 made tests in basic suite yosys-friendly
- multipack
- multipack_port
- package_order
- struct_array
2020-01-05 15:29:12 -05:00
Zachary Snow 7ea5b60d0b support for inside case statements 2019-12-21 20:41:19 -05:00
Zachary Snow 7f2fe54b11 fix jump statement conversion 2019-12-09 21:17:01 -05:00
Zachary Snow fb5fd39388 support for inside expression ranges and wildcards 2019-12-08 17:36:25 -05:00
Zachary Snow 92d827f3a5 preserve else block association, with timings 2019-11-20 20:44:09 -05:00
Zachary Snow 35a0587d2c preserve else block association (resolved #56) 2019-11-20 20:18:56 -05:00
Zachary Snow 95299c6f56 conversion of structs with multi-dim fields (resolves #53) 2019-11-19 23:15:25 -05:00
Zachary Snow 49e4f7872d conversion for always_latch (resolves #54) 2019-11-18 19:26:54 -05:00
Zachary Snow c936b39bd2 use system functions for signedness casts 2019-10-20 16:18:18 -04:00
Zachary Snow 06411d70f1 support converting interfaces with parameters 2019-10-20 15:58:37 -04:00
Zachary Snow 3597f4a6be support for methods (no conversion) and interface TFs 2019-10-19 16:22:46 -04:00
Zachary Snow a1cd6941ae apply patterns to substructures 2019-10-13 23:37:43 -04:00
Zachary Snow de581ecaf5 initial support for types in struct patterns 2019-10-13 19:01:42 -04:00
Zachary Snow 3979d294eb consistent size casting behavior
- also adds $clog2 localparam substitution to Simplify
2019-10-12 11:40:36 -04:00
Zachary Snow 79f9d21fe7 leave non-data-declarations at the end of modules 2019-10-12 11:18:10 -04:00
Zachary Snow fea5ff44eb coalesce tokens across nested macros 2019-10-11 22:53:08 -04:00
Zachary Snow d86f8535a0 support for begin_keywords directive 2019-10-11 19:32:10 -04:00
Zachary Snow 149d16d8fc add support for `line directive 2019-10-10 19:00:49 -04:00
Zachary Snow 8ae89a7bd4 support and convert jumps: break, continue, and return 2019-10-08 23:50:26 -04:00
Zachary Snow f0368714e1 support generate for without explicit block 2019-10-06 15:36:29 -04:00
Zachary Snow a1735ffef7 fix lexing identifiers and numbers across macro boundaries 2019-10-06 15:16:48 -04:00
Zachary Snow 9524f0028b support identifier delay values 2019-10-03 20:38:38 -04:00
Zachary Snow 77dd1011e3 support multiple assignments in one `assign` 2019-10-03 19:37:42 -04:00
Zachary Snow a77347f5cc streamline test performance 2019-10-02 23:52:33 -04:00
Zachary Snow 2b84bdb7e2 support for type param without parameter keyword 2019-10-01 22:02:30 -04:00
Zachary Snow d57c967090 added partial support for implicitly sized arrays 2019-09-28 16:57:36 -04:00
Zachary Snow 454afa97a3 major array pack and flatten update (closes #48)
- dimensions flattening conversion only flattens packed dimensions
- conversion for packing arrays when necessary (preserves memories)
- added coverage for array with multiple packed dimensions
- test runner no longer forbids multi-dim accesses after conversion
- Decl and subordinate types derive Ord
2019-09-26 23:11:59 -04:00
Zachary Snow dcca974fbc support size casts with complex size expressions 2019-09-25 23:59:47 -04:00
Zachary Snow 1584f39045 allow typename resolution of non-vector types 2019-09-25 23:45:18 -04:00
Zachary Snow 111e04f86e remove extraneous explicit unsigned in params (resolves #47) 2019-09-25 19:42:31 -04:00
Zachary Snow 76663c78a0 fix typename decl asgn lookahead (resolves #49) 2019-09-25 19:34:42 -04:00
Zachary Snow c7f51209df remove extraneous explicit unsigned (resolves #45) 2019-09-24 23:35:06 -04:00
Zachary Snow 2d81c6470f prevent genvar conflict without changing scope tree 2019-09-21 14:14:55 -04:00
Zachary Snow aa294eaad0 genvars declared in for loops retain scoping (resolves #46) 2019-09-21 13:36:33 -04:00
Zachary Snow 142df3b5f6 fixed handling of unbased unsized literals (resolves #43) 2019-09-18 23:39:09 -04:00
Zachary Snow ba4cf805ff preliminary conversion for size casts 2019-09-18 23:39:09 -04:00
Zachary Snow 82218848fc allow post inc/dec as first stmt in a block 2019-09-18 23:39:09 -04:00
Zachary Snow 2d034dcb73 basic support for elaboration system tasks 2019-09-17 20:30:17 -04:00
Zachary Snow 512d4b1a7f support module "list of param assignments" shorthand 2019-09-17 19:48:08 -04:00
Zachary Snow 5d80c83092 support for module attributes (resolves #39) 2019-09-15 23:17:14 -04:00
Zachary Snow bb2a8febea module item traversals visit items with attributes 2019-09-15 16:56:55 -04:00
Zachary Snow 77b9d2f085 support and conversion for foreach 2019-09-15 16:32:19 -04:00
Zachary Snow 7f701cd112 fixed dimension shorthand diretion and relevant tests 2019-09-15 16:30:53 -04:00
Zachary Snow 2ca8a022ad support and conversion for -> and <-> 2019-09-15 13:55:40 -04:00
Zachary Snow e27d6920a7 conversion for array query system functions (resolves #37) 2019-09-14 16:46:51 -04:00
Zachary Snow a14d078230 substitution conversion for size casts (closes #27) 2019-09-11 22:52:01 -04:00
Zachary Snow 6ddf782383 drop timeunit and timescale (closes #31) 2019-09-11 21:44:57 -04:00
Zachary Snow dd3a7e687c EmptyArgs conversion skips global functions until nested 2019-09-11 21:04:57 +02:00
Zachary Snow 4d0d652c86 enum preserves alias base type dimensions 2019-09-11 20:45:41 +02:00
Zachary Snow bd2efb4201 support struct patterns with partial defaults (resolves #35) 2019-09-11 19:32:24 +02:00
Zachary Snow 46242aac5d fix combined array declarations (resolves #34) 2019-09-11 19:32:12 +02:00
Zachary Snow f8a2bcbea0 conversion for function void (resolves #32) 2019-09-11 19:31:50 +02:00
Zachary Snow 6271e16b68 functional parameter type conversion 2019-09-11 17:58:03 +02:00
Zachary Snow 4de585ec0f initial parameter type conversion 2019-09-11 09:27:18 +02:00