From a3e08422995ff6eb590666c196fbdb0ce0e28e52 Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Sun, 17 Jun 2018 14:46:10 +0200 Subject: [PATCH] Move PipInfoPOD into ChipDB binary blob Signed-off-by: Clifford Wolf --- ice40/chipdb.py | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/ice40/chipdb.py b/ice40/chipdb.py index 73787ca3..c0ac646c 100644 --- a/ice40/chipdb.py +++ b/ice40/chipdb.py @@ -577,7 +577,15 @@ for wire in range(num_wires): for src in wire_uphill[wire]: if (src, wire) not in pipcache: pipcache[(src, wire)] = len(pipinfo) - pipinfo.append(" {%d, %d, 1, %d, %d, %d, %d}" % (src, wire, pip_xy[(src, wire)][0], pip_xy[(src, wire)][1], pip_xy[(src, wire)][2], pip_xy[(src, wire)][3])) + pi = dict() + pi["src"] = src + pi["dst"] = wire + pi["delay"] = 1 + pi["x"] = pip_xy[(src, wire)][0] + pi["y"] = pip_xy[(src, wire)][1] + pi["switch_mask"] = pip_xy[(src, wire)][2] + pi["switch_index"] = pip_xy[(src, wire)][3] + pipinfo.append(pi) pips.append(pipcache[(src, wire)]) num_uphill = len(pips) list_uphill = "wire%d_uppips" % wire @@ -593,7 +601,15 @@ for wire in range(num_wires): for dst in wire_downhill[wire]: if (wire, dst) not in pipcache: pipcache[(wire, dst)] = len(pipinfo) - pipinfo.append(" {%d, %d, 1, %d, %d, %d, %d}" % (wire, dst, pip_xy[(wire, dst)][0], pip_xy[(wire, dst)][1], pip_xy[(wire, dst)][2], pip_xy[(wire, dst)][3])) + pi = dict() + pi["src"] = wire + pi["dst"] = dst + pi["delay"] = 1 + pi["x"] = pip_xy[(wire, dst)][0] + pi["y"] = pip_xy[(wire, dst)][1] + pi["switch_mask"] = pip_xy[(wire, dst)][2] + pi["switch_index"] = pip_xy[(wire, dst)][3] + pipinfo.append(pi) pips.append(pipcache[(wire, dst)]) num_downhill = len(pips) list_downhill = "wire%d_downpips" % wire @@ -708,16 +724,22 @@ for info in wireinfo: bba.u16(info["x"], "x") bba.u16(info["y"], "y") +bba.l("pip_data_%s" % dev_name, "PipInfoPOD", export=True) +for info in pipinfo: + bba.u32(info["src"], "src") + bba.u32(info["dst"], "dst") + bba.u32(info["delay"], "delay") + bba.u8(info["x"], "x") + bba.u8(info["y"], "y") + bba.u16(info["switch_mask"], "switch_mask") + bba.u32(info["switch_index"], "switch_index") + bba.finalize() if compact_output: bba.write_compact_c(sys.stdout) else: bba.write_verbose_c(sys.stdout) -print("static PipInfoPOD pip_data_%s[%d] = {" % (dev_name, len(pipinfo))) -print(" " + ",\n ".join(pipinfo)) -print("};") - switchinfo = [] switchid = 0 for switch in switches: