|
|
@ -11,7 +11,7 @@ def test_xnor2_delays(): |
|
|
|
c = np.full((4*16, 1), TMAX, dtype=np.float32) # 4 waveforms of capacity 16 |
|
|
|
c = np.full((4*16, 1), TMAX, dtype=np.float32) # 4 waveforms of capacity 16 |
|
|
|
c_locs = np.zeros((4,), dtype='int') |
|
|
|
c_locs = np.zeros((4,), dtype='int') |
|
|
|
c_caps = np.zeros((4,), dtype='int') |
|
|
|
c_caps = np.zeros((4,), dtype='int') |
|
|
|
h = np.zeros((4, 1), dtype=np.float32) |
|
|
|
ebuf = np.zeros((4, 1, 2), dtype=np.int32) |
|
|
|
|
|
|
|
|
|
|
|
for i in range(4): c_locs[i], c_caps[i] = i*16, 16 # 1:1 mapping |
|
|
|
for i in range(4): c_locs[i], c_caps[i] = i*16, 16 # 1:1 mapping |
|
|
|
delays = np.zeros((1, 4, 2, 2)) |
|
|
|
delays = np.zeros((1, 4, 2, 2)) |
|
|
@ -28,7 +28,7 @@ def test_xnor2_delays(): |
|
|
|
|
|
|
|
|
|
|
|
def wave_assert(inputs, output): |
|
|
|
def wave_assert(inputs, output): |
|
|
|
for i, a in zip(inputs, c.reshape(-1,16)): a[:len(i)] = i |
|
|
|
for i, a in zip(inputs, c.reshape(-1,16)): a[:len(i)] = i |
|
|
|
wave_eval_cpu(op, c, c_locs, c_caps, h, 0, delays, simctl_int, 0) |
|
|
|
wave_eval_cpu(op, c, c_locs, c_caps, ebuf, 0, delays, simctl_int, 0, 0) |
|
|
|
for i, v in enumerate(output): np.testing.assert_allclose(c.reshape(-1,16)[2,i], v) |
|
|
|
for i, v in enumerate(output): np.testing.assert_allclose(c.reshape(-1,16)[2,i], v) |
|
|
|
|
|
|
|
|
|
|
|
wave_assert([[TMIN,TMAX],[TMIN,TMAX]], [TMIN,TMAX]) # XNOR(1,1) => 1 |
|
|
|
wave_assert([[TMIN,TMAX],[TMIN,TMAX]], [TMIN,TMAX]) # XNOR(1,1) => 1 |
|
|
@ -44,7 +44,7 @@ def test_nand_delays(): |
|
|
|
c = np.full((5*16, 1), TMAX, dtype=np.float32) # 5 waveforms of capacity 16 |
|
|
|
c = np.full((5*16, 1), TMAX, dtype=np.float32) # 5 waveforms of capacity 16 |
|
|
|
c_locs = np.zeros((5,), dtype='int') |
|
|
|
c_locs = np.zeros((5,), dtype='int') |
|
|
|
c_caps = np.zeros((5,), dtype='int') |
|
|
|
c_caps = np.zeros((5,), dtype='int') |
|
|
|
h = np.zeros((5, 1), dtype=np.float32) |
|
|
|
ebuf = np.zeros((4, 1, 2), dtype=np.int32) |
|
|
|
|
|
|
|
|
|
|
|
for i in range(5): c_locs[i], c_caps[i] = i*16, 16 # 1:1 mapping |
|
|
|
for i in range(5): c_locs[i], c_caps[i] = i*16, 16 # 1:1 mapping |
|
|
|
|
|
|
|
|
|
|
@ -66,7 +66,7 @@ def test_nand_delays(): |
|
|
|
|
|
|
|
|
|
|
|
def wave_assert(inputs, output): |
|
|
|
def wave_assert(inputs, output): |
|
|
|
for i, a in zip(inputs, c.reshape(-1,16)): a[:len(i)] = i |
|
|
|
for i, a in zip(inputs, c.reshape(-1,16)): a[:len(i)] = i |
|
|
|
wave_eval_cpu(op, c, c_locs, c_caps, h, 0, delays, simctl_int, 0) |
|
|
|
wave_eval_cpu(op, c, c_locs, c_caps, ebuf, 0, delays, simctl_int, 0, 0) |
|
|
|
for i, v in enumerate(output): np.testing.assert_allclose(c.reshape(-1,16)[4,i], v) |
|
|
|
for i, v in enumerate(output): np.testing.assert_allclose(c.reshape(-1,16)[4,i], v) |
|
|
|
|
|
|
|
|
|
|
|
wave_assert([[TMAX,TMAX],[TMAX,TMAX],[TMIN,TMAX],[TMIN,TMAX]], [TMIN,TMAX]) # NAND(0,0,1,1) => 1 |
|
|
|
wave_assert([[TMAX,TMAX],[TMAX,TMAX],[TMIN,TMAX],[TMIN,TMAX]], [TMIN,TMAX]) # NAND(0,0,1,1) => 1 |
|
|
|