CN113515908A - 驱动矩阵及其生成方法、门电路信息的表示方法、图 - Google Patents

驱动矩阵及其生成方法、门电路信息的表示方法、图 Download PDF

Info

Publication number
CN113515908A
CN113515908A CN202110377752.XA CN202110377752A CN113515908A CN 113515908 A CN113515908 A CN 113515908A CN 202110377752 A CN202110377752 A CN 202110377752A CN 113515908 A CN113515908 A CN 113515908A
Authority
CN
China
Prior art keywords
gate
matrix
circuit
output
gates
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110377752.XA
Other languages
English (en)
Inventor
黄国勇
赵岩
邓联文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guowei Group Shenzhen Co ltd
Original Assignee
Guowei Group Shenzhen Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guowei Group Shenzhen Co ltd filed Critical Guowei Group Shenzhen Co ltd
Priority to CN202110377752.XA priority Critical patent/CN113515908A/zh
Publication of CN113515908A publication Critical patent/CN113515908A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

本发明公开了一种驱动矩阵及其生成方法、门电路信息的表示方法、图。其中用于表示门电路信息的驱动矩阵,所述驱动矩阵的行和列所代表的含义分别从以下两者任选一种:门,所述门所对应的同一类型的连接端口;当某一个连接端口与一个门相连接时,所述驱动矩阵中该门与该连接端口所指向的矩阵元素的取值为该门与该连接端口相连接的端口的信息的集合。本发明可以将门电路的相关信息有效的进行表示,并进行相应的运算。

Description

