有没有办法将参数(或命令行参数)传递给Yosys脚本?
我在这个排队(Can we have variables in a Yosys script?)中看到你可以在TCL解释器中运行Yosys脚本。有没有办法传递参数?
我这样做的原因是我有一个脚本,我希望能够使用Verilog文件的参数化路径调用脚本。当然这是一个普遍的需求,必须有一些简单的方法来做到这一点,但我没有看到它。
答案 0 :(得分:3)
目前实现这一目标的唯一方法是使用环境变量和TCL脚本。例如,您可以编写TCL脚本test.tcl
:
yosys read_verilog $::env(VLOG_FILE_NAME)
yosys synth -top $::env(TOP_MODULE)
yosys write_verilog output.v
然后在环境中设置VLOG_FILE_NAME
和TOP_MODULE
时调用:
VLOG_FILE_NAME=tests/simple/fiedler-cooley.v TOP_MODULE=up3down5 yosys test.tcl
如果您从shell脚本运行Yosys,您还可以在脚本顶部运行export VLOG_FILE_NAME=...
之类的内容。同样,当您从Makefile运行Yosys时,可以使用export
Makefile语句。
答案 1 :(得分:0)
我正面临类似的案件。我在研究解决方案时出现了这个问题。我最终还是采用了另一种方法:
我正在为我的顶层模块创建一个包装,该包装使用m4语言编写。非常简单,它会覆盖参数值,然后包含我的顶级模块定义。
然后在Makefile中,处理wrapper.m4文件,以创建生成的wrapper.v文件,该文件将输入到yosys中。
我已经详细介绍了解决方法here。