mirror of
https://github.com/retroSoC/retroSoC.git
synced 2026-11-04 22:32:36 +00:00
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:
67 files changed
+4165
-612
No files matched your search
+25
-6
@@ -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(
|
||||
|
||||
Reference in new issue
Block a user