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
Zachary Snow
fabdc08493
fix package resolution of nested typedefs ( resolves #11 )
2019-08-27 21:32:03 -04:00
Zachary Snow
a9f502a696
traverse covers typedefs in packages and exprs in types
2019-08-26 21:08:31 -04:00
Zachary Snow
81f5fb500f
added conversion for packed unions
2019-08-08 23:12:49 -04:00
Zachary Snow
9b7d003ea4
support for empty packages ( resolves #9 )
2019-08-07 21:58:20 -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
9c160c3d20
added support for package imports in module headers
2019-08-03 21:50:26 -04:00
Zachary Snow
02e948f283
test runner automatically handles tests with top-level module inside both inputs
2019-05-10 10:48:40 -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
d2c06b58bc
initial work towards fleshing out package conversion
2019-04-30 01:57:04 -04:00
Zachary Snow
3fde36d9de
more portable basic enum test
2019-04-24 20:34:53 -04:00
Zachary Snow
50d00f9dc4
placate VCS in packed_array_shadow test
2019-04-24 04:16:42 -04:00
Zachary Snow
2d003c6ded
conversion for package-scoped tasks, functions, and typenames
2019-04-24 04:01:33 -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
d41dcb2bc9
struct conversion supports struct literals as task/function args
2019-04-22 13:58:14 -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
9884b74a48
coverage for negative packed array indices
2019-04-21 00:49:21 -04:00
Zachary Snow
eca70ef3bb
basic coverage for multi-packed function return values
2019-04-20 22:36:48 -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
f76f9bb88b
added test coverage for task and function bodies being one statement
2019-04-19 14:31:21 -04:00
Zachary Snow
b0eedfe318
$bits conversion handles basic expressions
2019-04-19 13:32:25 -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
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
d4284163dc
explicitly use bash to avoid dash compatability issues when running tests
2019-04-16 16:35:53 -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
Zachary Snow
9a38225b1d
several major fixes surrounding packed arrays
...
- entirely new PackedArray conversion (always flattens)
- typedef and struct correctly order packed ranges when combining types
- Stmt LHS traversal no longer traverses nested statements to avoid double conversion
- Logic conversion applies to `initial` blocks`
- new and modified tests to cover these cases
2019-04-08 21:28:33 -04:00
Zachary Snow
fb3d68e339
propper support for indexed part select addressing
2019-04-05 13:53:52 -04:00
Zachary Snow
011d88b544
PackedArray conversion supports arbitrary endianness
2019-04-04 19:40:19 -04:00
Zachary Snow
f9d46d548e
cleanup of Enum conversion; additional test
2019-04-03 21:31:56 -04:00