iverilog/tgt-vlog95
Martin Whitaker 2817bf59c5 tgt-vlog95: fix mixed-scope multiple constant assignments to a net (issue #1181)
The vlog95 code generator collects all the constant assignments to a net
within each scope and then emits them. The old code only recorded the
ivl_signal_t for each constant assignment, which meant it had to iterate
through the nexus pointers in the assicated nexus to find the constant.
When there were multiple constant assignments to the same net, it needed
to record which assignments had already been emitted, which it did by
keeping a count in the nexus private data and skipping that many constants
on each successive assignment. However the count did not get reset after
emitting all the assignments in that scope, so if there were assignments
to the same net made in another scope, the count would already be positive
and those assignments would also be skipped.

This could probably have been fixed by clearing the nexus private data
after processing the constant assignment list for each scope, but it is
more efficient to record the ivl_nexus_ptr_t for each constant along with
the ivl_signal_t, eliminating the need to search for the associated nexus
pointer.
2024-11-10 13:31:54 +00:00
..
Makefile.in Update cppcheck to use c++11 2024-02-05 02:21:24 -08:00
cppcheck.sup Update tgt- directories with cppcheck suggested fixes 2021-01-02 13:31:26 -08:00
event.c Add support for SV edge 2021-01-07 01:22:49 -08:00
expr.c Fix the vlog95 -> and <-> expression code for wide results 2020-12-01 00:04:00 -08:00
logic_lpm.c tgt-vlog95: fix mixed-scope multiple constant assignments to a net (issue #1181) 2024-11-10 13:31:54 +00:00
misc.c tgt-vlog95: Don't strip null-bytes from string literals in structural elements 2023-01-02 16:22:46 -08:00
numbers.c tgt-vlog95: Don't strip leading null-bytes from string literals 2023-01-02 16:22:33 -08:00
scope.c tgt-vlog95: fix mixed-scope multiple constant assignments to a net (issue #1181) 2024-11-10 13:31:54 +00:00
stmt.c Add compiler support for break and continue 2023-01-15 21:46:20 -08:00
udp.c vlog95: Major rework of nexus emitting code, etc. 2012-01-02 11:29:42 -08:00
vlog95-s.conf Renamed synthsplit to exposenodes. 2016-02-27 20:24:28 +00:00
vlog95.c Update displayed Copyright 2024-01-20 17:52:04 -08:00
vlog95.conf vlog95: block generating a concat-Z LPM device in the compiler. 2013-02-13 19:19:21 -08:00
vlog95_priv.h tgt-vlog95: fix mixed-scope multiple constant assignments to a net (issue #1181) 2024-11-10 13:31:54 +00:00