From a6d1e4099c9a84ca3aa22593d93134f2414bf6b6 Mon Sep 17 00:00:00 2001 From: Stefan Holst Date: Tue, 7 Nov 2023 12:44:19 +0900 Subject: [PATCH] alap toposort, improve tests --- src/kyupy/sim.py | 144 ++++++++++++++++++------------------ tests/b15_4ig.sa_rf.stil.gz | Bin 0 -> 107970 bytes tests/conftest.py | 7 ++ tests/test_logic_sim.py | 47 ++++++++++++ tests/test_wave_sim.py | 14 ++-- 5 files changed, 132 insertions(+), 80 deletions(-) create mode 100644 tests/b15_4ig.sa_rf.stil.gz diff --git a/src/kyupy/sim.py b/src/kyupy/sim.py index 34924db..6ed703b 100644 --- a/src/kyupy/sim.py +++ b/src/kyupy/sim.py @@ -9,6 +9,9 @@ from .circuit import Circuit BUF1 = np.uint16(0b1010_1010_1010_1010) INV1 = ~BUF1 +__const0__ = BUF1 +__const1__ = INV1 + AND2 = np.uint16(0b1000_1000_1000_1000) AND3 = np.uint16(0b1000_0000_1000_0000) AND4 = np.uint16(0b1000_0000_0000_0000) @@ -41,7 +44,10 @@ AOI211, OAI211 = ~AO211, ~OA211 MUX21 = np.uint16(0b1100_1010_1100_1010) # z = i1 if i2 else i0 (i2 is select) -names = dict([(v, k) for k, v in globals().items() if isinstance(v, np.uint16)]) +names = dict([(v, k) for k, v in globals().items() if isinstance(v, np.uint16) and '__' not in k]) + +prim2name = dict([(v, k) for k, v in globals().items() if isinstance(v, np.uint16) and '__' not in k]) +name2prim = dict([(k, v) for k, v in globals().items() if isinstance(v, np.uint16)]) kind_prefixes = { 'nand': (NAND4, NAND3, NAND2), @@ -177,84 +183,75 @@ class SimOps: self.ppo_offset = self.ppi_offset + self.s_len self.c_locs_len = self.ppo_offset + self.s_len - # translate circuit structure into self.ops - ops = [] - interface_dict = dict((n, i) for i, n in enumerate(circuit.s_nodes)) - for n in circuit.topological_order(): - if n in interface_dict: - inp_idx = self.ppi_offset + interface_dict[n] - if len(n.outs) > 0 and n.outs[0] is not None: # first output of a PI/PPI - ops.append((BUF1, n.outs[0].index, inp_idx, self.zero_idx, self.zero_idx, self.zero_idx, *a_ctrl[n.outs[0]])) - if 'dff' in n.kind.lower(): # second output of DFF is inverted - if len(n.outs) > 1 and n.outs[1] is not None: - ops.append((INV1, n.outs[1].index, inp_idx, self.zero_idx, self.zero_idx, self.zero_idx, *a_ctrl[n.outs[1]])) - else: # if not DFF, no output is inverted. - for o_line in n.outs[1:]: - if o_line is not None: - ops.append((BUF1, o_line.index, inp_idx, self.zero_idx, self.zero_idx, self.zero_idx, *a_ctrl[o_line])) - continue - # regular node, not PI/PPI or PO/PPO - o0_idx = n.outs[0].index if len(n.outs) > 0 and n.outs[0] is not None else self.tmp_idx - i0_idx = n.ins[0].index if len(n.ins) > 0 and n.ins[0] is not None else self.zero_idx - i1_idx = n.ins[1].index if len(n.ins) > 1 and n.ins[1] is not None else self.zero_idx - i2_idx = n.ins[2].index if len(n.ins) > 2 and n.ins[2] is not None else self.zero_idx - i3_idx = n.ins[3].index if len(n.ins) > 3 and n.ins[3] is not None else self.zero_idx - kind = n.kind.lower() - if kind == '__fork__': - if not strip_forks: - for o_line in n.outs: - if o_line is not None: - ops.append((BUF1, o_line.index, i0_idx, i1_idx, i2_idx, i3_idx, *a_ctrl[o_line])) - continue - sp = None - for prefix, prims in kind_prefixes.items(): - if kind.startswith(prefix): - sp = prims[0] - if i3_idx == self.zero_idx: - sp = prims[1] - if i2_idx == self.zero_idx: - sp = prims[2] - break - if sp is None: - print('unknown cell type', kind) - else: - ops.append((sp, o0_idx, i0_idx, i1_idx, i2_idx, i3_idx, *a_ctrl[o0_idx])) - - self.ops = np.asarray(ops, dtype='int32') + # ALAP-toposort the circuit into self.ops + levels = [] + + ppio2idx = dict((n, i) for i, n in enumerate(circuit.s_nodes)) + pis = set([n for n in circuit.s_nodes if len(n.ins) == 0]) + ppos = set([n for n in circuit.s_nodes if len(n.ins) > 0]) + readers = np.array([1 if l.reader in ppos else len(l.reader.outs) for l in circuit.lines], dtype=np.int32) # for ref-counting forks + + level_lines = [n.ins[0] for n in ppos] # start from PPOs + # FIXME: Should probably instanciate buffers for PPOs and attach DFF clocks + + while len(level_lines) > 0: # traverse the circuit level-wise back towards (P)PIs + level_ops = [] + prev_level_lines = [] + + for l in level_lines: + n = l.driver + in_idxs = [n.ins[x].index if len(n.ins) > x and n.ins[x] is not None else self.zero_idx for x in [0,1,2,3]] + if n in ppio2idx: + in_idxs[0] = self.ppi_offset + ppio2idx[n] + if l.driver_pin == 1 and 'dff' in n.kind.lower(): # second output of DFF is inverted + level_ops.append((INV1, l.index, *in_idxs, *a_ctrl[l])) + else: + level_ops.append((BUF1, l.index, *in_idxs, *a_ctrl[l])) + elif n.kind == '__fork__': + readers[n.ins[0]] -= 1 + if readers[n.ins[0]] == 0: prev_level_lines.append(n.ins[0]) + if not strip_forks: level_ops.append((BUF1, l.index, *in_idxs, *a_ctrl[l])) + else: + prev_level_lines += n.ins + sp = None + kind = n.kind.lower() + for prefix, prims in kind_prefixes.items(): + if kind.startswith(prefix): + sp = prims[0] + if in_idxs[3] == self.zero_idx: + sp = prims[1] + if in_idxs[2] == self.zero_idx: + sp = prims[2] + break + if sp is None: + print('unknown cell type', kind) + else: + level_ops.append((sp, l.index, *in_idxs, *a_ctrl[l])) + + if len(level_ops) > 0: levels.append(level_ops) + level_lines = prev_level_lines + + self.levels = [np.asarray(lv, dtype=np.int32) for lv in levels[::-1]] + level_sums = np.cumsum([0]+[len(lv) for lv in self.levels], dtype=np.int32) + self.level_starts, self.level_stops = level_sums[:-1], level_sums[1:] + self.ops = np.vstack(self.levels) # create a map from fanout lines to stem lines for fork stripping - stems = np.zeros(self.c_locs_len, dtype='int32') - 1 # default to -1: 'no fanout line' + stems = np.full(self.c_locs_len, -1, dtype=np.int32) # default to -1: 'no fanout line' if strip_forks: for f in circuit.forks.values(): prev_line = f.ins[0] while prev_line.driver.kind == '__fork__': prev_line = prev_line.driver.ins[0] - stem_idx = prev_line.index for ol in f.outs: if ol is not None: - stems[ol] = stem_idx - - # calculate level (distance from PI/PPI) and reference count for each line - levels = np.zeros(self.c_locs_len, dtype='int32') - ref_count = np.zeros(self.c_locs_len, dtype='int32') - level_starts = [0] - current_level = 1 - for i, op in enumerate(self.ops): - # if we fork-strip, always take the stems for determining fan-in level - i0_idx = stems[op[2]] if stems[op[2]] >= 0 else op[2] - i1_idx = stems[op[3]] if stems[op[3]] >= 0 else op[3] - i2_idx = stems[op[4]] if stems[op[4]] >= 0 else op[4] - i3_idx = stems[op[5]] if stems[op[5]] >= 0 else op[5] - if levels[i0_idx] >= current_level or levels[i1_idx] >= current_level or levels[i2_idx] >= current_level or levels[i3_idx] >= current_level: - current_level += 1 - level_starts.append(i) - levels[op[1]] = current_level # set level of the output line - ref_count[i0_idx] += 1 - ref_count[i1_idx] += 1 - ref_count[i2_idx] += 1 - ref_count[i3_idx] += 1 - self.level_starts = np.asarray(level_starts, dtype='int32') - self.level_stops = np.asarray(level_starts[1:] + [len(self.ops)], dtype='int32') + stems[ol] = prev_line.index + + ref_count = np.zeros(self.c_locs_len, dtype=np.int32) + + for op in self.ops: + for x in [2, 3, 4, 5]: + ref_count[stems[op[x]] if stems[op[x]] >= 0 else op[x]] += 1 # combinational signal allocation table. maps line and interface indices to self.c memory locations self.c_locs = np.full((self.c_locs_len,), -1, dtype=np.int32) @@ -280,9 +277,9 @@ class SimOps: ref_count[i0_idx] += 1 # allocate memory for the rest of the circuit - for op_start, op_stop in zip(self.level_starts, self.level_stops): + for ops in self.levels: free_set = set() - for op in self.ops[op_start:op_stop]: + for op in ops: # if we fork-strip, always take the stems i0_idx = stems[op[2]] if stems[op[2]] >= 0 else op[2] i1_idx = stems[op[3]] if stems[op[3]] >= 0 else op[3] @@ -301,7 +298,8 @@ class SimOps: self.c_locs[o_idx], self.c_caps[o_idx] = h.alloc(cap), cap if c_reuse: for loc in free_set: - h.free(loc) + if loc >= 0: # DFF clocks are not allocated. Ignore for now. + h.free(loc) # copy memory location and capacity from stems to fanout lines for lidx, stem in enumerate(stems): diff --git a/tests/b15_4ig.sa_rf.stil.gz b/tests/b15_4ig.sa_rf.stil.gz new file mode 100644 index 0000000000000000000000000000000000000000..437a3e05a728f61c29424ef295e1d1802f9703f3 GIT binary patch literal 107970 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

