From 628e266e304df87dc4c664b093fbe13d8544ee30 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Mon, 30 Jun 2025 11:10:31 +0200 Subject: [PATCH] Add more timings models, need updated values --- himbaechel/uarch/gatemate/gen/arch_gen.py | 45 +++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/himbaechel/uarch/gatemate/gen/arch_gen.py b/himbaechel/uarch/gatemate/gen/arch_gen.py index a9cf5a9c..adafb539 100644 --- a/himbaechel/uarch/gatemate/gen/arch_gen.py +++ b/himbaechel/uarch/gatemate/gen/arch_gen.py @@ -168,10 +168,55 @@ def set_timings(ch): lut.add_comb_arc("IN7", "OUT1", TimingValue(372, 374)) # IN7 to OUT1 lut.add_comb_arc("IN8", "OUT1", TimingValue(275, 385)) # IN8 to OUT1 + lut = ch.timing.add_cell_variant(speed, "CPE_MX4") + lut.add_comb_arc("IN1", "OUT1", TimingValue(479, 484)) # to OUT2 + lut.add_comb_arc("IN2", "OUT1", TimingValue(471, 488)) # to OUT2 + lut.add_comb_arc("IN3", "OUT1", TimingValue(446, 449)) # to OUT2 + lut.add_comb_arc("IN4", "OUT1", TimingValue(443, 453)) # to OUT2 + lut.add_comb_arc("IN5", "OUT1", TimingValue(416, 418)) # IN5 to OUT1 + lut.add_comb_arc("IN6", "OUT1", TimingValue(413, 422)) # IN6 to OUT1 + lut.add_comb_arc("IN7", "OUT1", TimingValue(372, 374)) # IN7 to OUT1 + lut.add_comb_arc("IN8", "OUT1", TimingValue(275, 385)) # IN8 to OUT1 + + lut = ch.timing.add_cell_variant(speed, "CPE_CI") + lut.add_comb_arc("IN1", "COUTY1", TimingValue(479, 484)) # to OUT2 + lut.add_comb_arc("IN2", "COUTY1", TimingValue(471, 488)) # to OUT2 + lut.add_comb_arc("IN3", "COUTY1", TimingValue(446, 449)) # to OUT2 + lut.add_comb_arc("IN4", "COUTY1", TimingValue(443, 453)) # to OUT2 + + lut = ch.timing.add_cell_variant(speed, "CPE_EN_CIN") + lut.add_comb_arc("CINY1", "OUT1", TimingValue(479, 484)) # to OUT2 + + lut = ch.timing.add_cell_variant(speed, "CPE_ADDF") + lut.add_comb_arc("IN1", "OUT2", TimingValue(479, 484)) # to OUT2 + lut.add_comb_arc("IN2", "OUT2", TimingValue(471, 488)) # to OUT2 + lut.add_comb_arc("IN3", "OUT2", TimingValue(446, 449)) # to OUT2 + lut.add_comb_arc("IN4", "OUT2", TimingValue(443, 453)) # to OUT2 + lut.add_comb_arc("IN5", "OUT1", TimingValue(416, 418)) # IN5 to OUT1 + lut.add_comb_arc("IN6", "OUT1", TimingValue(413, 422)) # IN6 to OUT1 + lut.add_comb_arc("IN7", "OUT1", TimingValue(372, 374)) # IN7 to OUT1 + lut.add_comb_arc("IN8", "OUT1", TimingValue(275, 385)) # IN8 to OUT1 + lut.add_comb_arc("CINY1", "COUTY1", TimingValue(479, 484)) + + lut = ch.timing.add_cell_variant(speed, "CPE_ADDF2") + lut.add_comb_arc("IN1", "OUT2", TimingValue(479, 484)) # to OUT2 + lut.add_comb_arc("IN2", "OUT2", TimingValue(471, 488)) # to OUT2 + lut.add_comb_arc("IN3", "OUT2", TimingValue(446, 449)) # to OUT2 + lut.add_comb_arc("IN4", "OUT2", TimingValue(443, 453)) # to OUT2 + lut.add_comb_arc("IN5", "OUT1", TimingValue(416, 418)) # IN5 to OUT1 + lut.add_comb_arc("IN6", "OUT1", TimingValue(413, 422)) # IN6 to OUT1 + lut.add_comb_arc("IN7", "OUT1", TimingValue(372, 374)) # IN7 to OUT1 + lut.add_comb_arc("IN8", "OUT1", TimingValue(275, 385)) # IN8 to OUT1 + lut.add_comb_arc("CINY1", "COUTY1", TimingValue(479, 484)) + dff = ch.timing.add_cell_variant(speed, "CPE_FF") dff.add_setup_hold("CLK", "DIN", ClockEdge.RISING, TimingValue(60), TimingValue(50)) dff.add_clock_out("CLK", "DOUT", ClockEdge.RISING, TimingValue(60)) + dff = ch.timing.add_cell_variant(speed, "CPE_LATCH") + dff.add_setup_hold("CLK", "DIN", ClockEdge.RISING, TimingValue(60), TimingValue(50)) + dff.add_clock_out("CLK", "DOUT", ClockEdge.RISING, TimingValue(60)) + lut = ch.timing.add_cell_variant(speed, "CPE_RAMI") lut.add_comb_arc("RAM_I", "OUT", TimingValue(0, 0))