Commit Graph

531 Commits

Author SHA1 Message Date
Zachary Snow 2d3973e624 synthesizable wildcard conversion 2020-07-13 23:15:06 -06:00
Zachary Snow 51f2d2bb33 avoid unnecessary unased-unsized casts in assignments 2020-07-13 18:55:47 -06:00
Zachary Snow b2291a2046 use explicit size for large folded constants 2020-07-12 18:06:37 -06:00
Zachary Snow db21869e69 fix premature conversion of casts containing dimension queries 2020-07-12 16:23:08 -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 a83cc3809b omit no-op size casts of explicitly-sized literals 2020-07-09 21:02:09 -06:00
Zachary Snow 2961d1058b remove deprecated TFStrategy traversals 2020-07-09 21:01:42 -06:00
Zachary Snow 69b2e86aee remove pattern synonyms which introduced excessive overhead 2020-07-09 21:01:18 -06:00
Zachary Snow ff166df59c fix conversion of implicitly-typed type parameters 2020-07-09 21:00:23 -06:00
Zachary Snow a7673c55fd automatically fix simple declaration order issues 2020-07-08 22:20:40 -06:00
Zachary Snow d2a0ba0d13 improved handling of number literals
- elaborated literals larger than 32 bits are given an explicit size
- constant folding no longer encodes illegal negative numbers
2020-07-08 21:49:50 -06:00
Zachary Snow 4b5e3232b9 support for localparam type 2020-07-08 19:39:26 -06:00
Zachary Snow 9aa8d5a5d3 remove outdated TODOs 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 219a57c37b preliminary language support for parameterized class scopes 2020-07-08 17:46:37 -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 af319c3655 scoper tracks whether traversal is in procedure 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 1dfa9a9e7f simplify struct conversion 2020-07-01 22:37:19 -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 c005e5c6ae wildcard conversion uses simple equality if trivially possible 2020-06-22 21:33:53 -04:00
Zachary Snow 0fb97f2381 remove over-specified traversal arguments 2020-06-20 23:08:40 -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 bd1c07231f experimenting with monad helpers 2020-06-20 16:41:13 -04:00
Zachary Snow 4026ae8fa5 interface conversion respects shadowed variables 2020-06-20 15:56:01 -04:00
Zachary Snow 4bebb85c14 refactor interface conversion 2020-06-20 14:39:57 -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 369af00137 enums in packages are expanded in place 2020-06-19 00:41:02 -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 3cfd368bc2 support multi-dimensional instances 2020-06-17 22:18:08 -04:00
Zachary Snow 487685e0f0 remove ternary operators from wildcard conversion 2020-06-16 20:04:38 -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 12be569742 reduce usage of maybe 2020-06-14 15:56:09 -04:00
Zachary Snow b71e0f5346 performance improvements
- removed repetition in dimension query conversion
- removed repetition in package item nesting conversion
- packing item nesting conversion short circuit
- param type conversion doesn't bother renaming non-param type instances
- implement showsPrec for certain expression cases
2020-06-14 09:20:34 -04:00
Zachary Snow 682620b23f struct conversion includes exprs in decls 2020-06-13 22:14:53 -04:00
Zachary Snow 3baa9cbac7 simplify typedef conversion 2020-06-11 20:37:53 -04:00
Zachary Snow 9adb7522e9 improve stmt representation 2020-06-09 21:18:31 -04:00
Zachary Snow b58cf5bf07 remove empty generate conditionals 2020-06-07 14:26:53 -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 ec760964c7 remove empty initial blocks (resolves #89) 2020-06-02 08:29:12 -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 a0c3112b6c flatten tf blocks with decls 2020-05-05 19:32:37 -04:00
Zachary Snow 9e7768b66a simplify folded procedural branches 2020-05-05 18:50:20 -04:00
Zachary Snow fc9b0b5978 streamline stream conversion 2020-05-05 18:42:45 -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 df7277a6a0 simplification applies to exprs in decls 2020-04-05 22:13:19 -04:00
Zachary Snow b8d512e31f remove unneeded imports 2020-04-05 13:45:22 -04:00
Zachary Snow c262324a36 removed Unique dependency
- made stream conversion pure
- type param conversion uses Set for instance uniqueness
- updated NOTICE and resolutions
2020-04-05 13:09:52 -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 35e75c0604 language support for strengths 2020-03-20 21:13:57 -04:00
Zachary Snow c03dba096f pack sliced arrays (resolves #78) 2020-03-18 23:40:21 -04:00
Zachary Snow dd9f040f1f improved handling of genvars 2020-02-23 22:30:17 -05:00
Zachary Snow b2504afe71 package convertion perf tweak 2020-02-21 21:17:47 -05:00
Zachary Snow 95524c46ad remove excess patterns from struct conversion 2020-02-21 21:03:33 -05:00
Zachary Snow 400c009480 traversal performance improvements 2020-02-20 23:57:41 -05: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 db4c396389 minor multi-packed verbosity improvement 2020-02-17 17:31:14 -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 80984f7e7e size casts on decimal numbers are simplified 2020-02-17 12:53:26 -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 9af38e7870 globally imported items are selectively nested 2020-02-16 15:44:03 -05:00
Zachary Snow 799141af42 enum conversion covers nested module items (resolves #70) 2020-02-15 17:14:59 -05:00
Zachary Snow fe8839eaec fix struct typing of ternary expressions (resolves #73) 2020-02-15 14:44:49 -05:00
Zachary Snow aea64e903c pack arrays assigned to other arrays 2020-02-13 23:59:01 -05:00
Zachary Snow 8f4e783fd1 remove empty generate loops 2020-02-09 23:20:35 -05:00
Zachary Snow fcaca6c33a package item nesting perf tweaks 2020-02-09 22:34:27 -05:00
Zachary Snow c876c447e6 fix interface inlining renaming 2020-02-09 22:17:48 -05:00
Zachary Snow df4244d8d5 more aggressive expression simplification 2020-02-09 20:03:08 -05:00
Zachary Snow 9036bbabe4 cover struct width $bits edge case 2020-02-09 19:07:12 -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 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 eb76d16dde faster package item nesting conversion 2020-02-09 11:52:48 -05:00
Zachary Snow 48f84a9ed4 faster param type conversion 2020-02-09 11:52:33 -05:00
Zachary Snow 88c401e856 additional interface conversion error messages 2020-02-07 19:10:21 -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 6e4a19d00b flatten generate blocks with one item 2020-01-31 19:43:34 -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 17e17ebd7f fix struct array pattern conversion (resolves #60) 2020-01-20 17:26:03 -08:00
Zachary Snow 6f0fa58ace simplify struct LHS handling 2020-01-14 00:23:16 -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 82217ec05c updated lifetime representation; struct packers use automatic 2019-12-22 12:01:05 -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 96fe986b2d cleanup case representation 2019-12-01 23:25:33 -05:00
Zachary Snow c1f027e11a $readmemh/$readmemb imply reg (resolves #57) 2019-11-19 23:41:59 -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 eebe41427e language support for final blocks 2019-10-31 20:39:11 -04:00
Zachary Snow eeb2d809fd cleanup interface conversion 2019-10-20 22:06:10 -04: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 5843ef3879 better error messaging for missing interfaces 2019-10-20 14:53:37 -04:00
Zachary Snow 3597f4a6be support for methods (no conversion) and interface TFs 2019-10-19 16:22:46 -04:00
Zachary Snow 39f0e9b40d minor perf optimization 2019-10-19 14:38:28 -04:00
Zachary Snow cf0e182e65 convert unpacked structs as though packed
- also expands struct literals containing repeat expressions
2019-10-14 22:01:55 -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 37355920e0 cleaner AST output 2019-10-11 22:38:47 -04:00
Zachary Snow 3d3359d35a apply BlockDecl conversions to tasks and functions 2019-10-11 19:31:41 -04:00
Zachary Snow 167c65db11 pass through downstream compiler directives 2019-10-10 20:53:49 -04:00
Zachary Snow 8ae89a7bd4 support and convert jumps: break, continue, and return 2019-10-08 23:50:26 -04:00
Zachary Snow 08c38e6193 support time literals as expressions 2019-10-06 21:21:58 -04:00
Zachary Snow 1a394cff9c support mintypmax expressions 2019-10-06 16:18:15 -04:00
Zachary Snow f0368714e1 support generate for without explicit block 2019-10-06 15:36:29 -04:00
Zachary Snow 3807ab6736 handle adding packed dimensions to byte, shortint, and longint 2019-10-01 00:03:07 -04:00
Zachary Snow c6eedb9f26 pass through named events 2019-09-30 23:22:05 -04:00
Zachary Snow b7959c7aa2 support for statement labels and basic fork-join 2019-09-30 23:03:55 -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 c7f51209df remove extraneous explicit unsigned (resolves #45) 2019-09-24 23:35:06 -04:00
Zachary Snow 0262a3d3c4 struct conversion visits non-asgn LHSs 2019-09-24 22:09:22 -04:00
Zachary Snow f4181aba76 added pass-through support for strings 2019-09-24 22:09:18 -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 df3620d3a0 fix premature logic to wire conversion 2019-09-18 23:39:09 -04:00
Zachary Snow d84a4f7bb0 additional generate block simplification 2019-09-17 20:30:33 -04:00
Zachary Snow 7267f94b0b allow signing on net types (closes #40) 2019-09-16 19:50:30 -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 2ca8a022ad support and conversion for -> and <-> 2019-09-15 13:55:40 -04:00
Zachary Snow 2a51d20f11 package item nesting resolves across and throughout files 2019-09-14 21:00:40 -04:00
Zachary Snow c5f7f2cc5e typedef conversion gracefully skips yet-unknown typenames 2019-09-14 20:59:41 -04:00
Zachary Snow e27d6920a7 conversion for array query system functions (resolves #37) 2019-09-14 16:46:51 -04:00
Zachary Snow f5d6683422 generalization of array dimension(s) system functions 2019-09-14 12:38:26 -04:00
Zachary Snow 10feedb1af use the Unique package in a few places 2019-09-11 23:01:34 -04:00
Zachary Snow a14d078230 substitution conversion for size casts (closes #27) 2019-09-11 22:52:01 -04:00
Zachary Snow 295ac64929 package item conversions preserve ordering (resolves #36) 2019-09-11 21:16:55 -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 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
Zachary Snow 8df1e67faf typedef traversal only marks interfaces as such 2019-09-09 18:44:45 +02:00
Zachary Snow 677d11091b added monadic file traversal helper 2019-09-09 18:44:04 +02:00
Zachary Snow 66989b0446 language support for parameter type bindings 2019-09-09 07:38:14 +02:00
Zachary Snow d11e898edb Added ParamType decl; combined parameter and localparam under Param 2019-09-09 07:34:43 +02:00
Zachary Snow 9cc211d51e fix non-vector enum base types (closes #29) 2019-09-05 00:34:56 -04:00
Zachary Snow baaffd732d remove unused import 2019-09-04 21:01:27 -04:00
Zachary Snow 41bba1b2f2 generate localparams for all package enums (closes #26) 2019-09-04 20:59:41 -04:00
Zachary Snow 92feef8759 standardized, shorter hash generation 2019-09-03 23:54:47 -04:00
Zachary Snow af4711a8cf preliminary stream conversion 2019-09-03 23:36:29 -04:00
Zachary Snow 97fda59c51 convert needless patterns to concats 2019-09-02 22:35:36 -04:00
Zachary Snow 1f7c70dfe1 language support for LHS streaming operators 2019-09-02 20:46:35 -04:00
Zachary Snow d6c932d0fc conversion for block decls with asignments 2019-09-02 13:08:41 -04:00
Zachary Snow 04de45b08b language support for streaming operators 2019-09-01 18:42:16 -04:00
Zachary Snow 704e867c0c packed array conversion packs any unsupported unpacked dimensions 2019-09-01 18:39:01 -04:00
Zachary Snow 243f773657 convert for loop declarations and assignments to signle assignment (closes #15) 2019-08-30 00:12:01 -04:00
Zachary Snow 1d216a2e0e preliminary ternary substitution simplification 2019-08-28 23:26:12 -04:00
Zachary Snow 96034eb99c support for flattening multidimensional ports (resolves #21) 2019-08-28 22:32:36 -04:00
Zachary Snow 1dad3a7502 parse and convert empty function arguments (resolves #17) 2019-08-28 20:29:35 -04:00
Zachary Snow 02ba9e95df remove comments by default; added --verbose flag 2019-08-28 19:48:25 -04:00
Zachary Snow b48ca0bb8f added package enum item name resolution (resolves #16) 2019-08-28 19:01:25 -04:00
Zachary Snow fabdc08493 fix package resolution of nested typedefs (resolves #11) 2019-08-27 21:32:03 -04:00
Zachary Snow 737791aebd expose nested type traversal 2019-08-27 19:28:04 -04:00
Zachary Snow a9f502a696 traverse covers typedefs in packages and exprs in types 2019-08-26 21:08:31 -04:00
Zachary Snow 086826714d nicer error message for missing struct fields 2019-08-26 20:20:38 -04:00
Zachary Snow 81f5fb500f added conversion for packed unions 2019-08-08 23:12:49 -04:00
Zachary Snow 8a67a91166 added language support for (untagged) unions 2019-08-08 23:12:06 -04:00
Zachary Snow 4fd7b6c2f2 better support for struct array parameters
This includes support for
- parsing dimensioned alias parameters
- flattening non-var decls with multiple packed dimensions
- converting arrays of structs
- inferring struct types for decls with initializations
2019-08-06 23:11:09 -04:00
Zachary Snow 35ac09aa75 struct conversion handles complex expression nesting 2019-05-16 10:51:57 -04:00
Dave Eckhardt dadcd6ae24 Wording tweaks in comments. 2019-05-15 23:02:52 -04:00
Zachary Snow 3bef2b9cdb struct conversion handles alternate and mixed integer vector field types 2019-05-10 10:41:31 -04:00
Zachary Snow 44ea16e3eb ensure, rather than check, traverseScopesM invariant (perf optimization) 2019-05-01 13:37:50 -04:00
Zachary Snow 04337988cc standardized handling of resolution across source files 2019-04-30 15:44:52 -04:00
Zachary Snow d2c06b58bc initial work towards fleshing out package conversion 2019-04-30 01:57:04 -04:00
Zachary Snow fc3e79ddd0 basic conversion for int, byte, shortint, and longint 2019-04-24 14:00:08 -04:00
Zachary Snow 2d003c6ded conversion for package-scoped tasks, functions, and typenames 2019-04-24 04:01:33 -04:00
Zachary Snow bc23aebc55 added language support for package-scoped calls and typenames 2019-04-24 03:37:47 -04:00
Zachary Snow 9373f3049a added note about state of package conversion 2019-04-23 20:37:59 -04:00
Zachary Snow 2aa39289a3 added preliminary package conversion 2019-04-23 20:22:03 -04:00
Zachary Snow 33dc4b3f88 conversions are applied per-file
- NestTF refactored to cover all package items
- fixed issue where type traverse skipped typedefs
2019-04-23 18:51:39 -04:00
Zachary Snow da38776d73 decls are now package items 2019-04-23 17:12:56 -04:00
Zachary Snow d01df6110b preliminary language support for packages 2019-04-23 15:53:51 -04:00
Zachary Snow 4178751b22 interface conversion handles decls with unpacked dimensions 2019-04-23 15:48:25 -04:00
Zachary Snow 4e34217472 struct conversion handles decls with unpacked dimensions 2019-04-23 15:48:25 -04:00
Zachary Snow 85d22d8d03 support for generate constructs outside of generate regions and genvar declarations in generate loops 2019-04-23 14:38:44 -04:00
Zachary Snow d36ae19e4c fix $bits resolution of params/localparams 2019-04-23 01:35:21 -04:00
Zachary Snow 925f11cf31 expression traversal visits LHS range and bit expressions 2019-04-23 01:16:57 -04:00
Zachary Snow 04983b0cd5 fixed off by 1 in logic conversion 2019-04-23 00:33:41 -04:00
Zachary Snow c8894cebde random documentation and cleanup 2019-04-23 00:23:32 -04:00
Zachary Snow 88579c6d1f logic conversion fixes produced reg-to-output bindings
- generally cleaned up and documented the Logic conversion
- made exprToLHS a shared helper function, now uses Maybe
- ported existing local exprToLHS helpers to the new one
2019-04-22 20:44:35 -04:00
Zachary Snow 55a5443786 logic conversion makes continuous assignments procedural where necessary 2019-04-22 15:10:34 -04:00
Zachary Snow d41dcb2bc9 struct conversion supports struct literals as task/function args 2019-04-22 13:58:14 -04:00
Zachary Snow addc550028 minor code cleanup for struct conversion 2019-04-22 02:48:22 -04:00
Zachary Snow a8f2cbbe29 struct conversion supports complex shadowing 2019-04-22 02:33:24 -04:00
Zachary Snow 05b7bdb99c added conversion which moves top-level tasks and functions into modules 2019-04-22 01:18:25 -04:00
Zachary Snow acebba58c9 struct conversion omits unused packing functions 2019-04-21 22:22:33 -04:00
Zachary Snow d5a369baa0 struct conversion uses packing functions to force field width 2019-04-21 21:56:23 -04:00
Zachary Snow c5fdf38612 added conversion which adds names to unnamed blocks with decls 2019-04-19 19:08:52 -04:00
Zachary Snow b0eedfe318 $bits conversion handles basic expressions 2019-04-19 13:32:25 -04:00
Zachary Snow 73f831122f trim empty blocks; remove extra space in implicitly typed decls 2019-04-19 02:55:40 -04:00
Zachary Snow 8298e83f1e enum conversion only produces localparams for enum items that are used 2019-04-19 02:14:21 -04:00
Zachary Snow 9fcc8e3478 enum generate localparam values are also explicitly sized to avoid implicit cast/warnings 2019-04-19 01:02:07 -04:00
Zachary Snow a5ebb1e822 minor output cleanup 2019-04-18 23:32:49 -04:00
Zachary Snow 4cbfd8fa1a enum conversion explicitly sizes generated params and supports partial types 2019-04-18 21:01:29 -04:00
Zachary Snow 093a4d4dd9 fix Struct conversion handling of default patterns with struct arrays 2019-04-18 21:00:48 -04:00
Zachary Snow 9305c0f43b PackedArray conversion supports complex shadowing 2019-04-18 15:51:39 -04:00
Zachary Snow 96e0aff7f4 handle TF decl shadowing within packed array conversion 2019-04-17 20:05:55 -04:00
Zachary Snow 8d77856b1e StmtLHS traversal includes LHSs for loop parts 2019-04-17 17:44:12 -04:00
Zachary Snow 07b64bd1f2 clearer messaging surrounding unsupported interface conversion features 2019-04-17 01:44:03 -04:00
Zachary Snow 369e9f2f19 updated Stack snapshot; handled pattern matching failure issues introduced in GHC 8.6 2019-04-16 15:52:38 -04:00
Zachary Snow 75e2fba597 explicitly size literals in converted default struct patterns 2019-04-15 23:28:03 -04:00
Zachary Snow da9452bd26 fix PackedArray handling of bit select followed by range select 2019-04-11 18:29:30 -04:00
Zachary Snow 88c537c93f fixed handling of 3+ dimensional packed arrays 2019-04-11 17:30:29 -04:00