为什么module经过DC综合后 端口的数目都变了? 真奇怪
原始的.v文件和综合之后得到一个.v文件,为什么综合后的ADD这个module多了一个port呢?
表示没有看懂问题说啥
ADD是我自己写的一个加法器,然后把这个ADD在top.v中例化了一次;top.v中除了加法器还有一个乘法器和一个电源控制模块;
然后去DC中进行综合,综合之后,write命令写一个.v文件出来,就是图中的module TOP 可为什么在module TOP中的I_ADD的端口的个数和我原来的ADD模块的端口个数不一致了呢
小编看懂问题了吗 知道这是怎么造成的吗
DCT , 或者DCG ,做 place优化的时候增加端口,很正常。
我用的是 DC mode,没有使用 DCT和DCG mode啊
要想不动端口,可以改一定的变量,不过,DC加端口是有一定理由的。不动端口,可能增加面积,timing变差的结果。
我这个增加端口是因为upf的原因,我做了实验,不加upf的时候,综合后没有多加端口;
但是load upf之后,再compile就会多加端口;
也正因为这个多加的端口,一直提示说 有个 level shifter 加不进去;
请问修改什么变量可以控制,让工具对子模块不多加端口;
试试这个
power_preserve_rtl_hier_names
设置为true之后,综合之后得到的网表文件中,I_ADD依然多了一个端口
ADD I_ADD ( .add_in0(in0), .add_in1(in1), .clk(clk), .resetn(resetn),
.add_out({n12, n11, n10, n9, n8, n7, n6, n5, n4}), .a_ret(n2) );
那看看 把它端口都 dont touch.
set_dont_touch [get_nets -of I_ADD/add*] true
还有这个变量 :
compile_preserve_subdesign_interfaces
set_dont_touch 肯定能保持原来状况,但是优化力度肯定小了
你就个adder,还搞什么upf啊,
熟悉下流程啊,这是跑的synopsys的low power lab,只有lab么有guide,版大能否帮忙下这个guide呢
http://www.synopsys.com/apps/support/training/lowpowerflowhld_fcd.html
多谢了先
额 使用完你说的这俩命令写出来的.v文件中,I_ADD这个module依然多了个 a_ret这个port,
并且这个端口在I_ADD内的net直接连了一个buffer,应该是先连一个level shifter才对;
可以先综合这个add看看,应该是不会加端口的。
那就得采用bottom-up的方法了,将ADD这个模块单独综合 然后单独布局布线
将ADD这个模块单独综合 然后单独布局布线
---
那倒是不用的,单独综合,合在顶层一块PR
我不理解你的意思,如果我有如下.v文件
top.va.vb.v c.v;top.v 中例化了 a.v b.v c.v ; 如果我分别单独综合了 a.vb.vc.v 综合之后各出一个网表(.v文件);top.v不做任何操作
然后直接将top.v传给ICC去做PnR你是这个意思吗;还是说我分别单独综合了 a.vb.vc.v 综合之后各出一个网表(.v文件),然后将top.v去做一遍DC综合,出一个TOP.v然后将这个TOP.V传给ICC去做 PnR?
是上面的那种情况呢?
是上面的那种情况呢?
===
都可以,两种网表都能只做一遍PR就实现。