Exemple #1
0
def test_action_strs():
    circ = common.TestBasicClkCircuit
    assert str(Poke(circ.I, 1)) == 'Poke(BasicClkCircuit.I, 1)'
    assert str(Expect(circ.O, 1)) == 'Expect(BasicClkCircuit.O, 1)'
    assert str(Eval()) == 'Eval()'
    assert str(Step(circ.CLK, 1)) == 'Step(BasicClkCircuit.CLK, steps=1)'
    assert str(Print(circ.O, "%08x")) == 'Print(BasicClkCircuit.O, "%08x")'
    assert str(Peek(circ.O)) == 'Peek(BasicClkCircuit.O)'
    index = f"__fault_loop_var_action_0"
    assert str(Loop(12, index, [Peek(circ.O), Poke(circ.I, 1)])) == \
        f'Loop(12, {index}, ' \
        f'[Peek(BasicClkCircuit.O), Poke(BasicClkCircuit.I, 1)])'
    file = File("my_file", Tester(circ), "r", 1)
    assert str(FileOpen(file)) == 'FileOpen(File<"my_file">)'
    assert str(FileRead(file)) == 'FileRead(File<"my_file">)'
    assert str(FileWrite(file, 3)) == 'FileWrite(File<"my_file">, 3)'
    assert str(FileClose(file)) == 'FileClose(File<"my_file">)'
Exemple #2
0
def test_action_strs():
    circ = common.TestBasicClkCircuit
    assert str(Poke(circ.I, 1)) == 'Poke(BasicClkCircuit.I, 1)'
    assert str(Expect(circ.O, 1)) == 'Expect(BasicClkCircuit.O, 1)'
    assert str(Eval()) == 'Eval()'
    assert str(Step(circ.CLK, 1)) == 'Step(BasicClkCircuit.CLK, steps=1)'
    assert str(Print(circ.O, "%08x")) == 'Print(BasicClkCircuit.O, "%08x")'
    assert str(Peek(circ.O)) == 'Peek(BasicClkCircuit.O)'
Exemple #3
0
def test_target_peek(target, simulator):
    circ = TestPeekCircuit
    actions = []
    for i in range(3):
        x = random_bv(3)
        actions.append(Poke(circ.I, x))
        actions.append(Eval())
        actions.append(Expect(circ.O0, Peek(circ.O1)))
    run(circ, actions, target, simulator)
Exemple #4
0
def test_verilator_peeks():
    circ = common.TestBasicCircuit
    actions = [Poke(circ.I, 1), Expect(circ.O, Peek(circ.O))]
    flags = ["-Wno-lint"]
    with tempfile.TemporaryDirectory() as tempdir:
        m.compile(f"{tempdir}/{circ.name}", circ, output="coreir-verilog")
        target = fault.verilator_target.VerilatorTarget(
            circ, directory=f"{tempdir}/", flags=flags, skip_compile=True)
        target.run(actions)
Exemple #5
0
def test_magma_simulator_target_peek(backend):
    circ = common.TestPeekCircuit
    actions = []
    for i in range(3):
        x = random_bv(3)
        actions.append(Poke(circ.I, x))
        actions.append(Eval())
        actions.append(Expect(circ.O0, Peek(circ.O1)))
    run(circ, actions, None, backend)
Exemple #6
0
def test_tester_clock(target, simulator):
    circ = TestPeekCircuit
    tester = fault.Tester(circ)
    tester.poke(circ.I, 0)
    tester.expect(circ.O0, tester.peek(circ.O1))
    check(tester.actions[0], Poke(circ.I, 0))
    check(tester.actions[1], Expect(circ.O0, Peek(circ.O1)))
    with tempfile.TemporaryDirectory(dir=".") as _dir:
        if target == "verilator":
            tester.compile_and_run(target, directory=_dir, flags=["-Wno-fatal"])
        else:
            tester.compile_and_run(target, directory=_dir, simulator=simulator)
Exemple #7
0
def test_tester_peek_input(target, simulator):
    circ = TestBasicCircuit
    tester = fault.Tester(circ)
    tester.poke(circ.I, 1)
    tester.eval()
    tester.expect(circ.O, tester.peek(circ.I))
    check(tester.actions[0], Poke(circ.I, 1))
    check(tester.actions[1], Eval())
    check(tester.actions[2], Expect(circ.O, Peek(circ.I)))
    with tempfile.TemporaryDirectory(dir=".") as _dir:
        if target == "verilator":
            tester.compile_and_run(target,
                                   directory=_dir,
                                   flags=["-Wno-fatal"])
        else:
            tester.compile_and_run(target,
                                   directory=_dir,
                                   simulator=simulator,
                                   magma_opts={"sv": True})