首页> 中国专利> 组合逻辑电路逻辑参数提取激励波形的产生方法

组合逻辑电路逻辑参数提取激励波形的产生方法

摘要

本发明公开了一种组合逻辑电路逻辑参数提取激励波形的产生方法,要解决的技术问题是减小组合逻辑电路逻辑参数提取过程中的人为误差。本发明的产生方法,包括以下步骤:向计算机输入仿真的工艺模型文件和电路网表,计算机进行仿真,得到激励波形,计算机用该激励波形作为仿真激励,形成仿真序列,计算机根据仿真序列对集成电路进行仿真,产生测量信息的结果文件,将仿真的参数信息添加到综合库文件的格式中。本发明与现有技术相比,采用对组合逻辑单元的电路网表进行仿真来获得所需要的组合逻辑单元的逻辑功能信息,避免了在激励波形产生和参数提取仿真中对逻辑功能输入的依赖,消除了由电路网表生成最终逻辑参数之间的人为误差风险。

著录项

  • 公开/公告号CN102033990A

    专利类型发明专利

  • 公开/公告日2011-04-27

    原文格式PDF

  • 申请/专利权人 深圳市国微电子股份有限公司;

    申请/专利号CN201010566873.0

  • 申请日2010-11-30

  • 分类号G06F17/50(20060101);

  • 代理机构44101 深圳市中知专利商标代理有限公司;

  • 代理人孙皓;林虹

  • 地址 518057 广东省深圳市南山区高新技术产业园南区高新南一道国微大厦

  • 入库时间 2023-12-18 02:05:01

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-11-08

    未缴年费专利权终止 IPC(主分类):G06F17/50 专利号:ZL2010105668730 申请日:20101130 授权公告日:20120926

    专利权的终止

  • 2013-04-10

    专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F17/50 变更前: 变更后: 申请日:20101130

    专利权人的姓名或者名称、地址的变更

  • 2012-09-26

    授权

    授权

  • 2011-06-15

    实质审查的生效 IPC(主分类):G06F17/50 申请日:20101130

    实质审查的生效

  • 2011-04-27

    公开

    公开

说明书

技术领域

本发明涉及一种集成电路的辅助设计方法,特别是一种针对集成电路的组合逻辑单元电路逻辑参数提取所需要的激励波形的产生方法。

背景技术

在当今的专用集成电路ASIC设计中,基于标准单元的集成电路CBIC设计方法占有非常重要的地位。随着超大规模集成电路的飞速发展,集成电路的设计、制造工艺更新越来越快,标准单元的逻辑参数,如时序、功耗、以及建立时间、保持时间也必须随工艺的进步而不断更新。标准单元逻辑参数的提取,一般是由提取人员搭建仿真环境,给各标准单元适当的激励波形,采用仿真软件工具“以集成电路为重点的模拟程序”SPICE(Simulation Program withIntegrated Circuit Emphasis),如新思SYNOPSYS公司的仿真工具HSPICE,来得到各需要的参数。激励波形的正确性直接决定了所提取的逻辑参数的正确性,不同单元在提取不同参数时都需要不同的激励波形,所以激励波形的产生非常关键,并且工作繁重。传统的手工或半自动的激励波形生成方法,其效率低下,难以避免引入人工误差,不能保证激励波形的完备性。激励波形的自动生成,是指根据逻辑参数的特点,在分析电路功能的基础上,不考虑实际的电路负载和实际的输入斜率,从逻辑上给出提取各逻辑参数所对应的激励波形。在一套完整的标准单元中,一般含有数十种上百个的组合逻辑单元和时序逻辑单元,其中组合逻辑单元,数量众多,逻辑功能相对简单,输出是输入的函数,需要提取的参数也较为简单,典型的情况为输入管脚电容、泄漏功耗、时序信息和内部功耗,其中输入管脚电容,泄漏功耗一般和单元逻辑功能无关,对各种单元都采用相同的处理方法,通常意义上的激励波形自动生成不包含这两个部分。

在逻辑参数库中的逻辑参数,通常是以输出管脚发生特定翻转(上升或下降)时,描述该逻辑单元的各参数的。只有明确该逻辑单元的逻辑功能,才能知道各输入管脚处于何种状态时,对应输出管脚才能够发生逻辑参数库中所需的翻转。现有技术的其它激励波形自动产生方法,需要依赖对标准单元的逻辑功能(function)进行描述,然后利用该逻辑功能通过一定算法产生各种参数所需的激励波形;逻辑功能输入是激励波形产生的前提条件。通过从电路网表中了解管脚名并给出功能描述(function)的方式,是一件比较繁琐的事情,较为耗时,并且由于仍然是人工操作,存在引入人为误差的风险。另一方面,如果是逻辑功能相对复杂的组合逻辑单元或者IP(Intellectual Property,知识产权)模块,对其功能描述可能需要使用真值表的方式加以描述,就更容易出错和更加繁琐了。如果功能描述(function)错误,则该逻辑单元的参数结果将是错误的,很难进行修改,只能重新进行仿真。

