Repository navigation
Expand file tree
/
Copy pathtest.py
More file actions
68 lines (56 loc) · 1.91 KB
/
Copy pathtest.py
File metadata and controls
68 lines (56 loc) · 1.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/usr/bin/env python3
"""Build and run top_storage_tb with iverilog/vvp.
Uses IVERILOG and VVP env vars if set; otherwise defaults to iverilog/vvp on PATH.
"""
from __future__ import annotations
import os
import subprocess
from pathlib import Path
ROOT = Path(__file__).resolve().parent
OUT = ROOT / "user" / "sim" / "calc_flow_tb.vvp"
IVERILOG = os.environ.get("IVERILOG", "iverilog")
VVP = os.environ.get("VVP", "vvp")
SRC = ROOT / "user" / "src"
DISP = SRC / "display"
SOURCES = [
ROOT / "user" / "sim" / "calc_flow_tb.v",
ROOT / "user" / "src" / "top_fast.v",
ROOT / "user" / "src" / "top.sv",
ROOT / "user" / "src" / "button_hub.v",
ROOT / "user" / "src" / "debounce_btn.v",
ROOT / "user" / "src" / "controller" / "main_controller.v",
ROOT / "user" / "src" / "config.v",
ROOT / "user" / "src" / "uart" / "uart_rx_fifo.v",
ROOT / "user" / "src" / "uart" / "uart_rx.v",
ROOT / "user" / "src" / "uart" / "fifo_buffer.v",
ROOT / "user" / "src" / "uart" / "uart_tx_fifo.v",
ROOT / "user" / "src" / "uart" / "uart_tx.v",
ROOT / "user" / "src" / "input_matrix" / "input_matrix.v",
ROOT / "user" / "src" / "storage" / "storage_controller.sv",
ROOT / "user" / "src" / "storage" / "storage_FSM.v",
ROOT / "user" / "src" / "storage" / "matrix_memory.v",
ROOT / "user" / "src" / "display" / "matrix_display_controller.v",
DISP / "seven_seg_mux.v",
SRC / "storage" /"display_all.v",
SRC / "storage"/"input_disposer.sv",
SRC / "storage"/"load_matrix.sv",
]
def run(cmd: list[str]) -> None:
print("[cmd]", " ".join(cmd))
subprocess.run(cmd, check=True)
def compile_tb() -> None:
cmd = [
IVERILOG,
"-g2012",
"-o",
str(OUT),
] + [str(p) for p in SOURCES]
run(cmd)
def run_tb() -> None:
cmd = [VVP, str(OUT)]
run(cmd)
def main() -> None:
compile_tb()
run_tb()
if __name__ == "__main__":
main()