DC综合操作流程设置流程.docx

上传人:b****6 文档编号:5546027 上传时间:2022-12-19 格式:DOCX 页数:25 大小:873.52KB
下载 相关 举报
DC综合操作流程设置流程.docx_第1页
第1页 / 共25页
DC综合操作流程设置流程.docx_第2页
第2页 / 共25页
DC综合操作流程设置流程.docx_第3页
第3页 / 共25页
DC综合操作流程设置流程.docx_第4页
第4页 / 共25页
DC综合操作流程设置流程.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

DC综合操作流程设置流程.docx

《DC综合操作流程设置流程.docx》由会员分享,可在线阅读,更多相关《DC综合操作流程设置流程.docx(25页珍藏版)》请在冰豆网上搜索。

DC综合操作流程设置流程.docx

DC综合操作流程设置流程

总流程

1库的设置

2:

设计的读入

3:

设置环境属性

(1)set_operating_conditions

(2)set_wire_load_model和set_wire_load_mode

(3)setload

(4)set_drive或者set_driving_cell

4:

设计规则约束

(1)set_max_transtion

(2)set_max_capacitanee

(3)set_max_fanout

5:

优化约束

(1)create_clock

(2)set_clock_uncertainty

(3)set_clock_latency

(4)set_input_delay

(5)set_output_delay

(6)set_false_path

(7)set_multicycle_path

(8)set_max_delay和set_min_delay

(9)set_max_area

7:

一些编译命令及DC的输出格式

1:

在前端设计中一般不做hold_time的约束,hold_time的约束可以在后端修复!

!

总流程:

综合的基木流程

Creaic&£-loc3<

LennanlyS

_l:

al?

ie_j3athSd__niukicyelc__paTh1卩Sei—maa.iJelai、吠痂化1IUni梓ify

‘rungroLip综會扰低

ICoiHrpilC报卑

Rcjwn_coiHfi.i;rairnRepofl^timirgwrite

1:

对库进行基本设置,如下:

设置完成后应该查看.synopsys_dc.setup里面库的设置

和软件applicationsetup处的设置是否一样!

DC的初始化文件.synopsys.dc.setup

需要用ls—显示,命令:

more.synopsys.dc.setu查看文件内容!

 

£ite申址£ermnalTajp.曲p

[]ason®1oca1ho®tlab2]S

[]asOnalocalhost]Smore・synopsys_dc■日etup

羽1.Modifythiatiletotityouro^nenvironiuent

羽2rCopythistilesynopsyB_dc・吾芒tuqto„bynopay3_dc»0etup

#andputitintool"glnvotinqdirectoryoryourhomedirectory・

set

companyirClCif,

diesigoer''Student"

scfirch_path

r„/CJQ1TU

1ink_library

耳1QV

dbfnnhdbdw_fnijn-diatiqna1db11

we-t

targtet*_1ibr«,ry

31oirf,dh

fash,db!

!

wet

■ymBDl_1ibrai-y

/hoine-/七

do1s/wynopsys/dc2Cl09.06,/1ibrari/syn./generic

seit

isynthetie_1ibr-ary

"dw_fDU

ndati口n.sldfa"

sethd11n_trdnalotf_sItip_text■"THUE"edif口Ut:

=fciesEliEFll=anl¥"TRUE"

Eftft!

*芒上Jl1白gvut_.iid.t.EJ.true:

p1Dt_eDln5iidtLd(Ipr-Pip)

setsJo^enab1e=l1ne^ed.itLnqtrue

setb1^1ine^ed111n

modeemaca

