一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种芯片网表自动修改方法、装置及电子设备与流程

2022-10-26 21:39:42 来源:中国专利 TAG:


1.本技术涉及芯片设计技术领域,特别是涉及一种芯片网表自动修改方法、装置及电子设备。


背景技术:

2.芯片设计流程通常比较复杂,可简述为:逻辑设计人员使用硬件描述语言根据业务需求完成编码得到rtl(register transfer level,寄存器传输)级电路,通过不断的仿真、验证、优化rtl级电路后,使用综合工具,根据芯片制造商提供的基础电路单元库以及约束条件(电路面积、时序等)将rtl级电路转换成网表,据此完成后续验证(如:功能验证,确保综合过程中没有改变电路功能)之后,物理设计人员使用工具根据网表文件完成布局布线(tapeout)等工作,最终生成版图用于芯片生产厂商进行生产。
3.芯片设计流程的复杂性导致整个过程的容错率很低,当发现芯片设计存在缺陷时,如果从头开始修改设计方案,会导致芯片设计成本上升,项目周期延长也会造成错失市场机遇。这种情况下一般会采用eco(engineering change order,工程修改)的方法:芯片变更设计后不用重新布局布线,通过手工删减或添加cell(芯片设计中的基本模块)和net(两个cell端口之间的连线)来更新网表。根据工作阶段的不同,eco的行为也不同,例如:tapeout之前,限制较少,修改网表不会影响后续阶段工作的推进;如果已经进行tapeout,则需要考虑新增的cell数量是否超出预留数量等问题,修改难度增大。由于是人工修改,eco的整个流程比较繁琐和复杂,一般流程分为一下步骤:1.分析需要修改的rtl代码;2.分析对应的网表结构并确定修改方案;3.手工编写eco修改脚本(工程修改脚本)并修改网表;4.形式验证修改可行性,如果失败则返回第1步直到满足要求。eco修改脚本是指网表修改工具能够识别的一种格式的命令组合,通过工具执行脚本以达到修改网表的目的。
4.现有的eco方法中需要人工从庞大(容量为gb级)的网表文件中找到对应的结点,再手动编写eco修改脚本,如果改动点太多,手动修改芯片网表的容错率将非常低,存在引入二次错误的风险、且工作量非常大。


技术实现要素:

