什么是好的"template" Yosys综合脚本?

What is a good "template" Yosys synthesis script?

我想写自己的Yosys综合脚本。什么是好的模板开始?手册和网页包含各种示例,但没有 "authoritative" hello world 示例。

synth 命令运行推荐的通用综合任务脚本。有关此元命令调用的命令的完整列表,请参阅 help synth

您的脚本应该借鉴 synth 或简单地调用 synth 来完成通用任务。许多脚本为合成的粗粒度部分调用 synth -run coarse,然后继续使用自定义命令序列进行细粒度合成。例如参见 [​​=19=].

要将 ASIC 合成为 liberty 格式的库,请使用以下脚本作为起点:

# read design 
read_verilog mydesign.v

# generic synthesis
synth -top mytop

# mapping to mycells.lib
dfflibmap -liberty mycells.lib
abc -liberty mycells.lib
clean

# write synthesized design
write_verilog synth.v

进行形式验证的脚本通常需要一组不太激进的优化。在这种情况下,以下命令序列通常是正式验证流程的 "synthesis" 部分的良好起点:

hierarchy [-check -top <top-module>]
proc; opt; memory [-nomap]; opt -fast; check -assert

不要忘记将 mycells.lib 和 mycells.v 文件放在调用 yosys 的目录中。一个很好的例子是在目录 "examples/cmos" 下的 yosys 的 GitHub 站点上,他们在那里放置了 cmos_cell.lib 和 cmos_cell.v 文件的示例。

read_verilog counter.v
read_verilog -lib cmos_cells.v

proc;; memory;; techmap;;

dfflibmap -liberty cmos_cells.lib
abc -liberty cmos_cells.lib;;

write_verilog synth.v

(此外,如果您想要更易于阅读的综合输出,您可以修改 .lib 和 .v 文件以将 NAND 和 NOR 门更改为 AND 和 OR 门。)