Skip to content

gt2n: port snitch_cluster - #240

Merged
mguthaus merged 2 commits into
VLSIDA:mainfrom
dhgaddy:snitch-cluster-gt2n
Oct 21, 2026
Merged

mguthaus merged 2 commits into
VLSIDA:mainfrom
dhgaddy:snitch-cluster-gt2n

Conversation

@dhgaddy

@dhgaddy dhgaddy commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds snitch_cluster to the gt2n platform (already on asap7/nangate45).
  • Reaches _final. Setup clean (WNS +9.02ps). Hold has 9 residual
    violations (worst -8.56ps, TNS -25.89ps) -- see DECISIONS.md.

QoR summary

Design Fmax Die area (µm²)
snitch_cluster 166.7 MHz 308882

@mguthaus

Copy link
Copy Markdown
Contributor

Thanks @dhgaddy. One blocker before this can go in: the +19k lines here are vendored RTL, and the suite has moved to hermetic, reproducible RTL sourcing — pinned http_archive stanzas in MODULE.bazel (bender-bypass), see #226–#230. snitch_cluster is already sourced hermetically for asap7/nangate45 (#227), so the gt2n port should reuse that pinned-archive RTL path rather than committing the generated .sv. Could you rework it to pull the RTL via the existing hermetic source and keep only the gt2n-specific config (BUILD.bazel, constraint.sdc, DECISIONS.md)? Happy to help wire it up.

@dhgaddy

dhgaddy commented Oct 20, 2026

Copy link
Copy Markdown
Contributor Author

Perhaps I am mistaken, but I believe this port is already using hermetic sourcing. I did not commit snitch_cluster.sv and I just verified the BUILD.bazel points to the right place, like my other hermetic ports: verilog_files = ["//designs/src/snitch_cluster:rtl"] The 19k+ lines are almost all from fakeram generated macros. Please let me know if there is something I am misunderstanding!

@mguthaus

Copy link
Copy Markdown
Contributor

You're right, @dhgaddy — my mistake, retracting the hermeticity blocker. I re-checked the diff: no vendored RTL, verilog_files points at the hermetic //designs/src/snitch_cluster:rtl, and the +19k lines are the fakeram LEF/LIB macros, which we commit for every design. I also spot-checked the generated macros and they're clean: wd_in pin directions are correct (post-c83ecb4 generator), and the cfg uses the camelCase snap keys with SIZE 117.390 BY 36.720 landing exactly on the 0.042/0.144 µm gt2n grid.

The residual hold violations are fine as documented in DECISIONS.md.

One change requested before merge: macro naming. The gt2n convention is a plain fakeram_ prefix (see the NVDLA gt2n cfgs); fakeram7_ is asap7's. I realize the fakeram7_* names are baked into the shared tc_sram.sv mapping (nangate45 reuses them too), so the clean fix is a snitch-wide rename to a platform-neutral fakeram_* prefix: update tc_sram.sv and the three fakeram cfgs, then regenerate the LEF/LIB via tools/regenerate_sram.sh (cheap — no synthesis). Doing it across all three platforms in this PR is the simplest route since the RTL mapping is shared.

@mguthaus

Copy link
Copy Markdown
Contributor

Update on the naming request: since the fakeram7_* names were baked into the shared tc_sram.sv (nangate45 shipped them too), I've done the snitch-wide rename myself in #248 — tc_sram.sv + cfgs now use the platform-neutral fakeram_* prefix, with asap7/nangate45 LEF/LIB regenerated (asap7 also got the standard sram/{lef,lib} layout and the camelCase snap-grid-key fix).

Once #248 merges, this PR just needs the mechanical follow-through on gt2n: rename the macros in fakeram_gt2n.cfg to fakeram_*, rerun tools/regenerate_sram.sh snitch_cluster gt2n, and commit the renamed LEF/LIB (the rebased tc_sram.sv will already instantiate the new names). Everything else here looked good on re-review, so that should be the last change before merge.

@dhgaddy

dhgaddy commented Oct 20, 2026

Copy link
Copy Markdown
Contributor Author

Ready on my end once #248 merges

@mguthaus

Copy link
Copy Markdown
Contributor

#248 is merged (ternip got the same cleanup). @dhgaddy this is now unblocked — after rebasing on main, the only change needed here is the mechanical gt2n regen: rename the four macros in fakeram_gt2n.cfg to fakeram_*, rerun tools/regenerate_sram.sh snitch_cluster gt2n, and commit the renamed LEF/LIB. Ping me when it's pushed and I'll merge.

Reaches _final with CORE_UTILIZATION=55 (PLACE_DENSITY 0.67,
MACRO_PLACE_HALO 8 8), MAX_ROUTING_LAYER=M11, MIN_CLK_ROUTING_LAYER=M4,
clock period 6000ps (Fmax 166.7MHz). Die area 308882 um^2 (core
306588 um^2), ~12.0M instances.

Setup: WNS +9.02ps, 0 violations.
Hold: WS -8.56ps, TNS -25.89ps, 9 violations.
Follow-through on VLSIDA#248, which renamed the shared tc_sram.sv mapping and
the asap7/nangate45 macros from fakeram7_* to the platform-neutral
fakeram_* prefix.

Rename the 4 macros in fakeram_gt2n.cfg and regenerate the gt2n LEF/LIB
with tools/regenerate_sram.sh snitch_cluster gt2n. Name changes only,
identical otherwise.
@dhgaddy
dhgaddy force-pushed the snitch-cluster-gt2n branch from 2250825 to 7f31902 Compare October 21, 2026 00:53
dhgaddy pushed a commit to dhgaddy/HighTide that referenced this pull request Oct 21, 2026
The shared tc_sram.sv mapping hardcoded asap7-style fakeram7_* macro
names on every platform (nangate45 shipped fakeram7_* LEFs, and the gt2n
port in PR VLSIDA#240 inherited the misleading '7'). Rename suite-wide to the
platform-neutral fakeram_* prefix used by the other gt2n designs.

- tc_sram.sv + fakeram cfgs: fakeram7_* -> fakeram_*
- asap7 normalized to the standard macro layout: cfg at
  dev/generated/fakeram_asap7.cfg, committed LEF/LIB at
  designs/asap7/snitch_cluster/sram/{lef,lib}/ (replaces the tracked
  dev/generated/sram/ tree and the src-level sram_lefs/sram_libs
  filegroups); tools/regenerate_sram.sh now works for both platforms
- asap7 cfg snap keys fixed snake_case -> camelCase (the known
  silently-ignored-snap bug): macros now land exactly on the
  0.190/1.400 um site grid, size deltas +0.06-0.5% per side
- nangate45 LEF/LIB regenerated: byte-identical except the names

Both platforms' cached results invalidate; rebuild required
(nangate45 ~14 h). gt2n (PR VLSIDA#240) regenerates with the new names.
@dhgaddy

dhgaddy commented Oct 21, 2026

Copy link
Copy Markdown
Contributor Author

@mguthaus should be good now

@mguthaus
mguthaus merged commit 1ef63fb into VLSIDA:main Oct 21, 2026
1 check passed
dhgaddy added a commit to dhgaddy/HighTide that referenced this pull request Oct 22, 2026
Extends the RCX_RULES QoR comparison to the two gt2n designs merged
since this branch was cut (PR VLSIDA#243 bp_uno, PR VLSIDA#240 snitch_cluster).
Same pattern as the other designs: rules model copied in unmodified,
RCX_RULES added to sources, and the same eph_lim bump both designs
already needed on other platforms.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants