Commit Graph

416 Commits

Author SHA1 Message Date
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 3186afe400 additional expression simplification cases 2020-06-06 23:18:22 -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 790312d25d vim modelines for Lex.x and Parse.y 2020-05-06 19:03:32 -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 c5ef5ea9e2 additional expression simplification
- constant folding supports hex numbers
- simplify mod
- simplify pow
- elaborate !(a == b) into a != b
2020-04-05 23:12:54 -04:00
Zachary Snow df7277a6a0 simplification applies to exprs in decls 2020-04-05 22:13:19 -04:00
Zachary Snow 543a104683 upgrade to stackage lts-14.26 2020-04-05 13:45:31 -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 3831dcffee bump release version 2020-03-30 19:50:04 -04:00
Zachary Snow bcafef8d01 allow empty list_of_parameter_assignments 2020-03-30 19:27:44 -04:00
Zachary Snow 1687b1c5c1 allow empty parameter_port_list (resolves #83) 2020-03-25 23:55:19 -04:00
Zachary Snow e7381c4db2 fix double multipack conversion of Exprs in LHSs 2020-03-24 22:02:38 -04:00
Rupert Swarbrick 78f3db8803 Fail more gracefully on mismatched `if/`elsif/`else/`endif
Without this patch, a stray `endif caused sv2v to take the tail of an
empty list. Now we raise a lexical error.

To do this, the patch pulls the "push" and "pop" logic for the
preprocessor condition stack into separate helper
functions (pushCondStack and popCondStack). It also defines some
helper functions for manipulating Cond's.

The patch also adds a documentation comment explaining what the
different values of Code meant (because I had to squint to work it
out).
2020-03-23 20:19:25 -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 bd68ab0852 faster parsing of very long files 2020-03-20 18:53:06 -04:00
Zachary Snow c03dba096f pack sliced arrays (resolves #78) 2020-03-18 23:40:21 -04:00
Zachary Snow f44e3e808a add option to skip preprocessing 2020-03-18 20:02:20 -04:00
Rupert Swarbrick f5881919c1 Allow exclusion of Assert conversion
Yosys does support some asserts nowadays. Allowing sv2v to not strip
them out means that you can check formal properties without needing
hierarchical references (which Yosys really doesn't cope well with!)
2020-03-16 23:34:05 -04:00
Zachary Snow dd9f040f1f improved handling of genvars 2020-02-23 22:30:17 -05:00