本发明涉及集成电路计算机辅助设计领域,尤其涉及一种库单元时延功耗状态完整性的检查方法。
背景技术:
在标准单元库、I/O库以及IP器件的时延和功耗定义中,为了计算的准确性,模型都是分不同的状态定义的。在库文件中,时延功耗模型有三种定义格式:leakage_power()、internal_power()及timing(),状态则是用属性when定义在不同的格式中。
而现在的库文件都是由siliconsmart以及liberate等工具自动生成,由于提取库中模型的选项较多,会出现状态定义混乱的情况,目前没有完整的解决方案,因而需要检查状态的完整性。
图1为现有技术中单元及管脚状态定义格式图。在时延和功耗模型中,有三种类型的状态定义需要检查完备性,截取其中的片段进行说明,如图1所示:leakage_power()定义在cell的下一层,分不同的状态定义具体功耗值;internal_power()定义在pin的下一层,分不同的状态,其中有些有定义related_pin,有些没有定义related_pin;timing()也定义在pin的下一层,分不同的状态,不同的timing_type,但是必须定义related_pin。
直观的检查状态完整性的方法,是通过选择所有的输入管脚(pin)进行状态枚举,然后比对枚举结果和出现的状态。
然而实际情况并没有这么简单,模型类型以及输出pin定义的功能(function)格式不同时,状态定义的规则也会不同。并且,还存在双输出、三态、状态表,以及ff和latch等定义更复杂的情况。此时,就需要根据输入输出pin的名称,以及定义的function内容,过滤出可行的状态。
一般情况下,库单元不同模型中状态定义需要满足以下条件:
1)leakage_power()状态,包含有输出pin的状态,利用function定义内容检查,进行布尔表达式的分析,判断哪些状态是可行的;
2)timing()状态,定义在两个端点之间(arc)的时序关系,包括一个输入pin和一个输出pin,输入pin的信号变化会引起输出pin的信号变化,也就是说状态不能确定输出的信号;
3)internal_power()状态,此种状态比较特殊,当定义在两个端点之间(arc)时和timing()状态类似;当定义在在输入pin时,该输入pin的信号变化不会引起输出的变化,也就是说状态能确定输出信号。
因而,提出一种库单元时延功耗状态完整性的检查方法,能够检查功耗时延模型中状态定义的完备性,帮助设计者以及库的提取者得到完整以及规范的库文件数据,成为亟待解决的问题。
技术实现要素:
为了解决现有技术存在的不足,本发明的目的在于提供一种库单元时延功耗状态完整性的检查方法,可以检查功耗时延模型中状态定义的完备性,帮助设计者以及库的提取者得到完整以及规范的库文件数据。
为实现上述目的,本发明提供的库单元时延功耗状态完整性的检查方法,包括以下步骤:
(1)获取单元库中定义的所有状态集合,组成目标集合;(2)根据所有管脚的名称枚举出所有状态集合,组成状态总集合;(3)根据单元的功能定义,以及不同模型的特点从所述目标集合中求出非法状态集合;(4)基于所述非法状态集合,比较所述状态总集合和所述目标集合,得出重复和缺失的状态集合。
所述步骤(1)进一步包括:针对每一个单元,抽取internal_power()、leakage_power()及timing()定义的状态,组成所述目标集合。
所述步骤(2)进一步包括以下步骤:
(21)通过所述目标集合中的状态和单元定义的管脚方向,确定关联的输入及输出管脚的集合;(22)根据输入管脚,得到状态的个数。
所述步骤(3)进一步包括:首先,选出不符合标准单元功能和三态定义的状态;然后,选出不符合模型特点的状态,得到所述非法状态集合。
所述步骤(4)进一步包括:扣除掉所述目标集合中属于所述非法状态集合的部分,得到合法的目标集合;扣除掉所述状态总集合属于所述非法状态集合的部分,得到合法的状态参考集合;求出所述合法的参考集合中多于所述合法的目标集合的部分,得到定义缺失的状态集合;所述目标集合中,定义的状态重复出现的为冗余状态集合。
本发明提供的库单元时延功耗状态完整性的检查方法,通过检查定义时延和功耗的条件,对时序单元库(Timing Library)中的状态(condition)完备性进行分析,查找出错误定义、重复定义,以及遗漏的状态。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,并与本发明的实施例一起,用于解释本发明,并不构成对本发明的限制。在附图中:
图1为现有技术中单元及管脚状态定义格式图;
图2为根据本发明的库单元时延功耗状态完整性的检查方法流程图;
图3为根据本发明的数字和状态的转换图;
图4为根据本发明的状态规则图;
图5为根据本发明的状态集合运算图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
本发明提供的库单元时延功耗状态完整性的检查方法,通过检查定义时延和功耗的条件,对时序单元库(Timing Library)中的状态(condition)完备性进行分析,查找出错误定义、重复定义,以及遗漏的状态。
首先,需要获取状态定义中的单元的输入和输出pin;然后,根据不同模型的特点,进行功能(function)分析,过滤错误的状态,错误状态集和用户提供的状态集的交集,可得出用户集合中错误的状态;最后,比对用户提供的状态集和所有正确的状态集合,可得出缺失的和重复的状态。
图2为根据本发明的库单元时延功耗状态完整性的检查方法流程图,下面将参考图2,对本发明的库单元时延功耗状态完整性的检查方法进行详细描述。
在步骤201,准备需要检查的标准单元时序库文件,并读入EDA工具中;
用户在单元库中定义的所有状态集合,就是需要比较的目标集合Set_tar。
在该步骤中,针对每一个单元,抽取internal_power()、leakage_power()及timing()定义的状态,组成目标集合Set_tar。
以timing()为例,按照arc整理出所有的when定义的状态,这些状态组成目标集合Set_tar。
internal_power()及leakage_power()也整理出所有的when定义的状态,这些状态组成目标集合Set_tar。
在步骤202,根据所有管脚(pin)的名称枚举出所有状态总集合Set_ref;
(1)通过目标集合Set_tar中的状态和单元定义的管脚方向,确定关联的输入及输出pin的集合;
(2)数字信号只有0、1两种,根据输入pin的个数N,状态的个数可有2的N次方种。
已知输入管脚(pin)的个数N和名字,可以枚举出2N种状态。
图3为根据本发明的数字和状态的转换图。参考图3,有A和B两个输入pin,可枚举出四种状态。因为输入pin的顺序是确定的,每一个数字对应一个状态,所以状态和数字可通过二进制自由转换。数字的操作比字符串的速度更快,只有在最后需要结果时,才把具体的状态用字符串输出。由此枚举出所有状态的总集即状态总集合Set_ref。
以timing()为例,每一条arc时序里存在的状态,可根据输入及输出管脚进行枚举,比如有三个输入pinA、pinB、pinC及一个输出pin Z。选取pinA和pinZ组成A->Z的arc,pinB和pinC的状态枚举出所有状态BC、!BC、B!C、!B!C,这四个状态组成arc A->Z的状态总集合Set_ref;
在步骤203,根据单元的功能定义,以及不同模型的特点从目标集合Set_tar中求出非法状态集合Set_ill;
首先选出不符合标准单元功能和三态定义的状态,然后选出不符合模型特点的状态,得到的就是非法状态集合。
其中,根据功能定义及输入pin的状态生成的二元决策图(BDD)可求出输出pin的状态。
下面解释,如何根据单元功能和三态属性定义,求出非法状态集合Set_ill。
图4为根据本发明的状态规则图。以一个两输入与门为例,参考图4,分析状态的合法性。这个与门包含了两个输入管脚(pin)A和B,包含的输出管脚(pin)Z的功能(function)定义是A&B。
在从pin A到pin Z的时序(arc)上定义timing(),当when=B时(B=1),不能确定pin Z的输出值,所以在从pin A到pin Z的arc下定义状态B是合法的状态;当when=!B(B=0)时,pin Z为0,确定了pin Z的输出,所以在从pin A到pin Z的时序arc下定义状态!B是不合法的。
在internal_power()里定义的状态就与在timing()里定义的完全不同了。
在pin A上定义internal_power(),当when=B(B=1)时,不能确定pin Z的输出值,所以在pin A下定义状态B是不合法的状态;当when=!B(B=0)时,pin Z肯定为0,确定了Z的输出,所以在pin A下定义状态!B是合法的。
在步骤204,基于非法状态集合,比较状态总集合和目标集合,得出重复和缺失的状态集合。
图5为根据本发明的状态集合运算图,如图5中公式所示,扣除掉用户给出的需要比较的目标集合Set_tar中属于非法状态集合Set_ill的部分,得到合法(即符合规则)的目标集合Set_tar’;同时,扣除掉状态总集合Set_ref属于非法状态集合Set_ill的部分,得到合法的状态参考集合Set_ref’。在上述过程中,可以根据不同模型的特点,及功能定义的分析,过滤掉一部分错误的状态。最后,求出合法的参考集合Set_ref’中多于合法的目标集合Set_tar’的部分,得到用户定义缺失的状态集合Set_missing。而用户定义的目标集合Set_tar中,如果有重复出现的则是冗余状态集合Set_redundant。
本领域普通技术人员可以理解:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。