Yosys synthesys - 这是最好的吗?
Posted
技术标签:
【中文标题】Yosys synthesys - 这是最好的吗?【英文标题】:Yosys synthesys - is this opimum? 【发布时间】:2021-04-13 13:29:44 【问题描述】:我正在使用 yosys 来合成简单的电路,并展示结果如何随单元库而变化。 但是,看起来结果没有得到很好的优化。 我正在使用从以下位置下载的库 vsclib013.lib:http://www.vlsitechnology.org/synopsys/vsclib013.lib
例如我合成了一个由 4 个全加器组成的加法器。由于我不使用 Carry_in 和 Carry_out,我确实希望为 LSB 加法器合成一个半加法器(与两个输入进行异或)。 综合结果如下。
Number of cells 12
cgi2v0x05 4
iv1v0x05 4
xor3v1x05 4
它使用 4 个具有三个输入的 XOR 单元。 这从电路图上也很清楚:graph obtained using the yosys command 'show' 该电路简单地由四个相同的全加器组成,对于Carry_in等于'0'和Carry_out不连接没有优化。
我用来合成的脚本是:
ghdl TOP_ENTITY
hierarchy -check -top TOP_ENTITY
proc; opt; memory; opt; fsm; opt
techmap; opt
read_liberty -lib vsclib013.lib
dfflibmap -liberty vsclib013.lib
abc -liberty vsclib013.lib -D 1000 -constr constraint_file_vsclib013.txt
splitnets -ports; opt
clean
write_verilog TOP_ENTITY.v
flatten
show -stretch -format pdf -lib TOP_ENTITY.v
感谢您对改进合成器的任何建议。
【问题讨论】:
我也试过opt -fine -full
但没有运气
每个 Yosys 文档 -full
是 -fine
的别名,所以这似乎是多余的。也许您可以尝试使用其他选项来选择,例如-share_all
和-purge
,第一次尝试合并到由相同信号驱动的单元格,此选项被转发到opt_merge
。 -purge
选项清除命名的剩余或未连接的网络,此选项再次隐式传递给 opt_clean
。此外,您可以添加opt_demorgan
以减少门数。
【参考方案1】:
谢谢你的回答。
经过一些尝试和错误,我通过简单地使用 flatten 获得了良好的结果。 我还在 opt 命令中添加了 -full,以便(希望)采取良好措施。 现在,我的工作脚本是这样的:
ghdl TOP_ENTITY
hierarchy -check -top TOP_ENTITY
flatten
proc; opt -full; memory; opt -full; fsm; opt -full
techmap; opt -full
read_liberty -lib vsclib013.lib
dfflibmap -liberty vsclib013.lib
abc -liberty vsclib013.lib -D 1000 -constr constraint_file_vsclib013.txt
splitnets -ports; opt -full
clean -purge
write_verilog TOP_ENTITY.v
flatten
show -stretch -format pdf -lib TOP_ENTITY.v
我还在 clean 命令中添加了 -purge 选项以获得更好的打印原理图。
【讨论】:
以上是关于Yosys synthesys - 这是最好的吗?的主要内容,如果未能解决你的问题,请参考以下文章
使用带有 CircuitTikZ 的 Latex 从 yosys 中绘制原理图并将其转换为 PDF?
论文阅读:NeRF Representing Scenes as Neural Radiance Fields for View Synthesis