(JiistoxyIteep100

aliashhistory

2:

读入设计,两种方法:

read和analyze+elaborate

便用read命令可以一步完成analyzc+claboratc的工作"并H.r

ad侖令还可以用來读取

db^EDIF等格式的设计(analyze-Helaborate仅能用FVHDLverilog).但是,reml命令无法支

持参数修改、VHDL'p的构造体选释零功能.该命令的语法为:

Analyzer是分析HDL的源程序并将分析产生的中间文件存于work(用户可以自己指定)的目录下;Elaborate则在产生的中间文件中生成verilog的模块或者

VHDL的实体缺省情况下,elaborate读取的是work目录中的文件

(1)set_operating_conditions工作条件包括三方面一温度、电压以及工艺;工作条件一般分三种情况:

bestcase,typicalcase,worstcase

图形界面:

#1:

先进入thesymbolviewofthetop界面,选择top模块

#2:

attributes—operatingenvironmen—operatingconditions

命令方式:

#1:

可通过report_liblibraryname命令来查看,如下图查看的是slow.db

库的工作条件,则使用命令:

report_libslow,右边是report_libfast。

OperatingCondit

OperatingCoaid111onst

QpertatingCondi,ticnNdme;slowLibtifliryimlw

Pro亡是翡岀i丄・00

Temperatures125-00

Voli1,OS

InterconnectHodrInb*l曲•琴唔毒

OperatingConditionfldn#tfastLibiaryi

Processi1^00

Ttnperaturt-r-40.00

VoltAgei1.32

Intercoruiectllodeltbal

另外一个例子,只是为了说明库中的libraryname必须是用report_lib命令得到下面图形中的conditions里面的库的name:

(******自己想的******)

OperatingConditions:

Name

Library

Process

Ten^>

Volt

typ^2S^l.80slow1251.62

ntylib

1.00

25.00

1.60

my^lib

「00

125,00

1.62

fast0

mylib

丄.00

0.00

1.98

#2:

一般综合时候只需考虑最差和最好两种情况即可,最差情况用于做

建立时间(setuptime)的时序分析,最好情况用于做保持时间(holdtime)的时序分析。

最差情况-max下使用slow.db库,最好情况-min下使用fast.db库;

{最差和最好情况和温度以及电压有很大关系,温度越大,延时越大;电压越大,延时越小;不过温度对延时的作用更大}

所以:

##1:

做建立时间分析时候用最差情况,命令:

set_operating_conditions-max“slow”

##2:

如果既要分析建立时间,又要分析保持时间,则需要两条命令:

set_min」ibraryslow.db-min_versionfast.dbset_operating_conditions-minfast-maxslow

首先通过命令set_min」ibrary同时设置worst-case和best-case的library,然后通过set_operating_conditions命令指定不同环境下使用的库模型;上面的命令指定的是:

fast库用于对holdtime优化,slow库用于对setuptime进行优化。

set_operating_conditions-minfast-maxslow命令中的-minfast和-maxslow可以互换。

(2)set_wire_load_model和set_wire_load_mode

命令方式:

#1:

set_wire_load_model:

设置连线负载模型,为了估计模块输出的时序

—transitiontime;DC默认输出负载为0

负载模型可以通过report_liblibraryname命令下查看线的模型种类,如下图是fast.db库中的几种线的模型。

在布局布线前应使用较悲观的模型,对最坏的情况做综合,线负载模型由目标库提供。

-max-min选项指定该模型用于估计最大路径延迟和最小路径延迟。

例如:

(写一个即可)

set_wire_load_model-nametsmc13_wl40-minset_wire_load_model-namesmic13_wl50-max:

最坏情况或者可以直接设置负载模型:

set_wire_load_model-nametsmc13_wl40-libraryslow表示使用的是slow库里的tsmc13_wl40线模型。

#2:

自己不清楚如何选择的话,则让DC自动选择

setauto_wire_load_selectiontrue

#3:

上面的设置完成后,需要对负载模块的使用位置加以说明,三种模式,命令如下:

set_wire_load_modetop或

set_wire_load_modeenclosed或set_wire_load_modesegmented

关系如下:

top:

指定模块互连线延迟的估计使用顶层模块的线负载模型

enclosed:

指定模块互连线延迟的估计使用包含该连线的最小模块的线负载模型

segmented:

将连线按模型边界分段,各段的延迟分别按照各自模块的线负

载模型估计延迟,然后把估计结果相加得到该连线的延迟

一般情况下使用的是:

set_wire_load_modetop图形界面:

一一一

5.Attributes^OperatingEnvironmentsOperatingConditionsdickonrtnax/min=>slow/fast

OK

6.

Attributes^OperatingEnvironmentsWireLodeOckon

上图中的第一步指的是先选择top模块,然后设置top模块下的环境属性。

***附加:

还可以给某个模块设置负载模型:

(下面设置timer模块)***

setcurrent_designtimer***先转至Utimer模块下***set_wire_load_model-nametsmc13_wl40

200b00

Narnie

:

temc2d_wl

Locdtion

fast

Resistance

甘忌5

tfflnce

0.00015

Area

0.7

Slope

:

266.668

BanoutLengthPointsAverageCapStdDeviation

1亦

.67

Mane

tsmcl3_wl50

Location

:

fast

Resistance

:

6.5e-D8

Capacitance

O.ODO15

Area

0.7

Slope

333.335

d

J

LogHistory

design_vision>

r

或者下面的:

Name

:

smicl3

_wllO

Location

a

slow_lv08cl25

Resistance

:

8.5e-0S

—单位长度电阻

Capacitance

*

0.00015

——单位长度电容

Area

:

0.7

——单位长度面积

Slope

:

66.667

斜率(长度/扇出)

FanoutLength

PointsAverageCapStdDeviation

图屮町以看-出单位长度的电阻以及电客值,DU在估算连线延时时.会先算出建线的扇出.然后根据扇出査表,得出长度.再在氏度的棊础上计算岀它的电阻和电容的大小.若扇出值超出表中的值(假设为7),那么DC就嘤根据扇出和长度的斜率(Slop)推算出此时的连线长度来。

(3)setload:

设置输出负载

比较精确地计算输出电路的延迟,DC需要知道输出电路驱动的所有负载。

该命令有两种用法:

一种是直接给端口赋一个具体的值,另一种是结合命令load_of指出它的负载相当于工艺库中哪个单元的负载值。

命令方式:

#1:

set_load5[get_ports0UT1]

setload5(g«t_portsOUT1]

S51设置输出负载(I)

例如上图,给OUT!

端口设了一个负鞍为§的值”这电的单位也杲由Fuundry提供,具体的单位,可以通过njporjib甜令査看.一般而言是pf°

#2:

set_load[load_ofmy_lib/and2aO/A][get_portsOUT1]

说明OUT1端口接的负载值地my」ib中and2a0单元的A管脚的负载值

#3:

把上面命令set_load[load_ofmy_lib/and2a0/A][get_portsOUT1]中的get_ports

OUT1换为all_outputs就可以给全部输出端口赋值。

其中load_of命令可以算出某个引脚的负载电容值。

DC在缺省

电路负载的大小会影响到它的延迟,而且负载越大,延迟越大,情况下认为端口的负载电容都是0,因此具有无穷大的驱动能力图形界面:

必须先选中全部的输出负载然后再设置负载值!

!

!

!

!

***********

具体如何找这个负载不清楚!

111111111!

****************

4.SelectalloutputportsbydragtheleftkeyAttributes^OperatingEnvironmentsLoadEntertloacLof''slow/DFFXl/Dff

Load

(4)set_drive或者set_driving_cell:

设置输入驱动。

为了更加准确估计模块的输入时序,为了更加准确的估计输入电路的延迟,DC需要知道信号到达输入端口的过渡时间(transitiontime)。

默认下,DC认为输入驱动的驱动能力无限大,即transitiontime=0;

Set_drive使用确定的值来估计输入端的输入电阻,从而得到输入端口的延迟;

set_driving_cell是假定一个实际的外部驱动单元来估计输入的transitiontime;

该命令用于设置输入端口或者双向端口上的电阻值,该电阻值是用于驱动输

入端口的单元的输入电阻,因此,该值越大,就说明输入端口的驱动能力越弱,连线的延迟也就越大。

更常用的是set_driving_cell命令,以库中某个单元电路的引脚驱动能力为基准来模拟输入端口的驱动能力。

例1:

首先通过drive_of指定具体的驱动单元电阻值,得到驱动单元电阻后,通过:

set_drive+fi+[get_portsclk]命令给输入端口clk赋值。

Setting泊putdrivirkgstrEngtiifondkportdrive_ofnslow/BUFX4/Ywset_drive1.615308[get_portsdk]

gn_vTi&ia仃~t>|mot.dTi*。

1.61SJD修[g白匕』口1:

七苦七比]

4:

设计规则约束约束(DRC:

design_rule_constrain)

DRC规则的优先级:

transition>fanout>capacitanee

(1)set_max_transtion设置最大传输时间

连线的转换时间是其驱动引脚的逻辑电平变化的时间,包括risingtime和

falling,从10%的VDD变化到90%的VDD所需的时间。

设定最大的转换时间set_max_transtion,这个值一般设为周期的10%。

例如:

set_max_transtion1.8[current_design]—般情况下current_design指的是top。

⑵set_max_capacitanee输出管脚可以驱动的最大电容值

定义输出管脚可以驱动的最大电容值。

例:

set_max_capacitanee1.5[get_portsout1]或者

set_max_capacitanee1.5[get_designstop]

⑶set_max_fanout设置最大扇出负载

连线的最大扇出负载指的是它所驱动的所有输入引脚的扇出负载的总和。

出负载不同于负载,它是个无量纲的数值。

-賜仁妁①心烦P財对衣滋叽觴九0成以4port®疔操作,设定的不是具体的电容植。

例如对一个血Migri我们设定鞭匕加〜加加血1Z表示在这个design^的一条帕t或一个por十只能驱功吃个伽以tJqgd为1亍单位的pR或右个f癒威/Ljp"Qd为込个单愷的pim在i:

mic0.13um.^中默认的預肿良tJ叔为1,我们可以用讓尢』勉仁血d自行设色讓XJ煤ufgnpuT和令心型^吹丄如d仅仅是用做DRC的检查,也们的值与时序无关.图示如下:

max_fanout经验值一般设为20,即一个门的输出最多驱动20个输入引脚(如果每个引脚的输出负载是1的话)。

******计算fanout值,如下*******

dc_shell>set_max」刊2讥3[get_designsADDER]

if算Fanout仙:

Figure7*4C^lcu^tionofMaxi/numFanout

fanoutload:

2.D

fanoutload:

鼻电生]c」anoin8

