intel / rohd

The Rapid Open Hardware Development (ROHD) framework is a framework for describing and verifying hardware in the Dart programming language.
https://intel.github.io/rohd-website
BSD 3-Clause "New" or "Revised" License
370 stars 65 forks source link

Fix a bug where array port element naming collisions with port names caused misconnections #473

Closed mkorbel1 closed 6 months ago

mkorbel1 commented 6 months ago

Description & Motivation

In cases where a uniquified array element name (e.g. "ArrayX" element 0 would be "ArrayX_0" internally) collided with actual submodule port names (e.g. a non-array port named "ArrayX_0"), the SystemVerilog generated would misconnect the non-array-element port to an index of the array. This was because array element names were assumed to be port names if their parent was a port, which is a false assumption.

This PR fixes the bug for both inputs and outputs. It also adds more robust checking and assertions in the generation to catch any similar issue up-front.

Related Issue(s)

N/A

Testing

Added one new test, plus more assertions and safety in the implementation.

Backwards-compatibility

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

No

Documentation

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

No