Zachary Snow
5c8d838eef
fix overzealous task/function decl hoisting
2021-02-01 15:54:32 -05:00
Zachary Snow
b8759776ca
limited progress on typeof signedness
...
- ensure concats and repeats stay unsigned
- defer unbased-unsized conversion to enable cast semantics
- disable inaccurate folding of binary operations of based numbers
- fix typeof and size cast binop signedness logic
- fix typeof $unsigned and $signed
- test harness allows production of `integer unsigned`
2021-02-01 10:17:50 -05:00
Zachary Snow
275130e0b0
move package param step to conversion
2021-01-27 16:41:39 -05:00
Zachary Snow
821b8bc947
fix loop in logic indirection typing
2021-01-26 15:39:41 -05:00
Zachary Snow
b22cd210a4
improved portability of logic conversion
...
- indirect converted reg continuous assignments through wires
- fix typeof for implicitly typed ports
- fix typeof for sized implicitly typed params
2021-01-25 19:23:54 -05:00
Zachary Snow
5f0dc6be0c
preserve generate else branch association in codegen
2021-01-25 12:33:04 -05:00
Zachary Snow
e4adf6a74c
apply reordering in generate blocks
2021-01-25 12:01:03 -05:00
Zachary Snow
8c967ea9c7
cast function generated output stability
...
- cast functions in separate scopes are no longer omitted or removed
- package item reordering excludes locally declared names
- test runner ensures output is stable after first iteration
2021-01-24 14:29:54 -06:00
Zachary Snow
58e5bfa6d3
fix typeof incorrectly propagating implicit types
2021-01-23 21:55:11 -07:00
Zachary Snow
8eb3a251f7
package conversion overhaul
...
- full import and export support
- simplify AST representation of import and export
- allow package-scoped identifiers invoked as subroutines
- use scoped name resolution for identifiers in packages
- merge package item nesting conversion into package conversion
- fix handling of colliding enum items in separate modules
- fix visiting enum item exprs in types
2021-01-23 21:54:39 -07:00
Zachary Snow
ea56f51d03
support for parameters without defaults
2021-01-21 11:55:23 -07:00
Zachary Snow
2a2d819baa
additional codegen test coverage
...
- assertions, gen case, and inout
- simplify block codegen
- remove blank lines in tasks with no inputs
2020-12-11 12:41:59 -07:00
Zachary Snow
2311d3e2d6
additional interface conversion test coverage
2020-12-11 12:41:20 -07:00
Zachary Snow
e72d372d73
omit reference file for verilog-compatible test inputs
2020-12-08 11:39:17 -07:00
Zachary Snow
2081f6a32a
support attributes on port declarations
2020-12-08 11:28:28 -07:00
Zachary Snow
d137fd3d68
fix premature elaboration of single element patterns
2020-12-07 16:23:29 -07:00
Zachary Snow
ad18c583ab
support default pattern unbased unsized port bindings
2020-12-07 16:23:26 -07:00
Zachary Snow
2b377cef04
interface and instance array support
...
- support for interface instance arrays
- support for interface-using module instance arrays
- support for modport array bindings
- fix modport bindings shadowed in nested instances
2020-12-06 15:41:33 -07:00
Zachary Snow
bf6ba338df
additional default_nettype test coverage
2020-12-04 11:38:17 -07:00
Zachary Snow
16c63b8109
test coverage for wildcard inequality
2020-12-03 16:23:03 -07:00
Zachary Snow
5c0f414dfa
convert wildcard bindings before interfaces
2020-12-03 11:03:09 -07:00
Zachary Snow
091520e4cd
allow generate scoped basic subroutine invocations in statement blocks
2020-11-30 20:36:06 -07:00
Zachary Snow
2e499dbd03
support case inside with basic side effects
2020-11-27 14:09:16 -07:00
Zachary Snow
a7874e1b2f
test suite iverilog 11.0 compatibility
2020-11-24 18:09:07 -07:00
Zachary Snow
260a6507eb
fix converted constant continuous assignment
2020-11-24 17:27:58 -07:00
Zachary Snow
e9f9696342
extend typeof operator support
2020-09-28 23:42:46 -04:00
Zachary Snow
6d907e0985
typeof logical negation
2020-09-13 23:51:13 -04:00
Zachary Snow
7e2450ea5e
conversion to create declarations for implicit nets
2020-09-13 23:35:41 -04:00
Zachary Snow
2429a2c9f0
upgraded streaming concatenation conversion
...
- fix handling of truncation for unpacking
- fix handling of final limited-size chunk
- support unpacking in a declarations with assignments
- support streaming concatenations in continuous assignment
2020-08-16 13:12:11 -04:00
Zachary Snow
d4511871ca
typeof $clog2
2020-08-13 19:37:12 -04:00
Zachary Snow
e80db12422
conversion for implicitly variably sized parameters
2020-08-12 21:59:57 -04:00
Zachary Snow
13b62fd81e
support structs of integers
2020-08-11 18:37:21 -04:00
Zachary Snow
50a6966a4f
fix three typeof conversion issues
...
- type of strings are left implicit
- type of implicitly-typed params uses the type of the default value
- prevent exponential blowup for large ternary expressions
2020-08-09 17:23:37 -04:00
Zachary Snow
67466eaa60
major interface conversion update
...
- module instances with modport bindings are now inlined
- support for modports in generate loops
- support for generic interfaces
- implied modport instance propagation
- add error message for interface instances missing port list
2020-08-08 20:43:47 -06:00
Zachary Snow
3834b9f109
support type lookup of genvars
2020-08-01 20:14:40 -06:00
Zachary Snow
698e3b0b54
fix unbased unsized binding conversion for instances with type parameters
2020-07-27 19:04:41 -06:00
Zachary Snow
21ebbb5a19
use repeats for converted unbased-unsized literals
...
- reduces the number of cast functions which are generated
- adjust package_function_cast to preserve cast converage
- fix issue where cast functions would be generated before localparam
substitution within a procedure
2020-07-24 21:29:59 -06:00
Zachary Snow
f0a5a47371
fix break/continue causing return after loop
2020-07-23 19:04:20 -06:00
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