生成门级网表和标准延迟文件及检查和纠正伪路径的方法

文档序号:6431860阅读:446来源:国知局
专利名称:生成门级网表和标准延迟文件及检查和纠正伪路径的方法
技术领域
本发明涉及片上系统(SOC)后端设计,更具体地讲,涉及在SOC后端设计过程中在前仿真阶段生成标准延迟文件和修改的门级网表以及使用该标准延迟文件和修改的门级网表检查和纠正伪路径的方法。
背景技术
图I是示出传统的片上系统(SOC)后端设计流程的主要步骤。在步骤S1010,对用硬件描述语言(HDL)编写的数字逻辑电路进行综合以生成门级网表。在该步骤中,可根据时序约束等条件,完成可综合的寄存器传输级描述到综合库单 元之间的映射,从而将数字逻辑电路的硬件描述语言描述转化为门级网表。在步骤S1020,对在步骤S1010生成的门级网表进行SDC(synopsys designconstraint)清理(clean-up),从而获得较为优化的门级网表。下面将针对图2来详细描述SDC清理。应该注意的是,这里使用SDC只是示例性的,本发明可使用其他集成电路逻辑综合软件进行清理工作,为了描述简便,下面的描述依然采用SDC。在步骤S1030,按照同步电路设计的要求,根据优化的门级网表的拓扑结构对整个设计进行前静态时序分析。在对整个设计进行静态时序分析的过程中,基于同步电路的设计要求并根据门级网表的拓扑结构计算并检查电路中每一个存储器或锁存器的建立(setup)时间和保持(hold)时间,以及其他基于路径的时延要求是否得到满足。静态时序分析是集成电路开发流程中非常重要的一环。通过静态时序分析,一方面可以了解到关键路径的信息,分析关键路径的时序;另一方面,还可以了解到电路节点的扇出情况和容性负载的大小。在步骤S1040,对设计的电路进行布局布线前的功能仿真,也即前仿真。功能仿真是设计验证的主要形式,从活动的内容来分,功能仿真包括测试覆盖率检查和功能一致性检查。代码测试覆盖率检查常用电子设计自动化(EDA)工具来帮助完成。可以统计当一组测试用例作用于设计时各种各样的测试覆盖情况,利用这些数据,设计者就可以用测试用例对设计的覆盖情况有所了解,同时还可以确认设计还有哪些功能没有得到测试。这样一方面可以帮助对测试功能覆盖情况有一个量的认识,而另一方面帮助发现冗余逻辑和设计错误;而功能一致性检查的仿真手段有基于波形的仿真、基于对象转换的仿真、基于行为级模型的比较仿真、软硬件协同仿真和硬件加速仿真,这里一般使用软硬件协同仿真。在步骤S1050,执行布局和布线的步骤。布局被认为是整个后端流程最关键的一步,布局首先是在满足电路时序要求的条件下得到尽可能小的实现面积。其次,布局也是把整个设计划分成多个便于控制的模块。布局的内容包括把单元或宏模块摆放到合适的位置,其目的是为了最大限度地减小连线的RC延迟和布线的寄生电容效应。此外,良好的布局还可以减小芯片面积和降低布线时出现拥塞现象的几率。布线分为预布线和详细布线两个阶段。进行预布线时版图工具把整个芯片划分为多个较小的区域,布线器只是估算各个小区域的信号之间最短的连线长度,并以此来计算连线延迟,这个阶段并没有生成真正的版图连线。在详细布线阶段,布线器根据预布线的结果和最新的时序约束条件生成真正的版图连线。但是如果预布线的时间比布局运行的时间还要长,这就意味着布局的结果是失败的,这时候就需要重新布局以减少布线的拥塞。布局布线完成之后,对根据布局布线的结果产生的电路网表分别在步骤S1060和S1070进行后静态时序分析和后仿真,从而有效地去除任何建立(setup)和保持(hold)冲
关。 在步骤S1080,根据后静态时序分析和后仿真的结果,进行布局和布线的工程变更(ECO, engineering change order)。具体地讲,就是根据静态时序分析的结果以及后仿真发现的问题或者是其他方面的改变,要求对芯片在布局布线阶段进行时序或者功能上的修正。图I中,在SDC清理阶段,我们需要改正SDC所有的语法以及由于SDC不完备带来的与功能相关的问题,这主要依靠工程师对SDC进行检查并使用相关EDA工具对设计和SDC进行分析来实现,然后才能开始前静态时序分析、前仿真、布局和布线、后静态时序分析、后仿真和工程变更。如果SDC有与伪路径(false path)相关的错误,并且在SDC清理阶段没有被发现,那么只能通过后仿真来发现,并在工程变更时改正。这将大大影响布局布线(layout)的生产周期。图2示出了传统的SDC清理方法。在图2中,一般通过借助EDA工具来清理一致性问题、时钟问题和语法问题;而由工程师来清理功能问题和以及一部分语法问题。虽然在SDC清理阶段,可以通过一些专门的SDC EDA工具发现SDC的一些语法问题或者定义缺陷问题,但是对于SDC本身功能的正确性的问题,这些EDA工具是不能发现的。SDC是工程师基于对芯片功能模块的理解完成的,由于各种原因,不可避免会产生一些错误,需要依靠人工去检查和发现这些问题,可事实证明有些错误是很难依靠人工检查出来。通常这些错误对布局布线的生产周期影响很大,特别是伪路径定义的错误。由于错误地定义了伪路径,在布局和布线时,布局布线工具将不会关心相互之间具有伪路径的单元(cell)(也即下文中所指的对象(object)),这些单元的位置以及它们之间的时序不会被优化。由此而带来的问题,并不能通过静态时序分析发现;另外,前仿真阶段也不能发现,因为前仿真用的标准延迟文件(SDF)是不准确的。这个潜在的问题只能在后仿真阶段通过分析波形失配的原因才能找到。这个分析过程通常包括多次的后仿真验证以及多次的工程变更,这将大大增加布局布线的生产周期。

