数字后端流程二Word文档下载推荐.docx
《数字后端流程二Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数字后端流程二Word文档下载推荐.docx(58页珍藏版)》请在冰点文库上搜索。
![数字后端流程二Word文档下载推荐.docx](https://file1.bingdoc.com/fileroot1/2023-5/9/0f1779cd-4ede-4b8c-aaac-525fbae96d9e/0f1779cd-4ede-4b8c-aaac-525fbae96d9e1.gif)
VIA23"
VIA34"
VIA45"
VIA56"
dbAddAntennaLayerRule_libId4"
METAL1"
400'
(0.2030400.002200)dbAddAntennaLayerRule_libId4"
METAL2"
METAL3"
METAL4"
METAL5"
METAL6"
(0.20308000.0030000)
dbDefine文件是为了Astro做时钟树综合优化时作准备的,在CTS之前需调用该文件,Astro做时钟树时只对它
默认的DFF的时钟管脚做相关处理一般是定义了clock但我们设计需要对一些多扇出的复位信号scan链信号做处理就需要专门声明下这也是时钟树需要处理的信号,就在dbDefine做这样的声明,一般有同步复位、异步复位、scan_enable以及宏单元的clk信号,异步复位最常用需要做scan链才定义SE,有Memory时才定义clk,具体设置如下:
(let*(
(selectedlist(geGetSelectedSet(getEditWindow)))
)
(for-each(lambda(x)(let*(
(instName(dbFetchObjectField(geGetEditCell)x"
name"
))
(dbDefineSyncPin(geGetEditCell)instName'
(("
RN"
"
nonInvertRise"
0)("
invertRise"
0)))(dbDefineSyncPin(geGetEditCell)instName'
SN"
0)))
;
(dbDefineSyncPin(geGetEditCell)instName'
SE"
CLK"
selectedlist
tdf文件定义相关的PAD或者是PIN的位置信息,坐标描述方法基本一致设计中根据实际的需要略有不同如
下:
tdfPurgePadConstr
define
step1
5
offset
50
off
pin"
clk"
3900
"
right"
(set!
offset(+step1offset))
rstn"
scan_mode"
mic_fm_sel"
3900"
0(set!
在Astro布局布线时需要根据DC综合时设置生成的时序约束文件对相关cel(l
standardcell)进行布局优化,
通常在Place设置时考虑congestion和time因素,通常考虑关键性的时序路径,满足设计的时序约束条件,而对于非关键路径的cell可以放置的远离些,增加延时,如果将非关键路径的cell布局在关键时序路径布局区域就会对其产生影响,使其布线拥塞增加布线难度。
而对于DC生成的时序约束文件并不是直接就是导入使用,DC中估算连线延时采用wire_load_model的方
法估算,但在Astro中我们实际对cell进行布线直接提取wire连线的RC信息计算netdelay更为精确接近实际设计,同时对各个时钟的uncertainty的定义也不需要了,CTS后各个时钟负载和延时可以达到最佳平衡uncertainty只由jitter引起,虽然还是会存在skew(几乎可以忽略),latency主要有2部分组成source_latency和network_latency一般设计只考虑network_latency,Astro不需要设置network_latency,CTS后各个DFF的network_latency的基本平衡了。
具体脚本如下:
#!
/bin/bash
#echo"
Enterthefilename(<
file>
.sdc)"
filename=ADPCM_Encoder
run:
#read$(filename)
cp$(filename).sdc$(filename).sdc.bak
echo"
:
%s/set_wire_load_model/#set_wire_load_model/g"
>
$(filename).vimrcecho"
%s/-dont_scale//g"
>
$(filename).vimrc
%s/set_isolate_ports/#set_isolate_ports/g"
%s/set_clock_latency/#set_clock_latency/g"
%s/set_clock_uncertainty/#set_clock_uncertainty/g"
>
w!
$(filename).vimrcvim-e-s$(filename).sdc<
rm$(filename).vimrc
Astro布局布线主要流程
*******************************************************************************************
pnr1.scmCTS之前布局布线以及优化设置
【1】设置db库总线名称属性类型
dbSetLibBusNameStyle“lib/silterra18”“[%d]”
【2】导入相关db文件到工艺库文件
1.ChooseTools>
DataPrep2.ChooseCellLibrary>
LibraryPreparation3.ClickthePrepareLogicalLibrarybutton4.ClicktheLIB/DBbutton
gePrepLibs
setFormField"
LibraryPreparation"
LibraryName"
lib/silterra18"
formButton"
importLMDB"
formButton"
selectDB"
MinDBToImport"
../dc/lib_syn/db/slow.db"
setFormField"
MaxDBToImport"
../dc/lib_syn/db/fast.db"
formOK"
【3】根据设计层次导入库技术文件*.tf
TechFile>
Replace
cmReplaceTech
ReplaceTechnologyFile"
TechnologyFileName"
tf/silterra18_6lm.tf"
【4】读入DC综合的网表根据设计约束对照LIB库进行cell的映射,此类映射方法有2种。
老系统:
创建项目Lib--Æ
获取RefLib--Æ
读入网表--Æ
展开网表--Æ
打开Lib创建项目Cell--Æ
将网表绑定到Cell
新系统:
直接读入网表创建Cell后打开该Cell将上述旧系统的几个步骤合成一个完成
老系统
ILibrary>
create
cmCreateLib
CreateLibrary"
ADPCM_Encoder"
IILibrary>
addRef
cmRefLib
RefLibrary"
RefLibraryName"
IIINetlistin>
VerilogIn
auVerilogIn
VerilogInDataFile"
VerilogFileName"
in/ADPCM_Encoder.sv"
NetNamefor1'
b0"
VSS"
b1"
VDD"
IVNetlistin>
Expand
cmCmdExpand
ExpandNetlist"
UnexpandedCellName"
ADPCM_Encoder.NETL"
ExpandedCellName"
ADPCM_Encoder.EXP"
VLibrary>
Open
geOpenLib
OpenLibrary"
OpenLibrary
VICell>
Create
geCreateCell
CreateCell"
CellName"
ADPCM_Encoder_cel"
VIIDesignSetup>
BindNetlist
axgBindNetlist
BindNetlist"
NetCell"
新系统
IINetlistin>
auVerilogToCellauVerilogToCell
VerilogToCell"
OutputCellName"
TopModuleName"
TechFileName"
SetCaseSensitive"
1"
OpenLibraryandCellWhenDone"
0"
refLibOptions"
ReferenceLibrary"
add"
formOK"
在导入TDF文件之间可以设置一些我们综合所不使用的cell,这些cell可能在功耗逻辑功能上等方面不符合设计所要求,所以要提示astro不会综合优化时使用这些cell命令如下:
astSetDontUse"
*.*"
#t
例如
astSetDontUse"
SDN_BUFTS_*"
#tastSetDontUse"
SDN_BUSH_*"
#tastSetDontUse"
SDN_DEL_*"
【5】导入编辑好的Pinlocation文件(*.tdf)
DesignSetup>
LoadTDF或者Timing>
LoadTDF
AxgLoadTDF
LoadTDFFile"
TDFFileName"
cons/ADPCM_Encoder.tdf"
TDF中特别注意出PIN层数,一般考虑不要与电源环同层,电源环一般设置METAL1和METAL2,那么横向处PIN最好就设置成METAL2纵向出PIN设置成METAL3,查看*.tf文件得到METAL2和METAL3的层数,不同工艺电源环设置可能有所不同视具体情况而定
【6】设计大范围的布局包括定义设计Core的尺寸,绕线金属层次等
Core面积设置有几种方式一般设置高和宽以及Row在整个Core中所占比重,所有的cell必放置在row上按一定的规格排放,因此如果Row/Core的比重越大说明整个Core中用来放Cell部分越多,用来绕线的部分比重小,一般同层只能在2个row相隔空间进行绕线或者其它层走线,而DoubleBack、StartFirstRow和FlipFirstRow只是Row排放的设置选项,这个在help文件中有详细说明,MaxMetalRoutingLayer是指最大的金属走线层,一般在数字部分会用四层走线,如果是六层工艺,余下的两层会留给版图走线使用。
DesignSetup>
SetUpFloorPlan
axgPlanner
FloorPlanning"
ControlParameter"
width&
height"
Row/CoreRatio"
CoreWidth"
350"
CoreHeight"
DoubleBack"
Startfromfirstrow"
Flipfirstrow"
CoreToTop"
25"
CoreToRight"
CoreToLeft"
CoreToBottom"
MaxMetalRoutingLayer"
4"
【7】将网表中映射元件的电源和地标识为VDD/VSS,并且对1’b1和1’b0也处理为VSS和VDDPreRoute>
ConnectPortToP/G
m