mirror of
https://github.com/retroSoC/retroSoC.git
synced 2026-11-06 14:55:14 +00:00
feat: enhance SDRAM Controller and Testbench Functionality
- Introduced burst length handling in the SDRAM Verilator model, allowing for more flexible read/write operations. - Added new SDRAM-related source files to the project structure, including sdram_pkg.sv and sdram_axi4.sv. - Updated software makefile to include new SDRAM-related C source files for HAL. - Enhanced C test suite with new tests for SDRAM timing and functionality, ensuring proper integration with the HAL. - Improved RTL testbench for SDRAM, adding support for burst writes and reads, and verifying data integrity. - Updated Python test scripts to reflect changes in SDRAM handling and ensure comprehensive coverage of SDRAM functionality. - Added checks to ensure register offsets between RTL and HAL definitions match, maintaining consistency across the codebase.
This commit is contained in:
30 files changed
+3441
-644
No files matched your search
@@ -46,6 +46,7 @@ from scripts import run_flow # noqa: E402
|
||||
from scripts.regress import ( # noqa: E402
|
||||
CI_SMOKE_APP_VALUE,
|
||||
NIGHTLY_COMMANDS,
|
||||
NIGHTLY_EXTRA_COMMANDS,
|
||||
PDK_PR_PROFILES,
|
||||
PR_COMMANDS,
|
||||
RTL_LINT_VALUES,
|
||||
@@ -912,6 +913,62 @@ def test_nightly_regression_runs_optional_yosys_recipes() -> None:
|
||||
assert "SYNTH_RECIPE=speed" not in pr.stdout
|
||||
|
||||
|
||||
def test_nightly_extra_regression_skips_pr_netsim() -> None:
|
||||
commands, profiles = select_regression("nightly-extra", "IHP130")
|
||||
|
||||
assert commands == NIGHTLY_EXTRA_COMMANDS
|
||||
assert profiles == ("configs/ci/ihp130.mk",)
|
||||
assert NIGHTLY_COMMANDS == (*PR_COMMANDS, *NIGHTLY_EXTRA_COMMANDS)
|
||||
assert not any("netsim" in values for _, values in commands)
|
||||
|
||||
extra = run(
|
||||
sys.executable,
|
||||
str(ROOT / "scripts/regress.py"),
|
||||
"--root",
|
||||
str(ROOT),
|
||||
"--suite",
|
||||
"nightly-extra",
|
||||
"--pdk",
|
||||
"IHP130",
|
||||
"--dry-run",
|
||||
)
|
||||
assert "+ make CONFIG=configs/benchmark/ihp130-hazard3-coremark.mk SIMU=VERILATOR HAVE_SVA=YES coremark-report" in extra.stdout
|
||||
assert "+ make CONFIG=configs/ci/ihp130.mk SYNTH=YOSYS SYNTH_RECIPE=area synth" in extra.stdout
|
||||
assert "+ make CONFIG=configs/ci/ihp130.mk SYNTH=YOSYS SYNTH_RECIPE=speed synth" in extra.stdout
|
||||
assert "netsim" not in extra.stdout
|
||||
|
||||
invalid = subprocess.run(
|
||||
[
|
||||
sys.executable,
|
||||
str(ROOT / "scripts/regress.py"),
|
||||
"--root",
|
||||
str(ROOT),
|
||||
"--suite",
|
||||
"nightly-extra",
|
||||
"--pdk",
|
||||
"GF180",
|
||||
"--dry-run",
|
||||
],
|
||||
text=True,
|
||||
capture_output=True,
|
||||
check=False,
|
||||
)
|
||||
assert invalid.returncode != 0
|
||||
assert "nightly-extra regression supports only --pdk IHP130" in invalid.stderr
|
||||
|
||||
|
||||
def test_nightly_workflow_splits_netsim_from_extended_recipes() -> None:
|
||||
nightly = (ROOT / ".github/workflows/nightly.yml").read_text()
|
||||
quality = (ROOT / ".github/workflows/quality.yml").read_text()
|
||||
|
||||
assert "suite: pr" in nightly
|
||||
assert "timeout_minutes: 360" in nightly
|
||||
assert "suite: nightly-extra" in nightly
|
||||
assert "timeout_minutes: 180" in nightly
|
||||
assert "suite: nightly\n" not in nightly
|
||||
assert "--suite nightly-extra --pdk IHP130 --dry-run" in quality
|
||||
|
||||
|
||||
def test_regression_observations_do_not_block_or_skip_metrics(
|
||||
monkeypatch, tmp_path: Path, capsys
|
||||
) -> None:
|
||||
|
||||
Reference in new issue
Block a user