From 5c142fc257f2c2f08baacc1b5560acd361c106b0 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Fri, 17 Jan 2025 11:12:17 +0100 Subject: [PATCH] Add some timings --- himbaechel/uarch/gatemate/constids.inc | 1 + himbaechel/uarch/gatemate/gen/arch_gen.py | 20 ++++++++++++++++++++ himbaechel/uarch/gatemate/pack.cc | 1 + 3 files changed, 22 insertions(+) diff --git a/himbaechel/uarch/gatemate/constids.inc b/himbaechel/uarch/gatemate/constids.inc index 508d5c1a..504b859c 100644 --- a/himbaechel/uarch/gatemate/constids.inc +++ b/himbaechel/uarch/gatemate/constids.inc @@ -110,6 +110,7 @@ X(O1) X(O2) X(CC_DFF) +X(CPE_DFF) X(Q) X(D) X(R) diff --git a/himbaechel/uarch/gatemate/gen/arch_gen.py b/himbaechel/uarch/gatemate/gen/arch_gen.py index b1a7d620..5c0a432d 100644 --- a/himbaechel/uarch/gatemate/gen/arch_gen.py +++ b/himbaechel/uarch/gatemate/gen/arch_gen.py @@ -64,6 +64,26 @@ def set_timings(ch): speed = "DEFAULT" tmg = ch.set_speed_grades([speed]) + lut = ch.timing.add_cell_variant(speed, "CPE") + lut.add_comb_arc("IN1", "OUT1", TimingValue(455, 459)) + lut.add_comb_arc("IN2", "OUT1", TimingValue(450, 457)) + lut.add_comb_arc("IN3", "OUT1", TimingValue(427, 430)) + lut.add_comb_arc("IN4", "OUT1", TimingValue(423, 424)) + lut.add_comb_arc("IN5", "OUT1", TimingValue(416, 418)) + lut.add_comb_arc("IN6", "OUT1", TimingValue(413, 422)) + lut.add_comb_arc("IN7", "OUT1", TimingValue(372, 374)) + lut.add_comb_arc("IN8", "OUT1", TimingValue(275, 385)) + + lut.add_comb_arc("IN1", "OUT2", TimingValue(479, 484)) + lut.add_comb_arc("IN2", "OUT2", TimingValue(471, 488)) + lut.add_comb_arc("IN3", "OUT2", TimingValue(446, 449)) + lut.add_comb_arc("IN4", "OUT2", TimingValue(443, 453)) + + dff = ch.timing.add_cell_variant(speed, "CPE_DFF") + dff.add_setup_hold("CLK", "IN1", ClockEdge.RISING, TimingValue(60), TimingValue(50)) + dff.add_clock_out("CLK", "OUT1", ClockEdge.RISING, TimingValue(60)) + dff.add_clock_out("CLK", "OUT2", ClockEdge.RISING, TimingValue(60)) + def main(): # Range needs to be +1, but we are adding +2 more to coordinates, since # they are starting from -2 instead of zero required for nextpnr diff --git a/himbaechel/uarch/gatemate/pack.cc b/himbaechel/uarch/gatemate/pack.cc index 87bf3faf..5c073e17 100644 --- a/himbaechel/uarch/gatemate/pack.cc +++ b/himbaechel/uarch/gatemate/pack.cc @@ -455,6 +455,7 @@ void GateMatePacker::pack_cpe() } else { ci.unsetParam(id_INIT); } + ci.timing_index = ctx->get_cell_timing_idx(id_CPE_DFF); ci.type = id_CPE; } }