DC经典入门问题.docx

上传人:b****6 文档编号:14038725 上传时间:2023-06-20 格式:DOCX 页数:20 大小:29.48KB
下载 相关 举报
DC经典入门问题.docx_第1页
第1页 / 共20页
DC经典入门问题.docx_第2页
第2页 / 共20页
DC经典入门问题.docx_第3页
第3页 / 共20页
DC经典入门问题.docx_第4页
第4页 / 共20页
DC经典入门问题.docx_第5页
第5页 / 共20页
DC经典入门问题.docx_第6页
第6页 / 共20页
DC经典入门问题.docx_第7页
第7页 / 共20页
DC经典入门问题.docx_第8页
第8页 / 共20页
DC经典入门问题.docx_第9页
第9页 / 共20页
DC经典入门问题.docx_第10页
第10页 / 共20页
DC经典入门问题.docx_第11页
第11页 / 共20页
DC经典入门问题.docx_第12页
第12页 / 共20页
DC经典入门问题.docx_第13页
第13页 / 共20页
DC经典入门问题.docx_第14页
第14页 / 共20页
DC经典入门问题.docx_第15页
第15页 / 共20页
DC经典入门问题.docx_第16页
第16页 / 共20页
DC经典入门问题.docx_第17页
第17页 / 共20页
DC经典入门问题.docx_第18页
第18页 / 共20页
DC经典入门问题.docx_第19页
第19页 / 共20页
DC经典入门问题.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

DC经典入门问题.docx

《DC经典入门问题.docx》由会员分享,可在线阅读,更多相关《DC经典入门问题.docx(20页珍藏版)》请在冰点文库上搜索。

DC经典入门问题.docx

DC经典入门问题

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

在综合中,ungroup命令可以去除系统的层次,有利于减小面积。

我比照了在使用ungroup-all-flatten命令前后的Totalcellarea。

在使用该命令之前Totalcellarea是102396,使用之后49663,减小了一半左右。

时序部分也没有变差。

那是不是综合脚本一般都要使用ungroup呢?

请指教,谢谢。

ungroup-all当然是能到达最大的优化力度啊,整体timing最好,

但是有时候会导致功能的变化,仿真没法过,比方某个hierboundary没了,

因此只是有限度的ungroup,比方-level3,

全部ungroup打散后,没有boundary,一般功能是不会影响的,LEC来保证。

但是function层次就没有了,比方对网表做一些verification,如STA时一些重要的点可能找不到了,如果还要debug的话几乎做不下去。

后端fix后某些点发现需要做functionECO,那么很可能也没法做了。

另外ungroup也分具体情况也不是所有情况下就一定明显减小面积,我们一般是有选择地对个别一些联系紧密的module会ungroup,不过目的是为了打掉boundary得到更好的timing不是面积。

纯属个人理解

 

LEC是logicalequivalentcheck,主要比较RTL和NETLIST,NETLIST和NETLIST的逻辑功能一致性。

通常来说,synthesis以后,会把RTL和综合得到的netlist比较,以保证综合没有造成逻辑的错误。

PR以后,也会做同样的check。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

如果你仿真都能通过,当然flat的网表也行啊,就是后面的debug和升级没法做,LEC和formality一样的,是cadence的形式验证工具,

最近在做Lowpower的flow,使用UPF文件描述多电压域设计。

在做综合的时候,把隔离单元的LEVELSHIFTER单元的库还有0.9v和1.08v的标准单元库都设置在target_library中,这个时候的operating_condition应该怎么设置呢?

不同电压域是不是要设置不同的operating_condition?

但是默认UPF模式的DC_SHELL又不支持set_poerating_condition中-object_list选项的设置,有哪位大侠跑通过用UPF的flow能不能帮助指导一下?

我觉得可能是环境没有搭好,但是又不知道从哪下手~非常感谢!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

请问DC综合后做STA时,需不需要把DC产生的SDF读入到PT中,读入和不读入对于PT,有什么区别,哪一种比较准确呢?

谢谢

主要看你的SDF有没有延时信息,延时信息来自于哪里的,严格的说反标SDF是有用的,主要是看你的SDF的来源是否靠谱了。

如果仅仅是dc出来的,那么是没有延时的,反标进去也就没有意义了.

 

你所说的延时应该是PR之后的真正的版图延迟吗,DC后的延迟是有的,不过是基于线载模型预估的而已。

是不是说没有真正的版图延迟就不用反标SDF到PT中,让PT基于线载模型进行计算分析,同样是基于线载模型分析,PT要比DC中的DesignTime分析时序更为精确?

 