驱动矩阵及其生成方法、门电路信息的表示方法、图
技术领域
本发明涉及门电路仿真技术领域,尤其涉及一种用来表示门电路信息的驱动矩阵,以及该驱动矩阵的生成方法,以及门电路信息的表示方法和对应的有向驱动图。
背景技术
在对门级数字集成电路(简称为门电路)进行处理和运算(例如,进行分割、分组)的时候,需要用适当的数学形式来表征数字集成电路的门级网表。门级网表中包含门电路的实例化和基于端口映射的连接关系,根据门级网表可以画出一张门电路的连接图。
在基于主流工艺的标准单元库中,根据静态互补CMOS电路(互补型金属氧化物半导体电路)的工作原理,绝大多数的组合逻辑单元都是多入一出(MISO,Multiple InputsSingle Output)形式,反相器和驱动器是一入一出(SISO,Single Input Single Output),差分互补输出逻辑为多入两出(MIDO,Multiple Inputs Double Outputs),时序逻辑为多入一出或者多入两出形式。若把门电路抽象为一个顶点,把门电路的输入、输出理解为方向,把门电路输入与输出之间的连线理解为顶点之间的连接,则可以把门电路及其连接关系用有向图表示,示例电路的表示可以如图1中的表格所示,或者如图2中所示。
图论中一般用邻接矩阵(Adjacency Matrix)或者关联矩阵(Incidence Matrix)来表示一个有向图中的顶点与顶点之间边的连接关系。设图
Figure DEST_PATH_IMAGE001
Figure 361920DEST_PATH_IMAGE002
是顶点集,
Figure DEST_PATH_IMAGE003
是有向边集。用
Figure 731590DEST_PATH_IMAGE004
表示顶点
Figure DEST_PATH_IMAGE005
与顶点
Figure 714589DEST_PATH_IMAGE006
之间的有向边数,所得矩阵
Figure DEST_PATH_IMAGE007
是图G的邻接矩阵。用
Figure 968853DEST_PATH_IMAGE008
表示顶点
Figure DEST_PATH_IMAGE009
与有向边
Figure 235755DEST_PATH_IMAGE010
之间关联的次数,所得矩阵
Figure DEST_PATH_IMAGE011
是图G的关联矩阵。图1电路以及有向图的邻接矩阵如图3所示。
有向图无法区分某些不同的电路连接关系。如一个门有多个输出,且这些输出都连接到另一个门的不同输入;以及一个门只有一个输出,且此输出连接到另一个门的不同输入。对于这两种情况,有向图会把它们抽象为同一种连接关系,如图4所示,以全加器(FA)和半加器(HA)两种不同的连接为例,那么这将导致不同的电路根据相同的有向图连接会得到相同的邻接矩阵。
在把门级网表抽象为有向图的过程中还丢失了一些信息,如门的类型、门的输入端口与驱动端的连接关系、门的输出端口与负载输入端的连接关系等。门的类型直接决定了门的逻辑功能和延时大小;不同输入端口的负载电容不同,连接在此端口上的驱动门的延时和功耗也不同;不同输出端口的驱动能力不同,此端口的延时与功耗也不同。对于组合逻辑门,不同的输入模式带来的延时不同;对于时序逻辑门,数据输入(D)端与时钟输入(CK)端的时序分析方式不同。
在图论中,这些信息属于无效信息,因为有向图与邻接矩阵仅关心顶点之间的连接关系。而数字集成电路的分析与处理除了关注连接关系,还要关注门的功能,计算延时、功耗、尺寸等信息,在对表征门级网表的矩阵进行计算的过程中,需要这些除了连接关系之外的信息。对矩阵计算完成后,根据矩阵的计算结果重新输出处理(如分割、分组等)后的电路网表时,也需要门的类型、输入输出端口名称、连接关系等信息。所以,需要对有向图和邻接矩阵进行修改,以便能有效表述上述额外信息。
因此,如何提供一种能够表述更多电路网表的信息的矩阵是业界亟待解决的技术问题。
发明内容
为了解决现有技术中邻接矩阵表示的门电路信息量较少的技术问题,本发明提出一种驱动矩阵及其生成方法、门电路信息的表示方法、图。
本发明提出用于表示门电路信息的驱动矩阵,所述驱动矩阵的行和列所代表的含义分别从以下两者任选一种:门,所述门所对应的同一类型的连接端口,当某一个连接端口与一个门相连接时,所述驱动矩阵中该门与该连接端口所指向的矩阵元素的取值为该门与该连接端口相连接的端口的信息的集合。
进一步,所述驱动矩阵包括用于表示门电路的门的内部连接关系的内部驱动矩阵,所述内部驱动矩阵的行、列分别从以下两者任选其一:所有门的所有输出端口,所有门;
当一个门的一个输出端口与另一个门连接,则在所述内部驱动矩阵中该门的该输出端口与另一个门所指向的矩阵元素的取值为所连接的另一个门的所有输入端口的信息。
进一步,所述驱动矩阵包括用于表示门电路的电路输入端口与门的连接关系的输入驱动矩阵,所述输入驱动矩阵的行列分别为以下两者之一:所有电路输入端口,与电路输入端口连接的门;
当一个电路输入端口与一个门连接,则在该输入驱动矩阵中该电路输入端口与该门所指向的矩阵元素的取值为所连接的该门的所有输入端口的信息。
进一步,所述驱动矩阵包括用于表示门电路的电路输出端口与门的连接关系的输出驱动矩阵,所述输出驱动矩阵的行列分别为以下两者之一:所有电路输出端口,与电路输出端口连接的门;
当一个电路输出端口与一个门连接,则该输出驱动矩阵中该门与该电路输出端口所指向的矩阵元素的取值为所连接的该门的所有输出端口的信息。
本发明还提出一种上述技术方案所述的驱动矩阵的生成方法,包括:
读取门级网表的数据;
基于所述门级网表的数据,创建第一数据结构来存储各门的各连接端口及其连线,并在第一数据结构中根据所属于的门将所述连接端口及其连线分类成行或列;
分别创建第二数据结构来存储门、电路输入端口以及电路输出端口;
基于第二数据结构的元素遍历第一数据结构的元素,从中找到对应驱动矩阵的元素的取值,生成所述驱动矩阵。
进一步,当所述驱动矩阵为内部驱动矩阵时,所述生成方法包括:
步骤1.1:创建内部驱动矩阵;
步骤1.2:读取第一数据结构中一个门的所有端口及其连线,并查找该门的一个输出端口及其连线作为当前门的输出端口及其连线;
步骤1.3:遍历第一数据结构中当前门以外的其他门的所有端口及其连线,找到与当前门的输出端口及其连线为相同连线的其他门的输入端口及其连线,将该其他门的输入端口的信息加入至所述内部驱动矩阵中由当前门的输出端口与该其他门所指向的矩阵元素的取值;
步骤1.4:继续查找当前门的输出端口及其连线,直至当前门的输出端口匹配完毕,若找到当前门的输出端口及其连线,则返回步骤1.3;若当前门的输出端口匹配完毕,则返回步骤1.2,直至所有的门的输出端口匹配完毕。
进一步,当所述驱动矩阵为输入驱动矩阵时,所述生成方法包括:
步骤2.1:创建所述输入驱动矩阵;
步骤2.2:读取第二数据结构中的一个电路输入端口作为当前电路输入端口;
步骤2.3:遍历第一数据结构中所有门的所有端口及其连线,找到与当前电路输入端口信息相同的门的输入端口的连线信息,将所述输入驱动矩阵中由当前电路输入端口与该门所指向的矩阵元素的取值置为该门的输入端口的信息;
步骤2.4:返回步骤2.2读取下一个电路输入端口作为当前电路输入端口,直至所有的电路输入端口读取完毕。
进一步于,当所述驱动矩阵为输出驱动矩阵时,所述生成方法包括:
步骤3.1:创建所述输出驱动矩阵;
步骤3.2:读取第二数据结构中的一个电路输出端口作为当前电路输出端口;
步骤3.3:遍历第一数据结构中所有门的所有端口及其连线,找到与当前电路输出端口信息相同的门的输出端口的连线信息,将所述输出驱动矩阵中由当前电路输出端口与该门所指向的矩阵元素的取值置为该门的输出端口的信息;
步骤3.4:返回步骤3.2读取下一个电路输出端口作为当前电路输出端口,直至所有的电路输出端口读取完毕。
进一步,所述第一数据结构为二维字典结构,所述第二数据结构为向量。
本发明提出的门电路信息的表示方法,采用上述技术方案所述的驱动矩阵对所述门电路的信息进行表示,所述门电路的信息包含:所述门的内部连接关系、所述门中的边界门与电路输入端口的连接关系、所述门中的边界门与电路输出端口的连接关系当中的至少一种。
进一步,还包括采用向量来表示所述门电路的信息。
进一步,所述向量包括:包含所有门的向量,包含所有门的所有输出端口的向量,包含所有电路输入端口的向量,包含所有电路输出端口的向量,包含所有门对应的门的器件类型的向量当中的至少一种。
进一步,所述包含所有门的向量与包含所有门对应的门的器件类型的向量中序号相同的元素对应同一个门。
本发明提出的采用上述技术方案所述的驱动矩阵生成的有向驱动图,包括:
顶点,每一个顶点代表一个门;
输入边界顶点,每一个所述输入边界顶点代表一个电路输入端口;
输出边界顶点,每一个所述输出边界顶点代表一个电路输出端口;
节点,隶属于对应的顶点,每一个节点代表一个门的一个输出端口;
连线,连接输入边界顶点至顶点,以及连接顶点至输出边界顶点,当所述连线的末端连接所述顶点时,所述连线的末端设有用于标注所述顶点的输入端口的信息。
本发明与现有技术相比,具有以下有益效果:
1、有向驱动图可以无歧义性地表示门电路的连接关系,做到电路与图之间的一对一映射;且保留所有门电路类型、门电路输入输出端口信息和连接信息、电路模块输入输出端口信息和连接信息。
2、驱动矩阵和向量可以完整地表述有向驱动图,无歧义性地表示门电路的连接关系,且保留所有门电路类型、门电路输入输出端口信息和连接信息、电路模块输入输出端口信息和连接信息。
3、电路模块的输入输出端口信息和连接信息用单独的矩阵和向量表述,不影响对内部门电路之间连接复杂度的判断。电路模块的输入、输出端口与内部门电路的连接一般较为简单,如果把这些连接放入内部驱动矩阵中表述,在进行电路的分割等运算时,有可能会影响对内部门电路连接复杂度的判断。
4、在进行数学运算的时候,只需把矩阵中的非0元素替换为1即可进行矩阵运算。传统邻接矩阵中可能出现除0、1之外的其他值。
附图说明
下面结合实施例和附图对本发明进行详细说明,其中:
图1是现有技术中用有向图的顶点表示门电路示例之一。
图2是现有技术中门电路及其有向图示例之二。
图3是现有技术中门电路、有向图及其邻接矩阵示例之一。
图4是现有技术中门电路、有向图及其邻接矩阵示例之二。
图5是一个门电路的示例及对应的有向图及邻接矩阵。
图6是图5的门电路对应的内部驱动矩阵的一个实施例。
图7是图5的门电路对应的输入驱动矩阵的一个实施例。
图8是图5的门电路对应的输出驱动矩阵的一个实施例。
图9是图5的门电路对应的门与其器件类型的两个向量的实施例。
图10是本发明一实施例中对第一、第二数据结构的实例化流程。
图11是本发明一实施例中生成内部驱动矩阵的流程图。
图12是本发明一实施例中生成代表顶点的各个输出端口的向量的流程图。
图13是本发明一实施例中生成电路输入输出向量的流程图。
图14是本发明一实施例中生成输入驱动矩阵的流程图。
图15是本发明一实施例中生成输出驱动矩阵的流程图。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
由此,本说明书中所指出的一个特征将用于说明本发明的一个实施方式的其中一个特征,而不是暗示本发明的每个实施方式必须具有所说明的特征。此外,应当注意的是本说明书描述了许多特征。尽管某些特征可以组合在一起以示出可能的系统设计,但是这些特征也可用于其他的未明确说明的组合。由此,除非另有说明,所说明的组合并非旨在限制。
下面结合附图以及实施例对本发明的原理进行详细说明。
如图5所示,本发明给出了一个具体的门电路的示例,下面将基于该示例的电路对本发明进行讲解。
其中图5(a)所示的电路给出了门电路的具体组成器件,每一个器件的输入端口和输出端口以及与外部连接端口(包括电路输入端口、电路输出端口)的连接关系。
图5(b)给出了图5(a)所示电路的有向图以及该电路的邻接矩阵,从该邻接矩阵可以看出,邻接矩阵中不包含输入、输出信息,虽然能够得知顶点U1(门U1,代表类型为HAOX1的器件)与顶点U2(门U2,代表类型为XXOR2X1的器件)之间虽然有两个端口连接,但是具体的连接信息未知,其他顶点之间的关联也是如此,难以看出具体的信息,通过该邻接矩阵所映射得到的有向图也是如此。
图5(c)给出了基于本发明的驱动矩阵可以得到的有向驱动图。在该有向驱动图中,本发明进行了如下定义:
顶点,定义每一个顶点代表一个门,顶点U1-顶点U4同时也称为门U1-U4;
输入边界顶点,定义每一个所述输入边界顶点代表一个电路输入端口,如当前门电路模块需要从别的门电路模块的输出端口输入等;
输出边界顶点,定义每一个所述输出边界顶点代表一个电路输出端口,所谓电路输出端口是一个门电路模块的输出端口,这个门电路模块可以由一个门或者多个门所组成,也就是说,电路输出端口具体也是该门电路模块中要向其他门电路模块或者某个门输出的那个门的输出端口;
节点,隶属于对应的顶点,定义每一个节点代表一个门的一个输出端口;
连线,连接输入边界顶点至顶点,以及连接顶点至输出边界顶点,当所述连线的末端连接所述顶点时,所述连线的末端设有用于标注所述顶点的输入端口的信息,在一个具体实施例,输入端口的信息具体指的是能够唯一标识该输入端口的名称或者是ID。
有向驱动图将现有技术中的有向图的顶点进行进一步的细化,使得现有技术当中的顶点在具体展现时,以其输出端口的数量来展现相应的节点,以顶点U1为例,将会展现为两个节点,这两个节点Z、O分别是顶点U1的两个输出端口,同时顶点U1的两个输出端口在图中相应的位置绘制其信息,如在输入端口连接的连线上绘制对应输入端口的名称A、B。这样使得顶点U1的信息更加丰富。同样的方式去绘制顶点U2-U4,并将它们的输入、输出端口也分别通过节点标注或者是连线标注的方式在图中展示出来。这些顶点的具体类型就是相应门在标准单元库中的器件类型。
在该图中与电路输入端口INA[0]、INA[1]连接的顶点U1是一个边界顶点。与电路输入端口INB连接,同时又与电路输出端口OUTB连接的顶点U4也是一个边界顶点。同样的,与电路输出端口OUTA连接的顶点U3也是一个边界顶点。定义有向驱动图的输入边界顶点为电路模块网表的输入信号,向量(Vector)类型的输入信号中的每一个元素作为一个输入边界顶点,输入边界顶点对于内部电路而言,是输出顶点。也就是说,电路输入端口INA[0]、INA[1]、INB具象化成一个输入边界顶点。
定义有向驱动图的输出边界顶点为电路模块网表的输出信号,向量(Vector)类型的输出信号中的每一个元素作为一个输出边界顶点。输出边界顶点对于内部电路而言,是其他电路部分的输入边界顶点。也就是说,电路输出端口OUTA、OUTB具象化成一个输出边界顶点。
通过图5当中的对比,可以看出,有向驱动图很好地对门U1—>门U2、门U2—>门U3的连接进行了区分,并保留了每个门的输入、输出端口的连接信息,以及网表的输入、输出端口的连接信息。
下面具体来描述本发明的驱动矩阵。本发明的驱动矩阵用来标识门电路信息,其行和列所代表的含义分别从以下两者任选一种:顶点,顶点所对应的同一类型的连接端口,当一个顶点与某一个连接端口相连接时,驱动矩阵中该顶点与该连接端口所指向的矩阵元素的取值为该顶点与该连接端口相连接的端口的信息。如驱动矩阵的每一行代表一个顶点的一个输出端口,驱动矩阵的每一列代表每一个顶点,又如驱动矩阵的每一行代表每一个顶点,驱动矩阵的每一列代表一个顶点的一个输出端口,由于矩阵的行列的地位实质上是等同的,因而选择哪一种作为行或者是作为列,所形成的矩阵的元素实质上意义都是等同的。
用来表示门电路信息的驱动矩阵具体包括内部驱动矩阵、输入驱动矩阵和输出驱动矩阵。
内部驱动矩阵用来表示门电路的顶点之间的内部连接关系,在本实施例中也就是顶点U1至顶点U4之间的内部连接关系。内部驱动矩阵的行、列分别从以下两者任选其一:所有顶点的所有输出端口,所有顶点。在一个实施例中,内部驱动矩阵的每一行代表一个顶点一个输出端口,每一列代表一个顶点。当一个顶点的一个输出端口与另一个顶点的一个或多个输入端口连接,则在内部驱动矩阵中该顶点的输出端口与另一个顶点所指向的矩阵元素的取值为另一个顶点的输入端口的信息。例如顶点U1的输出端口Z与顶点U2的输入端口A连接,那么在代表U1_Z的行与代表U2的列相交的矩阵元素的取值就是U2的输入端口名称A。顶点U2的输出端口Z既连接了顶点U3的输入端口A,又连接了顶点U3的输入端口B,则代表U2_Z行与代表U3的列相交的矩阵元素的取值就是U3的两个输入端口名称AB。
图6给出了一个实施例中内部驱动矩阵inst_drv_matrix的具体取值。内部驱动矩阵inst_drv_matrix的一行表示某一个门的某一个输出端口与其他所有门的输入端口的连接关系。为了清晰表明所连接的输入端口,定义此行中的每一个元素为每一个连接在此输出端口上的门的输入端口的名称;若此输出端口与某一个门没有连接,对应此门位置的矩阵元素值为0。特别的,若此输出端口与某一个门的两个或者两个以上的端口相连接,对应此门位置的矩阵元素值为此门与这一行输出端口所连接的所有输入端口名称的集合。向量inst_name为行向量,向量inst_name的每个元素的值为“网表中每一个门被实例化的名称”,行向量的长度为网表中门的个数。向量inst_drv为列向量,其中的元素为网表中每一个门的输出端口,元素的值为“网表中每一个门被实例化的名称_此门的输出端口名称”,此列向量的长度为网表中所有门的输出端口个数之和。
电路模块的输入、输出端口与内部门电路的连接一般较为简单,如果把这些连接放入内部驱动矩阵中表述,在进行电路的分割等运算时,有可能会影响对内部门电路连接复杂度的判断。所以,为了完整表述门电路结构,且不影响对门电路的分割等运算结果,定义列向量input_drv和列向量drv_output,输入驱动矩阵input_drv_matrix,输出驱动drv_output_matrix表征电路模块的输入、输出端口的连接。
输入驱动矩阵表示门电路的电路输入端口与门的连接关系,输入驱动矩阵的行列分别为以下两者之一:所有电路输入端口,与电路输入端口连接的门,当一个电路输入端口与一个门的输入端口连接,则在该输入驱动矩阵中该电路输入端口与该门所指向的矩阵元素的取值为该门的输入端口的信息,如输入端口的名称。例如一个电路的输入端口与一个顶点的输入端口连接,则在输入驱动矩阵中,该电路输入端口代表的行与顶点代表的列指向的矩阵元素的取值为该顶点的输入端口。
如图7所示,在一个具体实施例中,定义列向量input_drv,其中的元素为电路模块网表中每一个电路输入端口,即每一个输入边界顶点。定义输入驱动矩阵input_drv_matrix的一行表示某一个输入边界顶点与所有门的输入端口的连接关系。为了清晰表明所连接的输入端口,定义此行中的每一个元素为每一个连接在此输入边界顶点上的门的输入端口的信息,如输入端口的名称。若此输入边界顶点与某一个门没有连接,对应此门位置的矩阵元素值为0。特别的,若此输入边界顶点与某一个门的两个或者以上的端口相连接,对应此门位置的矩阵元素值为此门与这一行输入边界顶点所连接的所有输入端口名称的集合。例如电路输入端口inb与顶点U4的输入端口B连接,那么输入驱动矩阵input_drv_matrix中电路输入端口INB代表的行与顶点U4代表的列交叉位置的元素的取值为顶点U4的输入端口名称B。
输出驱动矩阵用来表示门电路的电路输出端口与门的连接关系,输出驱动矩阵的行列分别为以下两者之一:所有电路输出接口,与电路输出端口连接的门。当一个门的输出端口与一个电路输出端口连接,则该输出驱动矩阵中该门与该电路输出端口所指向的矩阵元素的取值为该门的输出端口的信息。
如图8所示,在一个实施例中,定义列向量drv_output,其中的元素为电路模块网表中每一个电路输出端口,即每一个输出边界顶点。定义输出驱动矩阵drv_output_matrix的一行表示某一个输出边界顶点与所有门的输出端口的连接关系。为了清晰表明所连接的输出端口,定义此行中的每一个元素为每一个连接在此输出边界顶点上的门的输出端口的名称;若此输出边界顶点与某一个门没有连接,对应此门位置的矩阵元素值为0。例如电路输出端口OUTA连接顶点U3的输出端口Z,那么输出驱动矩阵OUTA与U3所指向的元素的取值为Z。
本发明还保护一种门电路信息的表示方法,门电路的信息通常可以分为几下几个方面:顶点的内部连接关系、顶点中的边界顶点与电路输入端口的连接关系、顶点中的边界顶点与电路输出端口的连接关系,本发明的门电路信息的表示方法采用了上述技术方案中的驱动矩阵来保护其中至少一种信息,除了以上述驱动矩阵来对门电路信息进行表示以外,门电路信息还涉及到门的类型关系到门在仿真时的计算复杂度、延时、功耗等信息。也就是说,门电路的信息还包括所有顶点对应的器件类型。
所有顶点对应的器件类型通过两个向量来表示,其中一个向量的元素包含所有顶点,另一个向量的元素包含所有顶点对应的器件类型, 通过将一个顶点以及该顶点对应的器件类型分别作为两个向量序号相同的元素的取值来使该顶点与其器件类型相互对应。
如图9所示,定义inst_ref向量,其中的元素为网表中每一个门在标准单元库中的类型。以恩发明所示出的电路为例,其inst_name向量、inst_ref向量通过相同序号的元素来将具体的门的器件类型进行相互对应。
本发明通过上述多个矩阵及向量在表述电路的时候,避免了歧义性、保留了电路中的所有信息。在进行数学运算的时候,只需把非0元素替换为1即可进行矩阵运算。有一个需要注意的地方:在进行矩阵分割的时候,内部驱动矩阵inst_drv_matrix中的行,如果它们对应于列向量inst_drv中从属于同一个门的不同输出端口,则这些行不能被分割开。而内部驱动矩阵inst_drv_matrix中的列,对应着每一个门电路器件,在分割运算的时候没有限制。
本发明还包括上述驱动矩阵的生成方法,具体包括如下步骤:
读取门级网表的数据;
基于所述门级网表的数据,创建第一数据结构来存储各顶点的各连接端口及其连线,并根据所属顶点在第一数据结构中将所述连接端口及其连线分类成行或列;
分别创建第二数据结构来存储顶点、电路输入端口以及电路输出端口;
基于第二数据结构的元素遍历第一数据结构的元素,从中找到对应驱动矩阵的元素,生成所述驱动矩阵。
在一个实施例中,第一数据结构可以是二维字典结构,第二数据结构为三个第二数据结构,可以具体为向量。
当生成内部驱动矩阵时,具体包括如下步骤:
步骤1.1:创建内部驱动矩阵;
步骤1.2:读取第一数据结构中一个顶点的所有端口及其连线,并查找该顶点的一个输出端口及其连线作为当前顶点的输出端口及其连线;
步骤1.3:遍历第一数据结构中当前顶点以外的其他顶点的所有端口及其连线,找到与当前顶点的输出端口及其连线为相同连线的其他顶点的输入端口及其连线,将所述内部驱动矩阵中由当前顶点的输出端口与该其他顶点所指向的矩阵元素的取值置为该其他顶点的输入端口的信息,如名称;
步骤1.4:继续查找当前顶点的输出端口及其连线,直至当前顶点的输出端口匹配完毕,若找到当前顶点的输出端口及其连线,则返回步骤1.3;若当前顶点的输出端口匹配完毕,则返回步骤1.2,直至所有的顶点的输出端口匹配完毕。
下面以Python的数据结构为例,来进行说明。
在生成任意驱动矩阵之前,需要先进行相应的准备工作,即读取门级网表的数据。具体的,先读入门级网表,再读入门级网表中每一个有效的实例化电路。接着创建列表name_list,元素为每一个门的实例化名称,即U1至U4。创建列表ref_list,元素为每一个门在标准单元库中的器件类型。创建二维字典结构sckt_list,此字典中的每一行对应name_list与ref_list中的一个门或者器件类型,此行中的每一个“键——值对”表征了此门的每一个端口的“名称——连线”的连接关系,以U1的输入端口为例,在该二维字典结构中的键——值对包括Z——连线1,该连线1就是顶点U1的输出端口Z与顶点U2的输入端口A之间的连线。还包括A——连线2,连线2就是顶点U1的输入端口A与电路输入端口的连线,该连线2由于是输入边界顶点与边界顶点之间的连线,因而连线2在本实施例中的具体名称为INA[0]。顶点U1相关的键——值对还包括B——连线3、O——连线4,其中B——连线3其实就是B_INB,为顶点U1的输入端口与电路输入端口INB之间的连线。O——连线4就是顶点U1的输出端口O与顶点U2的输入端口B之间的连线。这里所指的列表name_list即向量inst_name,列表ref_list即向量inst_ref。通过图10所示的流程图来获取所有实例化的列表name_list、列表ref_list以及二维字典结构sckt_list。
如图11所示,下面介绍内部驱动矩阵的具体实现流程。通过获取实例化列表name_list、列表type_list、二维字典结构sckt_list,列表type_list的用途是用来存储每个顶点的输入端口和输出端口的输出类型,由于一个门在标准单元库中有一个名字,即为其原型或者参照物(reference);在电路中实例化的时候,会有一个实例化的名字。比如一个与门,在标准单元库中的名字是ANDX2M,即为这个门的ref;实例化时的名字是U1,即为顶点的名字(name)。以与门为例,与门可以有不同尺寸,比如ANDX1M、ANDX2M、ANDX4M等等,但是都属于与门这个类型,如果与门的类型定义为AND,则AND就是这个门ANDX2M U1的type,会存入到type_list,用来计算顶点U1的输出端口(有向驱动图中表示为节点)的运算代价有多大,具体表征时采用一个数值来表征,即不同reference相同type用一个数值来表示其运算代价。
读入二维字典结构sckt_list的一行,也就是一个顶点的所有连接端口(包含输入端口和输出端口),依次读入当前行的连接端口,找到第一个输出端口,然后再依次读入二维字典结构sckt_list的其他行,去查找与第一个输出端口的连线名称相同的键值对的连线,从而找到顶点之间的输入端口与输出端口的关系。按照上述方法依次去找到当前行的第二个至第n个输出端口,并为其找到对应的输入端口作为内部驱动矩阵的矩阵元素的取值,接着依次读取其他行,按照上述方法来为其他行所分别代表的顶点来查找它们输出端口与其他顶点输入端口之间的关系,并为内部驱动矩阵的对应矩阵元素进行赋值。在这个流程中,向量m_row作为inst_drv_matrix的一行,变量has_conn表示某一个门的输出端口是否与当前实例化门的输入端口有连接关系,如果has_conn为false,则说明两者无连接关系,对应的内部驱动矩阵的矩阵元素的取值为0。变量input_wire表示顶点的输入端口的连线,变量output_wire表示顶点的输出端口的连线。
如图12所示,还可以基于二维字典结构等生成各个顶点的输出端口的向量inst_drv,定义一个变量name_idx作为对向量inst_name的索引,在向量inst_name的基础上,对于只有一个输出端口的门,在门的名称后追加“_输出端口名称”;对于有多个输出端口的门,则先把门的名字复制多次,然后在门的名称后面分别追加“_输出端口名称”。生成向量inst_drv向量的过程如图12所示。实例化相关向量和二维字典结构,通过依次读取二维字典结构sckt_list的每一行来获取各个顶点的所有输出端口名称(即各个门的所有输出端口名称),并根据上述命名规则将找到的输出端口名称和对应的顶点组合成向量inst_drv中的元素。图6中列出了以本发明所示例的电路为例,向量inst_drv各个元素的取值。
在介绍输入驱动矩阵、输出驱动矩阵的生成方法之前,先获得电路模块的电路输入端口向量i_p_list、电路模块的电路输出端口向量o_p_list。如图13所示,通过读取网表数据从中获得电路输入端口向量i_p_list以及电路输出端口向量o_p_list。
下面介绍输入驱动矩阵的生成方法,具体包括如下步骤:
步骤2.1:创建所述输入驱动矩阵;
步骤2.2:读取第二数据结构中的一个电路输入端口作为当前电路输入端口;
步骤2.3:遍历第一数据结构中所有顶点的所有端口及其连线,找到与当前电路输入端口名称相同的顶点的输入端口的连线名称,将所述输入驱动矩阵中由当前电路输入端口与该顶点所指向的矩阵元素的取值置为该顶点的输入端口的名称;
步骤2.4:返回步骤2.2读取下一个电路输入端口作为当前电路输入端口,直至所有的电路输入端口读取完毕。
如图14所示,在一个具体实施例中,先实例化对应的向量name_list、i_p_list以及二维字典结构skct_list,从向量i_p_list中读取一个电路输入端口,遍历二维字典结构,从中找到与该电路输入端口名称相同的顶点的连接端口的连线名称,找到时就将该顶点的对应的连接端口的名称加入至输入驱动矩阵对应的矩阵元素的取值中。循环上述过程,直到所有的电路输入端口名称对应的连接关系查找完毕。
下面介绍输出驱动矩阵的生成方法,具体包括如下步骤:
步骤3.1:创建输出驱动矩阵;
步骤3.2:读取第二数据结构中的一个电路输出端口作为当前电路输出端口;
步骤3.3:遍历第一数据结构中所有顶点的所有端口及其连线,找到与当前电路输出端口名称相同的顶点的输出端口的连线名称,将输出驱动矩阵中由当前电路输出端口与该顶点所指向的矩阵元素的取值置为该顶点的输出端口的名称;
步骤3.4:返回步骤3.2读取下一个电路输出端口作为当前电路输出端口,直至所有的电路输出端口读取完毕。
如图15所示,在一个具体实施例中,先实例化对应的向量name_list、o_p_list以及二维字典结构skct_list,从向量o_p_list中读取一个电路输出端口,遍历二维字典结构,从中找到与该电路输出端口名称相同的顶点的连接端口的连线名称,找到时就将该顶点的对应的连接端口的名称加入至输出驱动矩阵对应的矩阵元素的取值中。循环上述过程,直到所有的电路输出端口名称对应的连接关系查找完毕。
在上面驱动矩阵的生成过程中,所有驱动矩阵的元素的取值在创建时均为空,当两个顶点的对应连接端口之间无连接关系时,将对应的元素取值置为0,如果有连接关系,则将相应的连接端口的名称加入到对应的元素的取值中。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (14)