发明内容

本发明的目的是提供一种组合逻辑电路逻辑参数提取激励波形的产生方法,要解决的技术问题是减小组合逻辑电路逻辑参数提取过程中的人为误差,生成高效、正确、简练、完备的激励波形。

本发明采用以下技术方案:一种组合逻辑电路逻辑参数提取激励波形的产生方法,包括以下步骤:一、由用户向计算机输入spice仿真的工艺模型文件和电路网表;二、计算机根据电路网表采用spice工具进行仿真,得到用于仿真集成电路内部功耗和时序所需的激励波形;三、计算机用该激励波形作为spice仿真激励,编写spice仿真文件,然后调用spice仿真工具,执行该仿真文件的内容,形成测量集成电路逻辑单元的功耗(power),单元延时(cell_delay),输入输出沿延时(tansition)信息的spice仿真序列;四、计算机根据spice仿真序列对集成电路进行仿真后,产生测量信息的结果文件,运行该文件将仿真的参数信息添加到synopsys综合库文件的格式中;五、用户向synopsys综合库文件中添加集成电路各逻辑单元中每个输出管脚与各输入管脚的逻辑关系。

本发明的工艺模型文件根据集成电路制造商的流片工艺确定。

本发明的电路网表中包含需要测量逻辑参数的组合逻辑单元。

本发明的仿真工具采用新思公司的仿真工具Hspice。

本发明的计算机根据spice仿真序列对集成电路进行Hspice仿真后,产生.mt0文件,将仿真的结果编写ksh格式的执行命令,执行该命令将仿真的参数信息添加到synopsys综合库文件。

本发明与现有技术相比,采用对组合逻辑单元的电路网表进行仿真来获得所需要的组合逻辑单元的逻辑功能信息,避免了在激励波形产生和参数提取仿真中对逻辑功能输入的依赖,消除了由电路网表生成最终逻辑参数之间的人为误差风险,直接基于目标组合逻辑单元的电路网表得到所需的激励波形,将对组合逻辑单元逻辑功能的输入由整个提取工作的关键输入,变成了对结果的描述性输入,逻辑功能描述的正确性对激励波形的产生和参数提取仿真过程不会造成影响。

附图说明:

图1-1是现有技术逻辑参数建库流程图。

图1-2是本发明的方法实施例流程图。

图2-1是图1-1的简化流程示意图。

图2-2是图1-2的简化流程示意图。

图3是本发明实施例产生激励波形的流程图。

图4是典型逻辑参数库的文件结构图。

图5是本发明实施例产生激励波形的完整流程图。

图6是典型spice仿真的文件图(一)。

图7是典型spice仿真的文件图(二)。

图8是实施例1的单元电路网表的文件内容图。

具体实施方式:

下面结合附图和实施例对本发明作进一步详细说明。

如图1-1和图2-1所示,现有技术的组合逻辑电路逻辑参数提取激励波形的产生方法,由用户输入工艺文件、电路网表给计算机,并给出各逻辑单元中每个输出管脚与各输入管脚的逻辑关系,即单元逻辑功能,用户手动给出或计算机产生电路级模拟程序spice(Simulation Program with Integrated CircuitEmphasis)的激励波形,用于测量集成电路内部功耗和时序,接下来计算机产生测量各参数的spice程序,对集成电路进行仿真,并将仿真的结果整理成综合工具synopsys的综合库文件进行存储。

如图1-2和图2-2所示,本发明的组合逻辑电路逻辑参数提取激励波形的产生方法,包括以下步骤:

一、由用户向计算机输入由集成电路制造商提供的可用于spice仿真的工艺模型文件和电路网表。

