mirror of
https://github.com/YosysHQ/yosys
synced 2026-03-27 14:55:47 +00:00
52 lines
1.5 KiB
Python
52 lines
1.5 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}"
|
|
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}"
|
|
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}"
|
|
gen_tests_makefile.generate_target(target_name, cmd)
|
|
|
|
def main():
|
|
def callback():
|
|
archs()
|
|
common()
|
|
|
|
gen_tests_makefile.generate_custom(callback)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|