发明内容
由于传统的设计流程中,如果伪路径的设定出现了问题,布局布线工具将不会对路径上单元的位置和时序进行优化,由此而带来的实际时序问题是无法通过静态时序分析来发现的,只能在后期的后仿真中通过分析失配的波形发现。这将大大影响芯片设计的生产周期,更有可能造成不可挽回的后果。本发明对包含from、to或through语句的伪路径(即下面所述的纯伪路径)进行分析,并通过对作为伪路径的数据路径上的伪时序弧(false timing arc)定义上升(rise)和下降(false)延迟,继而生成SDF文件和修改的门级网表,然后用这个SDF文件和修改的门级网表进行仿真以检查伪路径的设定的正确性。
这样就可以在布局布线之前发现伪路径中严重的问题,虽然这样的检查会花费一些时间,但是如果错误的伪路径问题在后仿真中发现的话,耗费的时间将会更多,甚至可能需要重新进行布局布线。对rise或fall选项的伪路径,考虑到布局布线工具并不是完全放弃优化以及这种误设的伪路径影响的有限性,本发明不做检查分析。根据本发明的一方面,提供了一种在前仿真阶段生成标准延迟文件和修改的门级网表的方法,所述方法包括获得所有伪路径;针对所有伪路径中的每一个伪路径,执行下述操作得到该伪路径上的每个对象的所有扇入和扇出,分析所述扇入和扇出上是否已经存在延迟点,如果存在延迟点,则不再对该伪路径定义延迟点;如果所述扇入和扇出上不存在延迟点,则根据所述扇入和扇出之间的时序弧的类型定义延迟点;对找到延迟点的伪路径定义延迟值并写出标准延迟文件和修改的门级网表 。根据本发明的另一方面,根据所述扇入和扇出之间的时序弧的类型定义延迟点的步骤可包括判断所述扇入和扇出之间的时序弧的类型;如果所述扇入和扇出之间的时序弧的类型属于类型I至类型VII,则根据所述扇入和扇出之间的时序弧的类型定义延迟点;如果所述扇入扇出之间的时序弧的类型属于类型VIII,则通过执行下述操作来定义延迟点复制所述扇入和扇出连接的对象,将所述扇入和扇出之间的时序弧转换成类型I VII,在不改变电路逻辑的基础上修改门级网表,并根据复制对象之后形成的扇入和扇出之间的时序弧的类型定义延迟点;如果所述扇入和扇出之间的时序弧的类型属于类型IX,并通过执行下述操作来定义延迟点将所述对象与所述对象所在伪路径上的上一级或下一级的对象进行合并以产生新的对象和与所述新的对象相应的扇入和扇出,从而将与所述新的对象相应的扇入和扇出之间的时序弧的类型转换为类型I至类型VIII以定义延迟点。根据本发明的另一方面,在将所述对象与所述对象所在伪路径上的上一级或下一级对象进行合并以产生新的对象和与所述新的对象相应的扇入和扇出的操作中,如果与所述新的对象相应的扇入和扇出之间的时序弧的类型仍然不属于类型I至类型VIII,则增加合并级数以将所述新的对象与所述新的对象的上一级或下一级的对象再进行合并,其中,合并级数小于等于设定的合并级数限制。根据本发明的另一方面,如果合并级数大于合并级数限制,则放弃对该伪路径的分析。根据本发明的另一方面,所述方法还可包括报告没有找到延迟点的伪路径以对没有找到延迟点的伪路径进行人工分析。根据本发明的另一方面,对伪路径定义延迟点的操作可包括在伪路径的延迟点处定义上升和下降延迟。根据本发明的另一方面,可以按下述方式对扇入和扇出之间的时序弧的类型进行划分,并相应地定义延迟点,其中,m表示伪路径上的对象的扇入的个数,η表示所述对象的扇出的个数,P为大于等于I并且小于m的自然数,q为大于等于I并且小于η的自然数,s为大于等于I并且小于等于m的自然数,t为大于等于I并且小于等于η的自然数;类型I满足条件只有I个扇入和I个扇出的伪时序弧;在这种情况下,将延迟点定义在该对象的扇入或扇出;类型II满足条件:m> I且η = 1,并且有ρ个扇入到该扇出是伪时序弧;在这种情况下,将延迟点定义在该对象的有伪时序弧的所述P个扇入处;类型III满足条件m> I且η = I,并且该对象的所有的扇入到扇出都是伪时序弧;在这种情况下,将延迟点定义在该对象的扇出处;类型IV满足条件:m = Ι,η > 1,并且该扇入到q个扇出是伪时序弧;在这种情况下,将延迟点定义在该对象的有伪时序弧的所述q个扇出处;类型V满足条件:m = I,η > 1,并且该扇入到所有扇出都是伪时序弧;在这种情况下,将延迟点定义在对象的扇入处;类型VI满足条件:m> 1,η > 1,并且所有扇入到q个扇出是伪时序弧;在这种情况下,将延迟点定义在对象的有伪时序弧的所述q个扇出处;类型VII满足条件:m >l,n> 1,并且有ρ个扇入到所有扇出都是伪时序弧;在这种情况下,将延迟点定义在对象的有伪时序弧的所述P个扇入处;类型VIII满足条件:m > l,n > 1,有s个扇入到t个扇出是伪时序弧,并且任意扇入到任意扇出是伪时序弧或真时序弧;在这种情况下,通过复制对象转换成类型I至类型VII以对延迟点进行定义,并相应地修改门级网表;如果扇入和扇出之间的时序弧的类型不属于类型I至类型VIII,则将所述扇入和扇出之间的时序弧的类型定义为类型IX。
根据本发明的另一方面,所述方法还可包括使用标准延迟文件和修改的门级网表进行前仿真。根据本发明的另一方面,如果前仿真的结果与预期的结果不一致,则对门级网表进行清理以优化门级网表并再次进行前仿真。根据本发明的另一方面,所述伪路径可以为包含from、to或through语句的纯伪路径。根据本发明的另一方面,提供了一种在前仿真阶段检查和纠正伪路径的方法,所述方法包括对用硬件描述语言编写的数字逻辑电路进行综合以生成门级网表;对门级网表进行清理从而获得优化的门级网表;根据优化的门级网表的拓扑结构进行前静态时序分析;生成标准延迟文件和修改的门级网表;使用标准延迟文件和修改的门级网表进行前仿真;如果仿真的结果与预期的结果不一致,则返回对门级网表进行清理的步骤以对修改的门级网表进行清理。根据本发明的另一方面,所述方法还可包括如果前仿真的结果与预期的结果一致,则进行下面的步骤进行布局和布线;对根据布局布线的结果产生的电路网表进行后静态时序分析和后仿真;根据后静态时序分析和后仿真的结果,进行布局和布线的工程变更。