工艺模型文件根据流片工艺不同而不同,一般在集成电路设计之前首先要确定流片工艺,工艺模型文件由设计者向集成电路制造厂商索取,例如,如果芯片最终采用SMIC 0.18um的普通工艺流片形式,则主要包括的工艺文件有:1018_v2p4.lib、1018_v2p4.mdl、1018_v2p4_bjt.mdl和1018_v2p4_res.mdl,本发明对工艺模型文件无特殊要求,只要是合乎spice语法要求的工艺模型文件都能应用于本发明。现以上面提到的工艺文件为例,其中1018_v2p4.lib文件包含仿真工艺角的相关参数,1018_v2p4.mdl文件包含MOS管的工艺模型参数,1018_v2p4_bit.mdl包含双极晶体管BJT的工艺模型参数,1018_v2p4_res.mdl文件包含电阻的工艺模型参数。

电路网表中包含需要测量逻辑参数的组合逻辑单元,该单元以cdl网表的形式给出,是仿真和测量逻辑参数的主体。

二、计算机根据电路网表采用spice工具进行仿真,得到用于仿真集成电路内部功耗和时序所需的激励波形。

三、计算机用该激励波形作为spice仿真激励,编写spice仿真文件(仿真文件如图7所示),然后调用spice仿真工具,如新思Synopsys公司的仿真工具Hspice,执行sp脚本文件进行仿真,得到测量集成电路逻辑单元的功耗power,单元延时cell_delay,输入输出沿延时tansition,输入管脚电容,漏功耗,建立保持时间参数信息的spice仿真序列(即仿真激励波形)。

四、计算机根据spice仿真序列对集成电路进行仿真后,产生包含管脚电容、内部功耗、时序测量信息的结果文件,例如若用Hspice仿真将产生.mt0文件,将仿真的结果编写ksh格式的可执行命令(脚本文件),执行该命令(运行该文件)将仿真的参数信息添加到synopsys综合库文件中,综合库的格式根据综合的情况一般是固定的,如图4所示典型逻辑参数库的文件结构。也可手动一个个添加到综合库文件中,本发明主要强调组合逻辑单元激励波形的产生方法和逻辑参数的测量方法,对逻辑参数产生后添加到库的过程可以是任意的。

五、用户向新思Synopsys公司综合库文件中添加集成电路各逻辑单元中每个输出管脚与各输入管脚的逻辑关系,即单元逻辑功能,完成这一过程后即完善了库文件。

对比现有技术和本发明的组合逻辑电路逻辑参数提取激励波形的产生方法,可以发现,采用对组合逻辑单元的电路网表进行仿真来获得所需要的组合逻辑单元的逻辑功能信息,避免了在激励波形生成和参数提取仿真中对逻辑功能输入的依赖,消除了由电路网表生成最终逻辑参数之间的人为误差风险,而人工分析逻辑电路功能会造成理解上的误差和测量激励文件的非完备性,造成参数测量的不完全,甚至会产生测量错误。本发明直接基于目标组合逻辑单元的电路网表得到所需的激励波形,将使得对组合逻辑单元逻辑功能的输入由整个提取工作的关键输入,变成了对结果的描述性输入,逻辑功能描述的正确性对激励波形的生成和参数提取仿真过程不会造成影响,提高了整个建库过程的可靠性和灵活性。

如图3、图5所示,以产生单个激励波形的方法为例,对本发明的方法进行说明:

第一步,由用户将需要测量的组合逻辑电路单元电路网表,单元电路网表名,单元电路单元名,输出管脚个数和spice模型参数文件输入到计算机,其中单元电路网表需要满足格式:在电路网表中,对电路名、各输入输出管脚名进行命名,需要把各输出管脚置于输入管脚之前,输出管脚之间、输入管脚之间的顺序不限,单元电路的端口列表中不包含电源管脚、地管脚。

第二步,利用单元电路单元名,计算机通过使用命令,如ksh格式的命令语句或脚本,从单元电路网表中寻找到该单元电路的单元命名,由于该命名具有固定格式,并且要求用户将输出管脚置于输入管脚之前,该命名语句将呈现如下格式:

.SUBCKT  单元名  输出管脚1  输出管脚2  输出管脚3…  输入管脚1输入管脚2输入管脚3…

例如:.SUBCKT AND2  Y    A  B

因此,结合输出管脚个数(1个)和单元名(AND2),计算机可以得到各输出管脚名(Y)和输入管脚名(A,B)。

第三步,计算机利用该单元电路的单元名、各输入管脚名以及各输出管脚名采用实例化语句实现该单元电路作为子模块的调用。所谓例化就是对子模块各个端口的定义和实现对子模块的调用,其语法结构为:X调用名输出管脚名输入管脚名单元名;字母X是关键字,调用名为用户任意选取,不重复即可;各管脚名顺序需要和单元电路网表中管脚顺序一致,子模块实体化语句如下例:Xand2  Y  A  B  AND2。

