3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2026-03-27 14:55:47 +00:00
yosys/tests/arch/generate_mk.py
Miodrag Milanovic 2811131d8a Convert arch
2026-03-24 08:47:57 +01:00

52 lines
1.6 KiB
Python

#!/usr/bin/env python3
from pathlib import Path
import sys
sys.path.append("..")
import gen_tests_makefile
techlibs_dir = Path("../../techlibs")
# Architecture-specific defines
defines = {
"ice40": ["ICE40_HX", "ICE40_LP", "ICE40_U"]
}
def archs():
# Loop over architectures
for arch in techlibs_dir.iterdir():
if not arch.is_dir():
continue
arch_name = arch.name
for path in arch.rglob("cells_sim.v"):
rel_parts = path.relative_to(techlibs_dir).parts
target_base = "_".join(rel_parts[-len(rel_parts):]).replace(".v", "")
path_str = str(path)
if arch_name in defines:
for defn in defines[arch_name]:
target_name = f"{target_base}_{defn}"
cmd = f"iverilog -t null -I{arch} -D{defn} -DNO_ICE40_DEFAULT_ASSIGNMENTS {path_str} >/dev/null 2>&1"
gen_tests_makefile.generate_target(target_name, cmd)
else:
target_name = f"{target_base}"
cmd = f"iverilog -t null -I{arch} -g2005-sv {path_str} >/dev/null 2>&1"
gen_tests_makefile.generate_target(target_name, cmd)
def common():
for path in ["../../techlibs/common/simcells.v", "../../techlibs/common/simlib.v"]:
path_obj = Path(path)
target_name = path_obj.stem
cmd = f"iverilog -t null {path} >/dev/null 2>&1"
gen_tests_makefile.generate_target(target_name, cmd)
def main():
def callback():
archs()
common()
gen_tests_makefile.generate_custom(callback)
if __name__ == "__main__":
main()