1.一种用于表示门电路信息的驱动矩阵,其特征在于,所述驱动矩阵的行和列所代表的含义分别从以下两者任选一种:门,所述门所对应的同一类型的连接端口;当某一个连接端口与一个门相连接时,所述驱动矩阵中该门与该连接端口所指向的矩阵元素的取值为该门与该连接端口相连接的端口的信息的集合。
2.如权利要求1所述的驱动矩阵,其特征在于,所述驱动矩阵包括用于表示门电路的门的内部连接关系的内部驱动矩阵,所述内部驱动矩阵的行、列分别从以下两者任选其一:所有门的所有输出端口,所有门;
当一个门的一个输出端口与另一个门连接,则在所述内部驱动矩阵中该门的该输出端口与另一个门所指向的矩阵元素的取值为所连接的另一个门的所有输入端口的信息。
3.如权利要求1所述的驱动矩阵,其特征在于,所述驱动矩阵包括用于表示门电路的电路输入端口与门的连接关系的输入驱动矩阵,所述输入驱动矩阵的行列分别为以下两者之一:所有电路输入端口,与电路输入端口连接的门;
当一个电路输入端口与一个门连接,则在该输入驱动矩阵中该电路输入端口与该门所指向的矩阵元素的取值为所连接的该门的所有输入端口的信息。
4.如权利要求1所述的驱动矩阵,其特征在于,所述驱动矩阵包括用于表示门电路的电路输出端口与门的连接关系的输出驱动矩阵,所述输出驱动矩阵的行列分别为以下两者之一:所有电路输出端口,与电路输出端口连接的门;
当一个电路输出端口与一个门连接,则该输出驱动矩阵中该门与该电路输出端口所指向的矩阵元素的取值为所连接的该门的所有输出端口的信息。
5.一种如权利要求1至4任意一项所述的驱动矩阵的生成方法,其特征在于,包括:
读取门级网表的数据;
基于所述门级网表的数据,创建第一数据结构来存储各门的各连接端口及其连线,并在第一数据结构中根据所属于的门将所述连接端口及其连线分类成行或列;
分别创建第二数据结构来存储门、电路输入端口以及电路输出端口;
基于第二数据结构的元素遍历第一数据结构的元素,从中找到对应驱动矩阵的元素的取值,生成所述驱动矩阵。
6.如权利要求5所述的驱动矩阵的生成方法,其特征在于,当所述驱动矩阵为内部驱动矩阵时,所述生成方法包括:
步骤1.1:创建内部驱动矩阵;
步骤1.2:读取第一数据结构中一个门的所有端口及其连线,并查找该门的一个输出端口及其连线作为当前门的输出端口及其连线;
步骤1.3:遍历第一数据结构中当前门以外的其他门的所有端口及其连线,找到与当前门的输出端口及其连线为相同连线的其他门的输入端口及其连线,将该其他门的输入端口的信息加入至所述内部驱动矩阵中由当前门的输出端口与该其他门所指向的矩阵元素的取值;
步骤1.4:继续查找当前门的输出端口及其连线,直至当前门的输出端口匹配完毕,若找到当前门的输出端口及其连线,则返回步骤1.3;若当前门的输出端口匹配完毕,则返回步骤1.2,直至所有的门的输出端口匹配完毕。
7.如权利要求5所述的驱动矩阵的生成方法,其特征在于,当所述驱动矩阵为输入驱动矩阵时,所述生成方法包括:
步骤2.1:创建所述输入驱动矩阵;
步骤2.2:读取第二数据结构中的一个电路输入端口作为当前电路输入端口;
步骤2.3:遍历第一数据结构中所有门的所有端口及其连线,找到与当前电路输入端口信息相同的门的输入端口的连线信息,将所述输入驱动矩阵中由当前电路输入端口与该门所指向的矩阵元素的取值置为该门的输入端口的信息;
步骤2.4:返回步骤2.2读取下一个电路输入端口作为当前电路输入端口,直至所有的电路输入端口读取完毕。
8.如权利要求5所述的驱动矩阵的生成方法,其特征在于,当所述驱动矩阵为输出驱动矩阵时,所述生成方法包括:
步骤3.1:创建所述输出驱动矩阵;
步骤3.2:读取第二数据结构中的一个电路输出端口作为当前电路输出端口;
步骤3.3:遍历第一数据结构中所有门的所有端口及其连线,找到与当前电路输出端口信息相同的门的输出端口的连线信息,将所述输出驱动矩阵中由当前电路输出端口与该门所指向的矩阵元素的取值置为该门的输出端口的信息;
步骤3.4:返回步骤3.2读取下一个电路输出端口作为当前电路输出端口,直至所有的电路输出端口读取完毕。
9.如权利要求5至8任意一项所述的驱动矩阵的生成方法,其特征在于,所述第一数据结构为二维字典结构,所述第二数据结构为向量。
10.一种门电路信息的表示方法,其特征在于,采用如权利要求1至4任意一项所述的驱动矩阵对所述门电路的信息进行表示,所述门电路的信息包含:所述门的内部连接关系、所述门中的边界门与电路输入端口的连接关系、所述门中的边界门与电路输出端口的连接关系当中的至少一种。
11.如权利要求10所述的门电路信息的表示方法,其特征在于,还包括采用向量来表示所述门电路的信息。
12.如权利要求11所述的门电路信息的表示方法,其特征在于,所述向量包括:包含所有门的向量,包含所有门的所有输出端口的向量,包含所有电路输入端口的向量,包含所有电路输出端口的向量,包含所有门对应的门的器件类型的向量当中的至少一种。
13.如权利要求12所述的门电路信息的表示方法,其特征在于,所述包含所有门的向量与包含所有门对应的门的器件类型的向量中序号相同的元素对应同一个门。
14.一种采用如权利要求1至4任意一线所述的驱动矩阵生成的有向驱动图,其特征在于,包括:
顶点,每一个顶点代表一个门;
输入边界顶点,每一个所述输入边界顶点代表一个电路输入端口;
输出边界顶点,每一个所述输出边界顶点代表一个电路输出端口;
节点,隶属于对应的顶点,每一个节点代表一个门的一个输出端口;
连线,连接输入边界顶点至顶点,以及连接顶点至输出边界顶点,当所述连线的末端连接所述顶点时,所述连线的末端设有用于标注所述顶点的输入端口的信息。
CN202110377752.XA 2021-04-08 2021-04-08 驱动矩阵及其生成方法、门电路信息的表示方法、图 Pending CN113515908A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110377752.XA CN113515908A (zh) 2021-04-08 2021-04-08 驱动矩阵及其生成方法、门电路信息的表示方法、图

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110377752.XA CN113515908A (zh) 2021-04-08 2021-04-08 驱动矩阵及其生成方法、门电路信息的表示方法、图

