mirror of
https://github.com/retroSoC/retroSoC.git
synced 2026-11-04 22:32:36 +00:00
- Adjusted slot assignments in to reflect new peripheral mappings. - Updated to validate new OpenC906 configurations, including generator and profile checks. - Modified to reference the new Std-series VexiiRiscv generator. - Changed cache maintenance instructions in to align with C906 specifications. - Revised assertions in to account for internal unit removals. - Updated to reflect changes in peripheral interface counts and policies. - Added new test file to ensure preservation of the frozen HP configuration in the Std-series generator.
67 lines
2.0 KiB
Python
67 lines
2.0 KiB
Python
#!/usr/bin/env python3
|
|
"""Build the minimal hart-1 smoke payload used by HP RTL simulation."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import argparse
|
|
import subprocess
|
|
from pathlib import Path
|
|
|
|
try:
|
|
from scripts.hp_tools import require_rv64_elf
|
|
except ModuleNotFoundError:
|
|
from hp_tools import require_rv64_elf
|
|
|
|
|
|
def build(args: argparse.Namespace) -> None:
|
|
output = args.output.resolve()
|
|
images = output / "images"
|
|
images.mkdir(parents=True, exist_ok=True)
|
|
elf = output / "hp_smoke.elf"
|
|
compiler = f"{args.cross}gcc"
|
|
objcopy = f"{args.cross}objcopy"
|
|
command = [
|
|
compiler,
|
|
"-march=rv64imafdc_zicsr_zifencei",
|
|
"-mabi=lp64d",
|
|
"-nostdlib",
|
|
"-nostartfiles",
|
|
"-ffreestanding",
|
|
"-O3",
|
|
"-Wall",
|
|
"-Wextra",
|
|
"-Werror=implicit-function-declaration",
|
|
"-Werror=return-type",
|
|
"-Wl,--build-id=none",
|
|
f"-Wl,-T,{args.linker.resolve()}",
|
|
"-o",
|
|
str(elf),
|
|
str(args.source.resolve()),
|
|
]
|
|
for include in args.include:
|
|
command.append(f"-I{include.resolve()}")
|
|
command.extend(str(source.resolve()) for source in args.extra_source)
|
|
command.extend(args.define)
|
|
subprocess.run(command, check=True)
|
|
require_rv64_elf(elf)
|
|
subprocess.run(
|
|
[objcopy, "-O", "binary", str(elf), str(images / "hp_smoke.bin")],
|
|
check=True,
|
|
)
|
|
|
|
|
|
def main() -> None:
|
|
parser = argparse.ArgumentParser(description=__doc__)
|
|
parser.add_argument("--source", type=Path, required=True)
|
|
parser.add_argument("--linker", type=Path, required=True)
|
|
parser.add_argument("--output", type=Path, required=True)
|
|
parser.add_argument("--cross", default="riscv64-unknown-elf-")
|
|
parser.add_argument("--extra-source", type=Path, action="append", default=[])
|
|
parser.add_argument("--include", type=Path, action="append", default=[])
|
|
parser.add_argument("--define", action="append", default=[])
|
|
build(parser.parse_args())
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|