5.本技术实施例的目的在于提供一种芯片网表自动修改方法、装置及电子设备,以实现减少手动修改芯片网表引入二次错误的风险和工作量。具体技术方案如下:
6.第一方面,本技术实施例提供了一种芯片网表自动修改方法,所述方法包括:
7.基于芯片网表中异常节点到待修改节点的连接关系,获取修改路径,其中,所述异常节点为所述芯片网表中输出异常的节点,所述待修改节点为导致所述异常节点输出异常的节点;
8.对所述芯片网表的文件进行解析,得到cell对象和pin对象,并存储到数据字典中;
9.基于所述修改路径,查询所述数据字典得到待修改的目标对象,其中,所述目标对
象为cell对象和/或pin对象;
10.根据针对所述目标对象的修改脚本,对所述芯片网表的文件进行修改。
11.在一种可能的实施方式中,所述基于芯片网表中异常节点到待修改节点的连接关系,获取修改路径,包括:
12.响应于用户的异常节点选取指令,确定芯片网表中输出异常的异常节点;
13.响应于用户的待修改节点选取指令,确定所述芯片网表中导致所述异常节点输出异常的待修改节点;
14.在所述芯片网表中,针对每个节点,按照网络连线至输出端口至cell至输入端口至网络连线的顺序,从所述异常节点开始逐级逆向查找直至找到所述待修改节点的位置,得到所述异常节点到所述待修改节点的连接关系作为修改路径。
15.在一种可能的实施方式中,所述对所述芯片网表的文件进行解析,得到各cell对象和pin对象,并存储到数据字典中,包括:
16.确定所述待修改节点所在的模块名称,得到目标模块;
17.逐行读取所述芯片网表的目标模块的文件;
18.判断当前读取的行中是否包含预设结束关键字;
19.若当前读取的行中不包含预设结束关键字,且在当前读取的行为cell描述时,根据当前读取的行创建cell对象;
20.基于所述cell对象的端口,创建所述cell对象的pin对象,并将所述pin对象添加到所述cell对象下;
21.获取所述cell对象的各输出端口,以所述cell对象的各输出端口为关键字key,所述cell对象为值value,得到解析文件,并将所述解析文件存储在数据字典中;
22.若当前读取的行中包含预设结束关键字,则结束本次解析。
23.在一种可能的实施方式中,所述基于所述修改路径,查询所述数据字典得到待修改的目标对象,包括:
24.以所述异常节点的异常输出端口为待查询的关键字key,查询所述数据字典得到相应的cell对象;
25.获取当前查询到的cell对象下的各输入端口pin对象,并从中选取所述修改路径对应的输入端口pin对象;
26.将当前选取的输入端口pin对象作为待查询的关键字key,重复上述查询过程,直至搜索到所述待修改节点的cell对象;
27.针对所述待修改节点的cell对象,确定待修改的目标对象。
28.在一种可能的实施方式中,所述根据针对所述目标对象的修改脚本,对所述芯片网表的文件进行修改,包括:
29.整合所有修改路径的修改脚本,得到针对所述芯片网表的工程修改脚本;
30.运行所述工程修改脚本,对所述芯片网表的文件进行修改。
31.第二方面,本技术实施例提供了一种芯片网表自动修改装置,所述装置包括:
32.获取模块,用于基于芯片网表中异常节点到待修改节点的连接关系,获取修改路径,其中,所述异常节点为所述芯片网表中输出异常的节点,所述待修改节点为导致所述异常节点输出异常的节点;
33.存储模块,用于对所述芯片网表的文件进行解析,得到cell对象和pin对象,并存储到数据字典中;
34.查询模块,用于基于所述修改路径,查询所述数据字典得到待修改的目标对象,其中,所述目标对象为cell对象和/或pin对象;
35.修改模块,用于根据针对所述目标对象的修改脚本,对所述芯片网表的文件进行修改。
36.在一种可能的实施方式中,所述获取模块,具体用于:响应于用户的异常节点选取指令,确定芯片网表中输出异常的异常节点;响应于用户的待修改节点选取指令,确定所述芯片网表中导致所述异常节点输出异常的待修改节点;在所述芯片网表中,针对每个节点,按照网络连线至输出端口至cell至输入端口至网络连线的顺序,从所述异常节点开始逐级逆向查找直至找到所述待修改节点的位置,得到所述异常节点到所述待修改节点的连接关系作为修改路径。
37.在一种可能的实施方式中,所述存储模块,具体用于:确定所述待修改节点所在的模块名称,得到目标模块;逐行读取所述芯片网表的目标模块的文件;判断当前读取的行中是否包含预设结束关键字;若当前读取的行中不包含预设结束关键字,且在当前读取的行为cell描述时,根据当前读取的行创建cell对象;基于所述cell对象的端口,创建所述cell对象的pin对象,并将所述pin对象添加到所述cell对象下;获取所述cell对象的各输出端口,以所述cell对象的各输出端口为关键字key,所述cell对象为值value,得到解析文件,并将所述解析文件存储在数据字典中;若当前读取的行中包含预设结束关键字,则结束本次解析。
38.在一种可能的实施方式中,所述查询模块,具体用于:以所述异常节点的异常输出端口为待查询的关键字key,查询所述数据字典得到相应的cell对象;获取当前查询到的cell对象下的各输入端口pin对象,并从中选取所述修改路径对应的输入端口pin对象;将当前选取的输入端口pin对象作为待查询的关键字key,重复上述查询过程,直至搜索到所述待修改节点的cell对象;针对所述待修改节点的cell对象,确定待修改的目标对象。
39.在一种可能的实施方式中,所述修改模块,具体用于:整合所有修改路径的修改脚本,得到针对所述芯片网表的工程修改脚本;运行所述工程修改脚本,对所述芯片网表的文件进行修改。
40.第三方面,本技术实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
41.存储器,用于存放计算机程序;
42.处理器,用于执行存储器上所存放的程序时,实现本技术中任一所述的芯片网表自动修改方法。
43.第四方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现本技术中任一所述的芯片网表自动修改方法。
44.本技术实施例有益效果:
45.本技术实施例提供的一种芯片网表自动修改方法、装置及电子设备,基于芯片网表中异常节点到待修改节点的连接关系,获取修改路径,其中,所述异常节点为所述芯片网
表中输出异常的节点,所述待修改节点为导致所述异常节点输出异常的节点;对所述芯片网表的文件进行解析,得到cell对象和pin对象,并存储到数据字典中;基于所述修改路径,查询所述数据字典得到待修改的目标对象,其中,所述目标对象为cell对象和/或pin对象;根据针对所述目标对象的修改脚本,对所述芯片网表的文件进行修改。与现有技术相比,基于修改路径,自动识别芯片网表的文件中需要修改的位置,根据修改脚本完成对芯片网表的文件的修改,可以减少手动修改芯片网表引入二次错误的风险和工作量。
46.当然,实施本技术的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
47.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
48.图1为相关技术中修改前与修改后的rtl代码示意图;
49.图2为相关技术中网表示意图;
50.图3为本技术实施例的芯片网表自动修改方法示意图;
51.图4为本技术实施例的计数器的网表示意图;
52.图5为本技术实施例的芯片网表自动修改方法中步骤s101的一种可能的实施方式示意图;
53.图6为本技术实施例的芯片网表自动修改方法中步骤s102的一种可能的实施方式示意图;
54.图7为本技术实施例的芯片网表自动修改方法中步骤s103的一种可能的实施方式示意图;
55.图8为本技术实施例的芯片网表自动修改装置的一种示意图;
56.图9为本技术实施例的电子设备的一种示意图。
具体实施方式
57.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员基于本技术所获得的所有其他实施例,都属于本技术保护的范围。
58.为了更清楚的理解本技术的技术方案,首先对本技术中的术语进行解释:
59.eco:engineering change order,工程修改。
60.网表:是指用基础的逻辑门来描述数字电路连接情况的描述方式,由于逻辑门阵列有着连线表一样的排列外观,因此称之为“网表”。
61.rtl:register transfer level,寄存器传输级描述。
62.cell:ic设计中的基本模块,比如触发器等。
63.pin:cell的端口。
64.net:两个cell端口之间的连线。
65.相关技术中,通过人工查找修改节点并手动编写eco修改脚本的方法来实现芯片网表的修改,具体为:在确定rtl级电路修改方案后,需要人工观察芯片网表确定应当如何修改,然后手动编写eco修改脚本,再通过专用工具运行该eco修改脚本实现对网表的修改。例如:参见图1,比较修改前的rtl代码和修改后的rtl代码可知,修改的目的是需要取消rd_lo_i信号。经过分析发现,取消rd_lo_i信号不会对后续的cnt_l信号产生影响,因此,在图2的网表中找到对应的cnt_l信号,寻找其前级信号,得到图2中cnt_l信号所在的局部网表,查找发现g1830的a端口连接的是rd_lo_i,为了实现修改,修改的方案为将a端口与0连接,编写脚本:detachterm-modulebased netif_port_be_0{g1830}{a0}attachterm-modulebased netif_port_be_0{g1830}{a0}{1’b0}上述脚本中,detachterm表示断开,netif_port_be_0表示模块名,g1830表示完整的cell例化名,a0表示cell的端口。完整的释义为:将netif_port_be_0中的g1830的a0端口断掉。attachterm表示连接,完整释义为:将netif_port_be_0中的g1830的a0端口与0连接。
66.通过上述例子不难发现,相关技术中通过人工查找修改节点并手动编写eco修改脚本的方法,在修改逻辑简单时,可以快速完成修改,在修改逻辑复杂时,工作量非常大,且难免会出现遗漏、引入二次错误等问题。
67.相关技术中还可通过以下方法完成对网表的修改:修改rtl代码,局部综合修改rtl代码所在的模块,生成新的网表,对比新旧网表,根据差异改旧的网表。该方法的局限性很强,原理上与全流程修改没有本质区别,不过通过局部综合能够压缩修改规模,减少工作量,如果已经进行tapeout,仍会影响后续工作,另外,综合工具会根据元器件库和约束条件,自动生成它所认为的最优方案。可能一处微小的rtl修改,综合后检测到网表差异会很大,仅凭人工比对很难直接修改旧的网表。
68.综合上述分析,现有技术方案存在的问题有:第一,依靠人工方法修改网表,不仅工作量大且容错率低,存在引入二次错误的风险;第二,通过修改rtl代码再重新综合得到网表,无论是局部综合还是整体综合都难以保证不会影响下阶段已经开展的工作,第三,eco脚本需要手动编写,增加了工作量。
69.为了减少手动修改芯片网表引入二次错误的风险和工作量,本技术实施例提供了一种芯片网表自动修改方法,参见图3,所述方法包括:
70.s101,基于芯片网表中异常节点到待修改节点的连接关系,获取修改路径,其中,所述异常节点为所述芯片网表中输出异常的节点,所述待修改节点为导致所述异常节点输出异常的节点。
71.本技术可以以python脚本为实现形式,但不仅限于此种实现形式,用其他语言(c/c )也可实现。本技术中以计数器功能为例进行方案说明,但本技术并不仅限于计数器功能的修改。
72.为了更方便、清楚的描述本技术的原理和步骤,引入以下案例,以下步骤均以此案例进行解释:计数器可以保存32bit计数值,从0开始计数,达到0xffffffff后保持该值(即全f保持功能),且当其他单元读取计数值后,该值自动清零(即读清功能)。如果在读取计数值期间又进行了一次计数,从而导致读出的计数值少了1,在对计数值要求精确的条件下,会造成严重的后果。现在需要修改计数器的功能,取消读清和全f保持功能,使计数值达到
0xffffffff后,下一次从0开始计数。计数器的网表参见图4,图4中cell 1393的输出是计数器的bit1,通过分析验证发现,将cell g1476的a0和a1端口置0,可以去掉全f保持功能,将cell g979的a端口置0可以去掉读清功能。
73.以图4所示的计数器的网表为例,cell 1393的输出是计数器的bit1为异常节点,cell g1476的a0和a1端口或cell g979的a端口为待修改节点。图4中箭头所示的方向为去掉读清功能的异常节点到待修改节点的连接关系,即为一条修改路径。一个例子中,得到修改路径的方法可以是开发人员依据展示出的芯片网表的结构,基于异常节点,对芯片网表的结构进行逻辑分析,定位到需要修改的节点,确定导致异常节点输出异常的待修改节点,根据芯片网表中异常节点到待修改节点的连接关系,获取到修改路径。
74.s102,对所述芯片网表的文件进行解析,得到cell对象和pin对象,并存储到数据字典中。
75.芯片网表的文件(简称网表文件)与芯片网表一一对应,网表文件是芯片网表展示形式对应的代码。逐行读取并解析网表文件,创建cell对象和pin对象,并存储到数据字典中,其中,本技术中的数据字典包括列表、数据库、键值对列表等数据结构形态。
76.s103,基于所述修改路径,查询所述数据字典得到待修改的目标对象,其中,所述目标对象为cell对象和/或pin对象。
77.基于修改路径,在字典中依次查找各个cell对象或pin对象,直至查找到待修改节点的位置,得到待修改的目标对象。
78.s104,根据针对所述目标对象的修改脚本,对所述芯片网表的文件进行修改。
79.开发人员可以针对目标对象确定出修改方法,编写修改脚本,即修改脚本为修改方法对应的脚本文件。基于目标对象的修改脚本,利用专用工具运行该修改脚本,完成对网表的修改。
80.在本技术实施例中,基于修改路径,自动识别芯片网表的文件中需要修改的位置,根据修改脚本完成对芯片网表的文件的修改,可以减少手动修改芯片网表引入二次错误的风险和工作量。
81.修改路径可以为开发人员(用户)人工输入的,也可以基于芯片网表结构自动得到。在一种可能的实施方式中,参见图5,上述s101,包括:
82.s1011,响应于用户的异常节点选取指令,确定芯片网表中输出异常的异常节点。
83.开发人员依据芯片网表的结构,通过异常节点选取指令来选取确定芯片网表中输出异常的异常节点。
84.以图4所示的计数器的网表为例,cell 1393的输出是计数器的bit1,则cell 1393的输出端口是为异常节点。
85.s1012,响应于用户的待修改节点选取指令,确定所述芯片网表中导致所述异常节点输出异常的待修改节点。
86.开发人员依据芯片网表的结构,基于异常节点,对芯片网表的结构进行逻辑分析,定位到需要修改的节点,通过待修改节点选取指令,选取导致异常节点输出异常的待修改节点。
87.以图4所示的计数器的网表为例,cell g1476的a0和a1端口或cell g979的a端口为待修改节点。
88.s1013,在所述芯片网表中,针对每个节点,按照网络连线至输出端口至cell至输出端口至网络连线的顺序,从所述异常节点开始逐级逆向查找直至找到所述待修改节点的位置,得到所述异常节点到所述待修改节点的连接关系作为修改路径。
89.根据芯片网表中异常节点到待修改节点的连接关系,得到修改路径。为了更方便的得到修改路径,可以通过程序设计方法自动得到修改路径。具体的,可以根据芯片网表的结构,按照网络连线