Publications (1)

Publication Number Publication Date
CN113515908A true CN113515908A (zh) 2021-10-19

Family

ID=78062531

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110377752.XA Pending CN113515908A (zh) 2021-04-08 2021-04-08 驱动矩阵及其生成方法、门电路信息的表示方法、图

Country Status (1)

Country Link
CN (1) CN113515908A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115293078A (zh) * 2022-07-21 2022-11-04 北京芯思维科技有限公司 集成电路的节点改写方法、装置、电子设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5412614A (en) * 1991-08-16 1995-05-02 U.S. Philips Corporation Electronic matrix array devices and systems incorporating such devices
CN102147822A (zh) * 2010-12-23 2011-08-10 上海高性能集成电路设计中心 一种基于功耗库的大规模数字集成电路功耗动态评估装置
CN105718644A (zh) * 2016-01-19 2016-06-29 深圳市同创国芯电子有限公司 一种现场可编程门阵列网表生成方法及装置
CN108520275A (zh) * 2017-06-28 2018-09-11 浙江大学 一种基于邻接矩阵的连接信息规整系统、图特征提取系统、图分类系统和方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5412614A (en) * 1991-08-16 1995-05-02 U.S. Philips Corporation Electronic matrix array devices and systems incorporating such devices
CN102147822A (zh) * 2010-12-23 2011-08-10 上海高性能集成电路设计中心 一种基于功耗库的大规模数字集成电路功耗动态评估装置
CN105718644A (zh) * 2016-01-19 2016-06-29 深圳市同创国芯电子有限公司 一种现场可编程门阵列网表生成方法及装置
CN108520275A (zh) * 2017-06-28 2018-09-11 浙江大学 一种基于邻接矩阵的连接信息规整系统、图特征提取系统、图分类系统和方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
L. HUANG 等: "An efficient logic extraction algorithm using partitioning and circuit encoding", 2004 IEEE INTERNATIONAL SYMPOSIUM ON CIRCUITS AND SYSTEMS (ISCAS), 26 May 2004 (2004-05-26), pages 249 - 252, XP010720260 *
潘伟涛: "基于复用的数字集成电路设计关键技术研究", 中国博士学位论文全文数据库 信息科技辑, 15 July 2013 (2013-07-15), pages 135 - 24 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115293078A (zh) * 2022-07-21 2022-11-04 北京芯思维科技有限公司 集成电路的节点改写方法、装置、电子设备及介质