第四步,基于遍历Traversal的方法,计算机产生不同的输入激励组合,测量输出管脚的翻转情况,对各种输入管脚的激励组合及对应的输出管脚的翻转情况进行记录,存储在计算机中,形成相应的激励文件。激励文件的文件名将包含以下信息:输出管脚翻转情况、目标输入管脚(发生翻转的输入管脚)。

首先,用户给计算机输入N个输入管脚,N为至少1个,计算机从尚未被当作发生翻转的目标管脚中任取一个输入管脚作为目标管脚,除去目标管脚之外的N-1个输入管脚依次取不同的01(0代表低电平,1代表高电平)组合值。除目标管脚之外的其余输入管脚每选定一种01组合,目标管脚发生上升翻转产生一个所需激励波形;每次完成后计算机判断其余输入管脚是否已经遍历了所有的01组合状态,如果尚没有遍历所有的01组合状态,则计算机为除目标管脚之外的其余输入管脚选择尚未遍历过的其他01组合,重复上述过程,产生目标管脚上升翻转的所需激励波形;如果计算机判断其余输入管脚已经遍历了所有的01组合状态,那么完成了该目标管脚的所有所需激励波形生成工作。下一步,计算机判断是否将所有输入管脚都当作目标管脚处理过了,如果没有,则从尚未被当作发生翻转的目标管脚的输入管脚中任取一个作为目标管脚,重复上述操作生成新的所需激励波形;如果计算机判断所有输入管脚都作为目标管脚处理完成后,结束所需激励波形(对应流程图中的“临时激励波形”)产生程序。

其次,由已经得到的子模块实体化语句和上述得到的仿真单元电路功能所需的激励波形,以及spice模型参数,计算机调用spice对单元电路进行仿真。在仿真过程中,计算机会测量并纪录各输出管脚的变化情况(上升翻转,下降翻转,没有翻转),并纪录该次仿真的各输入管脚状态(不发生翻转的输入管脚纪录它的逻辑电平,发生翻转的管脚纪录它的管脚名)。当仿真单元电路功能所需的spice激励波形都得到处理之后,就完成了该步操作。

上述产生仿真单元电路功能所需的spice激励波形,其目的是仿真不同的输入翻转造成怎样的输出翻转,其内容为一个目标输入管脚的特定翻转(上升翻转)和其余输入管脚的固定电平值(0为低电平;1为高电平)。为了全面了解该单元电路的输入输出关系,该部分的仿真单元电路功能的spice激励波形就不能存在遗漏,需要完备全面。在这些所需激励中,每一个输入管脚都需要充当目标输入管脚,发生上升翻转;并且在此时其余输入管脚应该依次遍历各种可能的01电平的组合,如果共有N个输入管脚,应共有N个目标管脚;对于每个目标管脚,其余输入管脚应有2^(N-1)种组合,所以应该共有N*[2^(N-1)]个这样的激励波形。

遍历各种01组合是指,管脚各自独立取低电平逻辑0或者高电平逻辑1,全部这些管脚的逻辑值构成了一个二进制数,或者一种01组合,这些管脚改变电平取值,就改变了这个二进制数或者生成了一个新的01组合,当这些管脚无论再如何取值都不能再生成新的二进制数或01组合时,就认为已经完成了01组合的遍历。

如果有输出管脚发生了翻转,还将对该翻转与目标输入管脚翻转的相对关系,相同或者相反进行区分。在生成的激励波形文件中,将包括产生该激励波形文件的所需激励波形中的内容,即目标管脚管脚名和其余管脚及其电平值。如图5所示,逻辑参数库文件的格式要求带有以下相关描述信息:输出管脚名、关联管脚名related pin(即目标管脚)、其余管脚状态、输出翻转和目标管脚的相互关系(相同或者相反),所以这些信息也将出现在激励波形文件中,作为生成库文件时的辅助信息。激励波形信息和生成库文件时的辅助信息,共同构成了激励波形文件。

计算机对输出管脚是否发生翻转是这样处理的:计算机测量输出信号在开始阶段电压值(设为v0)和最终阶段的电压值(设为v1),并计算电压差值deltav=v1-v0;计算机将deltav与一个设定的电压精度值v_pre(如0.1v)进行比较;如果deltav>+v_pre,则输出发生上升翻转,如果deltav<-v_pre,则输出发生下降翻转,如果二者都不成立,则输出不变。

如果有输出管脚发生了翻转,将对该翻转与目标输入管脚翻转的相对关系,即相同或者相反翻转进行记录;如果没有发生翻转也将记录。

