本发明涉及集成电路设计领域,尤其涉及一种静态时序分析方法和装置。
背景技术:
数字集成电路的设计必须满足一定的时序关系,否则电路设计将无法达到预期的效果。时序分析的主要作用是根据电路内部逻辑和布线的延时,验证是否满足设计者的约束。时序分析分为动态时序分析和静态时序分析。动态时序分析,也就是仿真,动态时序分析测试向量规模巨大并且可能测试向量不完备,最后耗费大量开发资源又无法暴露出所有的时序问题。静态时序分析的优点在于它不需要输入测试向量就能够穷尽所有的路径,可以对电路设计进行全面的时序功能检查,还能利用时序分析的结果来优化EDA流程中综合,布局布线等过程,静态时序分析已经越来越多的被用到数字集成电路的设计中。
而在集成电路的设计过程中,用户在完成初步设计后,如果时序分析不满足,则需要进一步修改设计,然后重新查看时序分析结果,如果用户的设计比较大,则重头开始分析则需要耗费的时间会很长,导致效率低下。
技术实现要素:
本发明旨在解决现有技术中在进行静态时序分析时,由于修改设计而导致效率低下的问题。
为解决上述技术问题,本发明实施例提供一种静态时序分析方法,包括:
根据当前网表,建立对应的时序图;
在所述网表发生变化时,记录发生变化的所述网表中的实例及其变化的类型;
根据所述发生变化的实例及其变化的类型,更新所述时序图;
根据更新后的所述时序图进行静态时序分析,得出静态时序分析结果。
可选的,所述根据当前网表,建立对应的时序图包括:
遍历所述网表中的所有对端口,并根据所述对端口信息建立时序节点;
遍历所述网表中的所述实例的管脚,并根据所述管脚信息建立时序节点;
根据时序约束关系,并结合所述对端口信息的时序节点、管脚信息的时序节点,建立所述时序图。
可选的,所述记录发生变化的网表中的实例及其变化的类型包括:将发生变化的所述实例添加至预设的变化列表中;所述实例的变化的类型包括:修改实例信息、增加实例信息、删除实例信息中的任意一种。
可选的,所述根据发生变化的实例及其变化的类型,更新时序图包括:
若所述实例的变化的类型是修改了实例信息,则:根据发生变化的所述实例的时序节点,删除所述时序节点之前的时序约束,并重新建立新的时序约束;
若所述实例的变化的类型是新增实例信息,则根据所述新增的实例信息确定其时序节点,并将所述时序节点与当前的所述时序图中的时序节点建立时序约束;
若所述实例的变化的类型是删除实例信息,则遍历所述被删除的实例的所有时序节点,根据所述时序节点确定与所述时序节点相关的时序约束,并移除所述时序节点和时序约束。
可选的,所述根据更新后的所述时序图进行静态时序分析包括:
对所述时序图进行时序检查,所述时序检查至少包括:检查所述时序图中是否有环路;
遍历所述时序图,所述遍历包括前向遍历和/或逆向遍历,确定所有的时序路径;
根据所述时序路径的各组成部分的延时,确定所述时序路径的到达时间和要求时间,并进一步确定时序余量;
根据所述时序余量,生成静态时序分析结果。
本发明还提供一种静态时序分析装置,包括:
创建模块,用于根据当前网表,建立对应的时序图;
记录模块,用于在所述网表发生变化时,记录发生变化的所述网表中的实例及其变化的类型;
更新模块,用于根据所述发生变化的实例及其变化的类型,更新所述时序图;
分析模块,用于根据更新后的所述时序图进行静态时序分析,得出静态时序分析结果。
可选的,所述创建模块还用于:
遍历所述网表中的所有对端口,并根据所述对端口信息建立时序节点;
遍历所述网表中的所述实例的管脚,并根据所述管脚信息建立时序节点;
根据时序约束关系,并结合所述对端口信息的时序节点、管脚信息的时序节点,建立所述时序图。
可选的,所述记录模块还用于:将发生变化的所述实例添加至预设的变化列表中;所述实例的变化的类型包括:修改实例信息、增加实例信息、删除实例信息中的任意一种。
可选的,所述更新模块还用于:
若所述实例的变化的类型是修改了实例信息,则:根据发生变化的所述实例的时序节点,删除所述时序节点之前的时序约束,并重新建立新的时序约束;
若所述实例的变化的类型是新增实例信息,则根据所述新增的实例信息确定其时序节点,并将所述时序节点与当前的所述时序图中的时序节点建立时序约束;
若所述实例的变化的类型是删除实例信息,则遍历所述被删除的实例的所有时序节点,根据所述时序节点确定与所述时序节点相关的时序约束,并移除所述时序节点和时序约束。
可选的,所述分析模块还用于:
对所述时序图进行时序检查,所述时序检查至少包括:检查所述时序图中是否有环路;
遍历所述时序图,所述遍历包括前向遍历和/或逆向遍历,确定所有的时序路径;
根据所述时序路径的各组成部分的延时,确定所述时序路径的到达时间和要求时间,并进一步确定时序余量;
根据所述时序余量,生成静态时序分析结果。
本发明的有益效果是:
本发明实施例提供了一种静态时序分析方法和装置,根据当前网表建立对应的时序图,在网表发生变化时,记录发生变化的网表中的实例及其变化的类型,根据发生变化的实例及其变化的类型,更新时序图,根据更新后的时序图进行静态时序分析,得出静态时序分析结果。通过本发明的实施,在网表发生变化时无需重新建立时序图,提高了时序图创建的效率,并进一步提升了静态时序分析的效率。
附图说明
图1为本发明实施例一的静态时序分析方法流程图;
图2为本发明实施例一的时序图的组成示意图;
图3为本发明实施例一的一种更新时序图的方法图;
图4为本发明实施例一的一种更新时序图的方法图;
图5为本发明实施例一的一种更新时序图的方法图;
图6为本发明实施例二的静态时序分析装置组成示意图;
图7为本发明实施例二的静态时序分析方法流程图。
具体实施方式
下面通过具体实施方式结合附图对本发明实施例作进一步详细说明。
实施例一:
本实施例提供一种静态时序分析方法,请参见图1,具体包括:
S101、根据当前网表,建立对应的时序图;
S102、在网表发生变化时,记录发生变化的网表中的实例及其变化的类型;
S103、根据发生变化的实例及其变化的类型,更新时序图;
S104、根据更新后的时序图进行静态时序分析,得出静态时序分析结果。
在数字集成电路的设计中,对电路的静态时序分析往往是必不可少的,静态时序分析可以根据电路内部逻辑和布线的延时,验证电路设计是否满足设计者的约束。静态时序分析的优点在于它可以在不输入测试向量的前提下穷尽所有的路径,可以对电路设计进行全面的时序功能检查,还能利用时序分析的结果来优化EDA流程中综合,布局布线等过程。
在本实施例中,首先需要对初始网表,建立对应的时序分析的时序图(timing graph)。请参考图2,图2中的时序图基于网表文件,对端口(port),实例(inst)的管脚,分别建立时序节点(timing node),并根据时序模型和连线关系建立时序节点之间的时序约束(timing arc),最终组成一个时序图。
实例是指对某个设计对象的实现,这一过程称之为实例化;在本实施例中,根据当前网表,建立对应的时序图的步骤如下:
遍历网表中的所有对端口,并根据对端口信息建立时序节点(timing node);
遍历网表中的实例的管脚,并根据管脚信息建立时序节点;
根据时序约束关系,并结合对端口信息的时序节点、管脚信息的时序节点,建立时序图。
其中,根据对端口信息建立时序节点,即建立对端口类型的时序节点;根据管脚信息建立时序节点,即建立实例类型的时序节点。时序节点之间会有一定的时序约束关系(timing arc),在相应的时序节点之间通过连线建立连线(net)类型的时序约束。或者,还可以根据实例对应的时序模型,建立实例类型的时序约束。
此外,在创建时序图中,还可以根据时序路径的定义,标记对应时序路径的起点和终点的时序节点,根据时序路径的起点和终点来辅助进行时序图的建立。
此外,在创建时序图时,如果实例具有层次结构,则可以先对该实例按照上述的流程建立一个时序图,然后在打平(flatten)到总的时序图中,这样做可以使建立时序图更简单清晰。
在利用创建的时序图进行静态时序分析时,如果发现设计不符合要求,就需要对网表进行调整,相应的,对网表的调整对应于对时序图中的对应的实例的调整,也就是,发生变化的网表中的实例,及其变化的类型。
在本实施例中,记录发生变化的网表中的实例及其变化的类型可以包括:将发生变化的实例添加至预设的变化列表中;实例的变化类型则可以包括:修改实例信息、增加实例信息以及删除实例信息中的任意一种或多种。发生变化的网表,具体到实例中,则可以包括:将某实例的管脚或者连线关系进行调整,将某实例的位置调整,或者在网表中增加实例,或者将网表中已有的实例移除。
在本实施例中,根据发生变化的实例及其变化的类型,更新时序图包括:
若实例的变化类型是修改了实例信息,则根据发生变化的实例的时序节点,删除时序节点之前的时序约束,并重新建立新的时序约束。
请参考图3:
S301、判断是否是实例上的连线发生了变化,若是,转到S302,若否,转到S304;
S302、找到该实例下的所有时序节点;
S303、删除之前的时序约束,并建立新的时序约束,然后转到S307;
S304、判断是否是实例的布局位置发生了变化,若是,转到S305;
S305、更新之前布局位置的时序图,并创建新的位置的实例的时序图;
S306、将之前布局位置的时序图和新的位置的时序图打平到总时序图中;
S307、遍历更新时序路径信息。
如果是修改了实例信息,这里的修改可以包括实例上的连线发生了变化,也可以是实例的布局位置发生了变化;如果是实例上的连线发生了变化,根据发生变化的实例上的时序节点,删除该时序节点以前的时序约束,即与该时序节点相关的时序约束,重新建立新的时序约束;如果是实例的布局位置发生了变化,即实例的位置发生了改变,该实例从原位置移动到了新的位置,如果在之前的位置已经没有了实例,则直接将原位置的实例图删除;如果之前的位置上有其他实例,则对原位置的实例的时序图进行更新,可以按照新增实例处理,而原来的改变了布局位置的实例则需要创建该实例的时序图,将原位置的时序图和新位置的时序图都打平到总的时序图中。
若实例的变化类型是新增实例信息,则根据新增的实例信息确定时序节点,并将时序节点与当前的时序图中的时序节点建立时序约束。
请参考图4:
S401、对新增的实例建立时序图;
S402、打平该时序图到总的时序图中;
S403、建立相应的时序约束;
S404、遍历更新时序路径信息。
如果是新增实例信息,则需要建立该实例的时序图,然后将该时序图打平到总的时序图中;增加新的实例,则必然会增加新的时序约束,进而会增加新的时序节点,根据设计人员的设计将新增的时序节点和原有的时序节点之间建立时序约束,利用时序约束将新增的时序节点和总的时序图中的时序节点连接起来即完成了打平处理。
若实例的变化类型是删除实例信息,则遍历被删除的实例的所有时序节点,根据时序节点确定与时序节点相关的时序约束,并移除时序节点和时序约束。
请参考图5:
S501、找到删除的实例的所有时序节点;
S502、根据时序节点找到源时序节点和目的时序节点;
S503、更新源时序节点的输出时序约束和目的时序节点的输入时序约束;
S504、从时序图中移除该实例的时序节点和时序约束;
S505、删除实例的所有时序节点、时序约束,并从变化列表中移除该实例;
S506、遍历更新时序路径信息。
如果是删除实例信息,则需要遍历该实例的所有时序节点,根据时序约束关系,找到与时序节点相连的源时序节点和目的时序节点,更新输出和输入时序约束,然后,从时序图中移除时序节点和相应的时序约束,达到最终删除被删除的实例的所有时序节点和时序约束的目的。
显然,本领域的技术人员应该明白,上述本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在计算机存储介质(ROM/RAM、磁碟、光盘)中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。所以,本发明不限制于任何特定的硬件和软件结合。
当变化列表中的所有操作更新完时序图后,遍历时序图中所有时序路径信息,生成相应的静态时序分析结果,即:进行静态时序分析。
在本实施例中,根据更新后的时序图进行静态时序分析包括:
对时序图进行时序检查,时序检查至少包括:检查时序图中是否有环路;
遍历时序图,遍历包括前向遍历和/或逆向遍历,确定所有的时序路径;
根据时序路径的各组成部分的延时,确定时序路径的到达时间和要求时间,并进一步确定时序余量;
根据时序余量,生成静态时序分析结果。
在本实施例中,静态时序分析的过程,首先,可以根据用户约束文件,在时序图的时序节点上建立时钟约束,对时序图做时序检查,这个检查过程主要是检查是否有环路等方面的检查。而遍历时序图,可以从类型为时序路径的起点的时序节点根据时序约束做前向遍历,或者从类型为时序路径终点时序节点根据时序约束做逆向遍历,前向遍历和逆向遍历都是可行的遍历方案,在本实施例中可以采取其中任意一种,或者结合两种进行,遍历完成后,可以找出所有的时序路径。从时序模型中,得到时序路径的各组成部分的延时,并据此计算时序路径的到达时间,以及要求时间,根据到达时间和要求时间可以确定相应的时序余量(slack)。最后,根据时序余量,得到对应的静态时序分析结果,其中,可以根据时序余量进行排序,得出静态时序分析的关键时序路径,然后按照预先的设置给出时序报告。
静态时序分析的过程在建立完成时序图后即可进行,静态时序分析的结果不符合预期设计,则驱使设计人员修改网表,即进一步修改时序图,修改完成后,则继续进行静态时序分析,重复以上过程,直到最后静态时序分析的结果满足预计要求为止。
本实施例提供了一种静态时序分析方法,根据当前网表建立对应的时序图,在网表发生变化时,记录发生变化的网表中的实例及其变化的类型,根据发生变化的实例及其变化的类型,更新时序图,然后根据更新后的时序图进行静态时序分析,得出静态时序分析结果。通过本发明的实施,在网表发生变化时无需重新建立时序图,提高了时序图创建的效率,并进一步提升了静态时序分析的效率。
实施例二
本实施例提供一种静态时序分析装置,请参见图6,具体包括:
创建模块601,用于根据当前网表,建立对应的时序图;
记录模块602,用于在网表发生变化时,记录发生变化的网表中的实例及其变化的类型;
更新模块603,用于根据发生变化的实例及其变化的类型,更新时序图;
分析模块604,用于根据更新后的时序图进行静态时序分析,得出静态时序分析结果。
在数字集成电路的设计中,对电路的静态时序分析往往是必不可少的,静态时序分析可以根据电路内部逻辑和布线的延时,验证电路设计是否满足设计者的约束。静态时序分析的优点在于它可以在不输入测试向量的前提下穷尽所有的路径,可以对电路设计进行全面的时序功能检查,还能利用时序分析的结果来优化EDA流程中综合,布局布线等过程。
在本实施例中,首先需要对初始网表,建立对应的时序分析的时序图。请参考图1,图1中的时序图基于网表文件,对端口,实例的管脚,分别建立时序节点,并根据时序模型和连线关系建立时序节点之间的时序约束,最终组成一个时序图。
实例是指对某个设计对象的实现,这一过程称之为实例化;在本实施例中,创建模块601还可以用于:
遍历网表中的所有对端口,并根据对端口信息建立时序节点;
遍历网表中的实例的管脚,并根据管脚信息建立时序节点;
根据时序约束关系,并结合对端口信息的时序节点、管脚信息的时序节点,建立时序图。
其中,根据对端口信息建立时序节点,即建立对端口类型的时序节点;根据管脚信息建立时序节点,即建立实例类型的时序节点。时序节点之间会有一定的时序约束关系,在相应的时序节点之间通过连线建立连线类型的时序约束。或者,还可以根据实例对应的时序模型,建立实例类型的时序约束。
此外,在创建时序图中,还可以根据时序路径的定义,标记对应时序路径的起点和终点的时序节点,根据时序路径的起点和终点来辅助进行时序图的建立。
此外,在创建时序图时,如果实例具有层次结构,则可以先对该实例按照上述的流程建立一个时序图,然后在打平到总的时序图中,这样做可以使建立时序图更简单清晰。
在利用创建的时序图进行静态时序分析时,如果发现设计不符合要求,就需要对网表进行调整,相应的,对网表的调整对应于对时序图中的对应的实例的调整,也就是,发生变化的网表中的实例,及其变化的类型。
在本实施例中,记录模块602还可以用于:将发生变化的实例添加至预设的变化列表中;实例的变化类型则可以包括:修改实例信息、增加实例信息以及删除实例信息中的任意一种或多种。发生变化的网表,具体到实例中,则可以包括:将某实例的管脚或者连线关系进行调整,将某实例的位置调整,或者在网表中增加实例,或者将网表中已有的实例移除。
在本实施例中,更新模块603还可以用于:
若实例的变化类型是修改了实例信息,则根据发生变化的实例的时序节点,删除时序节点之前的时序约束,并重新建立新的时序约束。
如果是修改了实例信息,这里的修改可以包括实例上的连线发生了变化,也可以是实例的布局位置发生了变化;如果是实例上的连线发生了变化,根据发生变化的实例上的时序节点,删除该时序节点以前的时序约束,即与该时序节点相关的时序约束,重新建立新的时序约束;如果是实例的布局位置发生了变化,即实例的位置发生了改变,该实例从原位置移动到了新的位置,如果在之前的位置已经没有了实例,则直接将原位置的实例图删除;如果之前的位置上有其他实例,则对原位置的实例的时序图进行更新,可以按照新增实例处理,而原来的改变了布局位置的实例则需要创建该实例的时序图,将原位置的时序图和新位置的时序图都打平到总的时序图中。
若实例的变化类型是新增实例信息,则根据新增的实例信息确定时序节点,并将时序节点与当前的时序图中的时序节点建立时序约束。
如果是新增实例信息,则需要建立该实例的时序图,然后将该时序图打平到总的时序图中;增加新的实例,则必然会增加新的时序约束,进而会增加新的时序节点,根据设计人员的设计将新增的时序节点和原有的时序节点之间建立时序约束,利用时序约束将新增的时序节点和总的时序图中的时序节点连接起来即完成了打平处理。
若实例的变化类型是删除实例信息,则遍历被删除的实例的所有时序节点,根据时序节点确定与时序节点相关的时序约束,并移除时序节点和时序约束。
如果是删除实例信息,则需要遍历该实例的所有时序节点,根据时序约束关系,找到与时序节点相连的源时序节点和目的时序节点,更新输出和输入时序约束,然后,从时序图中移除时序节点和相应的时序约束,达到最终删除被删除的实例的所有时序节点和时序约束的目的。
当变化列表中的所有操作更新完时序图后,遍历时序图中所有时序路径信息,生成相应的静态时序分析结果,即:进行静态时序分析。
在本实施例中,分析模块604还可以用于:
对时序图进行时序检查,时序检查至少包括:检查时序图中是否有环路;
遍历时序图,遍历包括前向遍历和/或逆向遍历,确定所有的时序路径;
根据时序路径的各组成部分的延时,确定时序路径的到达时间和要求时间,并进一步确定时序余量;
根据时序余量,生成静态时序分析结果。
具体的,请参考图7,本实施例中的静态时序分析过程可以包括:
S701、根据用户约束文件,在时序图的时序节点上建立时钟约束;
S702、对时序图做时序检查,主要包括是否有环路等方面的检查;
S703、对时序图做深度遍历,可以从类型为时序路径起点的时序节点根据时序约束做前向遍历,或者从类型为时序路径终点的时序节点根据时序约束做逆向遍历,遍历完成后,找出所有的时序路径;
S704、从时序模型中得到时序路径各组成部分的延时,计算时序路径的到达时间以及要求时间,并进一步计算时序余量;
S705、按照时序余量做排序,得出时序分析的关键路径,并按照用户设置给出时序报告提供给用户。
在本实施例中,静态时序分析的过程,首先,可以根据用户约束文件,在时序图的时序节点上建立时钟约束,对时序图做时序检查,这个检查过程主要是检查是否有环路等方面的检查。而遍历时序图,可以从类型为时序路径的起点的时序节点根据时序约束做前向遍历,或者从类型为时序路径终点时序节点根据时序约束做逆向遍历,前向遍历和逆向遍历都是可行的遍历方案,在本实施例中可以采取其中任意一种,或者结合两种进行,遍历完成后,可以找出所有的时序路径。从时序模型中,得到时序路径的各组成部分的延时,并据此计算时序路径的到达时间,以及要求时间,根据到达时间和要求时间可以确定相应的时序余量(slack)。最后,根据时序余量,得到对应的静态时序分析结果,其中,可以根据时序余量进行排序,得出静态时序分析的关键时序路径,然后按照预先的设置给出时序报告。
静态时序分析的过程在建立完成时序图后即可进行,静态时序分析的结果不符合预期设计,则驱使设计人员修改网表,即进一步修改时序图,修改完成后,则继续进行静态时序分析,重复以上过程,直到最后静态时序分析的结果满足预计要求为止。
本实施例提供了一种静态时序分析装置,根据当前网表建立对应的时序图,在网表发生变化时,记录发生变化的网表中的实例及其变化的类型,根据发生变化的实例及其变化的类型,更新时序图,然后根据更新后的时序图进行静态时序分析,得出静态时序分析结果。通过本发明的实施,在网表发生变化时无需重新建立时序图,提高了时序图创建的效率,并进一步提升了静态时序分析的效率。
显然,本领域的技术人员应该明白,上述本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在计算机存储介质(ROM/RAM、磁碟、光盘)中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。所以,本发明不限制于任何特定的硬件和软件结合。
以上内容是结合具体的实施方式对本发明实施例所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。