mirror of
https://github.com/retroSoC/retroSoC.git
synced 2026-11-04 22:32:36 +00:00
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:
61 files changed
+2911
-610
No files matched your search
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in new issue
Block a user