买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
申请/专利权人:天津芯海创科技有限公司;天津市滨海新区信息技术创新中心
摘要:本发明提供了一种顶层准确约束block端口timing的方法,对需要进行时序预算的两个有相互timing路径的block分别进行primetime分析,保存相应的session;用primtetime命令get_timing_path报出每个端口的timing属性,得到T0、T1值;判断timing属性中的slack的值;将根据block真实情况计算出来的输入延时、输出延时输出到约束文件中;用约束文件run block的后端流程,优化timing。本发明有益效果:优化后的两个block的时序和优化前的时序一致,且对于每个block来说,采用真实的端口约束,端口处时序违反是真实的,不会因为大的端口timing违反,影响内部时序的优化;有效地减小了顶层时序收敛的难度和工作量,可有效缩短设计周期,减少迭代的次数。
主权项:1.一种顶层准确约束block端口timing的方法,其特征在于:A.对需要进行时序预算的有相互timing路径的block0和block1分别进行primetime分析,保存相应的session;B.用primtetime命令get_timing_path报出每个端口的timing属性,得到T0、T1,其中T0、T1分别表示block0输出延时,block1的输入延时;C.判断步骤B中timing属性中的slack的值,如果为正值,根据block0和block1相应端口的实际路径延时,计算相应的比例,按照时钟周期进行约束的划分,block0的输出延时为时钟周期*T1T0+T1,block1的输入延时为,时钟周期*T0T0+T1,如果为负值,按真实的延时约束输入延时和输出延时,block0的输出延时约束为block1中的输入延时,block1的输入延时约束为block0的输出延时;D.将根据步骤C中得到的block0和block1真实情况计算出来的输入延时和输出延时输出到约束文件run block中;E.用步骤D中得到的约束文件run block的后端流程优化timing。
全文数据:一种顶层准确约束block端口timing的方法技术领域本发明属于时序预算技术领域,尤其是涉及一种顶层准确约束block端口timing的方法。背景技术数字集成电路逐步发展到今天的专用集成电路ASIC,人们在工作和生活中用到的一些产品,都运用了复杂的专用数字集成电路,而数字逻辑器件也从简单的逻辑门发展到了复杂的SOC片上系统,提供了对复杂系统的灵活支撑。对于规模越来越大的集成电路,必须依靠EDA工具来进行设计的实现。具体的思路是把芯片中的数字电路逻辑单元,由车间做成标准单元,提取相应的模型;通过硬件描述语言象编程一样描述电路的结构、功能;通过EDA综合工具把这种程序语言综合成包含逻辑门的网表格式,在综合过程中需要把电路时钟的频率、数据交互的方式、实际工作过程、外界环境的要求细化成约束文件,用这个约束文件进行综合,综合就是通过工具将电路的描述文件变成逻辑单元的网表;综合后的网表交给后端进行布局、布线;生成满足约束和流片规则的版图文件,这个版图文件就是最终的实际电路,然后交给车间进行生产,最后产生和设计功能一致的芯片。当集成电路设计变得越来越大,出现了目前的层次化设计方法,即在RTL进行逻辑综合时,先将设计经过分配变成模块化的设计方案,所有模块完成后,最后再将它们整合在一起。从RTL到GDSII过程的每一步,对于EDA工具、工程师都是巨大的挑战。芯片设计的最终检查标准之一,是设计是否实现了时序收敛,时序收敛意味着芯片中的数字电路能正确地实现所需要的逻辑功能,而完成时序收敛的关键问题往往集中在某些模块。因此,将庞大的设计在物理设计时分割成数个模块,重点处理时序复杂的模块,是缩短设计收敛的周期的关键点。每个模块的设计都是一个完整的物理设计过程,它根据顶层分配的数据进行物理设计,经过时序优化后达到时序收敛后,产生满足物理和时序要求的一组数据供顶层使用。再做顶层的布图、布局、布线时,假定每个模块都是已经收敛的黑盒子,其物理布图最终覆盖在n个物理模块的上方,并占据整个芯片的面积范围。当最终顶层的时序及优化达到要求时,整个设计完成。芯片物理设计的层次化设计包括在设计的各个环节。首先整个设计被切分为若干个block和顶层,每个block单独做布局、布线、物理验证、timing分析,然后再集成到顶层,再完成整个芯片的物理验证、timing分析。在划分block时每个block都有输入、输出端口,顶层的约束加在这些输入、输出端口上,作为对于block的约束。在实现过程中,通过顶层向block的时序预算来实现。时序满足是芯片设计的一个重要指标。在层次化的设计过程中,时序预算是一个重要的环节,必须要正确的对每个block的IO端口进行约束,从而保证接口的时序要求,从而在顶层整合时保证时序满足要求。端口的时序预算主要是定义block的输出延时和输入延时。在数字时序电路中,从一个触发器的输出到另一个触发器的输入被定义为一个完整的时序路径。数据是按照时钟的节拍来传输的,时钟具有相应的频率,因而有相应的周期。如果数据路径上的延时大于时钟周期,被称为时序的违反。对于block的端口,是从外部输入到一个触发器的输入端,或者从一个触发器输出到外部。我们要定义外部的输入延时和输出延时,从而确定block内部逻辑的最大延时,以保证整个的延时不超过一个时钟周期,从而保证逻辑功能的正确性。在层次化设计中,整个设计被化为为若干个block。每个block有它内部的时序约束,同时也有对于端口的约束。端口的约束主要是保证这些block拼接在一起的时候,整个timing满足时序要求。目前的timingbudget的方法有:利用后端工具进行时序预算。这种方法不常用,因为在布局阶段的timing是估计的,因此并不准确,而且runtime比较长;利用综合时生成的sdc文件。现在对于复杂的设计,综合也是采用层次化设计,每个block分别综合。通常会设置一个比较严格的端口约束。一般选择一定时钟周期的比例,通常选择时钟周期的60-70%,这样保证整合到一起的时序满足要求。对于规模比较大的设计,划分的block数量非常庞大。时序、面积是两个必须同时满足的设计要求。如果按照很严格的固定时钟周期的比例进行约束,会影响每个block的面积、congestion,给布线布通造成难度。在层次化设计方法中,整个设计被划分为很多block。有的设计方法中,会在顶层留一定的空间,作为顶层优化摆放cell,和顶层走线的布线通道。另外一种方法是不在顶层预留空间,优化加的cell会加在block内部,并且每个block都有feedthrough,作为block之间走线的通道。这两种方法,都要求先实现每个block,满足block内部的时序要求,即timing要求,并对block的端口时序进行约束。Block端口的时序约束主要包括输入延时和输出延时的设置,这样在顶层整合时,能满足整个芯片的时序要求。常用的设计方法是对block的输入和输出端口,按照端口的参考时钟周期,选取时钟周期一定的比例粗略的进行设置。在用这种时序预算方法产生端口约束时,所有的端口都是按照参考时钟周期固定的比例来设置,一般为时钟周期的60-70%。这就产生这样一个问题,每个端口block外的延时是不同的,所以对时序的要求是不同的。这种估计的端口约束值,对于一些端口是严格的,而对于另外一些端口又偏松的。对于采用一定端口参考时钟的方法来进行时序预算,一些约束相比实际要求是偏严的。这相当于外部的延时很大,为了在一个时钟周期内到达触发器,留给内部的时间就被缩短,这会导致这条时序路径上,有很大的时序违反,后端工具会优化这条路径。如果这种路径比较多,整个端口的时序违反总值就会比较大,后端工具花很多努力在优化这些端口的时序违反上,这样会一方面会阻碍对内部真正需要优化时序路径的优化,另一方面工具在优化时序时,会在这条路径上插入逻辑单元,这会导致block内部的逻辑单元数量增多,从而留给以后布线的空间减少,增加了block内部的congestion。对于采用一定端口参考时钟的方法来进行时序预算,一些约束相比实际要求是偏松的。这种情况下,后端工具发现端口时序很容易满足,就不会特别优化端口的时序。在顶层整合时,会出现block内部的时序满足要求,但block和block之间的时序出现违反。因为在block进行集成时,已经到了设计的后期,如果block之间的时序有违反,只能再返回重新返回block,进行timing修复,这样有可能影响项目的周期。归纳上面两种情况,对于一些内部时序要求比较紧的block,难收敛的block,端口约束加的太紧,会使block内部的timing不容易满足。这样设计人员会反复调整floorplan,设置优化方法,并且现在的设计每个block的规模也比较大,导致运行时间比较长,这样反复迭代对项目的进度有影响。内部时序比较容易满足的情况,但是接口时序比较紧张,因为两个block之间的时序是需要考虑两个block的逻辑关系并且加合适的约束,这样才能满足要求。如果约束过松,在top进行整合时,会发现block之间有时序违反现象。这种情况需要在顶层加以修复。因为顶层的规模非常大,在顶层优化timing,运行时间非常长,并且有的路径在block阶段没有很好的优化,在顶层试图优化时序是非常困难的,而且有的路径在顶层修复不了,这样必须返回block优化。在一个项目中,留给顶层的时间一般是项目的最后阶段,这样很容易导致项目的延期。因此在现有的层次化设计timingbudget方法中,只是通过固定设置时钟周期的60-70%来约束所有block的端口timing,会有下面的缺陷。一是对于block内部timing紧张的block,会妨碍block内部timing的优化,减小了布线空间;而是对于block之间timing紧张的设计,端口timing过松,会导致block之间的timing难以满足,反复迭代,会影响设计周期,造成项目延期。发明内容有鉴于此,本发明旨在提出一种顶层准确约束block端口timing的方法,以解决上述问题的不足之处。为达到上述目的,本发明的技术方案是这样实现的:一种顶层准确约束block端口timing的方法,包括以下步骤:A.对需要进行时序预算的有相互timing路径的block0和block1分别进行primetime分析,保存相应的session;B.用primtetime命令get_timing_path报出每个端口的timing属性,得到T0、T1;C.判断步骤B中timing属性中的slack的值,如果为正值,根据block0和block1相应端口的实际路径延时,计算相应的比例,按照时钟周期进行约束的划分,block0的输出延时为时钟周期*T1T0+T1,block1的输入延时为,时钟周期*T0T0+T1,如果为负值,按真实的延时约束输入延时和输出延时,block0的输出延时约束为block1中的输入延时,block1的输入延时约束为block0的输出延时;D.将根据步骤C中得到的block0和block1真实情况计算出来的输入延时和输出延时输出到约束文件runblock中;E.用步骤D中得到的约束文件runblock的后端流程优化timing。进一步的,所述步骤B中每个端口的timing属性还包括timingpath的起始点、终点、setup时间、uncertainty时间、arrival时间。进一步的,所述步骤A中保存的session内保存有运行的时序信息。本发明还提供了另一实施例,一种用于实现顶层准确约束block端口timing的系统,包括:用于实现步骤A的处理模块;用于实现步骤B输出模块;用于实现步骤C的分析模块;用于实现步骤D的存储模块;用于实现步骤E的优化模块。相对于现有技术,本发明所述的顶层准确约束block端口timing的方法具有以下优势:本发明所述的顶层准确约束block端口timing的方法在timingbudget时,优化后的两个block之间的时序和优化前看到的时序是一致的,且对于每个block来说,采用了真实的端口约束,端口处的时序违反是真实的,不会因为大的端口timing违反,影响内部时序的优化;端口时序是真实的延时来约束,避免了端口约束过松,在block阶段端口timing没有优化,在top阶段整合到一起,产生时序违反,造成最后阶段整个设计时序的不收敛,延误设计周期,甚至要返回到block阶段再进行优化。有效地减小了顶层时序收敛的难度和工作量。采用现在的方法可有效的缩短设计周期,减少迭代的次数。附图说明构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:图1为本发明实施例所述的两个block的Timingbudget示意图。具体实施方式需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。如图1所示,一种顶层准确约束block端口timing的方法,包括以下步骤:A.对需要进行时序预算的有相互timing路径的block0和block1分别进行primetime分析,保存相应的session;B.用primtetime命令get_timing_path报出每个端口的timing属性,得到T0、T1,其中T0、T1分别表示block0输出延时,block1的输入延时;C.判断步骤B中timing属性中的slack的值,如果为正值,则说明这条timingpath时序要求比较松,根据block0和block1相应端口的实际路径延时,计算相应的比例,按照时钟周期进行约束的划分,block0的输出延时为时钟周期*T1T0+T1,block1的输入延时为,时钟周期*T0T0+T1,如果为负值,按真实的延时约束输入延时和输出延时,block0的输出延时约束为block1中的输入延时,block1的输入延时约束为block0的输出延时;D.将根据步骤C中得到的block0和block1真实情况计算出来的输入延时和输出延时输出到约束文件runblock中;E.用步骤D中得到的约束文件runblock的后端流程优化timing。所述步骤B中每个端口的timing属性包括timingpath的起始点、终点、slackslack和要求时序相比较的正、负值,如果延时小于需要到达时间,slack为负值,延时大于需要到达时间,则slack为正值、setup时间指在时钟沿前需要提前到的时间、uncertainty时间留的裕量时间、arrival时间。所述步骤A中保存的session内保存有运行的时序信息。本发明还提供另一种实施例,一种用于实现顶层准确约束block端口timing的系统,包括:用于实现步骤A的处理模块;用于实现步骤B输出模块;用于实现步骤C的分析模块;用于实现步骤D的存储模块;用于实现步骤E的优化模块。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求:1.一种顶层准确约束block端口timing的方法,其特征在于:A.对需要进行时序预算的有相互timing路径的block0和block1分别进行primetime分析,保存相应的session;B.用primtetime命令get_timing_path报出每个端口的timing属性,得到T0、T1,其中T0、T1分别表示block0输出延时,block1的输入延时;C.判断步骤B中timing属性中的slack的值,如果为正值,根据block0和block1相应端口的实际路径延时,计算相应的比例,按照时钟周期进行约束的划分,block0的输出延时为时钟周期*T1T0+T1,block1的输入延时为,时钟周期*T0T0+T1,如果为负值,按真实的延时约束输入延时和输出延时,block0的输出延时约束为block1中的输入延时,block1的输入延时约束为block0的输出延时;D.将根据步骤C中得到的block0和block1真实情况计算出来的输入延时和输出延时输出到约束文件runblock中;E.用步骤D中得到的约束文件runblock的后端流程优化timing。2.根据权利要求1所述的一种顶层准确约束block端口timing的方法,其特征在于:所述步骤B中每个端口的timing属性还包括timingpath的起始点、终点、setup时间、uncertainty时间、arrival时间。3.根据权利要求1所述的一种顶层准确约束block端口timing的方法,其特征在于:所述步骤A中保存的session内保存有运行的时序信息。4.一种用于实现顶层准确约束block端口timing的系统,其特征在于包括:用于实现步骤A的处理模块;用于实现步骤B输出模块;用于实现步骤C的分析模块;用于实现步骤D的存储模块;用于实现步骤E的优化模块。
百度查询: 天津芯海创科技有限公司 天津市滨海新区信息技术创新中心 一种顶层准确约束block端口timing的方法
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。