三—U3:

NR6O

TotalFanoutLoad

fl1.0+VO3,0+20

7

MaximumFancut>=TotalFanouiLoad

或者:

set_max_fanout3.0[all_outputs]

图形界面:

在attributes-optimizationconstraints-designconstraints

5:

优化约束OptimizationConstraints

⑴create_clock:

用于定义时钟的周期和波形(duty及起始沿)

duty:

占空比,指高电平在一个周期所占的时间比率。

命令:

create_clock-period40-vaveform{020}[get_portsclk]:

表示CLK周期40ns,上升沿0ns,下降沿20ns;如果不定义waveform,则默认占空比为50%。

或者:

dc_ohell-t>cruta^clock-period10(gat_^portaClk)dc_shell^t>3etdont_touchnetwerk[getclocksClk]

第一句建义了一个周期为10ns的时钟U它的时钟源是一个称为Clk的端LL

第二句对所有定义的时钟网络设直为donVouch.即综合的时候不对Clk信号优化.如果不加这句,DC会根据Clk的侪载貝动对畅牛.BE比孑在窘际的申一路说计时神树(ClockTree)的综合冇自已特別的方法.它需耍碍虑到宝际布线后的物理信息.所以D匚不需要在这里对它进行处理*就算处理了也不会符吞議

