我用yosys合成了简单的电路,并展示了结果如何随单元库的变化而变化。然而,看起来结果并没有得到很好的优化。我正在使用从:下载的库vsclib013.lib
我合成了一个由四个加法器组成的加法器。由于我不使用Carry_in和Carry_out,所以我确实期望为LSB加法器合成一个半加法器(具有两个输入的XOR)。合成的结果如下。
Number of cells 12
cgi2v0x05 4
iv1v0x05 4
xor3v1x05 4它使用4个单元格,它们是具有三个输入的异或。从电路图中也可以清楚地看出这一点:使用yosys命令“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 谢谢你提出的任何改善合成的建议。
发布于 2021-04-15 15:00:17
谢谢你的回答。
经过一些尝试和错误之后,我通过简单地使用扁平化获得了良好的结果。我还将-full添加到opt命令中(希望如此)。现在,我的工作脚本如下:
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 我还将-purge选项添加到干净命令中,以获得更好的打印原理图。
https://stackoverflow.com/questions/67075867
复制相似问题