feat: add comprehensive tests for AXI4 components and lifecycle controllers

- Implemented tests for AXI4 async bridge functionality, including transfer and warm flush scenarios.
- Added tests for AXI4 data crossbar to validate concurrent outstanding requests and ACL handling.
- Introduced clock frequency monitor tests to ensure detection of clock stop and restart events.
- Developed tests for extension DMA master to verify copy operations, tail strobe behavior, and timeout handling.
- Created tests for HP lifecycle controller to validate drain, flush, and forced reset functionalities.
- Updated existing test scripts to include new RTL components and ensure proper simulation configurations.
This commit is contained in:
maksyuki committed 2026-08-30 13:15:10 +08:00
1 parent 2b6819449c
commit 98eb8ebad6
67 files changed
+4165 -612

No files matched your search

+25 -6
View File
@@ -16,6 +16,16 @@ from scripts.check_c_warnings import self_owned_warnings # noqa: E402
CI_SMOKE_APP_VALUE = "APP=ci_smoke"
CI_SMOKE_SIM_VALUES = (
CI_SMOKE_APP_VALUE,
"LINK_TYPE=ld2_all_sram",
"VERILATOR_SIM_ARGS=--fast-flash",
"SOC_SIM_TIME=360",
"SIMU=VERILATOR",
"HAVE_SVA=YES",
"firmware",
"sim",
)
RTL_LINT_VALUES = ("SIMU=VERILATOR", "HAVE_SVA=YES", "rtl-lint")
RTL_LINT_OBSERVATION_VALUES = (
"SIMU=VERILATOR",
@@ -31,7 +41,7 @@ PR_COMMANDS = (
("configs/ci/ihp130-shell.mk", ("firmware",)),
(
"configs/ci/ihp130.mk",
(CI_SMOKE_APP_VALUE, "SIMU=VERILATOR", "HAVE_SVA=YES", "firmware", "sim"),
CI_SMOKE_SIM_VALUES,
),
("configs/ci/ihp130-debug.mk", ("SIMU=VERILATOR", "debug-sim")),
("configs/ci/ihp130.mk", ("SIMU=IVERILOG", "RTL_SIM_TIMEOUT=5200000", "sim-asm")),
@@ -47,6 +57,7 @@ PR_COMMANDS = (
),
("configs/ci/ihp130.mk", ("STA=OPENSTA", "sta")),
)
RTL_COMMANDS = PR_COMMANDS[:6]
SMOKE_COMMANDS = (
("configs/ci/ihp130.mk", RTL_LINT_VALUES),
("configs/ci/ihp130.mk", (CI_SMOKE_APP_VALUE, "firmware")),
@@ -92,13 +103,15 @@ NETSIM_BOOT_PROFILES = frozenset(
def pdk_pr_commands(profile: str) -> tuple[tuple[str, tuple[str, ...]], ...]:
netsim_target = "netsim-boot" if profile in NETSIM_BOOT_PROFILES else "netsim"
verilator_values = (
CI_SMOKE_SIM_VALUES
if profile == "configs/ci/ihp130.mk"
else (CI_SMOKE_APP_VALUE, "SIMU=VERILATOR", "HAVE_SVA=YES", "firmware", "sim")
)
return (
(profile, RTL_LINT_VALUES),
(profile, (CI_SMOKE_APP_VALUE, "firmware")),
(
profile,
(CI_SMOKE_APP_VALUE, "SIMU=VERILATOR", "HAVE_SVA=YES", "firmware", "sim"),
),
(profile, verilator_values),
(profile, ("SIMU=IVERILOG", "RTL_SIM_TIMEOUT=5200000", "sim-asm")),
(profile, ("SYNTH=YOSYS", "synth")),
(profile, ("STA=OPENSTA", "sta")),
@@ -121,6 +134,10 @@ def select_regression(
if pdk is not None and pdk != "IHP130":
raise ValueError("smoke regression supports only --pdk IHP130")
return SMOKE_COMMANDS, SMOKE_PROFILES
if suite == "rtl":
if pdk is not None and pdk != "IHP130":
raise ValueError("rtl regression supports only --pdk IHP130")
return RTL_COMMANDS, PR_PROFILES
if suite == "nightly-extra":
if pdk is not None and pdk != "IHP130":
raise ValueError("nightly-extra regression supports only --pdk IHP130")
@@ -207,7 +224,9 @@ def run_observation(command: list[str], root: Path, environment: dict[str, str])
def main() -> int:
parser = argparse.ArgumentParser(description="Run a supported retroSoC regression suite")
parser.add_argument("--root", type=Path, required=True)
parser.add_argument("--suite", choices=("smoke", "pr", "nightly", "nightly-extra"), required=True)
parser.add_argument(
"--suite", choices=("smoke", "rtl", "pr", "nightly", "nightly-extra"), required=True
)
parser.add_argument("--pdk", choices=tuple(PDK_PR_PROFILES), help="run one PDK matrix")
parser.add_argument("--dry-run", action="store_true")
parser.add_argument(