iverilog/tgt-vvp
Lars-Peter Clausen 9549156226 Add initial support for array assignment patterns
SystemVerilog allows to use assignment patterns to assign values to an
array. E.g. `int a[4] = '{1, 2, 3, 4}`.

Each value is evaluated in the context of the element type of the array.

Nested assignment patterns are supported. E.g. `int a[2][2] = '{'{1, 2},
'{1, 2}};`

Add initial support for array assignment patterns for both continuous as
well as procedural assignments.

For continuous assignments the assignment pattern is synthesized into an
array of nets. Each pin is connected to one of the assignment pattern
values and then the whole net array is connected to target array.

For procedural assignments it is unrolled in the vvp backend. E.g
effectively turning `a = '{1, 2};` into `a[0] = 1; a[1] = 2;`.

Not yet supported are indexed initializers or `default`.
E.g. `int a[10] = '{1:10, default: 20};`

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
2023-06-17 11:50:23 -07:00
..
COPYING.lesser Move GNU lesser to tgt-vvp since that is the only place where LGPL code is located 2020-11-14 19:03:27 -08:00
Makefile.in Add compiler support for break and continue 2023-01-15 21:46:20 -08:00
cppcheck.sup Update tgt- directories with cppcheck suggested fixes 2021-01-02 13:31:26 -08:00
draw_class.c Allow class properties to be arrayed. 2014-09-15 17:37:30 -07:00
draw_delay.c Fix for GitHub issue #96 - support mixed constant/variable delays in vvp. 2016-04-02 19:55:56 +01:00
draw_enum.c updated FSF-address 2012-08-29 10:12:10 -07:00
draw_mux.c Fix for GitHub issue #96 - support mixed constant/variable delays in vvp. 2016-04-02 19:55:56 +01:00
draw_net_input.c Cleanup some cppcheck warnings 2022-12-28 00:00:31 -08:00
draw_substitute.c Handle some tricky conditions assignments to parts. 2014-07-14 16:46:58 -07:00
draw_switch.c Increase the thread flag count from 256 to 512 2020-05-31 12:39:54 -07:00
draw_ufunc.c Functions that return strings pass the return value on the stack. 2016-03-01 15:38:28 -08:00
draw_vpi.c tgt-vvp: Handle signedness when passing struct member to system function 2022-05-24 11:32:19 +02:00
eval_condit.c tgt-vvp: Short circuit logical operators 2021-12-30 18:56:39 +01:00
eval_expr.c A value of all X or Z can be an immediate number 2020-07-29 23:00:09 -07:00
eval_object.c Add `ivl_type_packed_width()` API 2022-10-08 13:42:40 +02:00
eval_real.c Add support for pop_back/front without () 2020-07-25 22:16:54 -07:00
eval_string.c Add support for pop_back/front without () 2020-07-25 22:16:54 -07:00
eval_vec4.c Add support for logical implication 2022-02-13 18:48:16 -08:00
modpath.c Fix GitHub issue #315 - support modpath delays on multiply-driven nets. 2020-04-02 10:56:03 +01:00
stmt_assign.c Add initial support for array assignment patterns 2023-06-17 11:50:23 -07:00
vvp-s.conf.in Remove redundant back-end selections. 2008-09-07 16:43:54 -07:00
vvp.c Update displayed Copyright dates 2023-06-10 20:33:08 -07:00
vvp.conf.in Remove redundant back-end selections. 2008-09-07 16:43:54 -07:00
vvp_config.h.in Remove "using namespace std" from vvp header files and fix the fallout. 2021-11-04 17:02:07 +00:00
vvp_priv.h tgt-vvp: Handle continue/break in do-while loops 2023-06-11 07:20:15 -07:00
vvp_proc_loops.c tgt-vvp: Handle continue/break in do-while loops 2023-06-11 07:20:15 -07:00
vvp_process.c tgt-vvp: Handle continue/break in do-while loops 2023-06-11 07:20:15 -07:00
vvp_scope.c Cleanup some cppcheck warnings 2022-12-28 00:00:31 -08:00