mirror of
https://github.com/retroSoC/retroSoC.git
synced 2026-11-06 14:55:14 +00:00
feat: enhance core-STA integration and timing analysis
- Updated soc_topology.json to include new fabric links for core, DMA, native, and APB interfaces. - Refactored retrosoc.sv to utilize generated fabric links and included necessary SVH files for better modularity. - Improved check_clock_reset_domains.py to validate hierarchical pins and added support for positive number checks. - Modified regress.py to include OpenSTA in the regression commands. - Enhanced README.md in the STA directory to clarify the timing analysis flow and supported PDK profiles. - Removed outdated gen2.sdc file and replaced it with a dynamic SDC generation approach. - Updated opensta.mk to generate SDC files dynamically based on the current domain map and pin map. - Created generate_sdc.py to automate SDC generation from clock/reset domain inventory. - Added tests for generated core-STA constraints to ensure coverage of current clock domains and validate pin map integrity. - Introduced new timing metrics and warnings for the sky130 PDK in the quality checks.
This commit is contained in:
30 files changed
+719
-149
No files matched your search
@@ -30,6 +30,14 @@ def write_invalid_map(tmp_path: Path, document: dict[str, object]) -> Path:
|
||||
def test_clock_reset_domain_inventory_matches_the_rcu() -> None:
|
||||
result = check(DOMAIN_MAP)
|
||||
assert result.returncode == 0, result.stderr
|
||||
document = json.loads(DOMAIN_MAP.read_text(encoding="utf-8"))
|
||||
assert document["schema_version"] == 2
|
||||
assert {domain["name"] for domain in document["domains"]} == {
|
||||
"external",
|
||||
"system",
|
||||
"audio",
|
||||
"dvp",
|
||||
}
|
||||
|
||||
|
||||
def test_clock_reset_domain_inventory_rejects_unknown_domain_and_instance(tmp_path: Path) -> None:
|
||||
@@ -44,3 +52,9 @@ def test_clock_reset_domain_inventory_rejects_unknown_domain_and_instance(tmp_pa
|
||||
result = check(write_invalid_map(tmp_path, document))
|
||||
assert result.returncode != 0
|
||||
assert "does not declare rst_sync instance" in result.stderr
|
||||
|
||||
document = json.loads(DOMAIN_MAP.read_text(encoding="utf-8"))
|
||||
document["domains"][1]["sta"]["source_domain"] = "unknown"
|
||||
result = check(write_invalid_map(tmp_path, document))
|
||||
assert result.returncode != 0
|
||||
assert "STA source references unknown domain" in result.stderr
|
||||
Reference in new issue
Block a user