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)精通半导体工艺--2RTLcoding--2综合--2时序约束--3APR--3DFT--2DRC/LVS--3仿真--2形式验证--2以下是FAQ分类:2楼:时序约束,STA3楼:综合DC/RC4楼:APR(floorplan,place,CTS,route)5楼:验证(LEC,DRC,LVS等)6楼:DFT7楼:低功耗8楼:面试9楼:名词解释希望我有时间完成所有的总结。下面进入正题《时序约束,STA》(1)clockQ1.1什么是同步时钟?时钟频率是整倍数,并且相互之间的相位是固定而且相差可预知的,才可以称得上是同步时钟。其他的都算异步时钟。比如,5M,10M是同步2M,3M一般算异步一个时钟,输出到另一个芯片中,转一圈后,以同样的频率返回到自己的芯片,因为无法确定时钟在另一个芯片里面的latency,所以输出的时钟与输入的时钟算异步一个时钟进到2个PLL,就算那2个PLL的输出频率相同,一般也算是异步时钟,除非你de-skewQ1.2如何处理同步时钟?设计要求严格的公司,就算是同步时钟,数据在同步时钟间传送时,依然要用meta-stabilityFF,可以set_false_path如果放松要求,不用meta-stabilityFF,则同步时钟之间是realpath,做CTS时,同步时钟要clocktreebalance。注意不同频率的同步时钟的最小时间间隔被用来检查setup如果上升下降沿混用的话,setup的时间间隔就只有半个时钟周期了Q1.3如何处理异步时钟?很简单,set_false_path注意要fromAtoB,同时要fromBtoAQ1.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_pathQ1.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选择同一条clockpathQ1.7什么时候需要设置latency?latency分为sourcelatency和networklatency两种。sourcelatency是源时钟自带的,networklatency就是CTS后的clocktreeinsertiondelay。在综合时,一般不需要latency,除非,已知不同clock带有不同的sourcelatency,并且它们之间有时序要求预知不同clock会有不同的clocktreeinsertiondelay,不想平衡它们,但是要满足他们之间的时序要求做完CTS后,要把networklatency去掉请问set_clock_latency设太大会有什么不好Q1.8如何设置uncertaintyclockuncertainty分为setup和hold,preCTS和postCTS几种不同的情况一般的处理原则是:preCTS,setup:uncertainty=PLLjitter+预估的clockskewpreCTS,hold:uncertainty=预估的clockskewpostCTS,set_propagate_clock[all_clocks]postCTS,setup:uncertainty=PLLjitterpostCTS,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_transitiondc综合时的clocktransition应该参考什么设定?set_drive,set_loadQ2.2哪些端口不需要约束?静态信号可以set_false_path,比如reset,test_mode,function_mode_select不能真的什么约束都不加Q2.3什么样的res

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功