Conversation
eyeriss was the only design whose FakeRAM cfgs lived under designs/<platform>/eyeriss/sram/ instead of the standard designs/src/<design>/dev/generated/. tools/regenerate_sram.sh only looks at the standard path, so the mass regeneration in 9429679 -- the bump to bsg_fakeram c83ecb4 that fixed the wd_in LEF pin-direction bug -- silently skipped eyeriss. Its committed LEFs still declared the upper half of every rw*/w*_wd_in bus as DIRECTION OUTPUT while Liberty said input, so gate-level sim saw those bits floating and OpenROAD PnR shorted them into one net. Move the three cfgs to the standard path so future sweeps pick eyeriss up, and regenerate LEF/LIB for all three platforms. Beyond the direction fix the macros were stale on a second axis -- they predate the asap7 area calibration and the sky130hd analytical path: nangate45 geometry byte-identical (CACTI path unchanged) asap7 +80% .. +389% area (2.5x periphery overhead + column mux) sky130hd -16% .. -55% area (analytical bitcell replaces scaled CACTI) asap7 and sky130hd floorplans are re-validated in follow-up commits.
The bug in #234 escaped because nothing checks the invariant: a *_wd_in pin is an input by definition, so a DIRECTION OUTPUT on one is always the pre-c83ecb4 side-vs-function bug and always electrically invalid. tools/check_sram_lef.sh scans every designs/*/*/sram/lef/*.lef and fails with the offending pin names; a grep-only PR workflow runs it on any LEF change.
…tforms All three platforms still reach 6_final with 0 DRC and 0 setup violations on bazel-orfs 6c1bbca after the #234 macro regeneration. nangate45 reproduces its baseline to within 0.05% on every area/cell figure (its geometry was byte-identical), which makes it the control for separating toolchain drift from the macro change: its +145 ps setup gain is drift. asap7 trades die area for correctness as expected -- calibrated macros are 2-4x larger, so the die nearly doubles at unchanged util; timing flat. sky130hd shrinks 29% but setup margin falls +1348 -> +147 ps against an unchanged 25 ns clock (period_min 24.85 ns, set/period_min ~1.006 vs the 1.10 guardband). Attributable to the new macro aspect ratios changing the RTLMP floorplan, since the control shows drift went the other way. Closes cleanly; whether to relax the clock is a PPA call, left at 25 ns. Hold violations on n45 (3) and sky130hd (52) are recorded but not attributed -- the baseline never captured hold.
mguthaus
added a commit
that referenced
this pull request
Aug 13, 2026
…tion Rebuilt on bazel-orfs 6c1bbca after #235 regenerated the eyeriss FakeRAM macros. The prior rows were still fde02b5 numbers from the 553c1c3 toolchain -- eyeriss was never re-run after the ab36853 upgrade. asap7 die area +86% (calibrated macros are 2-4x larger at unchanged util), sky130hd -29% (analytical bitcell replaces scaled CACTI), nangate45 flat (geometry byte-identical). All three still close with 0 DRC.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #234.
Root cause
eyerisswas the only design whose FakeRAM cfgs lived atdesigns/<platform>/eyeriss/sram/fakeram_<platform>.cfginstead of the standarddesigns/src/<design>/dev/generated/path thattools/regenerate_sram.shreads.The mass regeneration in
94296798— the bump to bsg_fakeramc83ecb4that fixed thewd_inLEF pin-direction bug — therefore skipped eyeriss silently. Its committed LEFs keptdeclaring the upper half of every
rw*/w*_wd_inbus asDIRECTION OUTPUTwhile Libertycorrectly said
input, which is what @bugraonal hit as floating bits in gate-level sim.I audited every design: eyeriss was the only one with an off-path cfg, and the only one with
bad LEFs.
Changes
designs/src/eyeriss/dev/generated/, so future sweeps pick eyeriss up.c83ecb4.tools/check_sram_lef.sh+ a grep-only PR workflow: awd_inpin is an input bydefinition, so
DIRECTION OUTPUTon one is always this bug. Verified it fails on the oldfiles and passes on the regenerated set.
Beyond the direction fix the macros were stale on a second axis — they predate the asap7 area
calibration and the sky130hd analytical path:
Re-validation
Built on this branch's toolchain, which is identical to master (bazel-orfs
6c1bbca/OpenROAD
b65c274c;MODULE.bazelis byte-identical toorigin/main).All three platforms reach
6_finalwith 0 DRC and 0 setup violations.Baseline column is
fde02b5dfromresults.html, which was generated back at553c1c3andnever refreshed for eyeriss after the
ab36853fupgrade — so it carries toolchain drift aswell as the macro change. nangate45 is the clean control, since its geometry did not move.
the CACTI geometry is untouched. Its +145 ps setup gain is therefore pure toolchain drift.
at an unchanged util target the die nearly doubles. Timing, util and cell count are flat.
The
CORE_UTILIZATION40→30 MPL-0040 workaround is still needed.clock (
period_min24.85 ns → set/period_min ≈ 1.006 vs the 1.10 guardband). The controlshows drift went the other way, so this is the new macro aspect ratios giving RTLMP a
different floorplan. It closes cleanly; relaxing the clock toward 27.5 ns would restore the
guardband at the cost of reported Fmax — left at 25 ns, as that's a PPA call.
(52 violations). These run with
SKIP_INCREMENTAL_REPAIR+SKIP_LAST_GASP, and thebaseline never recorded hold, so they are not attributed — settling it needs an A/B
against a pre-change build on this same toolchain pin.
Full write-up in
designs/src/eyeriss/DECISIONS.md.