实施例1,逻辑单元:二输入与门AND2,仿真用的硬件为装有linux系统的个人计算机或工作站,使用ksh语言或Hspice语言。

1)输入信息:

spice模型参数文件:1018_v2p4.lib,1018_v2p4.mdl(中兴国际0.18um工艺)

单元电路网表:and2.cdl(文件)

输入任务文件内容:

cdl_name    and2.cdl

cell_name   and2

output_num  1

                                                               

2)计算机通过使用如下例给出的命令从单元电路网表中寻找到该单元电路的单元声明(命名)语句,并获得各输入输出管脚名,该单元电路网表的文件内容如图8所示,计算机使用如下命令(ksh语言):

cat and2.cdl|tr“[A-Z]”“[a-z]”|grep“subckt.*and2”>temp1

该语句可以从包含多个单元电路网表的文件中,找到该任务对应的单元声明语句并将其写入文件temp1中。注意单元名and2前后都有空格。

根据输出管脚为1,计算机可以使用如下命令(ksh语言)

read a cell_name output1 input<temp1(如果有两个输出管脚则为:

read a cell_name output1 output2 input<temp1;依此类推)

这样,变量output1中存储的就是输出管脚名Y,变量input中存储的就是输入管脚名AB。

3)计算机利用该单元电路的单元名、各输入管脚名以及各输出管脚名生成子模块实体化语句,计算机可以使用如下命令(ksh语言):

echo“X${cell_name}$output1 $input${cell_name}”>temp2

生成子模块实体化语句并将其写入文件temp2,需要使用时将读出即可。(如果是两个输出管脚的则为:echo“X${cell_name}$output1 $output2 $input${cell name}”>temp2依此类推。)

4)生成激励波形文件。

共得到两个激励波形文件:stimu_YA1 stimu_YB1;激励波形文件内容分别为:

上述激励波形文件内容各部分含义为:(1)发生翻转的输出管脚名为Y;(2)目标输入管脚(发生上升翻转的输入管脚)为A;(3)在输入管脚A发生上升翻转时,导致输出管脚Y发生了上升翻转(01代表上升翻转,10代表下降翻转);(4)when0:此时其他输入管脚中为低电平的管脚,无;(5)when1:此时其他输入管脚中为高电平的管脚:B;(6)VA A GND p_pwl:激励波形的第一行,表示在节点A和节点GND(地电平)之间加入名字为VA,值为p_pwl1的输入电压激励。p_pwl1最后的1表示上升翻转;需要由用户给出带具体的时间点和电压值的具体激励将该部分替代;该部分只起表示上升翻转的作用。(7)VB BGND vh:激励波形的第二行,表示在节点B和节点GND(地电平)之间加入名字为VB,值为vh的输入电压激励。vh需要由用户由具体的电压值代替,只表示输入高电平的含义。

文件名stimu_YA1的含义为:输出发生翻转的管脚为Y,输入发生翻转的管脚为A,1表示该激励为本系列激励中的第一个。

如图4所示,为典型逻辑参数库的文件结构图,图示了synopsys公司的逻辑综合库的结构框架,包括管脚信息,功耗power,单元延时cell_delay,输入输出沿延时transition等部分,其中的具体数值正是需要本专利测量和填充的组合逻辑单元的逻辑参数信息。

如图6和图7所示,为典型spice仿真的文件,文件中调用了组合逻辑单元的电路网表和仿真工艺模型,例化了单元电路,设置了PVT(电源,工艺角,温度)和仿真控制条件等,另外也写出了测量相关逻辑参数的测量语句。图6中的子模块实例化语句(即子模块调用语句)部分和激励波形部分,即是需要通过ksh语句编写脚本用以填充的部分,其中子模块实例化语句和激励波形的生成前面已经介绍过。

如图7所示,为and2单元电路Spice仿真文件的实例,文件中首先使用.include和.lib语句来分别调用and2单元电路网表和1018_vap4.lib工艺库模型,其次设定PVT(电源,工艺角,温度)和仿真控制条件,然后使用.measure语句来测量相关逻辑参数以及X语句实现对and2单元电路的实例化(and2子模块电路网表如图8所示),最后给出and2单元电路A和B输入端激励波形。

如图8所示,为and2子模块电路网表,文件首行以.subckt语句开头定义了单元电路的单元名,输入输出端口名,然后描述单元电路内部各个器件的名称、连接关系、使用晶体管的类型以及尺寸,最后以.ends语句结束。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号