请问关于encounter的partition功能的问题
在我原来的RTL描述里,顶层模块多次例化同一个底层模块
module TOP();
myunit core1();
myunit core2();
myunit core3();
......
endmodule
用DC综合,也没有仔细设置,只是对TOP模块整个进行综合。
把生成的netlist读入到encounter里面,发现partition顶层模块的时候,可以分出 core1, core2, core3,看起来方块儿也一样大。
于是我就specify partition (全是default的设置),然后做P&R。
然而,虽然大概样子相仿,但是core1,core2,core3 细节的地方长得不是一模一样的。
于是我认为,以上的操作并不能保证对同一子模块的多个例化得出的layout一样。
原本,我想用partition实现多核的layout,而不是一整个flattened的版图。而且要求每个核的内部电路版图一模一样(reuse IP的思想)。
请问如何才能达到以上要求呢?
partition主要是为太大的设计准备的
你的要求是bottom-up的流程,只要对一个core做P&R,然后在top用三次就可以,
请教小编:bottom-up流程与partition流程有啥区别啊?
谢谢!
多谢小编。
Bottom-up的流程的话,我应该一直回退到DC逻辑综合的阶段吧?
起初我只是想把myCore生成为encounter的macro,然后在Topnetlist.v 里面例化这个macro,然后在用encounter来出版图(这个想法没有错吧?)。 但是我查了一下我的Topnetlist.v里面的代码,似乎完全被flatten掉了。分不出层次来了,因为DC综合阶段就是用的top-down。
请问小编,如果我重新DC综合,应该怎样设置才能算Bottom-up呢?
假如我DC综合Bottom-up成功,直接用encounter出layout能够达到区分多核的目的吗,还需要macro来把多核分开吗?
我查到的bottom-up综合,就是:
subdesign 综合完了 写ddc出来,然后顶层模块link,再compile。
如果想综合结果中,同一个module的多个instance都能区分开,需要 link 后面uniquify,在TOP compile之前set_dont_touch module是吗?
我在TOP-DOWN的脚本里,也经常见到 link uniquify 和 set_dont_tough,但是为什么达不到分离多核的作用呢?
本设计的层次图,如下图所示:
我照着网上的一个例子写了一个bottom-up综合的脚本,如下,请大侠看看是否正确,我理解是否有误。
此脚本目的是为了在encounter看layout的时候能分出两个core来。
remove_design –all
read_verilog DoubleCore.v
current_design AddressGenerator
Link
check_design
include subblocks.const
compile -map_effort high
report_timing -path full -delay max -max_paths 20 -nworst 100
#Generate Verilog Netlist and ddc and sdf
write -hierarchy -format verilog -output"/home/AddressGenerator.v“
write -hierarchy -format ddc -output"/home/AddressGenerator.ddc“
write_sdf "/home/AddressGenerator.sdf“
report_power
current_design fixmultiply
Link
check_design
include subblocks.const
compile -map_effort high
report_timing -path full -delay max -max_paths 20 -nworst 100
#Generate Verilog Netlist and ddc and sdf
write -hierarchy -format verilog -output "/home/fixmultiply.v“
write -hierarchy -format ddc -output "/home/fixmultiply.ddc“
write_sdf "/home/fixmultiply.sdf“
report_power
current_design expon
Link
check_design
include subblocks.const
compile -map_effort high
report_timing -path full -delay max -max_paths 20 -nworst 100
#Generate Verilog Netlist and ddc and sdf
write -hierarchy -format verilog -output "/home/expon.v“
write -hierarchy -format ddc -output "/home/expon.ddc“
write_sdf "/home/expon.sdf“
report_power
current_design MMU
Link
check_design
include subblocks.const
compile -map_effort high
report_timing -path full -delay max -max_paths 20 -nworst 100
#Generate Verilog Netlist and ddc and sdf
write -hierarchy -format verilog -output "/home/MMU.v“
write -hierarchy -format ddc -output "/home/MMU.ddc“
write_sdf "/home/MMU.sdf“
report_power
current_design FSM
Link
check_design
include subblocks.const
compile -map_effort high
report_timing -path full -delay max -max_paths 20 -nworst 100
#Generate Verilog Netlist and ddc and sdf
write -hierarchy -format verilog -output "/home/FSM.v“
write -hierarchy -format ddc -output "/home/FSM.ddc“
write_sdf "/home/FSM.sdf“
report_power
current_design MUX_A
Link
check_design
include subblocks.const
compile -map_effort high
report_timing -path full -delay max -max_paths 20 -nworst 100
#Generate Verilog Netlist and ddc and sdf
write -hierarchy -format verilog -output "/home/ MUX_A.v“
write -hierarchy -format ddc -output "/home/ MUX_A.ddc“
write_sdf "/home/ MUX_A.sdf“
report_power
current_design MUX_D
Link
check_design
include subblocks.const
compile -map_effort high
report_timing -path full -delay max -max_paths 20 -nworst 100
#Generate Verilog Netlist and ddc and sdf
write -hierarchy -format verilog -output "/home/ MUX_D.v“
write -hierarchy -format ddc -output "/home/ MUX_D.ddc“
write_sdf "/home/ MUX_D.sdf“
report_power
current_design GlobalFSM
Link
check_design
include subblocks.const
compile -map_effort high
report_timing -path full -delay max -max_paths 20 -nworst 100
#Generate Verilog Netlist and ddc and sdf
write -hierarchy -format verilog -output "/home/ GlobalFSM.v“
write -hierarchy -format ddc -output "/home/ GlobalFSM.ddc“
write_sdf "/home/ GlobalFSM.sdf“
report_power
current_design LayerTrans
Link
check_design
include subblocks.const
compile -map_effort high
report_timing -path full -delay max -max_paths 20 -nworst 100
#Generate Verilog Netlist and ddc and sdf
write -hierarchy -format verilog -output "/home/ LayerTrans.v“
write -hierarchy -format ddc -output "/home/ LayerTrans.ddc“
write_sdf "/home/ LayerTrans.sdf“
report_power
current_design Core
Link
check_design
include subblocks.const
compile -map_effort high
report_timing -path full -delay max -max_paths 20 -nworst 100
#Generate Verilog Netlist and ddc and sdf
write -hierarchy -format verilog -output "/home/ Core.v“
write -hierarchy -format ddc -output "/home/Core.ddc“
write_sdf "/home/ LearningUnit.sdf“
report_power
remove_design –all
read_ddc [list "/home/LearningUnit.ddc"]
read_ddc [list "/home/MMU.ddc"]
read_ddc [list "/home/FSM.ddc"]
read_ddc [list "/home/MUX_A.ddc"]
read_ddc [list "/home/MUX_D.ddc"]
read_ddc [list "/home/GlobalFSM.ddc"]
read_ddc [list "/home/LayerTrans.ddc"]
read_verilog [list "/home/TOP.v"]
current_design TOP
set_dont_touch Learning
set_dont_touch MMU
set_dont_touch FSM
set_dont_touch MUX_A
set_dont_touch MUX_D
set_dont_touch GlobalFSM
set_dont_touch LayerTrans
check_design
include top.const
compile -map_effort high
report_timing -path full -delay max -max_paths 20 -nworst 100
write_sdc "/home/TOP.sdc“
write -hierarchy -format verilog -output"/home/TOP_nl.v“
write_sdf "/home/TOP.sdf"report_power
不懂too,同学习学习~
是否已经解决?最近在做三维ic,所以同求,感谢啦啦啦啦