4

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

我在这个问题中看到(我们可以在 Yosys 脚本中有变量吗?)您可以在 TCL 解释器中运行 Yosys 脚本。有什么方法可以传递参数吗?

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

4

2 回答 2

5

目前唯一的方法是使用环境变量和 TCL 脚本。例如,您可以编写一个 TCL 脚本test.tcl

yosys read_verilog $::env(VLOG_FILE_NAME)
yosys synth -top $::env(TOP_MODULE)
yosys write_verilog output.v

然后在环境中调用 ifVLOG_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 时,您可以使用exportMakefile 语句。

于 2017-06-10T10:22:24.910 回答
0

我面临着类似的情况。当我正在研究解决方案时,这个问题出现了。不过,我最终采用了不同的方法:

我正在为我的顶级模块创建一个包装器,用 m4 语言编写。很简单,它覆盖了参数值,然后包含了我的顶层模块定义。

然后在 Makefile 中,我处理 wrapper.m4 文件,以创建生成的 wrapper.v 文件,该文件将输入到 yosys。

我在这里详细介绍了解决方案。

于 2018-07-10T15:19:53.583 回答