一种库单元时延功耗状态完整性的检查方法与流程

文档序号:11063610阅读:407来源:国知局
一种库单元时延功耗状态完整性的检查方法与制造工艺

本发明涉及集成电路计算机辅助设计领域,尤其涉及一种库单元时延功耗状态完整性的检查方法。



背景技术:

在标准单元库、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。

本领域普通技术人员可以理解:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1