专利名称:组合逻辑电路逻辑参数提取激励波形的产生方法
技术领域:
本发明涉及一种集成电路的辅助设计方法,特别是一种针对集成电路的组合逻辑 单元电路逻辑参数提取所需要的激励波形的产生方法。
背景技术:
在当今的专用集成电路ASIC设计中,基于标准单元的集成电路CBIC设计方法占 有非常重要的地位。随着超大规模集成电路的飞速发展,集成电路的设计、制造工艺更新 越来越快,标准单元的逻辑参数,如时序、功耗、以及建立时间、保持时间也必须随工艺的进 步而不断更新。标准单元逻辑参数的提取,一般是由提取人员搭建仿真环境,给各标准单 元适当的激励波形,采用仿真软件工具“以集成电路为重点的模拟程序” SPICE (Simulation Program withlntegrated Circuit Emphasis),如新思 SYNOPSYS 公司的仿真工具 HSPICE, 来得到各需要的参数。激励波形的正确性直接决定了所提取的逻辑参数的正确性,不同单 元在提取不同参数时都需要不同的激励波形,所以激励波形的产生非常关键,并且工作繁 重。传统的手工或半自动的激励波形生成方法,其效率低下,难以避免引入人工误差,不能 保证激励波形的完备性。激励波形的自动生成,是指根据逻辑参数的特点,在分析电路功能 的基础上,不考虑实际的电路负载和实际的输入斜率,从逻辑上给出提取各逻辑参数所对 应的激励波形。在一套完整的标准单元中,一般含有数十种上百个的组合逻辑单元和时序 逻辑单元,其中组合逻辑单元,数量众多,逻辑功能相对简单,输出是输入的函数,需要提取 的参数也较为简单,典型的情况为输入管脚电容、泄漏功耗、时序信息和内部功耗,其中输 入管脚电容,泄漏功耗一般和单元逻辑功能无关,对各种单元都采用相同的处理方法,通常 意义上的激励波形自动生成不包含这两个部分。
在逻辑参数库中的逻辑参数,通常是以输出管脚发生特定翻转(上升或下降)时, 描述该逻辑单元的各参数的。只有明确该逻辑单元的逻辑功能,才能知道各输入管脚处于 何种状态时,对应输出管脚才能够发生逻辑参数库中所需的翻转。现有技术的其它激励波 形自动产生方法,需要依赖对标准单元的逻辑功能(function)进行描述,然后利用该逻辑 功能通过一定算法产生各种参数所需的激励波形;逻辑功能输入是激励波形产生的前提条 件。通过从电路网表中了解管脚名并给出功能描述(function)的方式,是一件比较繁琐的 事情,较为耗时,并且由于仍然是人工操作,存在引入人为误差的风险。另一方面,如果是逻 辑功能相对复杂的组合逻辑单元或者IP (Intellectual Property,知识产权)模块,对其 功能描述可能需要使用真值表的方式加以描述,就更容易出错和更加繁琐了。如果功能描 述(function)错误,则该逻辑单元的参数结果将是错误的,很难进行修改,只能重新进行 仿真。发明内容
本发明的目的是提供一种组合逻辑电路逻辑参数提取激励波形的产生方法,要解 决的技术问题是减小组合逻辑电路逻辑参数提取过程中的人为误差,生成高效、正确、简3练、完备的激励波形。
本发明采用以下技术方案一种组合逻辑电路逻辑参数提取激励波形的产生方 法,包括以下步骤一、由用户向计算机输入spice仿真的工艺模型文件和电路网表;二、计 算机根据电路网表采用spice工具进行仿真,得到用于仿真集成电路内部功耗和时序所需 的激励波形;三、计算机用该激励波形作为spice仿真激励,编写spice仿真文件,然后调 用spice仿真工具,执行该仿真文件的内容,形成测量集成电路逻辑单元的功耗(power), 单元延时(cell_delay),输入输出沿延时(tansition)信息的spice仿真序列;四、计算机 根据spice仿真序列对集成电路进行仿真后,产生测量信息的结果文件,运行该文件将仿 真的参数信息添加到synopsys综合库文件的格式中;五、用户向synopsys综合库文件中添 加集成电路各逻辑单元中每个输出管脚与各输入管脚的逻辑关系。
本发明的工艺模型文件根据集成电路制造商的流片工艺确定。
本发明的电路网表中包含需要测量逻辑参数的组合逻辑单元。
本发明的仿真工具采用新思公司的仿真工具Hspice。
本发明的计算机根据spice仿真序列对集成电路进行Hspice仿真后,产生.mtO 文件,将仿真的结果编写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)的激厉力波形,用于IlJ量集 成电路内部功耗和时序,接下来计算机产生测量各参数的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,单元延时celldelay,输入 输出沿延时tansition,输入管脚电容,漏功耗,建立保持时间参数信息的spice仿真序列 (即仿真激励波形)。
四、计算机根据spice仿真序列对集成电路进行仿真后,产生包含管脚电容、内部 功耗、时序测量信息的结果文件,例如若用Hspice仿真将产生.mtO文件,将仿真的结果编 写ksh格式的可执行命令(脚本文件),执行该命令(运行该文件)将仿真的参数信息添加 到synopsys综合库文件中,综合库的格式根据综合的情况一般是固定的,如图4所示典型 逻辑参数库的文件结构。也可手动一个个添加到综合库文件中,本发明主要强调组合逻辑 单元激励波形的产生方法和逻辑参数的测量方法,对逻辑参数产生后添加到库的过程可以 是任意的。
五、用户向新思Synopsys公司综合库文件中添加集成电路各逻辑单元中每个输 出管脚与各输入管脚的逻辑关系,即单元逻辑功能,完成这一过程后即完善了库文件。
对比现有技术和本发明的组合逻辑电路逻辑参数提取激励波形的产生方法,可以 发现,采用对组合逻辑单元的电路网表进行仿真来获得所需要的组合逻辑单元的逻辑功能 信息,避免了在激励波形生成和参数提取仿真中对逻辑功能输入的依赖,消除了由电路网 表生成最终逻辑参数之间的人为误差风险,而人工分析逻辑电路功能会造成理解上的误差 和测量激励文件的非完备性,造成参数测量的不完全,甚至会产生测量错误。本发明直接基5于目标组合逻辑单元的电路网表得到所需的激励波形,将使得对组合逻辑单元逻辑功能的 输入由整个提取工作的关键输入,变成了对结果的描述性输入,逻辑功能描述的正确性对 激励波形的生成和参数提取仿真过程不会造成影响,提高了整个建库过程的可靠性和灵活 性。
如图3、图5所示,以产生单个激励波形的方法为例,对本发明的方法进行说明
第一步,由用户将需要测量的组合逻辑电路单元电路网表,单元电路网表名,单元 电路单元名,输出管脚个数和spice模型参数文件输入到计算机,其中单元电路网表需要 满足格式在电路网表中,对电路名、各输入输出管脚名进行命名,需要把各输出管脚置于 输入管脚之前,输出管脚之间、输入管脚之间的顺序不限,单元电路的端口列表中不包含电 源管脚、地管脚。
第二步,利用单元电路单元名,计算机通过使用命令,如ksh格式的命令语句或脚 本,从单元电路网表中寻找到该单元电路的单元命名,由于该命名具有固定格式,并且要求 用户将输出管脚置于输入管脚之前,该命名语句将呈现如下格式
. SUBCKT单元名输出管脚1输出管脚2输出管脚3···输入管脚1输入管 脚2输入管脚3···
例如·SUBCKT AND2 Y AB
因此,结合输出管脚个数(1个)和单元名(AND2),计算机可以得到各输出管脚名 (Y)和输入管脚名(A,B)。
第三步,计算机利用该单元电路的单元名、各输入管脚名以及各输出管脚名采用 实例化语句实现该单元电路作为子模块的调用。所谓例化就是对子模块各个端口的定义和 实现对子模块的调用,其语法结构为χ调用名输出管脚名输入管脚名单元名;字母X是关 键字,调用名为用户任意选取,不重复即可;各管脚名顺序需要和单元电路网表中管脚顺序 一致,子模块实体化语句如下例Xand2 YAB AND2。
第四步,基于遍历Traversal的方法,计算机产生不同的输入激励组合,测量输出 管脚的翻转情况,对各种输入管脚的激励组合及对应的输出管脚的翻转情况进行记录,存 储在计算机中,形成相应的激励文件。激励文件的文件名将包含以下信息输出管脚翻转情 况、目标输入管脚(发生翻转的输入管脚)。
首先,用户给计算机输入N个输入管脚,N为至少1个,计算机从尚未被当作发生翻 转的目标管脚中任取一个输入管脚作为目标管脚,除去目标管脚之外的N-I个输入管脚依 次取不同的01(0代表低电平,1代表高电平)组合值。除目标管脚之外的其余输入管脚每 选定一种01组合,目标管脚发生上升翻转产生一个所需激励波形;每次完成后计算机判断 其余输入管脚是否已经遍历了所有的01组合状态,如果尚没有遍历所有的01组合状态,则 计算机为除目标管脚之外的其余输入管脚选择尚未遍历过的其他01组合,重复上述过程, 产生目标管脚上升翻转的所需激励波形;如果计算机判断其余输入管脚已经遍历了所有的 01组合状态,那么完成了该目标管脚的所有所需激励波形生成工作。下一步,计算机判断是 否将所有输入管脚都当作目标管脚处理过了,如果没有,则从尚未被当作发生翻转的目标 管脚的输入管脚中任取一个作为目标管脚,重复上述操作生成新的所需激励波形;如果计 算机判断所有输入管脚都作为目标管脚处理完成后,结束所需激励波形(对应流程图中的 “临时激励波形”)产生程序。6
其次,由已经得到的子模块实体化语句和上述得到的仿真单元电路功能所需的激 励波形,以及spice模型参数,计算机调用spice对单元电路进行仿真。在仿真过程中,计 算机会测量并纪录各输出管脚的变化情况(上升翻转,下降翻转,没有翻转),并纪录该次 仿真的各输入管脚状态(不发生翻转的输入管脚纪录它的逻辑电平,发生翻转的管脚纪录 它的管脚名)。当仿真单元电路功能所需的spice激励波形都得到处理之后,就完成了该步 操作。
上述产生仿真单元电路功能所需的spice激励波形,其目的是仿真不同的输入翻 转造成怎样的输出翻转,其内容为一个目标输入管脚的特定翻转(上升翻转)和其余输入 管脚的固定电平值(0为低电平;1为高电平)。为了全面了解该单元电路的输入输出关系, 该部分的仿真单元电路功能的spice激励波形就不能存在遗漏,需要完备全面。在这些所 需激励中,每一个输入管脚都需要充当目标输入管脚,发生上升翻转;并且在此时其余输入 管脚应该依次遍历各种可能的01电平的组合,如果共有N个输入管脚,应共有N个目标管 脚;对于每个目标管脚,其余输入管脚应有2~ (N-I)种组合,所以应该共有N* [2~ (N-I)]个 这样的激励波形。
遍历各种01组合是指,管脚各自独立取低电平逻辑0或者高电平逻辑1,全部这些 管脚的逻辑值构成了一个二进制数,或者一种01组合,这些管脚改变电平取值,就改变了 这个二进制数或者生成了一个新的01组合,当这些管脚无论再如何取值都不能再生成新 的二进制数或01组合时,就认为已经完成了 01组合的遍历。
如果有输出管脚发生了翻转,还将对该翻转与目标输入管脚翻转的相对关系,相 同或者相反进行区分。在生成的激励波形文件中,将包括产生该激励波形文件的所需激励 波形中的内容,即目标管脚管脚名和其余管脚及其电平值。如图5所示,逻辑参数库文件的 格式要求带有以下相关描述信息输出管脚名、关联管脚名related pin(即目标管脚)、其 余管脚状态、输出翻转和目标管脚的相互关系(相同或者相反),所以这些信息也将出现在 激励波形文件中,作为生成库文件时的辅助信息。激励波形信息和生成库文件时的辅助信 息,共同构成了激励波形文件。
计算机对输出管脚是否发生翻转是这样处理的计算机测量输出信号在开始阶段 电压值(设为vO)和最终阶段的电压值(设为vl),并计算电压差值deltav = vl-v0;计算 机将deltav与一个设定的电压精度值v_pre (如0. Iv)进行比较;如果deltav > +v_pre, 则输出发生上升翻转,如果deltav < -v_pre,则输出发生下降翻转,如果二者都不成立,则 输出不变。
如果有输出管脚发生了翻转,将对该翻转与目标输入管脚翻转的相对关系,即相 同或者相反翻转进行记录;如果没有发生翻转也将记录。
实施例1,逻辑单元二输入与门AND2,仿真用的硬件为装有Iinux系统的个人计 算机或工作站,使用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—ζ],,| grep "subckt.氺and2,,> tempi
该语句可以从包含多个单元电路网表的文件中,找到该任务对应的单元声明语句 并将其写入文件templ中。注意单元名and2前后都有空格。
根据输出管脚为1,计算机可以使用如下命令(ksh语言)
read a cell_name output 1 input < tempi (如果有两个输出管脚贝Ij为
read a cell_name output 1 output2 input < tempi ;依此类推)
这样,变量outputl中存储的就是输出管脚名Y,变量input中存储的就是输入管 脚名AB。
3)计算机利用该单元电路的单元名、各输入管脚名以及各输出管脚名生成子模块 实体化语句,计算机可以使用如下命令(ksh语言)
echo "X${cell_name}$outputl $input${cell_name}” > temp2
生成子模块实体化语句并将其写入文件temp2,需要使用时将读出即可。(如果是 两个输出管脚的则为echo "X${cell_name}$outputl $output2 $input${cell name},,> temp2依此类推。)
4)生成激励波形文件。
共得到两个激励波形文件stimu_YAl stimu_YBl ;激励波形文件内容分别为
stimu YAl outputYrelated_pinAsense01whenOwhenlBVAAGNDp_pwll VB B GND vh
上述激励波形文件内容各部分含义为(1)发生翻转的输出管脚名为Y ; (2)目标8输入管脚(发生上升翻转的输入管脚)为A ; C3)在输入管脚A发生上升翻转时,导致输出 管脚Y发生了上升翻转(01代表上升翻转,10代表下降翻转);(4)WhenO 此时其他输入管 脚中为低电平的管脚,无;(5)Whenl 此时其他输入管脚中为高电平的管脚B ;(6)VA A GND p_pwl 激励波形的第一行,表示在节点A和节点GND (地电平)之间加入名字为VA,值为p_ pwll的输入电压激励。p_pwll最后的1表示上升翻转;需要由用户给出带具体的时间点和 电压值的具体激励将该部分替代;该部分只起表示上升翻转的作用。(7)VB BGND vh:激励 波形的第二行,表示在节点B和节点GND (地电平)之间加入名字为VB,值为vh的输入电压 激励。vh需要由用户由具体的电压值代替,只表示输入高电平的含义。
文件名stimu_YAl的含义为输出发生翻转的管脚为Y,输入发生翻转的管脚为A,1表示该激励为本系列激励中的第一个。
stimu YBl :outputYrelated_pinBsense01whenOwhenlAVBBGNDp_pwllVAAGNDvh
如图4所示,为典型逻辑参数库的文件结构图,图示了 synopsys公司的逻辑 综合库的结构框架,包括管脚信息,功耗power,单元延时celldelay,输入输出沿延时 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语句结束。
权利要求
1.一种组合逻辑电路逻辑参数提取激励波形的产生方法,包括以下步骤一、由用户 向计算机输入spice仿真的工艺模型文件和电路网表;二、计算机根据电路网表采用spice 工具进行仿真,得到用于仿真集成电路内部功耗和时序所需的激励波形;三、计算机用该激 励波形作为spice仿真激励,编写spice仿真文件,然后调用spice仿真工具,执行该仿真 文件的内容,形成测量集成电路逻辑单元的功耗(power),单元延时(celldelay),输入输 出沿延时(tansition)信息的spice仿真序列;四、计算机根据spice仿真序列对集成电路 进行仿真后,产生测量信息的结果文件,运行该文件将仿真的参数信息添加到synopsys综 合库文件的格式中;五、用户向synopsys综合库文件中添加集成电路各逻辑单元中每个输 出管脚与各输入管脚的逻辑关系。
2.根据权利要求1所述的组合逻辑电路逻辑参数提取激励波形的产生方法,其特征在 于所述工艺模型文件根据集成电路制造商的流片工艺确定。
3.根据权利要求2所述的组合逻辑电路逻辑参数提取激励波形的产生方法,其特征 在于所述电路网表中包含需要测量逻辑参数的组合逻辑单元。
4.根据权利要求3所述的组合逻辑电路逻辑参数提取激励波形的产生方法,其特征在 于所述仿真工具采用新思公司的仿真工具Hspice。
5.根据权利要求4所述的组合逻辑电路逻辑参数提取激励波形的产生方法,其特征在 于所述计算机根据spice仿真序列对集成电路进行Hspice仿真后,产生.mtO文件,将仿 真的结果编写ksh格式的执行命令,执行该命令将仿真的参数信息添加到synopsys综合库 文件。
全文摘要
本发明公开了一种组合逻辑电路逻辑参数提取激励波形的产生方法,要解决的技术问题是减小组合逻辑电路逻辑参数提取过程中的人为误差。本发明的产生方法,包括以下步骤向计算机输入仿真的工艺模型文件和电路网表,计算机进行仿真,得到激励波形,计算机用该激励波形作为仿真激励,形成仿真序列,计算机根据仿真序列对集成电路进行仿真,产生测量信息的结果文件,将仿真的参数信息添加到综合库文件的格式中。本发明与现有技术相比,采用对组合逻辑单元的电路网表进行仿真来获得所需要的组合逻辑单元的逻辑功能信息,避免了在激励波形产生和参数提取仿真中对逻辑功能输入的依赖,消除了由电路网表生成最终逻辑参数之间的人为误差风险。
文档编号G06F17/50GK102033990SQ20101056687
公开日2011年4月27日 申请日期2010年11月30日 优先权日2010年11月30日
发明者刘建新, 张满仓, 王亮, 祝昌华, 谢文刚, 贾柱良 申请人:深圳市国微电子股份有限公司