微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC后端设计交流 > 请问关于encounter的partition功能的问题

请问关于encounter的partition功能的问题

时间:10-02 整理:3721RD 点击:
请问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,所以同求,感谢啦啦啦啦

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top