rohd
rohd copied to clipboard
The order in which `clock` is connected to module inputs affects how the circuit behaves
Describe the bug
The order in which clock is connected to module inputs affects how the circuit behaves.
The first screenshot shows the correct behavior, the second shows the wrong one:
register3andregister4contain unknown values for some reasonregister0must copy the value fromregister4, and whileregister4contains an unknown value,register0contains the correct valueregister0sets the required value in the same clock as the module receives input (as if the logic is combinational, not sequential)
SCREENSHOT 1

SCREENSHOT 2

The example itself is quite large, so perhaps others should be considered as “minimal examples” (the order of joins there affected the values of x/z):
- https://github.com/intel/rohd/issues/235#issuecomment-1468243366
- https://github.com/intel/rohd/issues/235#issuecomment-1468726233
- https://github.com/intel/rohd/issues/235#issuecomment-1469601642
To Reproduce
- Download code: bug_example.zip
- Run
example.dart, openwaves.vcd, checkRegisterFileControllerUnitmodule signals - this is expected behavior - Open
bsm1d.dart, go to line 67rfcu.clock <= intf.clock;and swap it with line 68. - Run
example.dart, openwaves.vcd, checkRegisterFileControllerUnitmodule signals - this is erroneous behavior
Expected behavior
The connection order does not affect the behavior of the circuit.
Actual behavior
The connection order affects the behavior of the circuit.
Additional: Dart SDK info
Dart SDK version: 2.19.3 (stable) (Tue Feb 28 15:52:19 2023 +0000) on "linux_x64"
Additional: pubspec.yaml
No response
Additional: Context
ROHD v0.4.2
Thank you for providing the detail and something to reproduce this. I haven't started debugging yet but from your description it does sound like a bug.