脚本

时间:2017-06-09 17:01:28

标签: yosys

有没有办法将参数(或命令行参数)传递给Yosys脚本?

我在这个排队(Can we have variables in a Yosys script?)中看到你可以在TCL解释器中运行Yosys脚本。有没有办法传递参数?

我这样做的原因是我有一个脚本,我希望能够使用Verilog文件的参数化路径调用脚本。当然这是一个普遍的需求,必须有一些简单的方法来做到这一点,但我没有看到它。

2 个答案:

答案 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_NAMETOP_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