本发明属于半导体集成电路自动化设计领域,主要涉及原理图(Schematic)在设计过程中不同版本之间的差异比较。
背景技术:
集成电路设计者在电路原理图设计过程中,完成原理图设计后会进行电路仿真,如果仿真结果没有达到设计预期目标,则会修改原理图并重新进行仿真,甚至有可能会因为仿真结果不如上一次的设计而将修改撤消,如此不停循环迭代直到原理图符合设计预期为止。因此,在原理图的设计过程中,不可避免的会不断修改原理图设计,从而产生不同的原理图版本。
原理图设计者会比较原理图不同版本之间的具体差异,从而分析出引起仿真结果差异的原因,以便于改进电路拓扑结构或器件属性,因此理清不同版本的原理图之间的差异对设计者而言极为重要。对于电路设计者而言,差异主要包括电路拓扑结构、器件属性等影响仿真结果的关键差异;但是,对于原理图而言,差异体现在原理图数据库文件的任何一种改动,除了电路拓扑结构、器件属性等影响仿真结果的关键差异以外,对器件或者线网的物理位置挪动或者旋转镜像等也会造成原理图数据库文件的差异。此外,原理图数据库通常是由二进制文件组成,原理图设计者并不能直接“看清”不同版本的原理图之间的差异。
除了帮助原理图设计者分析影响仿真结果的原理图差异之外,一些特殊情况也可能需要对原理图的不同版本之间进行比较,并且会忽略器件的管脚可交换性引起的差异,因此直观的分析出不同版本之间的关键差异可以有效帮助原理图设计者提高工作效率。
技术实现要素:
(一)要解决的技术问题
本发明提供一种基于拓扑关系的原理图的版本比较方法,用于比较两个原理图版本之间的差异,能够忽略器件或者线网的物理位置挪动或者旋转镜像等物理坐标上的差异,以及器件的管脚可交换性引起的拓扑结构差异,根据电路连接的拓扑关系,只将原理图中的电路拓扑结构或器件属性等影响仿真结果的关键差异分析出来。
(二) 技术方案
本发明的技术方案包括如下步骤:
步骤1:读入原理图设计的两个不同版本,先进行层次拓扑关系比较,得出层次差异并同时生成对应单元(Cell)序列,对应单元由一对分别来自原理图两个不同版本的单元组成;
步骤2:按照逆拓扑序遍历对应单元序列,比较对应单元的局部数据,包括比较对应单元的所有器件(Instance),比较对应单元的所有线网(Wire),并得出对应单元之间的所有器件属性和线网连接的差异.
其中步骤1所述的层次拓扑关系比较具体包括:
步骤1.1:从顶层单元(Top Cell)出发遍历两个原理图,将单元的拓扑调用关系表示成两个以顶层单元为根节点的有向图;
步骤1.2:对两个有向图进行拓扑排序得到拓扑序列,节点到根节点的最长路径的长度定义为节点的深度,然后按照拓扑序遍历两个有向图的拓扑序列,将深度相同并且名字相同的单元形成对应单元,并且加入对应单元序列,将不能形成对应单元的单元直接记录成非对应单元;
其中步骤2所述的比较对应单元的所有器件,具体包括:
步骤2.1:对于给定的对应单元,任意选取两个版本中的一个单元,遍历被选单元内的所有器件,建立名字哈希表;
步骤2.2:遍历另外一个版本的单元内的所有器件,查找名字哈希表,若查找成功,即具有相同名字,则将这两个来自不同版本的一对器件标记为对应器件,若查找失败,则标记为差异器件;
步骤2.3:遍历哈希表中所有器件,对于没有成功标记成对应器件的器件则标记为差异器件;
步骤2.4:依次遍历所有对应器件,一一遍历器件的所有属性并比较各个属性值,属性包括器件类型和器件参数,若存在不相同属性值,则说明该组对应器件存在属性差异。
其中步骤2所述的比较对应单元的所有线网,具体包括:
步骤2.5:给所有器件赋予特征值,分别遍历对应单元中两个版本单元内的所有器件,对于标记为对应器件的则赋予一个唯一的特征值,对于标记为差异器件的则赋予特征值为0;
步骤2.6:给所有类型的器件管脚赋予特征值,对于不具有交换性的管脚赋予唯一的特征值,而对于可相互交换的一组管脚赋予相同的唯一特征值,对于单元引用类型的器件,则按照单元管脚内部连接的线网对应关系赋予唯一特征值,具有对应关系的线网所连接的单元管脚具有相同的特征值;
步骤2.7:分别遍历对应单元中两个版本的单元内所有线网,给每一个线网计算出一个特征值,该特征值等于线网连接的所有器件特征值与连接管脚特征值的乘积平方之和,即特征值=Sum( (器件特征值 x 连接管脚的特征值)^2);
步骤2.8:将具有相同特征值的线网收集在同一个集合,若一个集合中正好包含一对分别来自两个版本的线网,则标记这一对线网为对应线网,若一个集合只包含一个线网,则标记为差异线网,其他集合中的线网标记为可交换线网;
步骤2.9:若存在可交换线网,遍历所有对应器件,并依次遍历器件上的所有管脚,若管脚上所连接的线网为可交换线网,则检查对应器件相同管脚位置上所连接的线网,若属于同一个可交换线网集合,则直接将这一对可交换线网标记为对应线网并分别从原可交换线网集合中去除;
步骤2.10:若仍然存在可交换线网,遍历所有对应器件,并依次遍历器件上的所有管脚,若管脚上所连接的线网为可交换线网,则依次检查对应器件中具有相同特征值的可交换管脚位置上所连接的线网,若属于同一个可交换线网集合,则直接将这一对可交换线网标记为对应线网并分别从原可交换线网集合中去除;
步骤2.11:遍历所有对应器件,并依次遍历器件上的所有管脚,若管脚上所连接的线网不是对应线网,则检查对应器件相同管脚位置上所连接的线网,若不是对应线网,则直接将这一对管脚上连接的线网标记修改为有差异的对应线网,否则继续查看具有相同特征值的可交换管脚位置上所连接的线网,直到发现一个不是对应线网的管脚,则直接将这一对管脚上连接的线网标记修改为有差异的对应线网;
(三) 有益效果
本发明的技术方案,在比较原理图两个版本之间的差异时,并不比较器件或者线网的物理坐标位置,因此器件或线网挪动或者旋转镜像等造成的物理坐标上的差异会被忽略,同时比较过程中考虑了器件的管脚可交换性,可以忽略管脚可交换引起的拓扑结构差异,这样根据电路连接的拓扑关系,只将原理图中的电路拓扑结构或器件属性等影响仿真结果的关键差异分析出来,既帮助原理图设计者找出了关键差异,也忽略掉了无用的坐标等差异。
附图说明
图1 比较流程图
图2 实例的层次拓扑关系图
图3 实例的TOP单元版本1
图4 实例的TOP单元版本2
图5 实例的inv单元版本1
图6 实例的inv单元版本2
图7 实例的test单元版本1
图8 实例的test单元版本2
具体实施方式
本发明的总体流程如图1所示,为了方便理解技术方案,下面结合图2—图8中的举例,对本发明的具体实施方式作进一步详细描述。
举例说明:图3—图8是采用主流原理图设计工具绘制的一个原理图的两个不同版本,图2是整个原理图的层次拓扑关系图,版本1和版本2的层次拓扑关系一样,其中图3、图4分别是TOP对应单元的版本1和版本2,调用子单元inv、test,图5、图6分别是inv对应单元的版本1和版本2,图7、图8分别是test对应单元的版本1和版本2。针对这个实例,比较出版本1和版本2之间的差异,为了便于描述,成对出现单元、器件或线网等概念时一律将版本1的数据放在第一个,第二个则来自版本2。
具体实施步骤如下:
步骤1:读入两个原理图的版本,先进行层次拓扑关系比较:
步骤1.1:从顶层单元出发遍历两个原理图的版本,将单元的拓扑调用关系表示成两个以顶层单元TOP为根节点的有向图,如图2所示;
步骤1.2:对两个有向图进行拓扑排序,得到两个一样的拓扑序列{TOP,inv,test},节点到根节点的最长路径的长度定义为节点的深度,因此TOP单元深度为0,inv,test单元的深度均为1,按照拓扑序遍历两个有向图的拓扑序列,将深度相同并且名字相同的单元形成对应单元,因此形成对应单元序列(TOP,TOP),(inv,inv),(test,test),本实例没有非对应单元。
步骤2:按照逆拓扑序遍历对应单元序列,即(test,test),(inv,inv),(TOP,TOP)中的各个对应单元,比较对应单元的局部数据,包括比较对应单元的所有器件,比较对应单元的所有线网,并得出对应单元之间的所有器件属性和线网连接的差异。本实例中对应单元(TOP,TOP),(inv,inv)的两个版本数据之间没有做实质性修改,即没有"关键"差异,因此以对应单元(test,test)为例说明步骤2的具体步骤如下:
首先比较对应单元(test,test)的所有器件,具体步骤如下:
步骤2.1:选择版本1的单元test,遍历单元内所有器件,包括R0,R1,M0,M1,M2,M3,M4,M5,D0,建立名字哈希表;
步骤2.2:遍历版本2的单元test内所有器件,包括R0,R1,M0,M1,M2,M3,M4,M5,查找步骤2.1中建立的名字哈希表,以R0为例,哈希表中存在相同名字的器件,则标记版本1的R0和版本2的R0为对应器件,因此遍历所有器件后得到对应器件包括(R0,R0),(R1,R1),(M0,M0),(M1,M1),(M2,M2),(M3,M3),(M4,M4),(M5,M5).
步骤2.3:遍历步骤2.1中建立的哈希表,由于D0没有标记成对应器件,因此将版本1中的器件D0标记为差异器件;
步骤2.4:依次遍历所有对应器件, 包括(R0,R0),(R1,R1),(M0,M0),(M1,M1),(M2,M2),(M3,M3),(M4,M4),(M5,M5),一一遍历器件的所有属性并比较各个属性值,以(R0,R0)为例,器件类型相同,版本1中R0存在属性r并且r=800,版本2中R0同名属性r=200,属性值不相同,因此对应器件(R0,R0)存在属性差异;同理,对应器件(R1,R1)也存在属性差异;
即,器件比较后总共发现3处差异:D0差异器件,对应器件(R0,R0)和(R1,R1)的属性差异。
比较完器件,然后比较所有线网,具体步骤如下:
步骤2.5:给所有器件赋予特征值,对于标记为对应器件的赋予一个唯一的特征值,比如(R0,R0)是对应器件,因此赋值后版本1中的R0的特征值与版本2中的R0的特征值相同但是与其他器件不同,而差异器件D0的特征值为0,全部器件的特征值如下:
版本1器件 版本2器件 特征值
R0 R0 11
R1 R1 13
M0 M0 15
M1 M1 17
M2 M2 19
M3 M3 21
M4 M4 23
M5 M5 25
D0 0
步骤2.6:给所有器件管脚类型赋予特征值,电阻类型器件R0等的管脚有P/N两个,并且可以交换,因此具有相同的特征值,MOSFET器件M0等的管脚有D/G/S/B四个,其中D/S可以交换,二极管器件D0的管脚有P/N两个并且不能交换,因此器件管脚的特征值列表如下:
电阻类型器件管脚特征值表:
管脚 特征值
P 1
N 1
MOSFET类型器件管脚特征值表:
管脚 特征值
D 1
G 3
S 1
B 5
二极管类型器件管脚特征值表:
管脚 特征值
P 1
N 3
步骤2.7:分别遍历对应单元中两个版本的单元内所有线网,给每一个线网计算出一个特征值,以版本1中的线网BYP为例,线网BYP通过MOSFET的管脚G分别连接到M1和M4,M1的特征值17,M4的特征值23,管脚G的特征值3,因此线网BYP的特征值的计算等式为:
特征值=(17x3)^2+(23x3)^2,
即版本1的线网BYP的特征值=7362,同理计算出版本1和版本2所有线网的特征值;
步骤2.8:对计算特征值后的所有线网,将具有相同特征值的线网收集在同一个集合,可以得出如下集合:
集合1{{版本1的线网BIAS},{版本2的线网BIAS}}
集合2{{版本1的线网net1},{版本2的线网net1}}
集合3{{版本1的线网net2},{版本2的线网net2}}
集合4{{版本1的线网VDD!},{版本2的线网VDD!}}
集合5{{版本1的线网GND!},{版本2的线网GND!}}
集合6{{版本1的线网FB},{版本2的线网FB}}
集合7{{版本1的线网C2},{版本2的线网C2}}
集合8{{版本1的线网BYP},{}}
集合9{{版本1的线网C1},{}}
集合10{{},{版本2的线网BYP}}
集合11{{},{版本2的线网C1}}
对于集合中正好包含一对分别来自两个版本的线网集合,标记这一对线网为对应线网,集合1、集合2、集合3、集合4、集合5、集合6、集合7符合要求,因此得到对应线网(BIAS,BIAS), (net1,net1), (net2,net2), (VDD!,VDD!), (GND!, GND!), (FB,FB), (C2,C2);
对于集合中只包含一个线网的,直接标记为差异线网,版本1的线网BYP、C1,版本2的线网BYP、C1符合要求标记为差异线网;本实例中没有可交换线网;
步骤2.9:无可交换线网;
步骤2.10:无可交换线网;
步骤2.11:遍历所有对应器件,当遍历到对应器件(M1,M1)时,遍历(M1,M1)的管脚D/G/S/B,其中版本1的M1管脚G上连接BYP不是对应线网,因此检查对应版本2的M1管脚G,由于版本2的M1管脚G连接的线网BYP同样不是对应线网,则将版本1的线网BYP和版本2的线网BYP组成对应线网并修改标记为有差异的对应线网(BYP,BYP);同理可以发现有差异的对应线网(C1,C1);
即,经过比较对应单元(test,test)的所有线网,一共发现2处线网的差异:
(BYP,BYP), (C1,C1).
如此,经过对应单元(test,test)的比较,一共发现3处器件差异和2处线网差异:D0差异器件,对应器件(R0,R0)和(R1,R1)的属性差异,线网(BYP,BYP),线网(C1,C1),而实际上版本1中管脚BIAS与版本2中管脚BIAS的物理位置明显不同,但不会报告出来。
以上所述仅仅是本发明的一种优选实施方式,应当指出对于本技术领域的技术人员而言,在不脱离本发明技术原理的前提下,还可以做出很多种变形,比如哈希函数的变形等等,这些变形也应当属于本发明的保护范围。