您好,欢迎访问三七文档
dbAddAntennaLayerRule_libId4VIA1220'(0.203083.3375)dbAddAntennaLayerRule_libId4VIA2320'(0.203083.3375)dbAddAntennaLayerRule_libId4VIA3420'(0.203083.3375)dbAddAntennaLayerRule_libId4VIA4520'(0.203083.3375)dbAddAntennaLayerRule_libId4VIA5620'(0.203083.3375)Astro笔记Yuzh2009-11-13Astro是数字后端的布局布线的重要工具,还数字后端设计中,关于Astro的设计主要由以下几部分组成:【1】新建一个pnr文件夹,在其子目录下创建clfconsinlogliboutrptscripttf以及一个makefile文件【2】clf文件夹中主要存放工艺延时功耗负载等相关文件以便导入主要可以有以下几个部分:antenna_*lm.clf*.clf.logic*.clf.power*.clf.time可以由Foundry提供的工艺库文件中拷贝【3】cons文件夹中主要存放MacroPADLocationa文件PinLocation文件,dbdefine文件以及antennarules文件以便导入设计中使用【4】in文件夹中主要存放有DC综合后生成的综合网表*.sv文件时序约束文件*.sdc以及*.sdf文件,但是需要对sdc文件进行相关修改后才能作为Astro布局布线的时序约束参考因此需要有一个Makefile文件对其内容进行修改【5】lib文件夹中存放有standardcell的工艺库文件(如silterra18)Foundry工艺库中拷贝【6】tf文件夹中存放有设计工艺库的技术文件(如silterra18_*lm.tf)Foundry工艺库中拷贝【7】script为了布局布线修改方便常会将运行的Astro命令导出到相应的脚本文件中,CTS前布局一次为一个脚本,CTS后优化布局为一个脚本,最后布线以及check为一个脚本,存放在script文件夹中分别命名为pnr_1.scmpnr_2.scmpnr_3.scm【8】其余的文件夹分别存放输出的报告和网表以及gds文件,其中log文件夹中为Astro运行报告,rpt中为AstroCTSclockskew分析报告,out中为gds文件和布局布线后网表,以及WireRC参数提取文件*spefAntenna_rules文件是截取Antenna_rules_*lm.clf文件的一部分一般只截取dbAddAntennaLayerRule的定义设计中如下截取:define_libId(dbGetCurrentLibId)dbDefineAntennaRule_libId4200dbAddAntennaLayerRule_libId4METAL1400'(0.2030400.002200)dbAddAntennaLayerRule_libId4METAL2400'(0.2030400.002200)dbAddAntennaLayerRule_libId4METAL3400'(0.2030400.002200)dbAddAntennaLayerRule_libId4METAL4400'(0.2030400.002200)dbAddAntennaLayerRule_libId4METAL5400'(0.2030400.002200)dbAddAntennaLayerRule_libId4METAL6400'(0.20308000.0030000)Astro笔记Yuzh2009-11-13dbDefine文件是为了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)xname)))(dbDefineSyncPin(geGetEditCell)instName'((RNnonInvertRise0)(RNinvertRise0)))(dbDefineSyncPin(geGetEditCell)instName'((SNnonInvertRise0)(SNinvertRise0)));;(dbDefineSyncPin(geGetEditCell)instName'((SEnonInvertRise0)(SEinvertRise0)));;(dbDefineSyncPin(geGetEditCell)instName'((CLKnonInvertRise0)(CLKinvertRise0)))))selectedlist))tdf文件定义相关的PAD或者是PIN的位置信息,坐标描述方法基本一致设计中根据实际的需要略有不同如下:tdfPurgePadConstrdefinestep15defineoffset50defineoff0pinclk3900right0(set!offset(+step1offset))pinrstn3900right0(set!offset(+step1offset))pinscan_mode3900right0(set!offset(+step1offset))pinmic_fm_sel3900right0(set!offset(+step1offset))在Astro布局布线时需要根据DC综合时设置生成的时序约束文件对相关cel(lstandardcell)进行布局优化,通常在Place设置时考虑congestion和time因素,通常考虑关键性的时序路径,满足设计的时序约束条件,而对于非关键路径的cell可以放置的远离些,增加延时,如果将非关键路径的cell布局在关键时序路径布局区域就会对其产生影响,使其布线拥塞增加布线难度。Astro笔记Yuzh2009-11-13而对于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#echoEnterthefilename(file.sdc)filename=ADPCM_Encoderrun:#read$(filename)cp$(filename).sdc$(filename).sdc.bakecho:%s/set_wire_load_model/#set_wire_load_model/g$(filename).vimrcecho:%s/-dont_scale//g$(filename).vimrcecho:%s/set_isolate_ports/#set_isolate_ports/g$(filename).vimrcecho:%s/set_clock_latency/#set_clock_latency/g$(filename).vimrcecho:%s/set_clock_uncertainty/#set_clock_uncertainty/g$(filename).vimrcecho:w!$(filename).vimrcvim-e-s$(filename).sdc$(filename).vimrcrm$(filename).vimrcAstro笔记Yuzh2009-11-13Astro布局布线主要流程*******************************************************************************************pnr1.scmCTS之前布局布线以及优化设置*******************************************************************************************【1】设置db库总线名称属性类型dbSetLibBusNameStyle“lib/silterra18”“[%d]”【2】导入相关db文件到工艺库文件1.ChooseToolsDataPrep2.ChooseCellLibraryLibraryPreparation3.ClickthePrepareLogicalLibrarybutton4.ClicktheLIB/DBbuttongePrepLibssetFormFieldLibraryPreparationLibraryNamelib/silterra18formButtonLibraryPreparationimportLMDBformButtonLibraryPreparationselectDBsetFormFieldLibraryPreparationMinDBToImport../dc/lib_syn/db/slow.dbsetFormFieldLibraryPreparationMaxDBToImport../dc/lib_syn/db/fast.dbformOKLibraryPreparationAstro笔记Yuzh2009-11-13【3】根据设计层次导入库技术文件*.tfTechFileReplacecmReplaceTechsetFormFieldReplaceTechnologyFileLibraryNamelib/silterra18setFormFieldReplaceTechnologyFileTechnologyFileNametf/silterra18_6lm.tfformOKReplaceTechnologyFile【4】读入DC综合的网表根据设计约束对照LIB库进行cell的映射,此类映射方法有2种。老系统:创建项目Lib--Æ获取RefLib--Æ读入网表--Æ展开网表--Æ打开Lib创建项目Cell--Æ将网表绑定到Cell新系统:直接读入网表创建Cell后打开该Cell将上述旧系统的几个步骤合成一个完成老系统ILibrarycreatecmCreateLibsetFormFieldCreateLibraryLibraryNameADPCM_EncodersetFormFieldCreateLibraryTechnologyFileNametf/silterra18_6lm.tfformOKCreateLibraryAstro笔记Yuzh2009-11-13IILibraryaddRefcmRefLibsetFormFieldRefLibraryLibraryNameADPCM_EncodersetFormFieldRefLibraryRefLibraryNameli
本文标题:数字后端流程二
链接地址:https://www.777doc.com/doc-3562150 .html