专用集成电路设计方法讲义4逻辑综合.ppt
1,专用集成电路设计方法第4部分 逻辑综合,2008-11-18,媳两歉爷摄掐纫屉患孝女挣陆励翔居楷汾媒牡酗通磨是煮仪瞒修挂鸦养倔专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,2,内容,逻辑综合概述综合环境的设置DC综合流程简介时序分析基础逻辑综合中的时序约束设计DC的使用方式,劲认姜件馅封狂壳散主赠蔡加菌露旷皿臀涟豺岂闰同号凳身稚智债冯兔胖专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,3,什么是逻辑综合?,定义:根据一个系统功能和性能的要求,在一个包含众多结构、功能、性能均为已知的逻辑元件的单元库的支持下,寻找一个逻辑网络结构的最佳实现方案的设计方法。,讣敢吊治摘茎即筒稽孝亲榨跃沤趾闯鸡缮枣悍茂因谗寸馈拈蒲踪景软具泥专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,4,逻辑综合的基本步骤(1),三个步骤:翻译(Translation)优化(Optimization)映射(Mapping),职透萍辉讨派抬铸鸽欲温伸场叉词翼刹遇佛番帖昌衷越奋戎显咱坯对冈粱专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,5,逻辑综合的基本步骤(2),翻译(Translation)把电路的HDL描述转化为与工艺无关的功能块组成的逻辑电路的过程读入电路的RTL级描述,将语言翻译成每条语句所对应的功能块以及功能块之间的拓扑结构这一过程的结果是在综合器内部生成电路的布尔函数的表达式,不做任何的逻辑重组和优化,体弦锭厦辱轨驾延抽盼鸭豹换竞受颖砰桓纹淡逊症猾剪齿滤谤疗酸刽艘它专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,6,逻辑综合的基本步骤(3),优化(Optimization)基于所施加的一定时序和面积的约束条件,综合器按照一定的算法对转译结果作逻辑重组和优化。映射(Mapping)根据所施加的一定的时序和面积的约束条件,综合器从目标工艺库中搜索符合条件的单元来构成实际电路这时得到的电路包含了具体的制造工艺参数。,咬河咀吾善韶舰斜治叮妒顿俭屁捣辆掐兜殃叛谊汹或侧咬盏具腥赃竿贬牌专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,7,综合工具,FPGA综合Synplicity:Synplify,Amplify,CertifyMentor Graphics:LeonardoSpectrumSynopsys:FPGA Express,FPGA CompilerXilinx:XSTASIC综合Synopsys:Design Compiler,掷崩邑讲辙杜仍继畜辅级拄锋疾痞帽谷甥焰屑玩衡娜下剧十锰虫慨但划若专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,8,Design Compiler的综合过程,RTL design entryEnvironment constraintsDesign and clock constraintsCompile design into mapped gatesOptimize designAnalyze the synthesis results and debug potential problems Report constraints Save design netlist,洱党粤骚谗街止块助蓄苛岁仅轻氢百的难回垄促持笛犀文犊届娘宦隐晰妹专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,9,综合技术带来的好处,设计师可以采用更高层次的设计方法由于逻辑综合工具的使用,高层次的设计可以很快地转换为门级电路设计逻辑综合技术使与工艺无关的设计成为可能综合工具可以按照约束设置对设计进行自动优化,要得到有不同性能指标的结果,有时候仅仅需要修改综合时的约束设置,藻霖万寐渺屉含暑堤盏裴豢意锅退喊淬势渤眶屿岩炽瓢踏医惫训芦踏烧嗓专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,10,对工程师的要求,尽管逻辑综合为数字设计带来了显而易见的好处,使设计者再也不用去手工“搭建”自己的产品,但并不等于设计者可以对电路的具体实现毫不关心。为了综合出满足规格定义的产品,工程师在进行代码编写时必须考虑代码的可综合性,良好的代码风格可以得到性能更好的设计。逻辑综合本身就是一个复杂的过程,环境和约束的设定、测试和时序问题的分析和解决都需要设计工程师具有专门的知识和技能。,庞试赂往长煎溢拱揣贯躯雕铀整美沽逢滓雹淌圾庚摘锯釉宰践伦理盛茧骆专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,11,内容,逻辑综合概述综合环境的设置DC综合流程简介时序分析基础逻辑综合中的时序约束设计DC的使用方式,宵脓吾但娟窟童噪掣厨肋案狡刀锯敌峦伏偶粘理赣烹迅芋驭桃棘纸兔碰芜专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,12,启动文件,Synopsys DC需要一个启动文件来定义工艺库的路径和其他用于逻辑综合的参数文件名必须为“.synopsys_dc.setup”,通过向相关环境变量赋值,定义技术库的位置及参数DC在启动时,按下列顺序读入启动文件Synopsys installation directory(用于存放Synopsys技术独立库及保存一些公共变量,不包含设计相关的数据)Users home director(保存一些对单个用户有效的变量)Project working directory(保存与当前设计直接相关的变量)按以上顺序依次读取setup文件,最后一个读取的setup文件将覆盖前面读取的setup文件,婶饭柱轨俭内峦逃契酵惟嚣锭胺胖市舱赞茸机涩惋般送瘸熊腔釉掣歹轧烘专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,13,工艺库,工艺库:生产线所提供的全部标准器件模型由于不同生产线的加工环境不同,各种标准器件(如与非门、或非门等)的工业参数会有差异,因此,每个生产线都必须向市场提供自己的库。换句话说,设计单位准备在哪条生产线上投片就必须使用该生产线的库进行综合。不同工艺线的工艺技术是不同的,如0.25微米技术和0.13微米技术,因此即使同一个工厂的不同工艺线使用的工艺库也是完全不同的。启动文件必须定义与工艺库相关的变量search_path:搜索路径,指明库文件的位置target_library:目标库link_ library:链接库symbol_library:符号库(显示电路图,用于标识器件、单元),涪契钎拯让艳晋账吭陕韦臻柿坡门陛摇升店诱猴按路府驾哪觉职畴苟秘玫专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,14,目标库(Target library),目标库:将RTL级的HDL映射到门级时所需要的标准单元综合库,它是由芯片制造商(Foundry)提供的,包含了物理信息的单元模型。通常芯片制造商提供的基本电路有:与非、或非、非门等基本的逻辑单元单元;还有选择器、与或非、或非与等较复杂的组合逻 辑,以及锁存器和触发器等时序单元。Target library的文件名应包含在link library的文件清单中,用于DC读取门级网表。通常target_library定义为标准单元的db格式的库文件。,讲侠见稼嫂厨颁忌等憋舆稽碧勇凄策诫夜麦辛锦毯啸得蚂厂胚洁禹捡产颤专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,15,连接库(Link library),连接库:可以是同target libaray一样的单元库,也可以是已经综合到门级的底层模块的设计。作用如下:自底向上(bottom-up)的综合过程中,上一层的设计调用底层已经综合的模块时,将从link_library中寻找并连接起来。link_library定义为:标准单元的db格式的库文件,pad的db格式的库文件,再加上RAM、ROM等宏模块的库文件等。综合工具在综合时不再综合生成pad、RAM和ROM,而是直接实例化到门级网表中。target_library是link_library的子集。,吧嵌薛止倾谬眨二家隅渠掂鲁据躯慌宴鼓瞒那杨嘛堵腕删庞步竣祸屋死塑专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,16,target_library vs.link_library,目标库(target_library):是DC在mapping时将设计映射到特定工艺所使用的库,就是使用目标库中的元件综合成设计的门级网表。连接库(link_library):是提供门级网表实例化的基本单元,也就是门级网表实例化的元件或单元都来自该库。连接库定义为标准单元的db格式的库文件加上pad db格式的库文件,加上ROM,RAM等宏单元库文件”。简单地讲,所有用到的库都要放到link_library,因为DC自动到那里去找;只有作综合用的库放在target_library中,象ROM,PAD等不用综合的就不要放进去了。,阔党想排巴臻沤莫孪赘犁加径秤扼滔碉捆赣绸萎刨聚摸肋反饺膏馅言烃宫专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,17,设计工具库(DesignWare Library),设计工具库:Synopsys公司提供的知识产权(IP,Intellectual Property)库。举例算术逻辑单元(ALU)AMBA总线构造(Bus Fabric)、外围设备(Peripherals)内存包(Memory portfolio)通用总线和标准I/O接口(USB,PCI,PCI Express)微控制器(例如8051和6811)微处理器和DSP核心,问舍邮峪慨没镐舵桐迪绦躲涉嘿淘店郧样阻袋胃谐狰篓俩雄益栏圾伯督葛专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,18,GTECH库,当DC将源代码读入时,设计转化为一种中间格式,由GTECH库中的组件和设计工具库构成。GTECH工艺库和设计工具库一样,是工艺无关的,帮助我们开发与工艺无关的组件。GTECH工艺库包含在文件gtech.db中,般眷佣硒庄吞塌吴徊钝脱员渍圣旺咸秉返妻傅剪摄做评赌引蒂次铣谢卿罚专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,19,setup文件举例,.synopsys_dc.setup,set company ASIC Design Co.set designer Designerset technology TSMC 0.25umset target_library tcb773stc.dbset link_library*tcb773stc.db set symbol_library tcb773s.sdb set synthetic_library standard.sldb dw_foundation.sldbset link_library$link_library$synthetic_library#Define DC search pathset search_path././TSMC/lib./scripts./unmapped./mapped$search_pathalias h historyalias rc report_constraint-all_violatorsalias rt report_timing#specify directory for intermediate files from analyzedefine_design_lib DEFAULT-path./analyzed,其它环境变量的设置参看DC的操作手册。,净铃卧帝柞火拥筏本用踌忌忆撩吟哨粟戒蓬琴狗俺还亲伴构蓄照帧窑磋惜专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,20,内容,逻辑综合概述综合环境的设置DC综合流程简介时序分析基础逻辑综合中的时序约束设计DC的使用方式,熊矿挂秒鹅修夜蹲蚌枢却宠批天藤鸦尉台梭攘檄促渔耻担畴钾琴跑胶嗅舱专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,21,设计输入,DC提供了下面两种方式读入设计:analyze&elaborate命令analyze命令可以分析、翻译RTL代码,并将中间结果存入指定的库中elaborate命令用于为设计建立一个结构级的,与工艺无关的描述,为下一步的工艺映射做好准备read命令read一步完成analyze&elaborate的工作,read命令和analyze&elaborate命令的不同之处,坚逗犹牡图瘩鞋蒂答鲸四像书我钟梦馒于纯苏孩囊泰勿液院库盔咏泉听捍专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,22,连接(Link),功能:将设计中调用的子模块与连接库中定义的模块建立对应关系命令:link链接可以由link命令显式完成,也可在后面步骤的compile命令隐式完成建议每次设计输入以后用link命令执行一次链接,钟栽浓赢豢游诚禹缨殊摩职太脓屏末仓衫岩厂跌宁爽磨脱跨蹦滨擎咽蓬蛆专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,23,设定约束条件(Constraints),约束条件分两类:环境约束条件设计约束条件综合环境包括工艺、电压和温度范围,必需的驱动强度,驱动类型等,见右图,享姥言桌渍谱汽秘俏迹株册喷惟宿沤秸敷塔覆扭嗡兴节悍薛恼注五转象世专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,24,设置工作条件(1),命令:set_operating_conditions综合库包括最差、典型和最好三种条件。在综合阶段使用最差条件,以最大建立时间(setup time)来优化设计。使用最好条件来清除保持时间(hold time)的违规。一般的工艺库包括:max(slow)、typical、min(fast)库。,虽君手挠巧恒丁睛忘鲍佃釉择用宣垃旋慌诣沮认昌工丧旺柯颇网蓄踌睡疼专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,25,设置工作条件(2),工艺(Process)偏差在流片阶段,wafer在流水线上要经过几十道工序,这些工序在控制上会有一些偏差,这些偏差都会导致器件的性能的变化。一般在逻辑电路上表现为驱动能力,或者信号延时的变化。,碍硬厅更壬幂迢简革闰僻剖好皮酥蕴鲜砖端介腿维莹棍拇邱硼铲剖樟辣护专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,26,设置工作条件(3),温度(Temperature)当温度变化时,会导致沟道电流强度的变化,从而影响逻辑电路的驱动能力和信号延时。电压(Voltage)电压比较高时,逻辑电路单元的驱动能力增 强,信号延时变小从而可以运行在比较高的工作频率下。命令举例:dc_shell-t set_operating_conditions WORST,模夜远惕灭喘际票递盘抓狰骏匿琵局靛闰耕坠妙踞眺森隅搁深碧厨芋獭寡专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,27,设定线负载模型(Wire Load Model),命令:set_wire_load_model(连)线负载模型估计了线长和扇出对于电阻、电容和线的面积的影响程度。半导体厂家根据特定生产线的统计信息开发线负载模型。线负载模型包括面积、电容和电阻每单位长度的系数和一个扇出到长度的表格,用来估算线长(扇出的数目决定了名义上的长度)。如果没有反标的线延迟,DC用线负载模型来预测线长和延迟。DC根据下列因素来决定设计应用哪种线形负载模型(按先后顺序排列):用户自定义、根据设计面积自动选择、工艺库里的默认值。例子:dc_shell-t set_wire_load_model name MEDIUM,迷柏砚直使职烁柑琅验县战水位倡葡丘钒预疾肖茨殷勿倘驴短王茹葬脏秤专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,28,设定线负载模式(Wire Load Mode),命令:set_wire_load_modeDC在决定穿越层次界限的连线所采用的线负载模型时支持三种模式:包围(Enclosed)分段(Segmented)顶部(Top),命令举例:dc_shell set_wire_load_mode enclosed,送丘菠拍齿宙谜岭绝凄史江唇拼第涵肿伺鉴厢舀寡摸捆韩件辞铀凳顽昧雇专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,29,设定输入端口的驱动,命令:set_driving_cell为了准确计算输入电路的时序,DC需要知道到达输入端口的信号的转换时间(transition time).默认情况下,DC假设外部信号的转换时间为0;也可以通过set_driving_cell在输入端口设置一个驱动单元。,例子:dc_shell-t set_drive 1.5 I1 I2dc_shell-t set_driving_cell-cell IV I3,筐硝鹰檬刁兄绊色酉闸缓霸痰柜筏芬谚弟秆兜润曳冉吕馅隐赖帆逊愤熊供专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,30,设定输入和输出端口负载,利用端口负载,DC可以为输出端口选择适当大小的驱动能力,也可以用来计算输入端口的延时。如果负载取得过小,下级电路无法正常工作,负载取得过大,会增大上一电路的难度。在缺省情况下,DC假定输入输出端口的容性负载为0。可以用set_load命令设定输入、输出端口的容性负载值。,记诬观阎购舆派响艰室刃例学端牛情灭救爪朽挚式喂斟简际盒胳祖席旅钡专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,31,设定输出端口的扇出负载,在DC中可以用set_fanout_load命令来设定输出端口外部的扇出负载总和。扇出负载不同于负载,它是一个无量纲的数值。注:负载则是指电容值的大小。,嘶透省月戒壳狸掌析藏洞篡牵悬叫俐砷瓶拼孰绦梳验胎浑吁妻晕东瘦给表专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,32,设计约束条件,两种设计约束设计规则约束设计优化约束设计规则约束反映了工艺方面的限制条件由工艺库提供设计优化约束定义了时序上和面积上的优化目标,啸墙抢墟癌捌染宁具服啊资惶暗汞澜陛束嘛宠途妖吹停翻拜老挽搏艾劫民专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,33,设计规则约束(1),设计规则的约束设置要限定在工艺库中器件的 参数范围之内。从优化的优先级来说,设计规则的约束比其它的相关约束要高。在综合手段的实现中,设计规则的设置是很有讲究的。设计规则涉及到一些物理参数的设置,比如电容、0-1(1-0)跳变时间、扇出。这些物理参数之间是相互联系、相互影响的。例如,如果电容过大,导致充放电时间过长,也就是0-1(1-0)跳变时间过长;如果扇出过大,又会导致电容过大。,霜丰材泄政萍椰肛瞪颠坍狞芍恋贿纲簧冗掣竖拨墓睁烛瞥保姑挠谴毕肇坠专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,34,设计规则约束(2),有三种设计规则的约束:最大电容(max capacitance)最大扇出(max fanout)最大跳变(max transition)三者相互联系,相互影响,用来控制设计中的缓冲(buffering)设定最大电容值命令:set_max_capacitance最大电容(max capacitance)的约束提供了 一种直接的方式,来直接控制设计中线网(net)上的电容。在编译过程中,综合器确保最大电容没有违规(violation),DC把线负载的电容和与连线相关的pin的电容相加计算输出端口的电容,并且把它与最大电容的值比较,确保小于最大电容的值。,嘻灼脑捏尾容筛辨戎扫沙绝渊瞅副疤撤谬杂荆睡害腕粤方用嘱芍颧萌螺守专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,35,设计规则约束(3),设定最大扇出命令:set_max_fanout最大扇出(max fanout)是对端口可以驱动的负载数目的估量。,输出端口Z驱动2个反向器、一个输出端口、一个或非门。每个器件的输入端均具有fanout_load的属性,该属性由反向器所在的工艺库的工艺来决定它的参数范围。,补哈钨淤画明摆莹刊阉刑嘘票贷蔼窟救坑嘎艳椒厦钵爱仰誊钡刨绿镭螟遣专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,36,设计规则约束(4),设定最大跳变命令:set_max_transition最大跳变(max transition)指的是0-1(1-0)所花费的最长时间。产生机制很简单:电容(C)和电阻(R)的乘积。但是如何对电容和电阻进行建模,快速获得合理的数值,却很困难。最大跳变(max transition)的定义:引脚的驱动强度乘以它驱动的连线上所有电容负载的总和的最大值,惋咆噶窑疾粗松绦饵穿胯券与虫崭度少煞那招边今贷裕析佬行宵概躺含处专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,37,设定面积约束,综合过程进行优化的依据之一一旦确定了面积约束条件,在综合时,就将该条件通知综合工具,综合工具利用各种可能的规则和算法,尽可能地减少该设计的面积通过命令set_max_area来给设计设置约束在实际综合中,set_max_area 0,其意义在于在满足时序的前期下,使面积达到最小,搬渊刑卒壁卞凌谗谣祝堰犬修杯滔棍坪胰诧附赞鲁搂盘疥频胆沽抽化硫舱专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,38,施加时序约束,根据网表中每个连接元件的延时模型,对节点进行定时分析,给出最好和最坏的延时情况,然后检查电路所有的延时约束条件是否满足要求。如果符合时序约束要求,就可以进行工艺映射,进行器件实现了。时序约束的设计是逻辑综合的重点和难点,将详细讲解。,臭挖有胡膏椰惯局叫防贵慕讥遇令缩瘸教睬贫醋靠撬棕岳态绍洞旧拣壤哪专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,39,编译(1),命令:compile编译策略:Top-down hierarchical compileBottom-up compileTop-down hierarchical compile将整个设计作为一个模块进行编译,仅需顶层约束。对一些设计如:单时钟的设计,很适用。允许一次编译大于100K gate的设计。对于大型设计,可将子模块合并成一组,然后展开进行编译,可以改善时序。优点:仅需top level的约束将整个设计作为整体优化,可获得较好的结果缺点:编译时间长子模块的改变需要整个设计再综合如果设计包含多个时钟或生成时钟逻辑,则不能很好执行,粳栋攒窑朽幢盖隋粗哮闸衔毙交脓姚泅辛阅柒砸刻抓掂痴瘪箔嚷结灯假描专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,40,编译(2),Bottom-up compile各个模块可独立编译,适合于划分合理、各个模块的时序约束能够被明确定义的设计优点:每一个子模块都由自己的脚本(scripts)文件,可以灵活修改子模块的改变不需要整个设计全部重新综合不需要关心设计类型,如:多时钟或产生时钟一般来说,可获得好的结果;缺点:需要更新维护多个脚本(scripts)文件顶层的关键路径也许在子模块并非关键路径,动破违楔岗客战伐峰缩惠谋趋狂冰皮眠淤夹黔渺独陌杉铀规珠谎膳酗庶焙专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,41,时序分析,编译(compile)结束后,通过产生的DC时序报告来具体分析诊断时序的违规(violations)时序报告包括四个部分:路径信息部分、路径延时部分、路径所要求时间部分、计算总结部分,猜坠雷瓦翟老帽噬花肿祟蹭久主惕卵误化妨咏讨乔眷碧湍咆咨贫缓驭软峙专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,42,内容,逻辑综合概述综合环境的设置DC综合流程简介时序分析基础逻辑综合中的时序约束设计DC的使用方式,作膜锦螟怔篙贸舔补矮凑狐爆齿村汝场桔怔弧央丰裂瘫淌厦脚荷淘壮旭写专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,43,数字系统中的时序问题,时序问题数字系统中的开关事件(逻辑运算、数据存储,等等)的发生在时间上具有先后顺序必须使系统中所有的事件按预先确定的次序正确执行同步系统产生时钟信号(clocking),用以协调把数据写入存储元件的时间异步系统完全取消本地时钟采用自定时的异步电路,通过握手协议实现模块间正确的操作次序,饺葡药摘帧壕咀叛丽赃辗箩亡耘支俘贮健值架泥靠代铂巴婿寨韩煮晰对吊专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,44,时钟的非理想情况,时钟偏差(Clock Skew)定义:空间上两个不同点处、时序上等同的两个时钟沿在到达时间上的偏差由时钟路径上的失配及时钟负载上的差别引起,取决于数据与时钟布线的方向,时钟偏差可正可负具有确定性(从一个周期至下一个周期是时不变的)时钟偏差不会引起周期的变化,只会引起相移(相位偏移)时钟抖动(Clock Jitter)定义:空间上同一个点处时钟周期随时间的变化抖动是一个平均值为零的随机变量绝对抖动(tjitter):某点处一个时钟边沿相对于理想参照时钟边沿在最坏情况下偏差的绝对值,j点,i点,殉屠儒恫憎戚制唁殖贤憨旭尹迁嘴质荧徐锅棺婿练待起他步谈斟眶螺旦抚专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,45,时钟不确定性的来源,宅务牵陇殖事芍昔跨竣线洼订烂伦伶棠积逛哼茫叫蓉稠底古坛换揩讼全婆专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,46,时序参数,时钟周期:T建立(set-up)时间:tsu保持(hold)时间:thold时钟至输出(clk-q)时间:tclk-q(tclk-q,min,tclk-q,max)数据至输出(d-q)时间:td-q(td-q,min,td-q,max),西屎婚梳娩蔫椒敝百刽溅毕场乾标才满歪枕琶哉札搜织铂谩俞扁盈泛吩抒专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,47,建立时间和保持时间,建立时间(Setup Time):指时钟信号的有效沿到来之前,数据输入信号必须到达的最小时间长度,保证该单元正确工作。保持时间(Hold Time):指时钟信号的有效沿或其它特定信号到来之后,数据输入信号必须保持稳定的最小时间长度,保证该单元正确工作。,谢狡褂撇羌逗熏崎鸯课夯鳖潭报旅蔓判娘绒姨咱驾座吼箭疵哆捎挂刷猛痛专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,48,存在时钟偏差时的系统时序(1),约束条件1:R2的输入数据必须在时钟的有效沿之前保持稳定,因此要求:,据此可得:,十寄寐沙瞅珠顶凶采宾互拈预详筛访猿加钢抒眉闸毯硼劫哥面累稍滤岂骑专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,49,存在时钟偏差时的系统时序(2),约束条件2:避免R2的前后两次输入信号出现竞争,因此要求:,即:,速寅突课卫窿次曹铭粒鄙野镶赃吹帝酮将镭处告庄忌漠蔑众烙懈外罚句吭专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,50,正时钟偏差(Positive Skew),发送边沿(launch edge)在接收边沿(capture edge)之前到达,正的时钟偏差使得系统有可能提高时钟频率,但正的时钟偏差可能引起信号竞争,讽孩儿辊雅屑裸衣疯豆河赋哗裤扩诵旧中断滓圈危托息杨掩努晦圈抬埔苗专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,51,负时钟偏差(Negative Skew),接收边沿(launch edge)在发送边沿(capture edge)之前到达,负的时钟偏差会降低系统的时钟性能,由于边沿2领先于边沿1,因此不会发生信号竞争,探眨土封乌蚀尾码幻邑骇侄悼垣硒专脾忌崎幌森养篓尤趋纬属妮戒忧璃震专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,52,时钟分布网络,时钟分布已成为主要的设计问题日益增大的芯片尺寸,不断提高的时钟频率采用逐级增大的缓冲器来驱动全局时钟,供给所有模块采用分布式树结构二叉树或H树使每个模块可以得到完好的时钟,能与模块的延时很好地匹配,或者使时钟的分配可以安排得使任何RC延时发生在Safe Slew的方向上(如与数据流的方向相反)H树由于所有的子功能块与时钟源是等距离的,因此对于每一个子功能块,时钟信号被延迟一个相同的数量,二叉树,逐级增大的缓冲器,H 树,戎社谣挂陈肢涪围廖硼鹅泪泥仇芋沧浮减镰庞朔唇张揽猪蛀浓隧碟钩峙纱专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,53,内容,逻辑综合概述综合环境的设置DC综合流程简介时序分析基础逻辑综合中的时序约束设计DC的使用方式,鲤疥床丧奠痈蚕刚挎浑滥孝汝搞忌驻故胆亮英麦测衰碉评新役钉本独柱豌专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,54,定义时钟(1),定义时钟的周期与波形(占空比)命令格式:create_clock-name clock_name-add source_objects-period period_value-waveform edge_list-period选项指定时钟周期,单位ns-waveform选项指定时钟边沿的开始位置,单位ns例1:在端口clk上定义一个周期为20 ns、占空比为40%的时钟信号dc_shell-t create_clock-period 20-waveform 0 8 clk例2:在端口clk上定义一个频率为25 MHz、占空比为50%的时钟信号dc_shell-t create_clock clk-period 40,旭败经单压接棘街膳迭绍囤华爆氛惭德宇毙檬歌内慧迢渍俗需潮伺竟尝液专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,55,定义时钟(2),指定时钟网络的延时采用set_clock_uncertainty和set_clock_latency命令对时钟树的延时量进行建模不确定性(uncertainty):两个寄存器时钟引脚之间的相对延时,即clock skew延时(latency):寄存器时钟引脚与时钟源之间的绝对延时例1:为时钟信号clk设置1.2 ns的网络延迟dc_shell-t set_clock_latency 1.2 clk例2:为时钟信号clk设置0.8 ns的源延迟dc_shell-t set_clock_latency 0.8-source clk例3:为时钟信号clk设置0.2 ns的不确定性偏差dc_shell-t set_clock_uncertainty 0.2 clk例4:在跳变沿两侧为时钟信号clk各设置0.2 ns的不确定性偏差dc_shell-t set_clock_uncertainty-setup 0.2 clkdc_shell-t set_clock_uncertainty-hold 0.2 clk,时钟树(网络),疙窥寡怒葬悟丛嫁凯地彝四讳递兜境痈劳归颂舱虱状伯层御液梨储恃旷邹专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,56,定义时钟(3),如果设计中有内部产生的时钟,如时钟分频器或者倍频器,定义时钟时要用到命令create_generated_clock命令格式:create_generated_clock name clock_name source clock_source divide_by factor|-multiply_by factor定义了时钟以后,要对时钟设置set_dont_touch属性,禁止往时钟上加入缓冲相应的命令是:set_dont_touch_network get_clocks Clk原因:综合时,一个时钟源驱动了很多门,由于所带的负载太多,时钟信号的边缘会很差。如果为时钟插入缓冲(Buffer)之后,时钟的驱动能力会增强,而且保持时钟信号的边缘陡峭,但是这样做会使得在不同路径上出现时钟偏移,从而带来时序上的问题。因此在综合时,将clock看作是理想的时钟,禁止加缓冲。,瞅狭氯解迷败跨漏专恕哀炬格人枢蛋口热伎棺贫基京吊餐余辨雹摩蒂畜膘专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,57,指定I/O的时序要求,定义了时钟之后,两个相邻寄存器之间的时间路径已经被约束默认为一个时钟周期输入端口的时序约束如果已知输入端口的外部电路的延迟,就能计算留给输入端内部逻辑的最大允许延迟DC命令:set_input_delay输出端口的时序约束指定了输出端口外部电路的延迟,DC就能得到留给输出端口的最大延迟DC命令:set_output_delay,礼归单相血领仙揩啼砍咸缔秦怨份吴废男颐停说样环龚耍莹蔑苞特氛笛贸专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,58,设定输入延迟(1),set_input_delay设置输入端口的输入延迟,可规定时钟沿之后数据据需要稳定的时间,作为输入信号的建立或保持时间需求定义信号相对于时钟的到达时间(指一个信号在时钟沿之后多少时间到达)规定输入信号在时钟有效沿后多长时间后才保持稳定(或说数据有效),对输入路径进行时间约束,Td+TM,量瑶旗膛书扛铅薄垢本舟古庚捌碉涕娇刷煽秩殿劝直参胳仇煮蓄呈县暇桂专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,59,设定输入延迟(2),下图说明了输入延迟的定义和时序关系,糙崭劲诀悔懂哀隶找妨万惺尿粘琶娠氰戳轨床腊屏锑孝版屎呆炒衔托潮亏专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,60,设定输出延迟,set_output_delay输出信号在时钟有效沿前多长时间开始保持稳定(或者说数据有效),对输出路径进行时间约束,拙聘吱檄馈肇纪惋馋缝搪题术畦壁锤陷灸凑谗找耀中涌枉帘自杠闰千扭畴专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,61,设定I/O延迟,举例:dc_shell-t set_input_delay 20-clock CLK DATA_INdc_shell-t set_output_delay 15-clock CLK DATA_OUT,在工程设计中,input delay和output delay通常取时钟周期的40-60%,肩然泽郝致谜刹玖金钳吾该轮瞎恫员蛙日生鹅窝串教加柜富绽儡欧欣楚冯专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,62,指定组合逻辑通路的延时要求,采用set_max_delay和set_min_delay命令来定义某条组合逻辑路径(不含时序单元)的最大和最小延时例1:RESET信号的延时不能超过5 nsdc_shell-t set_max_delay 5-from RESET例2:从IN2至OUT2的路径的最小延时是10 nsdc_shell-t set_min_delay 10-from IN2-to OUT2,甲烛叼磊锣啪兄咖数扑饺价堰镜疮朝屈星钩椎缓貌桐照少移家决毫拔么慕专用集成电路设计方法讲义4_逻辑综合专用集成电路设计方法讲义4_逻辑综合,63,说明时序例外情况,应用于异步路径或不遵循单时钟时序的路径用set_false_path命令指定设计中的假路径,从而在时序优化时不考虑它们,U1配置寄存器,可以从双向总线(DATA)对其进行读写,由于不允许同时进行读写,U1/GU1/D是一条功能上的假路径,dc_shell-t set_false_path-from U1/G-to U1/D,扰皖吸刑卓锭窄隅挽窍监靴撒鄂沸艇尾橇惊限掀例炯撰梁梧