Fix aggregate netlist validation for disjoint field drivers, Issue #724 - #725
desmonddak wants to merge 1 commit into
Conversation
mkorbel1
left a comment
There was a problem hiding this comment.
The implementation looks correct: removing the aggregate-wide restriction allows independent field drivers while retaining the per-bit overlap check. No functional defect found. The inline regression-test suggestion is non-blocking.
At this revision, the focused netlist suite passed all 87 tests in my September 23 review; tests were not rerun for this submission.
| {'name': 'second', 'width': 8}, | ||
| ], | ||
| expect( | ||
| () => NetlistValidation.validate(ports, cells, 'struct_module'), |
There was a problem hiding this comment.
Non-blocking test suggestion: could we add a synthesis-level regression reduced from the failing design in #724? This test now omits netnames, so it also passes with the old validator, where the aggregate check was conditional on that argument. I ran the entire revised test file against the pre-fix production sources and all 87 tests passed. A case that retains an aggregate netname spanning independent mux drivers and fails before this fix would protect the behavior being corrected; the shared-bit rejection test can remain as complementary coverage. The implementation itself looks correct; this is a coverage improvement, not a functional defect or merge blocker.
Description & Motivation
Remove aggregate-wide driver validation that incorrectly reports multiple drivers when independent fields or elements of a structured aggregate are driven by different cells.
Netlist validation already checks drivers per wire bit, which correctly rejects electrically overlapping drivers. The aggregate-wide union check was redundant and rejected valid synthesized designs, including structured array outputs whose independent lanes are assigned by distinct muxes.
Update the regression coverage to accept disjoint field drivers and to verify that a shared driven bit is still rejected.
Related Issue(s)
Fixes #724
Testing
dart test test/netlist_synthesizer_test.dartgit diff --checkBackwards-compatibility
No. This relaxes an incorrect validation failure for legal disjoint aggregate-field drivers while retaining per-bit multiple-driver detection.
Documentation
No. This is an internal netlist-validation correction with updated regression coverage.