mirror of
https://github.com/retroSoC/retroSoC.git
synced 2026-11-04 22:32:36 +00:00
feat: enhance JPEG processing modules and tests
- Updated to integrate a coefficient engine and additional signals for coefficient handling. - Modified to include a coefficient engine, enhancing the encoding process with new signals. - Improved to validate generated blocks against expected values and added timeout handling. - Introduced for testing SRAM wrappers in JPEG workspace. - Enhanced test coverage in to reject invalid STA net drivers. - Updated to ensure proper coverage of canonical domains in timing contracts. - Added a new test for JPEG coefficient engine in . - Improved memory map tests in to validate public active MMIO regions. - Enhanced management core specification tests in to verify high-performance core specifications. - Added behavioral-only checks in to exclude synthesis and netlist consumers. - Updated SDRAM tests in to track active firmware memory. - Enhanced STA constraints tests in to cover current clock domains and net drivers.
This commit is contained in:
50 files changed
+2640
-1278
No files matched your search
@@ -107,10 +107,12 @@ def validate(document_path: Path, root: Path) -> None:
|
||||
else:
|
||||
sta_sources[name] = require_identifier(source_domain, f"{field}.sta.source_domain")
|
||||
object_type = sta.get("object_type", "pin")
|
||||
if object_type not in {"pin", "port"}:
|
||||
raise ValueError(f"{field}.sta.object_type must be pin or port")
|
||||
if object_type not in {"net_driver", "pin", "port"}:
|
||||
raise ValueError(f"{field}.sta.object_type must be net_driver, pin, or port")
|
||||
if object_type == "pin":
|
||||
require_hierarchical_pin(sta.get("pin"), f"{field}.sta.pin")
|
||||
elif object_type == "net_driver":
|
||||
require_identifier(sta.get("net"), f"{field}.sta.net")
|
||||
elif source_port is None:
|
||||
raise ValueError(f"{field}.sta port object requires source_port")
|
||||
require_positive_number(sta.get("period_ns"), f"{field}.sta.period_ns")
|
||||
|
||||
@@ -42,6 +42,7 @@ RTL_LINT_OBSERVATION_VALUES = (
|
||||
"check-rtl-lint",
|
||||
)
|
||||
OBSERVATION_TARGETS = ("check-warnings", "check-metrics")
|
||||
SYNTHESIS_DEPENDENT_TARGETS = frozenset(("synth", "sta", "netsim", "netsim-boot", "metrics"))
|
||||
|
||||
|
||||
PR_COMMANDS = (
|
||||
@@ -192,6 +193,17 @@ def with_netsim_boot_only(
|
||||
return tuple(transformed)
|
||||
|
||||
|
||||
def behavioral_only(
|
||||
commands: tuple[tuple[str, tuple[str, ...]], ...],
|
||||
) -> tuple[tuple[str, tuple[str, ...]], ...]:
|
||||
"""Exclude synthesis and commands that consume its generated netlist."""
|
||||
return tuple(
|
||||
(profile, values)
|
||||
for profile, values in commands
|
||||
if SYNTHESIS_DEPENDENT_TARGETS.isdisjoint(values)
|
||||
)
|
||||
|
||||
|
||||
def run_command(
|
||||
command: list[str], root: Path, capture_output: bool, environment: dict[str, str]
|
||||
) -> str:
|
||||
@@ -243,6 +255,11 @@ def main() -> int:
|
||||
action="store_true",
|
||||
help="locally stop each Icarus assembly netlist run after Hello retroSoC!",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--behavioral-only",
|
||||
action="store_true",
|
||||
help="skip synthesis, STA, netlist simulation, and synthesis-recipe metrics",
|
||||
)
|
||||
args = parser.parse_args()
|
||||
try:
|
||||
commands, profiles = select_regression(args.suite, args.pdk)
|
||||
@@ -250,6 +267,8 @@ def main() -> int:
|
||||
parser.error(str(error))
|
||||
if args.netsim_boot_only:
|
||||
commands = with_netsim_boot_only(commands)
|
||||
if args.behavioral_only:
|
||||
commands = behavioral_only(commands)
|
||||
environment = regression_environment()
|
||||
for profile, values in commands:
|
||||
command = ["make", f"CONFIG={profile}", *values]
|
||||
|
||||
Reference in new issue
Block a user