Skip to content

CoreIR Won't Compile Circuit That Simulates Correctly #24

@David-Durst

Description

@David-Durst

This test runs correctly:

def test_rshift_parallel():
width = 5
num_in = 4
test_vals = [2,5,3,8]
shift_amount = 2
in_type = Array[num_in, Array[width, In(BitIn)]]
scope = Scope()
args = ['I', in_type, 'O', Out(in_type)] + ClockInterface(False, False)
testcircuit = DefineCircuit('Test', *args)
rshift = RShiftParallel(num_in, shift_amount, in_type.T)
wire(rshift.I, testcircuit.I)
wire(testcircuit.O, rshift.O)
EndCircuit()
sim = CoreIRSimulator(testcircuit, testcircuit.CLK)
for i, val in enumerate(test_vals):
sim.set_value(testcircuit.I[i], int2seq(val, width), scope)
sim.evaluate()
for i, val in enumerate(test_vals[shift_amount:]):
assert seq2int(sim.get_value(testcircuit.O[i + shift_amount])) == test_vals[i]

The same test except using fault fails:

def test_fault_rshift_parallel():
width = 5
num_in = 4
test_vals = [2,5,3,8]
shift_amount = 2
in_type = Array[num_in, Array[width, In(BitIn)]]
args = ['I', in_type, 'O', Out(in_type)]
testcircuit = DefineCircuit('Test', *args)
rshift = RShiftParallel(num_in, shift_amount, in_type.T)
wire(rshift.I, testcircuit.I)
wire(testcircuit.O, rshift.O)
EndCircuit()
magma.compile("vBuild/" + testcircuit.name, testcircuit, output="coreir-verilog",
passes=["rungenerators", "wireclocks-coreir", "verifyconnectivity --noclkrst", "flattentypes", "flatten", "verifyconnectivity --noclkrst", "deletedeadinstances"],
namespaces=["aetherlinglib", "commonlib", "mantle", "coreir", "global"])
tester = fault.Tester(testcircuit)
for i, val in enumerate(test_vals):
tester.circuit.I[i] = val
tester.eval()
for i, val in enumerate(test_vals[shift_amount:]):
tester.circuit.O[i + shift_amount].expect(test_vals[i])
tester.compile_and_run(target="verilator", skip_compile=True, directory="vBuild/")
. It fails on the call the CoreIR compiler that generates verilog. The error message is below. @rdaly525 any thoughts? This looks like a bug in CoreIR.

python: /home/david/dev/coreir/src/ir/context.cpp:112: void CoreIR::Context::die(): Assertion `0' failed.
Fatal Python error: Aborted

Current thread 0x00007efbff6e1740 (most recent call first):
  File "/home/david/dev/pycoreir/coreir/module.py", line 135 in save_to_file
  File "/home/david/dev/magma/magma/compile.py", line 56 in __compile_to_coreir
  File "/home/david/dev/magma/magma/compile.py", line 136 in compile

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions