feat: enhance testbench and system control for GA2D and data plane fault handling

- Updated onchip_ram64_tb to increase ID_WIDTH from 6 to 7 and adjusted related write/read tasks.
- Modified resource_controller_tb to accommodate an expanded resource count from 8 to 9, updating related logic signals.
- Enhanced sysctrl_tb to introduce new fault handling logic for data plane faults, including additional fault validation and delivery mechanisms.
- Added tests for clock and reset domains to ensure proper handling of data plane faults and their reset contracts.
- Introduced new test_ga2d_platform.py to verify GA2D Phase 2 functionality, including lifecycle and recovery processes.
- Updated test_soc_topology.py to ensure proper data master policies and validate GA2D integration within the system.
- Enhanced sysctrl.py to ensure the fault master retains the high bit for data plane faults.
This commit is contained in:
maksyuki committed 2026-09-14 07:19:18 +08:00
1 parent 8dd24e7880
commit e77d7b3299
61 files changed
+2911 -610

No files matched your search

+15
View File
@@ -23,6 +23,10 @@ CDC_PRIMITIVES = {
"edge_det",
"hazard3_apb_async_bridge",
}
DATA_PLANE_FAULT_RESET_CONTRACT = {
"source_reset": "abort_accepted_mailbox_item",
"destination_reset": "abort_accepted_item_backpressure_unaccepted_source",
}
IDENTIFIER_RE = re.compile(r"[A-Za-z_][A-Za-z0-9_]*$")
HIERARCHICAL_PIN_RE = re.compile(
r"[A-Za-z_][A-Za-z0-9_.]*(?:/[A-Za-z_][A-Za-z0-9_.]*)+$"
@@ -144,6 +148,17 @@ def validate(document_path: Path, root: Path) -> None:
raise ValueError(f"{field}.primitive is not an approved CDC primitive")
path = root / require_string(crossing.get("path"), f"{field}.path")
instance = require_identifier(crossing.get("instance"), f"{field}.instance")
if name == "data_plane_fault":
if primitive != "async_reqack" or instance != "u_fault_mailbox":
raise ValueError(
f"{field} must use async_reqack instance u_fault_mailbox"
)
reset_contract = crossing.get("unilateral_reset")
if (not isinstance(reset_contract, dict) or
reset_contract != DATA_PLANE_FAULT_RESET_CONTRACT):
raise ValueError(
f"{field}.unilateral_reset must declare the data-plane fault reset contract"
)
require_instance(path, primitive, instance, field)
+2
View File
@@ -34,6 +34,7 @@ TEST_SOURCES = (
"crt/src/hal/dma_math.c",
"crt/src/hal/jpeg_math.c",
"crt/src/hal/apu.c",
"crt/src/hal/fabric_monitor.c",
"crt/src/hal/sysctrl.c",
"crt/src/hal/clock.c",
"crt/src/hal/resource.c",
@@ -95,6 +96,7 @@ def main() -> int:
"-Werror",
"-fno-builtin",
"-DRS_APU_TEST_MMIO",
"-DRS_FABRIC_MONITOR_TEST_MMIO",
"-I",
str(memory_map_root / "include"),
"-I",