feat: refactor user extension handling and update MPW generation

- Updated README.md to clarify the status of KianV RV32IMA and PicoRV32 in the user-extension map.
- Modified Makefile to include USER_EXTENSIONS_SOURCE in MPW variant stamp dependencies.
- Enhanced integration README.md to better describe the relationship between user_extensions.json and mpw.toml.
- Updated generate_user_extensions.py to include design_id in ExtensionTarget and enforce unique design IDs.
- Changed user_extensions.json schema version to 2 and added design_id fields for core and IP targets.
- Refactored generate_mpw.py to support the new manifest structure and validate design selections.
- Adjusted sysctrl_tb.sv test cases to reflect changes in user core reset states.
- Enhanced test_opipsram.py to utilize ccache for improved compilation performance.
- Updated test_script_tools.py to include new tests for active manifest generation.
- Modified test_user_extensions.py to validate isolated scalar bindings and reject duplicate design selections.
This commit is contained in:
maksyuki committed 2026-08-22 10:53:03 +08:00
1 parent e219973c45
commit 8276903600
23 files changed
+1058 -2979

No files matched your search

+11 -1
View File
@@ -2,6 +2,7 @@
from __future__ import annotations
import os
import re
import shutil
import subprocess
@@ -46,6 +47,13 @@ def test_opipsram_protocol_model_compiles_and_runs() -> None:
work = ROOT / ".cache" / "test-opipsram"
shutil.rmtree(work, ignore_errors=True)
work.mkdir(parents=True, exist_ok=True)
ccache_dir = work / "ccache"
ccache_tmp = work / "ccache-tmp"
ccache_dir.mkdir()
ccache_tmp.mkdir()
environment = os.environ.copy()
environment["CCACHE_DIR"] = str(ccache_dir)
environment["CCACHE_TEMPDIR"] = str(ccache_tmp)
output = work / "opipsram_tb"
sources = [
ROOT / "rtl/managed/clusterip/common/rtl/interface/axi4_if.sv",
@@ -93,7 +101,9 @@ def test_opipsram_protocol_model_compiles_and_runs() -> None:
str(output),
]
try:
compile_result = subprocess.run(command, check=False, text=True, capture_output=True)
compile_result = subprocess.run(
command, check=False, text=True, capture_output=True, env=environment
)
if compile_result.returncode != 0:
pytest.fail(
"production OPI PSRAM RTL does not compile with the locked model list:\n"