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
e5e99b291b
Revert "avoid unnecessary unased-unsized casts in assignments"
...
This reverts commit 51f2d2bb33 .
2020-07-17 19:15:34 -06:00
Zachary Snow
cc9f7f4658
remove old scopedConversion
2020-07-15 19:17:05 -06:00
Zachary Snow
4c173d86ab
transition simplify conversion to new scoper
2020-07-15 19:14:05 -06:00
Zachary Snow
a38137b69a
fix conversion of casts in gen item exprs
2020-07-15 19:04:11 -06:00
Zachary Snow
c28bb71ac5
more careful expr and type traversals
2020-07-15 18:44:57 -06:00
Zachary Snow
efe8de3933
faster scope resolution
2020-07-15 18:44:36 -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
51f2d2bb33
avoid unnecessary unased-unsized casts in assignments
2020-07-13 18:55:47 -06:00
Zachary Snow
bf1d9283d7
interpret package parameters as localparams
2020-07-13 18:54:45 -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
f2ccebd58e
release v0.0.4
2020-06-19 21:06:02 -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
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
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
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