工程上我们一般不会用DC出来的sdf,PT分析所采用的也都是PR工具所提供的延迟信息,当然如果0.5u以上pr的结果和前端差异也就不会太大,所以设计迭代一般一遍也就OK。

但0.18u不会这样理想,物理设计上的信息显得至关重要,所以PR的SOCENC也会基于连续收敛的时序引擎。

还会有一种硅虚拟原型的设计方法,sdf的反标,PT分析,一般工程中也不会只signoff时才会做,在重要节点都会做。

前提是你承认PT的结果是signoff的而用PT进行工程signoff个人理解,不知道全面不全面

在做STA时,一般可是直接使用STARRC抽出的SPEF进行时序分析,使用PTreporttiming。

有时候,为了得到更准确点的timing信息,需要用SDF反标到PT中,再reporttiming。

当然反标是需要时间的

解决了。

DC后的PT不需要反标DC产生的SDF,DC后没有真实的布线,是基于线载模型。

此时PT单独分析的时序和DC中的DesignTime分析的结果是一致的。

有哪位大侠能详细讲一下set_max_transition的作用吗?

在STA中有个很重要,要FIXSLEW方面的VIOLATION。

这个set_max_transition就是设定SLEW上的constrain。

设置波形从10%到90%所需要的时间

对延迟和功耗都有影响

厂家提供的库中,cell延迟的值一般是通过二维非线性查找表来得到,

表的两个index分为inputtransition,loadcapacitance,如果index得值在表内,

延迟值不需要计算,如果不在表内,则需要通过内插或外插来计算,这相应的带来了误

差,内插的误差和外插相比小得多,如果外插计算时的index超出查找表的范围过大,

计算出的数值也就没有意义,所以库中一般都有defaultmax_transitin,

保证再此范围内计算的精度。

至于transition的计算用10%_90%还是20%-80%,看库中的定义好了,

设置最大的渡越时间,就是信号逻辑的转换时间。

max_transition属性通常用于输入引脚。

max_transition属性定义任何转换时间大于负载引脚max_transition指定值的连线不能连到该引脚。

针对初学者的提问,在eetop论坛里整理发表了一个FAQ,在这里做一个备份

如果您已经有2年以上的实战经验,下面这些雕虫小技就不太值得您去浪费时间了。

先说说作为一个有经验的后端〔暫不包括DFT工程师和layout工程师〕工程师,需要掌握哪些知识

4个级别:

1〕知道一些基本概念,

2〕简单地掌握这门技术,

3〕熟练

4〕精通

半导体工艺--2

RTLcoding--2

综合--2

时序约束--3

APR--3

DFT--2

DRC/LVS--3

仿真--2

形式验证--2

以下是FAQ分类:

2楼:

时序约束,STA

3楼:

综合DC/RC

4楼:

APR〔floorplan,place,CTS,route〕

5楼:

验证〔LEC,DRC,LVS等〕

6楼:

DFT

7楼:

低功耗

8楼:

面试

9楼:

名词解释

希望我有时间完成所有的总结。

下面进入正题

《时序约束,STA》

(1)clock

Q1.1什么是同步时钟?

时钟频率是整倍数,并且相互之间的相位是固定而且相差可预知的,才可以称得上是同步时钟。

其他的都算异步时钟。

比方,

5M,10M是同步

2M,3M一般算异步

一个时钟,输出到另一个芯片中,转一圈后,以同样的频率返回到自己的芯片,因为无法确定时钟在另一个芯片里面的latency,所以输出的时钟与输入的时钟算异步

一个时钟进到2个PLL,就算那2个PLL的输出频率相同,一般也算是异步时钟,除非你de-skew

Q1.2如何处理同步时钟?

设计要求严格的公司,就算是同步时钟,数据在同步时钟间传送时,依然要用meta-stabilityFF,可以set_false_path

如果放松要求,不用meta-stabilityFF,则同步时钟之间是realpath,做CTS时,同步时钟要clocktreebalance。

注意不同频率的同步时钟的最小时间间隔被用来检查setup

如果上升下降沿混用的话,setup的时间间隔就只有半个时钟周期了

Q1.3如何处理异步时钟?

很简单,set_false_path

注意要fromAtoB,同时要fromBtoA

Q1.4如何定义时钟?

create_clock如果指定某个pin/port,就是实时钟,如果没有指定pin和port,就是虚拟时钟

巧妙利用waveform选项可以做出不同波形的时钟

被定义成时钟的net,在综合时,自动带有idealnetwork和dont_touch的属性。

但是当它被用作data计算延迟时,idealnet的属性会自动消失

时钟会自动穿过逻辑单元,停在时序单元的时钟端,所以用FF产生的分频时钟要再用create_generated_clock定义一次