或者:

clk_62_5M-'

createclock-period14-waveform[lis七0.07.0]

或*

creatEclock-period14-wa.veform[list0*07^01clk_€2,5M]^

注意;[getportsclk6/L5M]中时匸lk疏.5强设计文件中的时钟名,

厠本中的时钟名"

重要:

在时宇逻娟电路中.创建时坤约束是喜实的时钟.要与设计中的时钟信号相连接,即用或,

在纯组合逻緝电路中,粹要创建噩拟时钟约束virtualclock,此时不吊连接到设计“即不用写

[qetportsclk62..5M1

#1:

set_dont_touch_network在net或port上设置don'ttouc属性,主要用于clock和reset信号,使DC不对这些nets插buffer,留到布局布线时综合。

#2:

set_dont_touch用于对current_design,cells,references,net设置don'ttoucfll

性,阻止DC对它们进行映射或优化,一般在分模块综合和综合后优化时使用。

例:

set_dont_touch[get_cellsX_DATA_N_1_33B_reg[0]]

⑵set_clock_uncertainty:

定义好时钟后,就要设置时钟不确定性,即反映时钟偏差(clockskew),一般设为0.2-0.3。

命令:

set_clock_uncertainty0.3[get_clockscore_clk]

⑶set_clock_latency:

模拟时钟树插入后从时钟输入端口到寄存器clock端口的

延时,用于布局布线前的综合和时序分析,一般设0.3-0.8。

命令:

set_clock_latency0.3[get_clockscore_clk]

set_clock_latency默认情况下代表:

NetworkLatency

⑷set_input_delay(看另一个总结的时序分析文档)

吠“如叩定文信号相对于时粉的到达时间.指一个信号,在时钟沿之后多少时间到达inputport集

Tinput„defay-TcIk-q十Tm

 

dc;iheLl-t>丄白la*-nuix4-clockClk(g«itportijA]

如P面的语句指岀了披综合模块的端口A的最大输入延时为4口匾-max选项是指明目前设呂的是输入的最大延迟.为了满足时序单

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1