微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Yosys Synthesys - 这是最佳选择吗?

如何解决Yosys Synthesys - 这是最佳选择吗?

我正在使用 yosys 来合成简单的电路并展示结果如何随单元库而变化。 但是,看起来结果没有得到很好的优化。 我正在使用从以下位置下载的库 vsclib013.libhttp://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 

感谢您提出任何改进综合系统的建议。

解决方法

感谢您的回答。

经过一些尝试和错误后,我通过简单地使用 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 选项以获得更好的印刷原理图。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。