snO%`zgp-p5uymSY^RJjWk!Aem=Hph-( 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

I@GY)J5SPCA@Y5`i~7%%Jg4zJE)SB5 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 rxrjR-R>2{UYEV{}0`LC-d;{do literal 0 HcmV?d00001 diff --git a/tests/conftest.py b/tests/conftest.py index c73bdc5..a78f6ce 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -13,6 +13,13 @@ def b15_2ig_circuit(mydir): from kyupy.techlib import SAED32 return verilog.load(mydir / 'b15_2ig.v.gz', branchforks=True, tlib=SAED32) +@pytest.fixture(scope='session') +def b15_2ig_circuit_resolved(b15_2ig_circuit): + from kyupy.techlib import SAED32 + cr = b15_2ig_circuit.copy() + cr.resolve_tlib_cells(SAED32) + return cr + @pytest.fixture(scope='session') def b15_2ig_delays(mydir, b15_2ig_circuit): from kyupy import sdf diff --git a/tests/test_logic_sim.py b/tests/test_logic_sim.py index 5849310..8086c3e 100644 --- a/tests/test_logic_sim.py +++ b/tests/test_logic_sim.py @@ -173,3 +173,50 @@ def test_b01(mydir): s.c_prop() s.c_to_s() bp_to_mv(s.s[1]) + + +def sim_and_compare(v_file, stil_file, m=8): + from kyupy import verilog, stil + from kyupy.techlib import SAED32 + c = verilog.load(v_file, branchforks=True, tlib=SAED32) + c.resolve_tlib_cells(SAED32) + s = stil.load(stil_file) + tests = s.tests(c)[:,1:] + resp = s.responses(c)[:,1:] + lsim = LogicSim(c, m=m, sims=tests.shape[1]) + lsim.s[0] = logic.mv_to_bp(tests) + lsim.s_to_c() + lsim.c_prop() + lsim.c_to_s() + resp_sim = logic.bp_to_mv(lsim.s[1])[:,:tests.shape[1]] + idxs, pats = np.nonzero(((resp == logic.ONE) & (resp_sim != logic.ONE)) | ((resp == logic.ZERO) & (resp_sim != logic.ZERO))) + for i, (idx, pat) in enumerate(zip(idxs, pats)): + if i >= 10: + print(f'...') + break + print(f'mismatch pattern:{pat} ppio:{idx} exp:{logic.mv_str(resp[idx,pat])} act:{logic.mv_str(resp_sim[idx,pat])}') + assert len(idxs) == 0 + + +def test_b15_2ig_sa_2v(mydir): + sim_and_compare(mydir / 'b15_2ig.v.gz', mydir / 'b15_2ig.sa_nf.stil.gz', m=2) + + +def test_b15_2ig_sa_4v(mydir): + sim_and_compare(mydir / 'b15_2ig.v.gz', mydir / 'b15_2ig.sa_nf.stil.gz', m=4) + + +def test_b15_2ig_sa_8v(mydir): + sim_and_compare(mydir / 'b15_2ig.v.gz', mydir / 'b15_2ig.sa_nf.stil.gz', m=8) + + +def test_b15_4ig_sa_2v(mydir): + sim_and_compare(mydir / 'b15_4ig.v.gz', mydir / 'b15_4ig.sa_rf.stil.gz', m=2) + + +def test_b15_4ig_sa_4v(mydir): + sim_and_compare(mydir / 'b15_4ig.v.gz', mydir / 'b15_4ig.sa_rf.stil.gz', m=4) + + +def test_b15_4ig_sa_8v(mydir): + sim_and_compare(mydir / 'b15_4ig.v.gz', mydir / 'b15_4ig.sa_rf.stil.gz', m=8) diff --git a/tests/test_wave_sim.py b/tests/test_wave_sim.py index 1e2cc67..d09cfc1 100644 --- a/tests/test_wave_sim.py +++ b/tests/test_wave_sim.py @@ -177,7 +177,7 @@ def compare_to_logic_sim(wsim: WaveSim): lsim.s_to_c() lsim.c_prop() lsim.c_to_s() - exp = logic.bp_to_mv(lsim.s[1]) + exp = logic.bp_to_mv(lsim.s[1])[:,:tests.shape[-1]] resp[resp == logic.PPULSE] = logic.ZERO resp[resp == logic.NPULSE] = logic.ONE @@ -188,13 +188,13 @@ def compare_to_logic_sim(wsim: WaveSim): np.testing.assert_allclose(resp, exp) -def test_b15(b15_2ig_circuit, b15_2ig_delays): - compare_to_logic_sim(WaveSim(b15_2ig_circuit, b15_2ig_delays, 8)) +def test_b15(b15_2ig_circuit_resolved, b15_2ig_delays): + compare_to_logic_sim(WaveSim(b15_2ig_circuit_resolved, b15_2ig_delays, 8)) -def test_b15_strip_forks(b15_2ig_circuit, b15_2ig_delays): - compare_to_logic_sim(WaveSim(b15_2ig_circuit, b15_2ig_delays, 8, strip_forks=True)) +def test_b15_strip_forks(b15_2ig_circuit_resolved, b15_2ig_delays): + compare_to_logic_sim(WaveSim(b15_2ig_circuit_resolved, b15_2ig_delays, 8, strip_forks=True)) -def test_b15_cuda(b15_2ig_circuit, b15_2ig_delays): - compare_to_logic_sim(WaveSimCuda(b15_2ig_circuit, b15_2ig_delays, 8, strip_forks=True)) +def test_b15_cuda(b15_2ig_circuit_resolved, b15_2ig_delays): + compare_to_logic_sim(WaveSimCuda(b15_2ig_circuit_resolved, b15_2ig_delays, 8, strip_forks=True))