예제 #1
0
def test_tester_basic(target, simulator):
    circ = TestBasicCircuit
    tester = fault.Tester(circ)
    tester.zero_inputs()
    check(tester.actions[0], Poke(circ.I, 0))
    tester.poke(circ.I, 1)
    tester.eval()
    tester.expect(circ.O, 1)
    tester.print("%08x", circ.O)
    check(tester.actions[1], Poke(circ.I, 1))
    check(tester.actions[2], Eval())
    check(tester.actions[3], Expect(circ.O, 1))
    print(tester.actions[4])
    print(Print("%08x", circ.O))
    check(tester.actions[4], Print("%08x", circ.O))
    tester.eval()
    check(tester.actions[5], Eval())
    tester.poke(circ.I, 0)
    tester.eval()
    tester.expect(circ.O, 0)
    tester.poke(circ.I, True)
    tester.eval()
    tester.expect(circ.O, True)
    tester.poke(circ.I, False)
    tester.eval()
    tester.expect(circ.O, False)
    tester.poke(circ.I, False)
    tester.eval()
    tester.expect(circ.O, False)
    tester.poke(circ.I, hwtypes.Bit(1))
    tester.eval()
    tester.expect(circ.O, hwtypes.Bit(1))
    tester.poke(circ.I, hwtypes.Bit(0))
    tester.eval()
    tester.expect(circ.O, hwtypes.Bit(0))
    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})
    tester.compile_and_run("coreir")
    tester.clear()
    assert tester.actions == []
예제 #2
0
 def simulate(self, value_store, state_store):
     I0 = ht.Bit(value_store.get_value(self.I0))
     I1 = ht.Bit(value_store.get_value(self.I1))
     #O = python_op(I0, I1).as_bool_list()[0]
     O = int(python_op(I0, I1))
     value_store.set_value(self.O, O)
예제 #3
0
def simulate_bit_not(self, value_store, state_store):
    _in = ht.Bit(value_store.get_value(self.I))
    #O = (~_in).as_bool_list()[0]
    O = ~_in
    value_store.set_value(self.O, bool(O))