输出端口

cell

输入端口

网络连线的顺序,从异常节点开始逐级逆向查找直至找到待修改节点的位置,得到异常节点到待修改节点的连接关系作为修改路径,从而实现修改路径的自动获取。以图4所示的计数器的网表为例,其中,cell g979的a端口为待修改节点,cell 1393的输出端口是为异常节点,从cell 1393输出端口信号net 0开始到cell g979的a端口的路径(修改路径)是:net0

1393.y

1393

1393.b1n

net1

g_1_.q

g_1_

g_1_.d

net2

g977.y

g977

g977.b

net3

cnt_n_0.y

cnt_n_0

cnt_n_0.a

net4

g979.y

g979

g979.a,即为图4中箭头所示的方向。
90.在本技术实施例中,基于异常节点及待修改节点,按照网络连线

输出端口

cell

输入端口

网络连线的顺序得到修改路径,方便逆向查找。
91.在一种可能的实施方式中,上述s102,包括:
92.确定所述待修改节点所在的模块名称,得到目标模块;
93.逐行读取所述芯片网表的目标模块的文件;
94.判断当前读取的行中是否包含预设结束关键字;
95.若当前读取的行中不包含预设结束关键字,且在当前读取的行为cell描述时,根据当前读取的行创建cell对象;
96.基于所述cell对象的端口,创建所述cell对象的pin对象,并将所述pin对象添加到所述cell对象下;
97.获取所述cell对象的各输出端口,以所述cell对象的各输出端口为key(关键字),所述cell对象为value(值),得到解析文件,并将所述解析文件存储在数据字典中;
98.若当前读取的行中包含预设结束关键字,则结束本次解析。
99.数据字典是以hash形式存储的。
100.芯片网表的文件(网表文件)有如下格式:module module0(ctl,in_0,in_1,z);
101.[0102][0103]
以上格式包含多个module的详细定义,以module0为例:module0是该module的类型名,括号中的ctl、in_0、in_1、z是该module与外部其他module的连接信号,input关键字后面的是输入信号,output关键字后面的是输出信号,wire关键字声明信号连线,包括输入输出信号和内部使用的信号。mxt2_x1n_a9pp96cts_c20是一种cell类型,该语句表示声明一个名称为g26_2005的mxt2_x1n_a9pp96cts_c20类型的cell,其a端口连接in_0信号,b端口连接in_1信号,s0端口连接ctl信号,y端口连接z信号。endmodule关键字表示module定义结束。
[0104]
对芯片网表的文件进行解析之前,定义两个类分别用于存放pin和cell,例如:
[0105][0106]
pin类用于描述器件接口与信号线的连接关系。其中name成员表示器件接口名字,wire表示信号线名字。
[0107][0108][0109]
cell类描述器件,其中name表示该器件的类型,instance表示该器件名字,_input表示器件所有输入信号的集合,其中的元素类型为pin,同理,_output存放所有输出信号集
合。此外还定义了信号添加self._output.add(s)和获取接口get_input(self)。需要注意的是input_ignore和output_signals分别是所有输入、输出信号类型的集合,具体的类型需要根据实际需求定义,后续解析和查找只针对这两个集合中包含的信号进行,定义如下:
[0110]
input_ignore=['s0','ck','e',

]
[0111]
output_signals=['y','q','qn',

]
[0112]
在一个例子中,参见图6,对网表文件进行解析,得到各cell对象和pin对象,并存储到数据字典中的步骤如下:
[0113]
步骤1:预先确定修改节点所在的模块名称,得到目标模块(目标module);
[0114]
步骤2:逐行读取芯片网表的目标模块的文件,判断当前读取的行中是否包含预设结束关键字endmodule,若否,执行步骤3,若是,执行步骤7;
[0115]
步骤3:跳过以input、output、wire、assign开始的行,这些行描述的是module的输入输出信号线以及内部器件之间的连线,无需解析;
[0116]
步骤4:在当前读取的行为cell描述时,根据当前读取的行,分别提取器件类型和器件实例名字,创建cell对象;
[0117]
步骤5:对步骤4中cell对象的端口中输入输出信号,分别提取端口名和信号线名并创建pin对象,依次添加到步骤4中cell对象的_input或_output集合中;
[0118]
步骤6:获取cell对象的各输出端口,以cell对象的各输出端口为key,cell对象为value,得到解析文件,并将所述解析文件存储在数据字典(pin_map)中;
[0119]
步骤7:结束。
[0120]
python实现代码如下:
[0121]
[0122][0123]
在本技术实施例中,在对芯片网表的文件进行解析时,找到目标模块后跳过关于信号线描述的语句,仅解析目标模块内关于cell及cell对象的端口的语句,能够快速解析。
[0124]
在一种可能的实施方式中,上述s103,包括:
[0125]
以所述异常节点的异常输出端口为待查询的关键字key,查询所述数据字典得到相应的cell对象;
[0126]
获取当前查询到的cell对象下的各输入端口pin对象,并从中选取所述修改路径对应的输入端口pin对象;
[0127]
将当前选取的输入端口pin对象作为待查询的关键字key,重复上述查询过程,直至搜索到所述待修改节点的cell对象;
[0128]
针对所述待修改节点的cell对象,确定待修改的目标对象。
[0129]
在一个例子中,参见图7,基于所述修改路径,查询所述数据字典得到待修改的目标对象的步骤如下:
[0130]
步骤1:以异常信号为起点,查询数据字典得到以异常信号为输出的cell对象;
[0131]
步骤2:获取cell对象的各输入端口pin对象,并从中选取所述修改路径对应的输入端口pin对象;
[0132]
步骤3:将当前选取的输入端口pin对象作为待查询的key,重复上述查询过程,直至搜索到所述待修改节点的cell对象。
[0133]
python实现代码如下:
[0134][0135]
在本技术实施例中,基于修改路径,以异常信号为起点逆向查询,直至搜索到待修改节点的cell对象,针对待修改节点的cell对象,确定待修改的目标对象。
[0136]
在一种可能的实施方式中,上述s104,包括:
[0137]
整合所有修改路径的修改脚本,得到针对所述芯片网表的工程修改脚本;
[0138]
运行所述工程修改脚本,对所述芯片网表的文件进行修改。
[0139]
以图4所示的计数器的网表为例,cell g1476的a0和a1端口与cell g979的a端口为两个待修改节点,则对应两个修改路径。针对每条修改路径,对应一个该修改路径的修改脚本,获得所有修改路径的修改脚本,整合所有修改路径的修改脚本,得到针述芯片网表的工程修改脚本,工程修改脚本自动输出的方法为根据语法特征自动编写工程并输出到文本文件中,再利用专用工具运行工程修改脚本,完成对芯片网表的文件进行修改。
[0140]
python实现代码如下:
[0141][0142]
在本技术实施例中,整合所有修改路径的修改脚本,得到针对芯片网表的工程修改脚本,运行所述工程修改脚本,完成对芯片网表的修改。
[0143]
本技术实施例提供了一种芯片网表自动修改装置,参见图8,所述装置包括:
[0144]
获取模块701,用于基于芯片网表中异常节点到待修改节点的连接关系,获取修改
路径,其中,所述异常节点为所述芯片网表中输出异常的节点,所述待修改节点为导致所述异常节点输出异常的节点;
[0145]
存储模块702,用于对所述芯片网表的文件进行解析,得到cell对象和pin对象,并存储到数据字典中;
[0146]
查询模块703,用于基于所述修改路径,查询所述数据字典得到待修改的目标对象,并生成针对所述目标对象的修改脚本,其中,所述目标对象为cell对象和/或pin对象;
[0147]
修改模块704,用于根据针对所述目标对象的修改脚本,对所述芯片网表的文件进行修改。
[0148]
在一种可能的实施方式中,所述获取模块,具体用于:响应于用户的异常节点选取指令,确定芯片网表中输出异常的异常节点;响应于用户的待修改节点选取指令,确定所述芯片网表中导致所述异常节点输出异常的待修改节点;在所述芯片网表中,针对每个节点,按照网络连线至输出端口至cell至输入端口至网络连线的顺序,从所述异常节点开始逐级逆向查找直至找到所述待修改节点的位置,得到所述异常节点到所述待修改节点的连接关系作为修改路径。
[0149]
在一种可能的实施方式中,所述存储模块,具体用于:确定所述待修改节点所在的模块名称,得到目标模块;逐行读取所述芯片网表的目标模块的文件;判断当前读取的行中是否包含预设结束关键字;若当前读取的行中不包含预设结束关键字,且在当前读取的行为cell描述时,根据当前读取的行创建cell对象;基于所述cell对象的端口,创建所述cell对象的pin对象,并将所述pin对象添加到所述cell对象下;获取所述cell对象的各输出端口,以所述cell对象的各输出端口为关键字key,所述cell对象为值value,得到解析文件,并将所述解析文件存储在数据字典中;若当前读取的行中包含预设结束关键字,则结束本次解析。
[0150]
在一种可能的实施方式中,所述查询模块,具体用于:以所述异常节点的异常输出端口为待查询的关键字key,查询所述数据字典得到相应的cell对象;获取当前查询到的cell对象下的各输入端口pin对象,并从中选取所述修改路径对应的输入端口pin对象;将当前选取的输入端口pin对象作为待查询的关键字key,重复上述查询过程,直至搜索到所述待修改节点的cell对象;针对所述待修改节点的cell对象,确定待修改的目标对象。
[0151]
在一种可能的实施方式中,所述修改模块,具体用于:整合所有修改路径的修改脚本,得到针对所述芯片网表的工程修改脚本;运行所述工程修改脚本,对所述芯片网表的文件进行修改。
[0152]
本技术实施例还提供了一种电子设备,如图9所示,包括处理器801、通信接口802、存储器803和通信总线804,其中,处理器801,通信接口802,存储器803通过通信总线804完成相互间的通信,
[0153]
存储器803,用于存放计算机程序;
[0154]
处理器801,用于执行存储器803上所存放的程序时,实现本技术中任一所述的芯片网表自动修改方法。
[0155]
上述电子设备提到的通信总线可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便
于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0156]
通信接口用于上述电子设备与其他设备之间的通信。
[0157]
存储器可以包括随机存取存储器(random access memory,ram),也可以包括非易失性存储器(non-volatile memory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
[0158]
上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0159]
在本技术提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现本技术中任一所述的芯片网表自动修改方法。
[0160]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk(ssd))等。
[0161]
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0162]
本说明书中的各个实施例均采用相关的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0163]
以上所述仅为本技术的较佳实施例,并非用于限定本技术的保护范围。凡在本技术的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本技术的保护范围内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献