CN116431582B - 一种自动化扩展硬件设计电路资源的方法 - Google Patents
一种自动化扩展硬件设计电路资源的方法 Download PDFInfo
- Publication number
- CN116431582B CN116431582B CN202310708350.2A CN202310708350A CN116431582B CN 116431582 B CN116431582 B CN 116431582B CN 202310708350 A CN202310708350 A CN 202310708350A CN 116431582 B CN116431582 B CN 116431582B
- Authority
- CN
- China
- Prior art keywords
- file
- circuit
- library
- current
- expanded
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 80
- 238000013461 design Methods 0.000 title claims abstract description 45
- 230000002194 synthesizing effect Effects 0.000 claims description 13
- 230000003321 amplification Effects 0.000 claims description 6
- 238000003199 nucleic acid amplification method Methods 0.000 claims description 6
- 230000010354 integration Effects 0.000 claims description 5
- 238000012360 testing method Methods 0.000 abstract description 31
- 230000000694 effects Effects 0.000 abstract description 3
- 230000015572 biosynthetic process Effects 0.000 description 6
- 238000003786 synthesis reaction Methods 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 150000003839 salts Chemical class 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000014616 translation Effects 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明提供一种自动化扩展硬件设计电路资源的方法,包括获取待扩展电路文件和库文件;解析所述库文件、所述待扩展电路文件分别得到相应的端口信息;生成新的顶层文件,将所述待扩展电路文件例化到所述新的顶层文件中;在所述新的顶层文件中定义级联数,基于所述级联数将所述库文件级联到所述新的顶层文件中;在级联之前将所述库文件例化。提供了自动化扩展硬件设计电路资源的解决方案,可以快速生成满足资源条件的电路,去匹配大规模资源的芯片进行测试,大幅提升测试工作效率,有利于优化自动化设计工具的应用效果。
Description
技术领域
本发明属于集成电路技术领域,具体涉及一种自动化扩展硬件设计电路资源的方法。
背景技术
用于设计电子电路的自动化工具,例如EDA软件,在FPGA的自动化设计中,它首先要将电路设计转换为网表文件后,再基于网表文件进行装箱,布局,布线,生成配码等一系列的流程处理。当自动化设计工具需要集成比当前芯片规模资源大的芯片时,测试人员当前的测试电路资源相对就显得很小,由于缺乏自动化生成大资源的电路文件的手段,测试人员需要手动去设计一些更大规模更大资源的电路去匹配大规模资源的芯片进行测试。举例来说,本来有一些小的电路文件,适用于之前资源规模比较小的芯片,例如几十万门电路。资源规模在实际工作中是多变的,当需要测试的资源规模变大了,变成几千万门电路时,进行测试的时候这些小规模电路就不能完全满足需求了。假如待测的规模变成了亿万门级,前面的千万门的电路又不适用了。实际工作中当需要测试资源量占到芯片规模50%,60%乃至100%左右的情况,已有的小电路完全不满足实际测试需求。
一方面依靠手动写电路非常耗时,不利于电路设计自动化程度的推进;另一方面现有技术中难以在综合之前确定综合出来的资源数是否已经满足当前测试要求,需要频繁尝试,进行综合过后然后才能查看资源数,进而才能确定是否已经满足当前测试要求,扩展的可控性差。这些问题都限制了测试效率的持续提高。此外,现有技术中扩展硬件设计电路资源时更难以得到恰好满足当前测试要求的资源数,也不利于资源利用率的进一步提高。
因此,亟需研究如何自动化实现扩展硬件设计电路资源,实现自动化得到满足测试需要的资源数的电路文件,有效的缩短测试人员的设计时间,提高测试效率且持续优化资源利用率,以此推进自动化电路设计的深层次应用。
发明内容
本发明是为解决上述现有技术的全部或部分问题,本发明一方面提供了一种自动化扩展硬件设计电路资源的方法,按照用户设置的门级或者资源数精准地生成匹配资源的电路,实现电路资源的自适应扩展;本发明另一方面还提供了相应的装置。通过本发明提供的技术方案自动生成电路文件,用户可以根据测试需要,手动配置下所需芯片规模数据,即可自动扩展满足需求的电路。
本发明提供的一种自动化扩展硬件设计电路资源的方法,包括:获取待扩展电路文件和库文件;解析所述库文件、所述待扩展电路文件分别得到相应的端口信息;生成新的顶层文件,将所述待扩展电路文件例化到所述新的顶层文件中;在所述新的顶层文件中定义级联数,基于所述级联数将所述库文件级联到所述新的顶层文件中;在级联之前将所述库文件例化。
通过获取待扩展电路文件和库文件,把较小的电路和其他库文件里面的电路去级联合并,生成一个新的更大的电路,从而扩展资源,通过解析得到端口信息,可以基于端口信息和用户定义的级联数量自动级联,实现自动化扩展硬件设计电路,不依赖人工手写电路。
级联之后,进行综合;判断是否生成网表文件,如是:则统计得到当前资源,判断所述当前资源是否满足预设的资源期望值;如满足,则将新的电路以及生成的网表文件保存;如不满足,则更新所述级联数,再次进行综合,直到满足。(即生成网表文件中的资源满足用户配置的所需芯片规模数据)。获取库文件进行级联,并且进行综合,检查网表文件中的资源是否满足预设条件,如果满足则保存文件,不满足则继续增加级联的个数,进行综合,直到满足条件为止。对扩展资源的数量可以控制,如果后续还有更大资源的芯片,可以很方便的配置资源数量要求。
定义级联数的方法包括:获取所述库文件的电路资源,基于所述库文件的电路资源(的大小),设定并传入级联长度参数的初始值,以所述初始值初始化所述级联数;更新所述级联数的方法包括:自动判断所述库文件的电路资源,基于所述库文件的电路资源设定所述级联长度参数的增幅,以所述增幅更新所述初始值定义当前的所述级联数。自动获取用于扩展的库文件的电路资源,如果电路资源本身较大可以设定较小的增幅,反之则设定较大的增幅,可以最大程度减少更新级联数的次数,更快的定义最合适的级联数满足当前扩展需求,利于自动扩展的整体效率更优。
更新所述级联数的方法包括:基于所述当前资源和所述资源期望值的差值,设定所述级联长度参数的增值,以所述增值更新所述初始值定义当前的所述级联数。
通过自动获取当前资源比对用户配置的所需芯片规模数据即资源期望值,可以更恰当地设定级联数,进一步优化扩展时间,在实现资源扩展满足用户需求的情况下,时间更短。
所述生成新的顶层文件的过程包括:定义调用的子模块;基于解析所述待扩展电路文件得到的端口信息,在所述子模块中插入端口类型,位宽,名字;同时在所述子模块中新添加一个输出端口用于级联后的输出。
将所述库文件例化的过程包括:基于解析所述库文件得到的端口信息,定义例化的库文件的例化名,并将所述待扩展电路文件中的输出端口随机接到所述例化的库文件中的输入管脚中;将所述例化的库文件中的输出管脚接到所述库文件的输出端口。
将所述待扩展电路文件的顶层实体中输出接到该例化的库文件的输入,例化的库文件中的输出管脚接到级联过程中定义的输出端口,后面进行级联的时候,再由该例化的库文件的输出接到下面的输入。
级联的过程包括:将级联长度参数记为Length,Length≥2,传入所述Length定义所述级联数;定义级联循环次数,记为N,N为正整数,N的值直接由Length-1传入;基于解析所述库文件得到的端口信息,获取到所有位宽,并对所有位宽分别进行参数设置;定义输出端口的数据类型;将例化的库文件中的输出接到级联的输入,基于所述Length和N的值,将例化的库文件进行串联。
将例化的库文件中的输出接到级联的输入的方法包括:比较输出位宽与输入位宽;若所述输出位宽小于所述输入位宽,则将全部所述输出位宽拼起来,并且取出所述输入位宽和所述输出位宽差值对应的位宽传入所述输入位宽;若所述输出位宽大于所述输入位宽,则将所述输出位宽取部分位宽传入到所述输入位宽,所述部分位宽与所述输入位宽一致;如果一致,则直接将输出接给输入端口。有些电路和库文件的输出端口和输入端口的位宽并不必然是一致的,通过把小规模的待扩展电路的一些端口进行拼接,然后传给库文件,则可以在库文件端口位宽较大时也能将输出和输入对接。
将例化的库文件进行串联后,最后的输出赋值给级联后的输出端口;将所有的输出端口进行逻辑运算操作后,再进行或操作。要给这些所有的输出端口关联在一起,需要有一些设置用于关联,在硬件电路设置中,使用随机的与、或、非、异或、同或等逻辑运算操作方式去进行输出线或端口的关联,所有的输出端口的这一串与或非逻辑计算后会给到一个输出端口,而这个输出端口只有一个位宽,所以通过这种方式可以最后生成一个位宽传给输出。对于实际芯片其端口往往有所限制,扩展以后的电路,只有一个输出口,并不会因原来的芯片的端口的限制而产生较大影响,更便于实际应用。
所述获取待扩展电路文件和库文件的方法包括:抓取批量的实际电路文件及(批量的)备用库文件;将所述实际电路文件、所述备用库文件各自的路径和顶层实体分别保存到第一文件和第二文件中;从所述第一文件取出一个所述实际电路文件作为当前的所述待扩展电路文件,从所述第二文件中取出一个所述备用库文件作为当前的所述库文件。抓取批量的实际电路文件和备用库文件,可以从中选择最合适的实际电路文件作为当前扩展的原始电路,及备用库文件作为用于当前扩展的库文件,可以用最少的级联数实现扩展,自动扩展可以节约更多的时间。
得到所述待扩展电路文件的端口信息的方法包括:遍历循环所述第一文件,获取每一行中每一个所述实际电路文件的路径和顶层实体名,解析所述顶层实体名对应的顶层实体中的端口信息并保存为字典结构;从所述字典结构中获取当前的所述待扩展电路文件的端口信息。
得到所述库文件的端口信息的方法包括:遍历循环所述第二文件,获取每个所述备用库文件的路径、顶层实体名;解析所述顶层实体名对应的顶层实体生成端口信息字典;保存所述备用库文件的路径、顶层文件和所述端口信息字典;从所述端口信息字典中获取当前的所述库文件的端口信息。
将每个所述备用库文件路径、顶层文件和所述端口信息字典均以列表形式保存在所述第二文件中的第一列表中,从所述第一列表中随机选择一个所述备用库文件作为当前的所述库文件,将当前的所述文件的路径、顶层文件和端口信息字典保存到所述第二文件中的第二列表中,从所述第二列表中取出当前的所述库文件的端口信息。
直到所述第二文件中全部的所述备用库文件遍历结束,所述第一列表中保存了全部所述备用库文件的信息。以列表形式保存,则可以随机选择,所述第二文件中被选过的所述备用库文件,不会再次被选中,从所述第二列表中获取当前的所述库文件的端口信息也可以相应理解,可以满足从所述第二文件中随机取出一个所述备用库文件作为当前的所述库文件的方式。
从所述第二文件中取出一个所述备用库文件作为当前的所述库文件的方法包括:对第二文件进行遍历:对当前的备用库文件进行综合,并生成网表文件,获取当前的备用库文件的资源;获取扩展后的资源预期值,将所述资源预期值分别除以每个所述备用库文件的资源,得到的商最小时对应的所述备用库文件取出作为当前的所述库文件。
从所述第一文件取出一个所述实际电路文件作为当前的所述待扩展电路文件的方法包括:对第一文件进行遍历:对当前的实际电路文件进行综合,判断是否生成网表文件,如是:则统计得到当前实际电路文件的资源,并将当前实际电路文件标记,作为可用的实际电路文件;如否:则标记,作为不可用的实际电路文件,不能取出作为当前的所述待扩展电路文件;获取扩展后的资源预期值,基于所述可用的实际电路文件的资源与所述资源预期值,取出一个所述实际电路文件。
所述待扩展电路文件有多个;将所述第一文件中的所述实际电路文件进行排序,按排序先后,取出所述实际电路文件作为当前的所述待扩展电路文件进行扩展;其中,对于当前的所述待扩展电路文件,级联之后,进行综合;设置综合时间阈值;如果综合时间超过所述阈值,则结束当前的待扩展电路文件的扩展,进行下一个所述待扩展电路文件的扩展;如果综合在所述阈值内完成,统计不同模块的资源,若当前每个模块的资源满足当前的所述待扩展电路文件的扩展后资源预期值,则执行下一个所述待扩展电路文件的扩展。能够批量并且自动扩展电路,生成满足资源条件的电路,同时具有很好的扩展性,能够满足不同模块资源的扩展。针对批量小规模电路需要扩展的应用场景,可以实现批量扩展,且设置综合时间阈值进一步保障扩展效率的可控性。
本发明另一方面提供的一种装置,用于执行本发明的自动化扩展硬件设计电路资源的方法,包括:解析模块,用于解析端口信息;级联模块,用于选择库文件并且拼接新的顶层文件,进行级联。
与现有技术相比,本发明的主要有益效果:
本发明的自动化扩展硬件设计电路资源的方法,自动获取待扩展电路文件和库文件,解析端口信息并可以由用户定义级联个数,自动级联实现扩展,能够实现电路资源根据当前的测试需要自适应扩展,更快速地去匹配更大规模资源的芯片进行测试,大幅提高了测试工作效率也利于进一步优化测试工艺;扩展后的电路资源能更符合实际测试要求,扩展结果可靠性较人工手写电路设计更高更准确,推进了自动化设计工具的应用效果。本发明的装置具有相应优势。
附图说明
图1为本发明实施例的自动化扩展硬件设计电路资源的方法示意图。
图2为本发明实施例的自动化扩展硬件设计电路资源的流程示意图。
实施方式
下面将对本发明具体实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例中如图1示例的一种自动化扩展硬件设计电路资源的方法,包括:获取待扩展电路文件和库文件;解析库文件、待扩展电路文件分别得到相应的端口信息;生成新的顶层文件,将待扩展电路文件例化到新的顶层文件中;在新的顶层文件中定义级联数,基于级联数将库文件级联到新的顶层文件中;在级联之前将库文件例化。
对于测试人员来说,一条一条测试,一个版本测试的电路数量很有限,一般只能有几个,这样就存在测试覆盖不全的风险,通过本实施例提供的自动化扩展硬件设计电路资源的方法自动生成,可以快速地满足每个测试版本需要的电路,对于后续芯片继续扩大时进行测试时同样的可以自动再扩展,结合常用的自动化设计工具如EDA软件也更利于发挥更好的软件应用效果,提高测试效率和测试工艺水平。本实施例中提供的自动化扩展方案能够快速自动生成需要的电路,一般测试电路会有很多,几百或上千个,如果当前芯片规模扩展到几千万门,甚至后面芯片规模扩展到亿万门级,又得重新一个个去生成一些亿万门级资源的电路,不仅人力成本过大,而且这样会耗费很长时间,通过本实施例的方法进行自动生成,每次可以根据测试需要,手动配置下所需芯片规模数据,即可自动扩展满足需求的电路。
在本实施例中,本地存有批量的实际电路文件以及备用库文件,示例的情况中每个实际电路文件及备用库文件都可以作为待扩展电路文件和用于扩展资源的库文件。只要能抓到实际电路文件的,不管是本地存储还是其他存储方式(如云存储)都可以,并不限定,本实施例中的实际电路文件都是放在本地的,只有企业内网可以抓取,且内网不能连外网的。内部服务器或者工作电脑或者集成在特定设备中的存储介质都是可以存放,更利于技术信息保密及便于内部数据管理。
有些实施例中,获取待扩展电路文件和库文件的方法包括:全部抓取批量的实际电路文件及批量的备用库文件;将每个实际电路文件、每个备用库文件各自的路径和顶层实体分别保存到第一文件和第二文件中;从第一文件取出一个实际电路文件作为当前的待扩展电路文件,从第二文件中取出一个备用库文件作为当前的库文件。具体的示例中,待扩展电路文件以及库文件的路径以及顶层实体分别以“{路径}空格{顶层实体名}”的格式保存到原始电路数据列表文件(示例文件名cases_list.txt,即第一文件)以及IP库文件信息列表文件(示例文件名ip_libs.txt,即第二文件)中。示例的格式是不限定的,只要里面存有电路路径和顶层实体。
本实施例中也将待扩展电路文件称为小电路,示例的一个小电路如下:
module a2b(a, b, c);
input a;
input b;
output c;
assign c = a + b;
endmodule
对于这个小电路,综合出来只有一个le(le指代逻辑单元Logic Element),还有一些IO(输入输出),对该小电路扩展,即把小电路其他库文件里面的电路去级联合并,生成一个新的电路,从而扩展资源。
本实施例中,将待扩展电路文件例化到新的顶层文件中,前文示例的a2b(即old_top,原始顶层实体),需要扩展,则要在外面包一个大的顶层实体top,在这个新的顶层实体top中先把a2b这个模块例化过来,再和库文件中的某个电路输入输出去关联起来,完成电路扩展。
图2示例的情况中,库文件是IP库文件,自动化扩展硬件设计电路资源的流程是:首先将IP库文件信息列表文件中所有库文件进行解析,将每个库文件解析出来的路径,顶层名,端口信息(示例的端口信息包括输入、输出以及双向的端口的名字、位宽)以列表形式保存到libs_l(即第一列表)中。其次遍历循环原始电路数据列表文件(即第一文件),取出其中每个实际电路文件的路径以及顶层实体名从而得到顶层实体的全路径,并将一个实际电路文件作为待扩展电路文件;再通过解析出来的第一列表,随机在第一列表选择一个库文件信息,以原有顶层实体名加上“_top”,并将原来的顶层例化到这个新的顶层文件中,通过传入初始化的级联长度参数Length在新的顶层文件中定义级联数,将选择的库文件级联到新的顶层文件中,再进行综合,判断生成网表文件中的资源是否满足要求,如果满足,则将该新的电路以及生成的网表文件保存,如果不满足,则增加Length的值以更新级联数,再次进行综合,直到生成网表文件中的资源满足要求。示例的情况中,通过随机的匹配生成,对电路有了更加多样的资源整合,测试的覆盖率会更广,能较好地解决对于芯片规模逐步增大后,测试电路不满足测试的这种情况。
图2示例的流程是一个较好的实施例,有些实施例中也可以是不同的流程或包含不同的步骤,在此不限定具体情况。此外,需要说明的是图2示例的情况是有批量的实际电路文件以及备用库文件,且自动进行扩展得到多个扩展后电路的场景,以此为示例是为了便于说明本实施例的细节,并不以任何形式限制本发明。对于待扩展电路文件有一个,用于扩展的库文件有一个的情况可以相应理解,在此不限定具体情况。
图2示例的情况中,主要步骤的过程内容的一些具体示例如下。
示例的过程1“解析库文件端口信息”中,库文件通过FPGA EDA软件生成,这些库文件是已经存在的,并且这些库文件的路径以及顶层实体名保存到IP库文件信息列表文件(即第二文件)中。通过遍历循环IP库文件信息列表文件,找到每个库文件的路径path,顶层文件{topname}.v,解析{topname}.v,生成端口信息字典port_dict,再将该路径path,顶层文件名{topname},以及端口信息字典以保存到libs_l列表(即第一列表)中,直到IP库文件信息列表文件ip_libs.txt中所有库文件遍历结束,第一列表则保存了所有库文件的信息。
其中port_dict字典如下所示:
{‘input’:{input_name1:input_name1_width,input_name2:input_name2_width……},‘output’:{output_name1:output_name1_width,output_name2:output_name2_width……}}
示例的代码中‘input’、‘output’为端口类型,分别表示输入端口,输出端口以及双向端口;input_name表示输入端口名,input_name_width表示输入端口的位宽,output_name表示输出端口名,output_name_width表示输出端口的位宽。
示例的libs_l列表如下:
[[IP1_path,IP1_topname,IP1_port_dict],[IP2_path, IP2_topname, IP2_port_dict], [IP3_path, IP3_topname, IP3_port_dict]……]
其中IP_path表示库文件的路径,IP_topname表示库文件的顶层实体名,IP_port_dict表示每个库文件解析出来的port_dict字典。从端口信息字典即port_dict字典中获取当前的库文件的端口信息。
示例的端口一般分为三种,input、output以及inout,一般会有很多个input端口,很多个output端口或者很多个inout,因为字典是键值对存储,所以把端口作为字典的key,再以所有端口名存储到value中,这样获取信息更方便。
示例的过程2“遍历循环原始电路数据列表文件”中,获获取每一行中每一个实际电路文件的路径和顶层实体名,解析顶层实体名对应的顶层实体中的端口信息并保存为字典结构(保存到top_pad_dict字典中,该字典的示例代码含义与port_dict字典相同,可以相应理解);从字典结构中获取当前的待扩展电路文件的端口信息。
获取存储的全部实际电路文件和备用库文件的端口信息后,从第一文件取出一个实际电路文件作为当前的待扩展电路文件的示例操作:对第一文件进行遍历:对当前的实际电路文件进行综合,判断是否生成网表文件,如是:则统计得到当前实际电路文件的资源,并将当前实际电路文件标记,作为可用的实际电路文件;如否:则标记,作为不可用的实际电路文件,不能取出作为当前的待扩展电路文件;获取扩展后的资源预期值,基于可用的实际电路文件的资源与资源预期值的差值,取出一个实际电路文件。有些实施例中存在实际电路文件不可用于扩展的情况,通过遍历对每个实际电路文件先进行底层综合就行,如果能综合出来网表文件,即是可以综合的,如果综合失败没有生成网表文件,即是综合失败的。如果不能综合则作为不可用的电路文件不会被选用。当用户对于扩展后的资源预期值不同时,较好的做法中选用一个最合适的实际电路文件作为当前的待扩展电路文件,能够用较少的级联数,以更高的效率完成自动扩展,一个示例中分别统计每个可用的实际电路文件的资源,并得到其与当前用户扩展的资源预期值的差值,将差值排序得到最小差值,将最小差值对应的可用的实际电路文件取出作为当前的扩展电路文件。
示例的过程3“随机选择库文件并且拼接新的顶层文件”中:在libs_l列表中随机选择一个库文件,保存到ip_lib列表(即第二列表)中,该列表中包含了过程1中的库文件路径,顶层实体名,以及端口信息字典port_dict。示例的情况中,将每个备用库文件路径、顶层文件和端口信息字典均以列表形式保存在第二文件中的第一列表中,从第一列表中随机选择一个备用库文件作为当前的库文件,将当前的文件的路径、顶层文件和端口信息字典保存到第二文件中的第二列表中,从第二列表中取出当前的库文件的端口信息。本实施例中采用从第二文件中随机取出一个备用库文件作为当前的库文件的方式,有些实施例中不是随机取出备用库文件作为当前用于扩展的库文件。
有些实施例中,从第二文件中取出一个备用库文件作为当前的库文件的示例操作:对第二文件进行遍历:对当前的备用库文件进行综合,并生成网表文件,获取当前的备用库文件的资源;获取扩展后的资源预期值,将资源预期值分别除以每个备用库文件的资源,得到的商最小时对应的备用库文件取出作为当前的库文件。示例的情况中得到的商可以用于评估需要的级联数,以商的最小值作为级联数的初始值,可以用最少级联次数和最少的级联个数得到满足用户扩展后的资源预期值的新电路文件,扩展效率和库文件利于效率都得到了进一步的优化。较好的做法中当以级联数的初始值进行级联后,与资源预期值还存在差距需要增加级联数。增加级联数的做法也可以根据库文件的资源:取出所有备用库文件的所有资源,取出最大值,然后按最大值的两倍除以选择对应的库文件的资源并取整作为级联数的增加值,这样实现了选用的库文件资源越多,累加到级联数的会更少,且扩展后达到的资源数即使不完全等于资源预期值,也会更大程度地接近资源预期值,扩展准确性较好。
生成一个新的顶层实体文件命名为new_top.v,并且文件中定义好子模块module……endmodule(末端的子模块);top_pad_dict中的端口信息,在每个子模块module中插入端口类型、位宽、名字,同时在每个子模块module中新添加一个输出端口记为tout,这个输出端口用于级联后的输出,并生成对电路的例化信息到个新的顶层实体文件new_top.v中。即示例的情况中生成新的顶层文件的过程包括:定义调用的子模块;基于解析待扩展电路文件得到的端口信息,在子模块中插入端口类型、位宽、名字;同时在子模块中新添加一个输出端口用于级联后的输出。示例的代码如下:
module new top (
input [input name1 width -1: 0]
input name1,input [input name2 width -1: 0]
input name2,input [input name3 width -1: 0]
input name3,output [output name2 width -1:0]
output name2,output [output name2 width -1: 0]
output name2,output [output name3 width -1:0]
output name3,output tout
);
old top to(
.input namel(input name1),
.input name2(input name2),
.input name3(input name3),
.output name1(output name1),
.output name2(output name2),
.output name3(output name3)
);
endmodule
其中,input_name、input_name_width、output_name、output_name_width均为原有电路顶层中的端口信息字典top_pad_dict中获取;old_top为待扩展电路的顶层实体名,new top为新的顶层文件new_top.v中的顶层实体名。
示例的过程4“传入初始级联数并且库文件进行定义”中,获取当前库文件的电路资源,基于当前库文件的电路资源(大小),设定并传入级联长度参数的初始值,以初始值初始化级联数。将级联长度参数记为Length,Length≥2。示例的情况中:用户的资源预期值除以当前库文件的电路资源得到的商作为Length的初始值。
选择的库文件信息在ip_lib列表中,通过ip_lib列表的顶层实体名、端口以及位宽,首先根据ip_lib列表中的输出端口,获取到所有位宽,对所有位宽分别进行参数设置包括:“localparam Width{编号} = 位宽;”,如果有不同的位宽,则定义多个localparamWidth。把所有位宽长度取出来,比如有个输入端口位宽是12,另一个输入端口位宽是10,还有一个输出端口位宽是12,则定义两个参数,一个参数对应的位宽是12,另一个是10。定义级联数示例的代码:“localparam Length = {Length};”以及级联循环次数N:“localparamN = Length-1;”,其中该N的值直接由Length-1传入。示例的情况中,表征级联个数的级联长度参数是固定的{Length}是会根据上面取到的级联数写进来。本实施例中初始值可以根据用于级联的库文件电路的资源去初始,比如库文件电路的资源有500个逻辑单元,则可以初始设Length为100;库文件电路的资源有1000个逻辑单元,则初始值设50。最后将输出端口定义为wire类型:“wire [(Width{编号}-1):0] output_name [(Length-1):0];”,其中有多个输出,则定义多个wire。示例的情况中定义了wire类型,最后只需要使用一个输出就可以接出来了,如果端口使用太多,很可能芯片不满足,布局放不下,通过这种方式,只需要增加一个输出端口即可。有些实施例中写其他逻辑采用reg等类型,并不限定。wire型数据常用来表示以assign关键字指定的组合逻辑信号,模块的输入输出端口类型都默认为wire型,wire相当于物理连线,reg型数据表示寄存器模型,用于always块、initial语句中被赋值的变量。示例的情况中该过程的代码如下:
localparam Width(编号1} = output namel width;
localparam Width(编号2} = output name2 width;
localparam Length = {Length};localparam N = Length -1;
wire [(Width(编号1}-1):0] output name1 width [(Length-1):0];
wire [(Width(编号2}-1):0] output name2 width [(Length-1):0];
示例的情况中在过程5进行级联之前还进行“对库文件进行首次例化”(未图示):选择的库文件信息在ip_lib列表中,由于需要和待扩展电路的顶层实体进行关联,故必须进行首次例化 ,首次例化的库文件例化名为i0,将待扩展电路的顶层实体中的输出端口随机接到i0中的输入管脚中,并且i0中的输出管脚接到过程4中定义的wire中。目的是将待扩展电路的顶层实体中输出接到该i0的输入,后面进行级联的时候,再由该i0的输出接到下面的输入。相关示例的代码如下:
IP topname i0(
. input namel(output name1),
. input name2(output name2),
.output name1(output name1 width[0][(Width{编号1}-1):0]),
.output_name2(output_name1_width[O][(Width(编号2}-1):0])
);
例化库文件可能不止一次,将库文件例化可以包括:首次例化,例化名为i0;基于级联循环次数的例化,例化库文件的例化名记为im(0<m≤N);进行级联时,再由该i0的输出接到i1的输入。
示例的过程5“对库文件进行级联”:通过该过程的连接,再对过程5中的输出接到级联的输入中,将所有的例化的库文件进行串联起来。将例化的库文件中的输出接到级联的输入的方法包括:比较输出位宽与输入位宽;若输出位宽小于输入位宽,则将全部输出位宽拼起来,并且取出输入位宽和输出位宽差值对应的位宽传入输入位宽;若输出位宽大于输入位宽,则将输出位宽取部分位宽传入到输入位宽,部分位宽与输入位宽一致;如果一致,则直接将输出接给输入端口。
示例的情况中,例化时输出则直接接到下一个输出的wire中。示例的代码:generate
genvar j0;
for(j0=0:j0<N;j0=j0+1)
begin : inst0 topname g0
.input name1(output name1 width[j0][(Width(编号1}-1:0]),
.input name2(output name2 width[j0][(Width(编号2}-1:0]),
.output name1(output name1 width[j0 + 1][(Width(编号1}-1):0]),
.output name2(output name2 width[j0 + 1][(Width(编号2}-1):0]),
);
end
endgenerate
示例的过程5中还进行“将级联的输出wire接到输出”(未图示):级联后,最后的输出赋值给过程3中定义的tout输出端口进行输出,首先将所有wire进行随机的与、或、非、异或、同或等操作,最后再进行或操作。示例的代码如下:assign tout = |((output_name1_width[N-1][(Width(编号1)-1):0]) & (output_name2_width[N-1][(Width(编号2)-1):0]));
给这些所有的wire关联在一直,需要有一些设置进行关联,在硬件电路设置中,采用示例的逻辑运算操作进行wire或者端口的关联。本实施例中,后面这一串与或非计算后会给到一个输出端口,而这个输出端口只有1个位宽,所以通过最后再进行或操作这种方式最后生成1个位宽传给输出就可以了。每个芯片上面有IO端口,存在限制,例如有个芯片一般只能放90个IO端口,另外一个芯片只能放80个IO端口,如果当前待扩展电路的IO端口数量本来就是快到79个了,wire输出需要定义到端口里面去,如果端口定义太多的话,就会导致 IO端口超出这个芯片,就不能进行后面的布局操作。所以本实施例中只做输出一个端口去处理,尽可能降低影响。扩展以后的电路,只有一个输出口,不易受原来的芯片的IO端口的限制。
示例的过程6“综合并判断资源”:首先将所有进行级联的库文件拷贝到电路目录下,并生成相应的配置文件,调用可执行文件进行综合生成网表。示例的情况中可以自动进行基于多个待扩展电路文件的扩展以得到多个扩展后的不同规模大小的新电路文件。示例的情况中,将第一文件中的实际电路文件进行排序,按序编号,按序号先后,逐个取出实际电路文件作为当前的待扩展电路文件进行扩展。其中,设置综合时间阈值,如果综合时间超过该阈值,则结束当前的待扩展电路文件的执行,回到过程2进行编号为下一个序号的待扩展电路文件的执行。时间阈值是可以由用户自定义的,较好的情况中设定综合时间阈值是30分钟,超过30分钟就会自动终止进程,进行下一个待扩展电路文件的扩展。
如果综合完成,判断是否有网表文件,如果有,则进行资源的统计,统计时将le、mem、dsp、pll均统计出来,以便需要判断哪个资源单元是否满足。其中le是逻辑单元LogicElement;mem是存储单元memory;dsp是数字信号处理器digital singnal processor;pll是锁相环phase Locked Loop。示例的这些资源,每个资源单元在综合出来的网表文件中有固定的模块名,根据模块名进行统计即可。统计结果是否满足,需要和当前用户想要的资源数(即资源预期值)进行比对,如果达到预期的资源数了就是满足的,则保存新的电路文件和网表文件。本实施例中,设置一个资源预期值,比如当前是千万门级的芯片,则设置资源预期值是3000万,首先判断是否生成网表文件,如果生成了网表文件,则去网表文件中统计资源数量,判断资源数量与资源预期值3000万是否一致。本实施例提供的自动化扩展硬件设计电路资源的方法具有很好的扩展性,能够满足不同模块资源的扩展,比如可以对le进行扩展要求,也可以对mem进行扩展要求。
本实施例中,更新级联数的方法包括:基于对当前级联后的电路文件进行综合,生成当前的网表文件,统计得到当前资源,基于当前资源和资源期望值,设定级联长度参数的增值,以增值更新初始值定义当前的级联数。示例的情况中当所选资源不满足要求时,则将增加Length,并修改新的顶层文件中原有的Length的值,再进行综合的操作。有些实施例中,自动判断电路资源,基于电路资源设定级联长度参数的增幅,以增幅更新初始值,定义当前的级联数。
当统计结果满足要求时,则保存电路以及网表文件,并到跳转到过程2执行下一个电路的扩展。可以对批量的待扩展电路文件进行自动扩展,也可以选择最合适的实际电路文件作为待扩展电路文件进行扩展。
上述实施例是对电路文件的处理,并不涉及到后面的装箱布局布线。通过示例的自动化扩展硬件设计电路资源的方法自动生成大资源的电路文件,即.v文件。通过本实施例中提供的自动化扩展硬件设计电路的方法,用户就能按照预先设置的门级或者资源数生成想要资源的电路,实现电路资源的最合理地自动扩展,兼顾了测试效率与测试需要。
本发明为了便于叙述清楚而采用的一些常用的英文名词或字母只是用于示例性指代而非限定性解释或特定用法,不应以其可能的中文翻译或具体字母来限定本发明的保护范围。
Claims (14)
1.自动化扩展硬件设计电路资源的方法,其特征在于,包括:
获取待扩展电路文件和库文件;
解析所述库文件、所述待扩展电路文件分别得到相应的端口信息;
生成新的顶层文件,将所述待扩展电路文件例化到所述新的顶层文件中;其中,所述生成新的顶层文件的过程包括:定义调用的子模块;基于解析所述待扩展电路文件得到的端口信息,在所述子模块中插入端口类型,位宽,名字;同时在所述子模块中新添加一个输出端口用于级联后的输出;
在所述新的顶层文件中定义级联数,基于所述级联数将所述库文件级联到所述新的顶层文件中;
在级联之前将所述库文件例化;其中,将所述库文件例化的过程包括:基于解析所述库文件得到的端口信息,定义例化的库文件的例化名,并将所述待扩展电路文件中的输出端口随机接到所述例化的库文件中的输入管脚中;将所述例化的库文件中的输出管脚接到所述库文件的输出端口。
2.根据权利要求1所述的自动化扩展硬件设计电路资源的方法,其特征在于:级联之后,进行综合;判断是否生成网表文件,如是:则统计得到当前资源,判断所述当前资源是否满足预设的资源期望值;
如满足,则将新的电路以及生成的网表文件保存;
如不满足,则更新所述级联数,再次进行综合,直到满足。
3.根据权利要求2所述的自动化扩展硬件设计电路资源的方法,其特征在于:定义级联数的方法包括:获取所述库文件的电路资源,基于所述库文件的电路资源,设定并传入级联长度参数的初始值,以所述初始值初始化所述级联数;
更新所述级联数的方法包括:自动判断所述库文件的电路资源,基于所述库文件的电路资源设定所述级联长度参数的增幅,以所述增幅更新所述初始值定义当前的所述级联数。
4.根据权利要求3所述的自动化扩展硬件设计电路资源的方法,其特征在于:更新所述级联数的方法包括:基于所述当前资源和所述资源期望值的差值,设定所述级联长度参数的增值,以所述增值更新所述初始值定义当前的所述级联数。
5.根据权利要求1所述的自动化扩展硬件设计电路资源的方法,其特征在于,级联的过程包括:将级联长度参数记为Length,Length≥2,传入所述Length定义所述级联数;
定义级联循环次数,记为N,N为正整数,N的值直接由Length-1传入;基于解析所述库文件得到的端口信息,获取到所有位宽,并对所有位宽分别进行参数设置;
定义输出端口的数据类型;
将例化的库文件中的输出接到级联的输入,基于所述Length和N的值,将例化的库文件进行串联。
6.根据权利要求5所述的自动化扩展硬件设计电路资源的方法,其特征在于,将例化的库文件中的输出接到级联的输入的方法包括:
比较输出位宽与输入位宽;
若所述输出位宽小于所述输入位宽,则将全部所述输出位宽拼起来,并且取出所述输入位宽和所述输出位宽差值对应的位宽传入所述输入位宽;
若所述输出位宽大于所述输入位宽,则将所述输出位宽取部分位宽传入到所述输入位宽,所述部分位宽与所述输入位宽一致;
如果一致,则直接将输出接给输入端口。
7.根据权利要求5所述的自动化扩展硬件设计电路资源的方法,其特征在于,将例化的库文件进行串联后,最后的输出赋值给级联后的输出端口;将所有的输出端口进行逻辑运算操作后,再进行或操作。
8.根据权利要求1-7任一项所述的自动化扩展硬件设计电路资源的方法,其特征在于,所述获取待扩展电路文件和库文件的方法包括:抓取批量的实际电路文件及备用库文件;将所述实际电路文件、所述备用库文件各自的路径和顶层实体分别保存到第一文件和第二文件中;从所述第一文件取出一个所述实际电路文件作为当前的所述待扩展电路文件,从所述第二文件中取出一个所述备用库文件作为当前的所述库文件。
9.根据权利要求8所述的自动化扩展硬件设计电路资源的方法,其特征在于,得到所述待扩展电路文件的端口信息的方法包括:遍历循环所述第一文件,获取每一行中每一个所述实际电路文件的路径和顶层实体名,解析所述顶层实体名对应的顶层实体中的端口信息并保存为字典结构;从所述字典结构中获取当前的所述待扩展电路文件的端口信息。
10.根据权利要求8所述的自动化扩展硬件设计电路资源的方法,其特征在于,得到所述库文件的端口信息的方法包括:遍历循环所述第二文件,获取每个所述备用库文件的路径、顶层实体名;解析所述顶层实体名对应的顶层实体生成端口信息字典;保存所述备用库文件的路径、顶层文件和所述端口信息字典;从所述端口信息字典中获取当前的所述库文件的端口信息。
11.根据权利要求10所述的自动化扩展硬件设计电路资源的方法,其特征在于,将每个所述备用库文件路径、顶层文件和所述端口信息字典均以列表形式保存在所述第二文件中的第一列表中,从所述第一列表中随机选择一个所述备用库文件作为当前的所述库文件,将当前的所述文件的路径、顶层文件和端口信息字典保存到所述第二文件中的第二列表中,从所述第二列表中取出当前的所述库文件的端口信息。
12.根据权利要求8所述的自动化扩展硬件设计电路资源的方法,其特征在于:从所述第二文件中取出一个所述备用库文件作为当前的所述库文件的方法包括:
对第二文件进行遍历:对当前的备用库文件进行综合,并生成网表文件,获取当前的备用库文件的资源;
获取扩展后的资源预期值,将所述资源预期值分别除以每个所述备用库文件的资源,得到的商最小时对应的所述备用库文件取出作为当前的所述库文件。
13.根据权利要求8所述的自动化扩展硬件设计电路资源的方法,其特征在于:从所述第一文件取出一个所述实际电路文件作为当前的所述待扩展电路文件的方法包括:
对第一文件进行遍历:对当前的实际电路文件进行综合,判断是否生成网表文件,
如是:则统计得到当前实际电路文件的资源,并将当前实际电路文件标记,作为可用的实际电路文件;
如否:则标记,作为不可用的实际电路文件,不能取出作为当前的所述待扩展电路文件;
获取扩展后的资源预期值,基于所述可用的实际电路文件的资源与所述资源预期值,取出一个所述实际电路文件。
14.根据权利要求8所述的自动化扩展硬件设计电路资源的方法,其特征在于,所述待扩展电路文件有多个;
将所述第一文件中的所述实际电路文件进行排序,按排序先后,取出所述实际电路文件作为当前的所述待扩展电路文件进行扩展;其中,
对于当前的所述待扩展电路文件,级联之后,进行综合;设置综合时间阈值;
如果综合时间超过所述阈值,则结束当前的待扩展电路文件的扩展,进行下一个所述待扩展电路文件的扩展;
如果综合在所述阈值内完成,统计不同模块的资源,若当前每个模块的资源满足当前的所述待扩展电路文件的扩展后资源预期值,则执行下一个所述待扩展电路文件的扩展。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310708350.2A CN116431582B (zh) | 2023-06-15 | 2023-06-15 | 一种自动化扩展硬件设计电路资源的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310708350.2A CN116431582B (zh) | 2023-06-15 | 2023-06-15 | 一种自动化扩展硬件设计电路资源的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116431582A CN116431582A (zh) | 2023-07-14 |
CN116431582B true CN116431582B (zh) | 2023-09-19 |
Family
ID=87085915
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310708350.2A Active CN116431582B (zh) | 2023-06-15 | 2023-06-15 | 一种自动化扩展硬件设计电路资源的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116431582B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6304837B1 (en) * | 1998-02-21 | 2001-10-16 | Adaptec, Inc. | Automated test vector generation and verification |
CN109637312A (zh) * | 2019-01-28 | 2019-04-16 | 安徽师范大学 | 一种片上数字电子技术实验系统 |
CN114461272A (zh) * | 2022-01-27 | 2022-05-10 | 中国船舶重工集团公司第七0九研究所 | 一种数字集成电路设计中存储模块的重构方法及系统 |
CN116227398A (zh) * | 2023-05-10 | 2023-06-06 | 中科亿海微电子科技(苏州)有限公司 | 一种自动化生成ip核测试激励的方法及系统 |
-
2023
- 2023-06-15 CN CN202310708350.2A patent/CN116431582B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6304837B1 (en) * | 1998-02-21 | 2001-10-16 | Adaptec, Inc. | Automated test vector generation and verification |
CN109637312A (zh) * | 2019-01-28 | 2019-04-16 | 安徽师范大学 | 一种片上数字电子技术实验系统 |
CN114461272A (zh) * | 2022-01-27 | 2022-05-10 | 中国船舶重工集团公司第七0九研究所 | 一种数字集成电路设计中存储模块的重构方法及系统 |
CN116227398A (zh) * | 2023-05-10 | 2023-06-06 | 中科亿海微电子科技(苏州)有限公司 | 一种自动化生成ip核测试激励的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116431582A (zh) | 2023-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6609229B1 (en) | Method for automatically generating checkers for finding functional defects in a description of a circuit | |
US4922445A (en) | Logic circuit simulation method | |
JP3851357B2 (ja) | トランジスタ回路のタイミング特性抽出方法、タイミング特性ライブラリを記憶した記憶媒体、lsiの設計方法、及びゲート抽出方法 | |
TW202213157A (zh) | 由形成計算設備的資料處理器實現的方法 | |
CN116663463B (zh) | 一种电路验证方法、装置、电子设备及可读存储介质 | |
CN111553120A (zh) | 一种数字电路局部时钟网络spice网表的生成方法 | |
JP2000207440A (ja) | 半導体集積回路の設計検証装置、方法及び記憶媒体 | |
CN111400169A (zh) | 一种自动化生成用于测试软硬件的网表文件的方法及系统 | |
US6964027B2 (en) | System and method for optimizing exceptions | |
US6993740B1 (en) | Methods and arrangements for automatically interconnecting cores in systems-on-chip | |
US8000951B2 (en) | Timing analysis method and apparatus for enhancing accuracy of timing analysis and improving work efficiency thereof | |
US20030221173A1 (en) | Method and apparatus for detecting connectivity conditions in a netlist database | |
US20060101363A1 (en) | Method of associating timing violations with critical structures in an integrated circuit design | |
US6725187B1 (en) | Latch inference using dataflow analysis | |
US7346864B2 (en) | Logic design development tool and method | |
JPH1097565A (ja) | 集積回路設計用の設計シェルの生成及び使用方法 | |
CN116431582B (zh) | 一种自动化扩展硬件设计电路资源的方法 | |
US20240037306A1 (en) | Static timing analysis method and static timing analysis system | |
US11704460B2 (en) | System and method for fast and accurate netlist to RTL reverse engineering | |
CN110442986B (zh) | 一种基于cpld逻辑代码生成器管理服务器主板的方法 | |
CN113919256A (zh) | 一种布尔可满足性验证方法、系统、cnf生成方法及存储装置 | |
CN114647568A (zh) | 自动化测试方法、装置、电子设备及可读存储介质 | |
Heloue et al. | Efficient block-based parameterized timing analysis covering all potentially critical paths | |
CN118917272B (zh) | 用于提取芯片功耗评估波形的方法及计算设备 | |
US8516322B1 (en) | Automatic test pattern generation system for programmable logic devices |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |