feat: Add support for SKY130 OpenRAM SRAM integration

- Introduced  to handle the preparation of the SKY130 OpenRAM SRAM views.
- Updated  to download and prepare the SRAM archive during PDK setup.
- Enhanced OpenSTA and Yosys configurations to accommodate SRAM macro integration.
- Added Verilog simulation models for GF180 and SKY130 SRAM macros.
- Implemented tests for SRAM setup and validation, ensuring correct integration and functionality.
- Updated various Makefiles and scripts to support SRAM size and macro configurations.
This commit is contained in:
maksyuki committed 2026-08-25 12:55:47 +08:00
1 parent fe347ed583
commit 71d52f357e
40 files changed
+749 -61

No files matched your search

+17
View File
@@ -1025,10 +1025,27 @@ def test_benchmark_profile_uses_functional_sram_and_reserved_data() -> None:
assert "PDK_BEHAV HAVE_SVA" in makefile
assert "PDK_BEHAV=YES is for functional simulation" in makefile
assert re.search(r"^HAVE_SRAM_MACRO\s*:= YES$", profile, re.MULTILINE)
assert re.search(r"^SRAM_SIZE_KIB\s*:= 128$", profile, re.MULTILINE)
assert re.search(r"^PDK_BEHAV\s*:= YES$", profile, re.MULTILINE)
assert "RS_BENCHMARK_SRAM_OFFSET UINT32_C(0x10000)" in benchmark
def test_open_pdk_profiles_enable_32kib_macro_sram_and_ics55_stays_absent() -> None:
for pdk in ("ihp130", "gf180", "sky130"):
profile = (ROOT / f"configs/ci/{pdk}.mk").read_text(encoding="utf-8")
assert re.search(r"^HAVE_SRAM_IF\s*:= YES$", profile, re.MULTILINE)
assert re.search(r"^HAVE_SRAM_MACRO\s*:= YES$", profile, re.MULTILINE)
assert re.search(r"^SRAM_SIZE_KIB\s*:= 32$", profile, re.MULTILINE)
ics55 = (ROOT / "configs/ci/ics55.mk").read_text(encoding="utf-8")
assert re.search(r"^HAVE_SRAM_IF\s*:= NO$", ics55, re.MULTILINE)
assert re.search(r"^HAVE_SRAM_MACRO\s*:= NO$", ics55, re.MULTILINE)
for name in ("ihp130-hazard3", "ihp130-hazard3-coremark"):
benchmark = (ROOT / f"configs/benchmark/{name}.mk").read_text(encoding="utf-8")
assert re.search(r"^SRAM_SIZE_KIB\s*:= 128$", benchmark, re.MULTILINE)
def test_smoke_regression_uses_ihp130_behavioral_coverage_only() -> None:
commands, profiles = select_regression("smoke", "IHP130")