Zachary Snow
bbb469463b
fix typing bit and part selects
2020-07-23 18:23:40 -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
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
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
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
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
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
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
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
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
17e17ebd7f
fix struct array pattern conversion ( resolves #60 )
2020-01-20 17:26:03 -08: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
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
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
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
Zachary Snow
9cc211d51e
fix non-vector enum base types ( closes #29 )
2019-09-05 00:34:56 -04:00
Zachary Snow
1a6e0ce9df
added support for inside expressions ( closes #28 )
2019-09-04 21:36:50 -04:00
Zachary Snow
41bba1b2f2
generate localparams for all package enums ( closes #26 )
2019-09-04 20:59:41 -04:00
Zachary Snow
af4711a8cf
preliminary stream conversion
2019-09-03 23:36:29 -04:00
Zachary Snow
d6c932d0fc
conversion for block decls with asignments
2019-09-02 13:08:41 -04:00
Zachary Snow
8f7968bf37
support data declarations with automatic lifetime ( closes #20 )
2019-08-31 15:36:27 -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
1472ea0cfe
convert unpacked parameter dimensions ( closes #18 )
2019-08-29 20:52:06 -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
b48ca0bb8f
added package enum item name resolution ( resolves #16 )
2019-08-28 19:01:25 -04:00