Q1.5如何处理多项选择一时钟?

在实际应用当中,如果这几个时钟不会同时出现的话,则在定义时钟时,只选择最快频率的就可以了

如果是多个时钟同时出现,可以用set_case_analysis选一个,

也可以放它们全都过去,但是在MUX后面把它们之间set_false_path

Q1.6巧妙定义时钟

直接在分频FF的Q端定义generatedclock时,有时会把分频FF的时序打掉,解决方法是在分频FF的Q端加一个时钟buf,从那个buf的输出端定义generatedclock,从而保证分频FF自身的时序完整

如果从sourceclock到generatedclock之间有多条路径,你希望PT用指定的一条路径来计算时序的话,可以用set_case_analysis,set_disbale_timing或者一级一级地定义generatedclock来引导PT到达你的要求

分频器时序约束问题

时序分析中同一时钟的不同路径问题

请教如下要求的clock在pt中应该怎么create

怎样设set_case或者别的,才能让pt选择同一条clockpath

Q1.7什么时候需要设置latency?

latency分为sourcelatency和networklatency两种。

sourcelatency是源时钟自带的,networklatency就是CTS后的clocktreeinsertiondelay。

在综合时,一般不需要latency,

除非,

已知不同clock带有不同的sourcelatency,并且它们之间有时序要求

预知不同clock会有不同的clocktreeinsertiondelay,不想平衡它们,但是要满足他们之间的时序要求

做完CTS后,要把networklatency去掉

请问set_clock_latency设太大会有什么不好

Q1.8如何设置uncertainty

clockuncertainty分为setup和hold,preCTS和postCTS几种不同的情况

一般的处理原则是:

preCTS,setup:

uncertainty=PLLjitter+预估的clockskew

preCTS,hold:

uncertainty=预估的clockskew

postCTS,set_propagate_clock[all_clocks]

postCTS,setup:

uncertainty=PLLjitter

postCTS,hold:

uncertainty=0

有时fundry要求holduncertainty保留一定的量,这时就把那个保留量加到上面的公式中

sdc文件中对clk的uncertainty、transition、latency的设置

〔2〕IO端口的约束

Q2.1如何加IO端口的约束?

最普通的方法是

对输入端,set_input_delay,set_driving_cell〔也有用set_input_transition的,但是不多见〕

对输出端,set_output_delay,set_load

对时钟端,set_clock_transition

dc综合时的clocktransition应该参考什么设定?

set_drive,set_load

Q2.2哪些端口不需要约束?

静态信号可以set_false_path,比方reset,test_mode,function_mode_select

不能真的什么约束都不加

Q2.3什么样的reset信号可以set_false_path?

如果在工作时,reset信号有效时,时钟信号不翻转,就可以set_false_path

如果reset信号动作时,时钟也有动作的话,就不能set_false_path

Q2.4像reset那样的highfanout信号需要设定为idealnet吗?

如果是falsepath的话,可以设为idealnet

一般不需要设为idealnet,让DC加入buffertree后,有利于估算功耗和面积

Q2.5如果有一组输出信号,需要他们之间对齐,但是不太在乎有多大的延迟,这时应该如何约束?

如果有输出时钟的话,在那个输出时钟端口定义一个generated_clock,其它信号的output_delay都相对于这个generated_clock而定。

只要有max和min,就可以把所有信号卡在一个范围之内

如果没有输出时钟的话,用set_output_delay-reference_pin

Q2.6如何计算input和outputdelay?

如果是block的input和outputdelay,可以预先分配,比方输出端,输入端各1/3,中间的连接1/3

block的端口最好都flop-in,flop-out

如果是chipIO,要度其他芯片的IO时序和电路板上面的延迟,比较麻烦

set_input_delay的时间设置

〔3〕DRV

DRV有时也加DRC,与物理检测的DRC不是一个概念

DRV包括,

set_max_transition与工艺相关,65nm的话,在0.6ns左右

set_max_fanout与工艺相关,一般在12~20之间

set_max_capacitance

set_max_power

set_max_area

〔4〕falsepath,multicyclepath

Q4.1什么情况下需要set_false_path?

异步时钟之间,

到meta-stability的第一个FF路径,

静态信号

Q4.2何时会用到multicycle_path?

太长的path,

不会每个周期都变的信号

注意:

在RTL中,前端一定要多周期工作一次的功能

一般set_multicycle_path-setup

要同时写set_multicycle_path-hold

〔5〕wireloadmodel

wireloadmodel是一种简单地根据fanout来估算wiredelay的方法,在综合时,一般根据设计的大小选择对应的WLM

有时也会用zerowireloadmodel,这时的clockperiod要相应减小15~25%,或者clockuncertainty增加15~25%

