什么是好的"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 门。)
我想写自己的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 门。)