下面结合附图和实施例对本发明进一步说明。图I是传统的SOC后端设计的流程图。图2是传统的SDC清理的方法。图3是根据本发明示例性实施例的SOC后端设计的流程图。图4是根据本发明示例性实施例的生成SDF和修改的门级网表的详细流程图。图5是根据本发明示例性实施例的伪路径中的某个对象的示意图。图6A至图6C是根据本发明示例性实施例的对类型I添加延迟的方式。图7A和图7B是根据本发明示例性实施例的对类型II添加延迟的方式。图8A和图8B是根据本发明示例性实施例的对类型III添加延迟的方式。
图9A和图9B是根据本发明示例性实施例的对类型IV添加延迟的方式。图IOA和图IOB是根据本发明示例性实施例的对类型V添加延迟的方式。图IlA和图IlB是根据本发明示例性实施例的对类型VI添加延迟的方式。图12A和图12B是根据本发明示例性实施例的对类型VII添加延迟的方式。图13A和图13B是根据本发明示例性实施例的对类型VIII添加延迟的方式。图14A和图14B是根据本发明示例性实施例的将类型IX转换为类型VIII的示例。图15示出根据本发明示例性实施例的对图14B中转换的类型VIII添加延迟的方 式。
具体实施例方式下面结合附图进一步说明本发明的具体实施方式
。图3是根据本发明示例性实施例的SOC后端设计的流程图。如图3所示,根据本发明示例性实施例的SOC后端设计的流程包括下述步骤综合(S3010)、SDC清理(S3020)、前静态时序分析(S3030)、生成SDF和修改的门级网表(3040)、使用SDF和修改的门级网表进行前仿真(S3050)、判断前仿真结果是否与预期结果不匹配(S3060)、布局和布线(S3070)、后静态时序仿真(S3080)、后仿真(S3090)和工程变更(S3100)。在步骤S3060中,如果判断出前仿真结果与预期结果不匹配,也即,如果前仿真结果与预期结果不一致,则步骤返回S3020以进行SDC清理操作;如果前仿真结果与预期结果一致,则进行步骤S3070的布局和布线。与图I相比,图3的流程在图I所示的流程的基础上增加了生成SDF和修改的门级网表的步骤(S3040),以及伪路径正确性检查的步骤(S3060)。图4示出根据本发明示例性实施例的图3的生成SDF和修改的门级网表的具体步骤。图4是与图3中的步骤S3040相应的生成SDF和修改的门级网表的详细流程图,其中,生成SDF和修改的门级网表是本发明的关键部分。在该处理中,先找数据路径中的伪时序弧,然后对数据路径上的其中一个伪时序弧定义大的上升(rise)和下降(fall)延迟。下面将针对图4来描述生成SDF和修改的门级网表的具体步骤。在步骤S4010,首先得到所有纯伪路径(即包含from、to或through等语句的伪路径,不考虑上升/下降单独的情况),为了描述简便,下面将其简称为伪路径。在步骤S4020,选择其中的一个伪路径。在步骤S4030,得到该伪路径上的对象(也即单元)的所有数据路径点(datapath point)(即数据路径上的单元管脚(cell pin)或端口(port),即下面所述的扇入和扇出)。在步骤S4040,判断这些扇入和扇出上是否已经存在延迟点了,如果存在延迟点,则不需要再定义延迟点,也就是说该数据路径已经被分析了,处理流程直接转向步骤S4070。如果不存在延迟点,则在步骤S4050中先判断这些扇入和扇出之间的时序弧是否属于类型I VII (将在下面对包括类型I-IX的各种类型进行定义),如果是,则在步骤S4060中根据这些扇入和扇出之间的时序弧的类型定义延迟点,此时不需要修改门级网表。
如果这些扇入和扇出之间的时序弧不属于类型I VII,则在步骤S4110中首先判断这些扇入和扇出之间的时序弧是否属于类型VIII,如果这些扇入和扇出之间的时序弧属于类型VIII,则在步骤S4120中复制对象并将这些扇入和扇出之间的时序弧转换成类型I VII (如图13A和图13B所示),并在步骤S4130中修改门级网表后,在步骤S4140中定义延迟点,然后步骤转向S4070。如果在步骤S4110中判断出这些扇入和扇出之间的时序弧不属于类型VIII,即无法通过复制对象将扇入和扇出之间的时序弧转换成类型I VII,则可以将这些扇入和扇出之间的时序弧统一归并为类型IX,对这一类型的扇入和扇出之间的时序弧的处理主要是通过设定合并级数限制(合并级数限制为大于等于2的自然数,考虑到复杂性以及时效性等问题,一般将合并级数限制设定为3),将对象的第i (其中,i小于等于合并级数限制)合并级数内的对象进行合并(即,将对象与该对象所在伪路径上的上一级对象合并或者与该对象所在的伪路径上的下一级对象合并),从而转换成一个大的对象,如果这个大的对象的扇入和扇出之间的时序弧不可以转换成类型I VIII,那么再增加合并级数,如果在合 并级数限制内转换成了 I VIII,则问题得到解决;反之,放弃分析,进行下一个伪路径分析,将这个没找到延迟点的伪路径最后进行报告(具体请参见图14A、图14B和图15以及下面关于类型IX的描述)。具体地讲,如果判断出这些扇入和扇出之间的时序弧不属于类型VIII,则在步骤S4150,增加合并级数;然后在步骤S4160中判断合并级数是否超过了合并级数限制。如果合并级数没有超过合并级数限制,则在步骤S4170合并对象并判断合并的对象的扇入和扇出之间的时序弧是否属于类型I-VIII ;如果合并的对象的扇入和扇出之间的时序弧属于类型I-VIII,则在步骤4180,将这些扇入和扇出之间的时序弧改变成I-VIII类型中的一个,然后,处理转向步骤S4050。如果在步骤S4170中合并的对象的扇入和扇出之间的时序弧不属于类型I-VIII,则返回步骤S4150继续增加合并级数。另外,如果在步骤S4160中判断出超过了合并级数限制,则处理转到步骤S4070。在步骤S4070中,判断是否对所有的伪路径都进行了延迟点的分析,其中,可能会有针对某条伪路径没有找到合适的延迟点的情况。在步骤S4080中,报告那些没有找到延迟点的伪路径,然后在步骤S4190对这些伪路径进行人工分析。在步骤S4090中,对找到延迟点的伪路径,定义延迟值(delay value)。然后在步骤S4100,写出SDF和修改的门级网表,在步骤S4200中用所述SDF和修改的门级网表进行前仿真(对应于图3的S3050)。这里,如果前仿真的结果与预期结果一致,则证明图4流程中找到的延迟点的伪路径的设定没有问题(没找到延迟点的伪路径要进行人工分析),如果前仿真的结果与预期结果不一致,说明延迟点的延迟导致前仿真失败,这时要检查伪路径的设定是否出了问题。根据扇入和扇出之间的时序弧不同,本发明把对象的扇入和扇出之间的时序弧(timing arc)分成9种类型,分别是I IX。其中I VII类型都可以直接在该对象的扇入或扇出上找到延迟点,VIII、IX类型不能直接找到延迟点,需要通过在不改变电路逻辑的基础上修改门级网表,将VIII、IX类型转换成I VII类型来找到延迟点。图5是伪路径中的某个对象,I1. . . Im为该对象的扇入,O1. . . On为该对象的扇出。本发明的关键就是在伪路径上选择合适的延迟点对其定义大的上升和下降延迟。下面对数据路径做出相关定义,把数据路径上的每个对象的时序弧抽象成数学表达式。如果某条数据路径是伪路径,则不需要关心这条数据路径的时序,布局布线的时候也不会进行优化。因此,我们给这条数据路径增加延迟,然后进行仿真,如果仿真结果与预期结果一致,说明该数据路径的确是伪路径。图3和图4所描述的流程正是基于这个原理来进行的。但是,需要克服的问题是每条数据路径上的对象或端口通常都是被很多数据路径共用,如果轻易地增加了延迟,势必会导致一些真路径(true path)也增加了延迟,因此必须保证增加延迟的位置不会影响真路径。为了解决这个问题,根据本发明示例性实施例,根据数据路径上的对象的扇入和扇出之间的时序弧为真/假的情况(其中,如果扇入和扇出之间的时序弧为真,则该时序弧为真时序弧(true timing arc);如果所述扇入和扇出之间的时序弧为假,则该时序弧为伪时序弧),归纳出9种类型逐一 进行分析,以找出合适的插延迟的位置,也即定义延迟点。为描述方便,这里约定Fd1, I2,..., Iffl)为某个对象的所有扇入到所有扇出之间的时序弧,其中,输入点(即扇入)的个数为m个,m大于等于I ;MIi)为从Ii到所有扇出的伪时序弧,t (Ii)为从Ii到所有扇出的真时序弧,其中,i为大于等于I小于等于m的自然数;Ii^Oj表示从Ii到Oj的真时序弧,I/ *0」表示从Ii到Oj的伪时序弧,延迟点在Ii处,其中,假设所有扇出的个数为η (η为大于等于I的自然数),j为大于等于I小于等于η的自然数;Ii5K)/表示从Ii到Oj的伪时序弧,延迟点在Oj处;I/ *0」=Ii5K)/,表示的是同一个伪时序弧,只是延迟点位置不一样,但对这个伪时序弧来说效果一样。综上所示,可以定义F(IlJ2^iIm) = Y4 (JVi) + KIi))
/=1下面将针对图4中提到的各种类型进行描述,这里,m表示对象的扇入的个数,η表示对象的扇出的个数。类型I该类型满足条件只有I个扇入,I个扇出的伪时序弧,其示例如图6Α所示的对象中,F(I1) = f (I1)^(I1) = I/ ^O1 = I3O/。这种情况延迟加在对象的扇入或扇出,不会影响真路径(true path),如图6B和图6C所示,其中,由实心三角形标记的扇入或扇出表示在该处定义了延迟点,即在该处定义上升和下降延迟。类型II该类型满足条件:m> Ι,η = 1,并且有P (其中,I ^ p < m)个扇入到该扇出是伪时序弧,其不例如图 7A 所不的对象中,F(I1,12,13) = f (I1) +t (I1) +f (I2) + t (I2) +f (I3) +t (I3)=(Ii+I^+I/hOi。在这种情况下,将延迟点定义在对象的有伪时序弧的所述P个扇入处,如图7B所示。类型III
类型III是类型II的特殊情况,该类型满足条件所有的扇入到这个扇出都是伪时序弧,其不例如图 8A 所不的对象中,F (I1, I2, I3) = f (I1)+t (I1)+f (I2)+t (I2)+f (I3)+t (I3) = (L+I2+I3)5liO1 ’。此时,将延迟点定义在该对象的扇出处,其示例如图8B所示。类型IV 该类型满足条件:m = Ι,η > I,并且所述扇入到q(其中,I彡q < η)个扇出是伪时序弧,其示例如图9Α所示的对象中,F(I1) = f (I1)^(I1) = 13((^+0/+0/)。这种情况下,将延迟点定义在对象的有伪时序弧的所述q个扇出处,其示例如图9B所示。类型V 类型V是类型IV的特殊情况,其中,一个扇入到所有扇出都是伪时序弧,其示例如图IOA所示的对象中,F(I1) = f (I1)^(I1) = I/=KO^(VK)3)。在这种情况下,将延迟点定义在对象的有伪时序弧的扇入处,其示例如图IOB所示。 类型VI 该类型满足条件:m > 1,η > 1,并且所有扇入到q(其中,I彡q < η)个扇出是伪时序弧,其示例如图IlA所示的对象中,Fd1, I2) = f (I1)^(I1)+f (I2)+t (I2)=(1^)^(0^0/ +O3,)。在这种情况下,将延迟点定义在对象的有伪时序弧的所述q个扇出处,其示例如图IlB所示。类型VII:该类型满足条件:m > I, η > I,并且ρ(其中,I彡ρ < m)个扇入到所有扇出都是伪时序弧,其示例如图12A所示的对象中,Fd1, I2) = f (I1Htd1Hf (I2)+t (I2)=(I/ +I2)*(OJOdO3)。在这种情况下,将延迟点定义在对象的有伪时序弧的所述P个扇入处,其示例如图12B所示。类型VII I:该类型满足条件m > Ι,η > Ι,ρ (其中,I ^ p ^ m)个扇入到q(其中,I < q < η)个扇出是伪时序弧,并且任意扇入到任意扇出是伪时序弧或真时序弧,其示例如图13Α所
/Jn ο此时,类型VIII可以通过表达式化简和复制对象转化成类型I至类型VII,根据合并项的个数k修改门级网表,即根据合并项的个数k将对象复制k-Ι次,其示例如图13B所示。在图13A中,假设Il到01是伪时序弧,12到01是伪时序弧,13到02以及13到03是伪时序弧。针对图13A所示的这种情况,可以用上面定义的表达式表达为f (I1) = I/ 5I=O1 f (I2) = 12,*0! f (I3) = 13,*(02+03)t (I1) = I1* (02+03) t (I2) = I2*(02+03) t (I3) = I3^O1F (I1, I2, I3) = f (I1) +t (I1) +f (I2) +t (I2) +f (I3) +t (I3)= (I1, +I2, +I3)5I=O1+(IfI2+]^, )*02+(IfI2+]^, )*03= (I1, +I2, +I3)5I=O1+(IfI2+]^ )*(02+03)从上面的表达式可以看出,化简后的表达式得到2个合并项,说明对象被复制2-1=I次。因此,可以将图13A转化为图13B所示的形式。实心三角形为延迟所加位置,即延迟点。图13B的实心与门表示复制的对象。不属于上述类型的扇入和扇出之间的时序弧均可归并为类型IX。类型IX可以说是类型VIII的变形。在这种类型中,m> Ι,η > 1,ρ(其中,I彡ρ彡m)个扇入到q(其中,l^q^n)个扇出可以是伪时序弧也可以真时序弧,出现伪时序弧和真时序弧重叠的情况,其示例如图14A所示。类型IX不可以通过表达式化简和复制对象以转化成类型I至类型VII,而需要将对象与其所在伪路径上的上一级或下一级的对象合并后成为一个新的对象,然后才可以转化成类型I至类型VIII,其示例如图14B所示。如果通过一次合并后还是类型IX,则可以继续进行合并操作。在图14A中,如果对象(此处为与门)的II、12、13到01的伪时序弧和真时序弧
无法分离(split),则将对象和其下一级的对象(或门)合并,于是新的对象就具有11、12、
13、14四个扇入和01、02、03三个扇出。此时,如果Il到01是伪时序弧,12到01是伪时序弧,13到02和03是伪时序弧,14到02是伪时序弧,从而转化成类型VIII,如图14B所
/Jn ο下面的表达式表示合并后的扇入和扇出之间的时序弧。f (I1) = I/ *0if (I2) = 12,*〇1t (I1) = I1* (02+03) t (I2) = 12*(02+03)f (I3) = I/ *(02+03) f (I4) = I4,*02t (I3) = I3*〇1 t (I4) = I4* (Oi+Og)那么,F(I1;12,13,I4)可以表达为F (I1, I2, I3, I4) = f (I1)+t (I1)+f (I2)+t (I2)+f (I3)+t (I3)+f (I4)+t (I4) = (I1 , +I2 , +I3+I4) 5I=O1+ (Ii + Ig+Ig,+I4,)*02+ (Ii + Ig+Ig,+I4) *03从而可将图14A所示的形式变换为图15所示形式。根据上面的定义,可知每个类型都有自己的表达式,表达式和对象的连接方式是等同的可相互转化的。本发明正是基于伪路径本身的特性,即设成伪路径的数据路径是不存在时序要求的,体现在物理实现上就是这条数据路径的时序不会被优化,单元的位置也不会被考量。因此我们有理由认为这样的伪路径可以有很大的延迟,但是不会影响电路的功能。借助这一点,我们可以人为的选取伪路径上的伪时序弧,增加一定的延迟,然后写出SDF以进行前仿真,如果经过仿真后发现由于大的延迟的增加导致仿真失败,这就说明伪路径的设定有问题;如果通过了相关的仿真验证,说明伪路径的设定没有问题。由于传统的SOC后端设计流程中,如果伪路径的设定出现了问题,布局布线工具将不会对路径上单元的位置和时序进行优化,由此而带来的实际时序问题是无法通过静态时序分析发现的,只能在后期的后仿真中通过分析失配的波形发现。这将大大影响芯片设计的生产周期,更有可能造成不可挽回的后果。本发明对伪路径中from、to、through的情况进行分析,并通过对作为伪路径的数据路径上的伪时序弧定义上升和下降延迟,继而生成SDF和修改的门级网表,然后用这个SDF和修改的门级网表进行仿真以检查伪路径的设定的正确性,从而可以在布局布线之前发现伪路径中严重的问题,以节省布局布线的生产周期并避免重新进行布局布线。
权利要求
1.一种在前仿真阶段生成标准延迟文件和修改的门级网表的方法,所述方法包括 获得所有伪路径; 针对所有伪路径中的每一个伪路径,执行下述操作得到该伪路径上的每个对象的所有扇入和扇出,分析所述扇入和扇出上是否已经存在延迟点,如果存在延迟点,则不再对该伪路径定义延迟点;如果所述扇入和扇出上不存在延迟点,则根据所述扇入和扇出之间的时序弧的类型定义延迟点; 对找到延迟点的伪路径定义延迟值并写出标准延迟文件和修改的门级网表。
2.如权利要求I所述的方法,其中,根据所述扇入和扇出之间的时序弧的类型定义延迟点的步骤包括 判断所述扇入和扇出之间的时序弧的类型; 如果所述扇入和扇出之间的时序弧的类型属于类型I至类型VII,则根据所述扇入和扇出之间的时序弧的类型定义延迟点; 如果所述扇入扇出之间的时序弧的类型属于类型VIII,则通过执行下述操作来定义延迟点复制所述扇入和扇出连接的对象,将所述扇入和扇出之间的时序弧转换成类型I VII,在不改变电路逻辑的基础上修改门级网表,并根据复制对象之后形成的扇入和扇出之间的时序弧的类型定义延迟点; 如果所述扇入和扇出之间的时序弧的类型属于类型IX,并通过执行下述操作来定义延迟点将所述对象与所述对象所在伪路径上的上一级或下一级的对象进行合并以产生新的对象和与所述新的对象相应的扇入和扇出,从而将与所述新的对象相应的扇入和扇出之间的时序弧的类型转换为类型I至类型VIII以定义延迟点。
3.如权利要求2所述的方法,其中,在将所述对象与所述对象所在伪路径上的上一级或下一级对象进行合并以产生新的对象和与所述新的对象相应的扇入和扇出的操作中,如果与所述新的对象相应的扇入和扇出之间的时序弧的类型仍然不属于类型I至类型VIII,则增加合并级数以将所述新的对象与所述新的对象的上一级或下一级的对象再进行合并,其中,合并级数小于等于设定的合并级数限制。
4.如权利要求3所述的方法,其中,如果合并级数大于合并级数限制,则放弃对该伪路径的分析。
5.如权利要求I所述的方法,还包括 报告没有找到延迟点的伪路径以对没有找到延迟点的伪路径进行人工分析。
6.如权利要求I所述的方法,其中,对伪路径定义延迟点的操作包括在伪路径的延迟点处定义上升和下降延迟。
7.如权利要求2所述的方法,其中,按下述方式对扇入和扇出之间的时序弧的类型进行划分,并相应地定义延迟点,其中,m表示伪路径上的对象的扇入的个数,η表示所述对象的扇出的个数,P为大于等于I并且小于m的自然数,q为大于等于I并且小于η的自然数,s为大于等于I并且小于等于m的自然数,t为大于等于I并且小于等于η的自然数; 类型I满足条件只有I个扇入和I个扇出的伪时序弧;在这种情况下,将延迟点定义在该对象的扇入或扇出; 类型II满足条件:m > I且η = 1,并且有ρ个扇入到该扇出是伪时序弧;在这种情况下,将延迟点定义在该对象的有伪时序弧的所述P个扇入处;类型III满足条件:m> I且η = 1,并且该对象的所有的扇入到扇出都是伪时序弧;在这种情况下,将延迟点定义在该对象的扇出处; 类型IV满足条件:m = 1,η > 1,并且该扇入到q个扇出是伪时序弧;在这种情况下,将延迟点定义在该对象的有伪时序弧的所述q个扇出处; 类型V满足条件m = Ι,η > 1,并且该扇入到所有扇出都是伪时序弧;在这种情况下,将延迟点定乂在对象的扇入处; 类型VI满足条件:m> l,n> 1,并且所有扇入到q个扇出是伪时序弧;在这种情况下,将延迟点定义在对象的有伪时序弧的所述q个扇出处; 类型VII满足条件:m> 1,n> 1,并且有ρ个扇入到所有扇出都是伪时序弧;在这种情况下,将延迟点定义在对象的有伪时序弧的所述P个扇入处; 类型VIII满足条件:m > 1,η > 1,有s个扇入到t个扇出是伪时序弧,并且任意扇入到任意扇出是伪时序弧或真时序弧;在这种情况下,通过复制对象转换成类型I至类型VII以对延迟点进行定义,并相应地修改门级网表; 如果扇入和扇出之间的时序弧的类型不属于类型I至类型VIII,则将所述扇入和扇出之间的时序弧的类型定义为类型IX。
8.如权利要求I所述的方法,所述方法还包括 使用标准延迟文件和修改的门级网表进行前仿真。
9.如权利要求8所述的方法,其中,如果前仿真的结果与预期的结果不一致,则对门级网表进行清理以优化门级网表并再次进行前仿真。
10.如权利要求I所述的方法,其中,所述伪路径为包含from、to或through语句的纯伪路径。
11.一种在前仿真阶段检查和纠正伪路径的方法,所述方法包括 对用硬件描述语言编写的数字逻辑电路进行综合以生成门级网表; 对门级网表进行清理从而获得优化的门级网表; 根据优化的门级网表的拓扑结构进行前静态时序分析; 生成标准延迟文件和修改的门级网表; 使用标准延迟文件和修改的门级网表进行前仿真; 如果仿真的结果与预期的结果不一致,则返回对门级网表进行清理的步骤以对修改的门级网表进行清理。
12.如权利要求11所述的方法,还包括 如果前仿真的结果与预期的结果一致,则进行下面的步骤 进行布局和布线; 对根据布局布线的结果产生的电路网表进行后静态时序分析和后仿真; 根据后静态时序分析和后仿真的结果,进行布局和布线的工程变更。
13.如权利要求11或权利要求12所述的方法,其中,所述生成标准延迟文件和修改的门级网表的步骤包括 获得所有伪路径; 针对所有伪路径中的每一个伪路径,执行下述操作得到该伪路径上的每个对象的所有扇入和扇出,分析所述扇入和扇出上是否已经存在延迟点,如果存在延迟点,则不再对该伪路径定义延迟点;如果所述扇入和扇出上不存在延迟点,则根据所述扇入和扇出之间的时序弧的类型定义延迟点; 对找到延迟点的伪路径定义延迟值并写出标准延迟文件和修改的门级网表。
14.如权利要求13所述的方法,其中,根据所述扇入和扇出之间的时序弧的类型定义延迟点的步骤包括 判断所述扇入和扇出之间的时序弧的类型; 如果所述扇入和扇出之间的时序弧的类型属于类型I至类型VII,则根据所述扇入和扇出之间的时序弧的类型定义延迟点; 如果所述扇入扇出之间的时序弧的类型属于类型VIII,则通过执行下述操作来定义延迟点复制所述扇入扇出连接的对象并将所述扇入和扇出之间的时序弧转换成类型I VII,在不改变电路逻辑的基础上修改门级网表并根据复制对象之后形成的扇入和扇出之间的时序弧的类型定义延迟点; 如果所述扇入和扇出之间的时序弧的类型属于类型IX,则通过执行下述操作来定义延迟点将所述对象与所述对象所在伪路径上的上一级或下一级的对象进行合并以产生新的对象和与所述新的对象相应的扇入和扇出,从而将与所述新的对象相应的扇入和扇出之间的时序弧的类型转换为类型I至类型VIII以定义延迟点。
15.如权利要求14所述的方法,其中,在将所述对象与所述对象所在伪路径上的上一级或下一级对象进行合并以产生新的对象和与所述新的对象相应的扇入和扇出的操作中,如果与所述新的对象相应的扇入和扇出之间的时序弧的类型仍然不属于类型I至类型VIII,则增加合并级数以将所述新的对象与所述新的对象的上一级或下一级的对象再进行合并,其中,合并级数小于等于设定的合并级数限制。
16.如权利要求15所述的方法,其中,如果合并级数大于合并级数限制,则放弃对该伪路径的分析。
17.如权利要求13所述的方法,还包括 报告没有找到延迟点的伪路径以对没有找到延迟点的伪路径进行人工分析。
18.如权利要求13所述的方法,其中,对伪路径定义延迟点的操作包括在伪路径的延迟点处定义上升和下降延迟。
19.如权利要求14所述的方法,其中,按下述方式对扇入和扇出之间的时序弧的类型进行划分,并相应地定义延迟点,其中,m表示伪路径上的对象的扇入的个数,η表示所述对象的扇出的个数,P为大于等于I并且小于m的自然数,q为大于等于I并且小于η的自然数,s为大于等于I并且小于等于m的自然数,t为大于等于I并且小于等于η的自然数; 类型I满足条件只有I个扇入和I个扇出的伪时序弧;在这种情况下,将延迟点定义在该对象的扇入或扇出; 类型II满足条件:m > I且η = 1,并且有ρ个扇入到该扇出是伪时序弧;在这种情况下,将延迟点定义在该对象的有伪时序弧的所述P个扇入处; 类型III满足条件:m> I且η = 1,并且该对象的所有的扇入到扇出都是伪时序弧;在这种情况下,将延迟点定义在该对象的扇出处; 类型IV满足条件:m= 1,η > 1,并且该扇入到q个扇出是伪时序弧;在这种情况下,将延迟点定义在该对象的有伪时序弧的所述q个扇出处;类型V满足条件:m = Ι,η > 1,并且该扇入到所有扇出都是伪时序弧;在这种情况下,将延迟点定乂在对象的扇入处; 类型VI满足条件:m> l,n> 1,并且所有扇入到q个扇出是伪时序弧;在这种情况下,将延迟点定义在对象的有伪时序弧的所述q个扇出处; 类型VII满足条件:m> 1,η > 1,并且有ρ个扇入到所有扇出都是伪时序弧;在这种情况下,将延迟点定义在对象的有伪时序弧的所述P个扇入处; 类型VIII满足条件:m> 1,η > 1,有s个扇入到t个扇出是伪时序弧,并且任意扇入到任意扇出是伪时序弧或真时序弧;在这种情况下,通过复制对象转换成类型I至类型VII以对延迟点进行定义,并相应地修改门级网表; 如果扇入和扇出之间的时序弧的类型不属于类型I至类型VIII,则将所述扇入和扇出之间的时序弧的类型定义为类型IX。
20.如权利要求13所述的方法,所述方法还包括 使用标准延迟文件和修改的门级网表进行前仿真。
21.如权利要求20所述的方法,其中,如果前仿真的结果与预期的结果不一致,则对门级网表进行清理以优化门级网表并再次进行前仿真。
22.如权利要求11所述的方法,其中,所述伪路径为包含from、to或through语句的纯伪路径。
全文摘要
本发明提供一种生成门级网表和标准延迟文件及检查和纠正伪路径的方法。所述生成门级网表和标准延迟文件的方法包括获得所有伪路径;针对每个伪路径,执行下述操作得到伪路径上每个对象的所有扇入和扇出,对每个对象分析扇入和扇出上是否已经存在延迟点,如果存在延迟点,则不再对该伪路径定义延迟点;如果所述扇入和扇出上不存在延迟点,则根据所述扇入和扇出之间的时序弧的类型定义延迟点;对伪路径的延迟点定义延迟值并写出标准延迟文件和修改的门级网表。通过对延迟点添加延迟,以生成标准延迟文件和修改的门级网表以检查伪路径的设定的正确性,从而可以在布局布线之前发现伪路径中严重的问题,以节省布局布线的生产周期并避免重新进行布局布线。
文档编号G06F17/50GK102955867SQ20111025217
公开日2013年3月6日 申请日期2011年8月30日 优先权日2011年8月30日
发明者王金城 申请人:三星半导体(中国)研究开发有限公司, 三星电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1