set_wire_load_model两种模式top和enclosed到底有什么区别?

更加准确的计算wiredelay的方法是DCtopo和RCphysical,

他们在综合时会粗略地做个place,然后根据距离来计算延迟

〔6〕clockgating

Q6.1如何加clockgating?

局部的clockgating在综合时,会自动加进去。

加clockgating后,不但会减小功耗,还会改善时序,因为本来到D端的逻辑,一部分被移到CK端了,简化了D端的逻辑

整个block的clockgating,一般直接在RTL里面加,因为DC没有那么聪明

Q6.2需要对clockgating加什么特别的约束吗?

如果使用标准库里面的ICG单元,不需要附加任何特别的约束,前后端的工具都认得它

如果用latch+and自己搭的clockgating,你要对那个and单元set_disable_clock_gating_check,还要告诉后端,一定把latch和and摆在一起

一般只在没有动态切换时钟时,才可以用一个and/or做clockgating,这时也要set_disable_clock_gating_check

clockgatingcell约束

某个domain的clk通过gating关断重启后,对这个domain做复位有没有必要?

〔7〕case_analysis

set_case_analysis可以强制某个node为0/1

这个0/1会沿着纯逻辑组合单元向前传送,如果没有特别设定的话,会停在时序单元上

注意,只是是向前传,不会向左右2边和向后传

举例:

如果设在输出端上,那么所有fanin端都会被强制为0/1

如果只设在某个输入端上,与之相连的输出端和其他输入端都不受影响

〔8〕idealnet/network

综合脚本的样本现在到处都是,最好找一个,照猫画虎改改用

建议把时序约束脚本与综合脚本分开存放,这样时序约束可以单独使用。

〔1〕综合的注意事项

Q1.1需要fixhold吗?

不需要,hold交由后端去做就好了。

所以综合时,不需要读入min.lib,不用设wc_bc等复杂的选项

Q1.2综合出来的网表如何验证?

如RTL做形式验证

gate-sim〔网表仿真〕。

不要用延迟。

不需要从DC输出SDF,因为那个根本不准,而且它也无法保证没有hold违反

Q1.3如何让DC自动插入clockgating

在脚本中加入

setpower_cg_always_enable_registerstrue

set_clock_gating_style(指定ICG)

insert_clock_gating

replace_clock_gates

Q1.4综合时要检查哪些项目?

最最起码要做,

综合前,check_design,check_timing,保证所有的path都有约束〔含timingexception〕

综合后,report_timing,report_constraint,report_area,report_power,report_qor

Q1.5如何解决综合后setup的违法?

多综合几遍

检查约束是否合理

最后只好改RTL了

Q1.6如何判断约束是否合理?

什么是合理的约束还真不好说,但是下面是一些不合理的情况,遇到了一定得解决

2#楼里面所列约束项目不完整的

startpoint或endpoint的clockcycle特别大的,说明那是异步时钟

某个cell或net延迟很大的,可能是clocknet当作signal用了,设了dont_touch

Q1.7如何得到更好的网表?

对于DC,一般人们都喜欢把clockperiod调小一点〔10~25%〕,那样DC会给你个timing比较好的网表,但是代价的面积的增大和功耗的增加。

当然,你调clockuncertainty也有同样的效果

#*******************************************************************************************

#Author:

xxxxxxxxx

#Description:

Thisfileisjustonlyatempletforsynthesis,includingbasicsynthesisflow.

#Userscanmakeitasreferencedesign.

#*******************************************************************************************

remove_design-all

#****************************

#readdesigntoDCmemory,Assumingtherearefourmodules

#****************************

#orreadlikethis

setall_modules{modmod1\

mod2mod3\

}

foreach(current_module,all_modules)

{

setdesign_path{../}

}

#******************************/

#Set_dont_touchAttributeoncell,net,referenceordesign

#Set_dont_touch_networkAttributeonclock,pin,ports

#******************************/

set_dont_touch_networkfind(port,"CLK")

set_dont_touch[get_cells{xxxx/xxxx/aaa}]

set_dont_touch[get_nets{bbbb}]

set_dont_touch[get_designs{ssss}]

#******************************/

#createclockinfo

#******************************/

create_clock-nameclk-period2.56-waveform{01.28}[get_pins,{s_x/I_PMA/I_PMA7/RXBCLK}]

create_generated_clock-nameclk_125-sourceA_x/clk-edges{135}[get_pins{p_x/clk_125}]

set_clock_uncertainty-setup0.2clk

set_clock_uncertainty-hold0.02clk

set_clock_uncertainty-setup0.2clk_125

set_clock_uncertainty-hold0.02c

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2