59 lines
1.7 KiB
Python
59 lines
1.7 KiB
Python
import argparse
|
|
from pathlib import Path
|
|
import subprocess
|
|
import sys
|
|
|
|
|
|
def run(cmd: list[str]) -> None:
|
|
print("\n$ " + " ".join(cmd))
|
|
r = subprocess.run(cmd)
|
|
if r.returncode != 0:
|
|
raise SystemExit(r.returncode)
|
|
|
|
|
|
def main() -> None:
|
|
ap = argparse.ArgumentParser(description="End-to-end: config -> IR -> logic -> validate")
|
|
ap.add_argument("--config", required=True, help="Path to configuration.json")
|
|
ap.add_argument("--ir-out", default="outputs/ir/ir_v1.json", help="IR output path")
|
|
ap.add_argument("--logic-out", default="outputs/logic_ir", help="Logic output directory")
|
|
ap.add_argument("--model", default="tank", choices=["tank"], help="Heuristic model for IR draft")
|
|
ap.add_argument("--overwrite", action="store_true", help="Overwrite outputs")
|
|
args = ap.parse_args()
|
|
|
|
Path(args.ir_out).parent.mkdir(parents=True, exist_ok=True)
|
|
Path(args.logic_out).mkdir(parents=True, exist_ok=True)
|
|
|
|
cmd1 = [
|
|
sys.executable, "-m", "tools.make_ir_from_config",
|
|
"--config", args.config,
|
|
"--out", args.ir_out,
|
|
"--model", args.model,
|
|
]
|
|
if args.overwrite:
|
|
cmd1.append("--overwrite")
|
|
run(cmd1)
|
|
|
|
cmd2 = [
|
|
sys.executable, "-m", "tools.compile_ir",
|
|
"--ir", args.ir_out,
|
|
"--out-dir", args.logic_out,
|
|
]
|
|
if args.overwrite:
|
|
cmd2.append("--overwrite")
|
|
run(cmd2)
|
|
|
|
cmd3 = [
|
|
sys.executable, "-m", "tools.validate_logic",
|
|
"--config", args.config,
|
|
"--logic-dir", args.logic_out,
|
|
"--check-callbacks",
|
|
"--check-hil-init",
|
|
]
|
|
run(cmd3)
|
|
|
|
print("\nOK: pipeline completed successfully")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|