mirror of
https://github.com/YosysHQ/yosys
synced 2026-06-06 17:11:01 +00:00
50 lines
1.4 KiB
Python
50 lines
1.4 KiB
Python
#!/usr/bin/env python3
|
|
|
|
import sys
|
|
sys.path.append("..")
|
|
import gen_tests_makefile
|
|
|
|
from pathlib import Path
|
|
from textwrap import dedent
|
|
|
|
cwd = Path.cwd()
|
|
for path in cwd.glob("*_edges.*"):
|
|
path.unlink()
|
|
|
|
for op, defs in {
|
|
# standard ops
|
|
"sqrt": "-DSQRT -DSQRTS",
|
|
"add": "-DADD -DADDSUB -DADDS",
|
|
"sub": "-DSUB -DADDSUB -DADDS",
|
|
"mul": "-DMUL -DMULS",
|
|
"div": "-DDIV -DDIVS",
|
|
"muladd": "-DMULADD -DMULS -DADDS",
|
|
# altops
|
|
"altdiv": "-DALTDIV -DDIVS",
|
|
"altsqrt": "-DALTSQRT -DSQRTS",
|
|
# unrounded
|
|
"min": "-DMIN -DCOMPARES",
|
|
"max": "-DMAX -DCOMPARES",
|
|
}.items():
|
|
rms = ["DYN"]
|
|
dyn_only = op in ["min", "max"]
|
|
if not dyn_only:
|
|
rms.extend(["RNE", "RNA", "RTP", "RTN", "RTZ"])
|
|
for rm in rms:
|
|
with open(f"{op}_{rm}_edges.ys", "w") as ys:
|
|
print(f"symfpu -op {op} -rm {rm}", file=ys)
|
|
if rm != "DYN" or dyn_only:
|
|
print("sat -prove-asserts -verify", file=ys)
|
|
print(
|
|
dedent(f"""\
|
|
chformal -remove
|
|
opt
|
|
|
|
read_verilog -sv -formal {defs} -D{rm} edges.sv
|
|
chformal -remove -cover
|
|
chformal -lower
|
|
prep -top edges -flatten
|
|
sat -set-assumes -prove-asserts -verify"""
|
|
), file=ys)
|
|
|
|
gen_tests_makefile.generate(["--yosys-scripts"])
|