Similar Documents

Publication Publication Date Title
Miller et al. Multiple-Valued Logic: Concepts and Representations
Dally A VLSI architecture for concurrent data structures
Hwang Digital logic and microprocessor design with VHDL
Akers Binary decision diagrams
Shende et al. Synthesis of reversible logic circuits
Fant Logically determined design: clockless system design with NULL convention logic
EP1964266B1 (en) A method for multi-cycle clock gating
Brzozowski et al. On a ternary model of gate networks
US20020010899A1 (en) Digital circuit layout techniques
Kim et al. A pipelined non-deterministic finite automaton-based string matching scheme using merged state transitions in an FPGA
Reese et al. Introduction to logic synthesis using Verilog HDL
CN113515908A (zh) 驱动矩阵及其生成方法、门电路信息的表示方法、图
US7761827B1 (en) Integrated circuit design system, method, and computer program product that takes into account observability based clock gating conditions
Cortadella et al. Decomposition and technology mapping of speed-independent circuits using Boolean relations
CN114417754B (zh) 组合逻辑单元的形式化识别方法及相关设备
US6190433B1 (en) Method of recovering a gate-level netlist from a transistor-level
CN113515909A (zh) 门级网表的处理方法、计算机存储介质
Das et al. A timing-driven approach to synthesize fast barrel shifters
Winder Fundamentals of threshold logic
Öztekin et al. Using FPGA-based content-addressable memory for mnemonics instruction searching in assembler design
Bychko et al. Automation of anti-race state encoding of asynchronous FSM for robust systems
Dietmeyer Introducing DDL
Coudert et al. Exact dichotomy-based constrained encoding
CN115293078B (zh) 集成电路的节点改写方法、装置、电子设备及介质
Lambooy et al. Linearly and Arboreally Stackable Quantum-dot Cellular Automata and Their Discrete Simulation

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination