Skip to content

Fix aggregate netlist validation for disjoint field drivers, Issue #724 - #725

Open
desmonddak wants to merge 1 commit into
intel:mainfrom
desmonddak:fix/netlist-aggregate-validation
Open

desmonddak wants to merge 1 commit into
intel:mainfrom
desmonddak:fix/netlist-aggregate-validation

Conversation

@desmonddak

Copy link
Copy Markdown
Contributor

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.dart
    • 87 tests passed.
  • Focused analyzer checks for the modified synthesizer and validation sources passed.
  • git diff --check

Backwards-compatibility

Is this a breaking change that will not be backwards-compatible? If yes, how so?

No. This relaxes an incorrect validation failure for legal disjoint aggregate-field drivers while retaining per-bit multiple-driver detection.

Documentation

Does the change require any updates to documentation? If so, where? Are they included?

No. This is an internal netlist-validation correction with updated regression coverage.

@mkorbel1 mkorbel1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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'),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Netlist validation rejects disjoint drivers within structured aggregate nets

2 participants