CN113553290A - 一种数字芯片模块链接的自动化设计方法 - Google Patents
一种数字芯片模块链接的自动化设计方法 Download PDFInfo
- Publication number
- CN113553290A CN113553290A CN202010340122.0A CN202010340122A CN113553290A CN 113553290 A CN113553290 A CN 113553290A CN 202010340122 A CN202010340122 A CN 202010340122A CN 113553290 A CN113553290 A CN 113553290A
- Authority
- CN
- China
- Prior art keywords
- module
- list
- file
- name
- instance
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7896—Modular architectures, e.g. assembled from a number of identical packages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program documentation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Library & Information Science (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种数字芯片模块链接的自动化设计方法,采用了模块链接自动化设计技术:包括模块接口定义要求、模块例化要求,文件FileList文件格式要求等;具有直接性、灵活性、简洁性和扩展性的特性,实现了模块链接自动化批量处理脚本,模块链接自动化,集成效率高,错误概率低;模块接口统一规范,模块可集成、可复用性强;顶层设计师、模块设计师可并行设计,加快项目研发进度。
Description
技术领域
本发明涉及模块链接技术领域,具体为一种数字芯片模块链接的自动化设计方法。
背景技术
传统顶层模块链接由设计师手工编辑链接代码完成,顶层模块集成的工作量:当模块数量很多时,顶层模块的集成是一件繁重而枯燥的工作,而且容易出错,往往一个人需要几天的时间才能完成集成和基本调试,集成时间长;
对于包含大量IP模块的SOC来说,在顶层集成时往往会遇到各个模块的接口位宽宏定义不一致的问题,有些是不同模块的宏定义不同名但同值,有些是同名不同值,有些既不同名也不同值。这就要求顶层集成者需要了解各个模块的接口定义,而具体模块的负责者反而不需要了解,这就导致了职责反转现象,模块链接错误概率高;
由于顶层模块是一个文件,原来是由一个工程师独自完成的,此时负责模块设计的工程师帮不上忙,使顶层模块的编写在此时成为整个项目RTL编写进度的瓶颈,拖延项目进度。
发明内容
本发明的目的在于提供一种数字芯片模块链接的自动化设计方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:一种数字芯片模块链接的自动化设计方法,包括下述步骤:
s1:开始,通过file_list_read函数读取flist.f文件,生成列表instance_info_list;
s2:打开top.v文件;
s3:新建result.v文件:
s4:读取top.v文件输入输出端口、wire定义,转换并写入result.v文件;
s5:读取top.v文件中assign语句,转换并写入result.v文件,结束。
优选的,所述步骤1中的列表instance_info_list包含需要例化模块的文件名、后缀、输入端口信息列表和端口信息。
优选的,所述步骤4和步骤5中的转换并写入result.v文件具体为:调用instance_generate、all_output_process函数、例化模块、完成模块间链接。
优选的,所述步骤1中file_list_read函数具体为:读取flist.f文件,函数返回列表instance_info_list,判断flist.f文件中每一行的内容,得到每一次例化的输出端口列表output_info_list和端口列表port_info_list。
优选的,所述all_output_process函数具体为:读取instance_info_list,在result.v文件中写入模块例化需要的中间信号,函数返回列表all_output_info_list;所述instance_generate具体为:读取instance_info_list,在result.v文件中进行模块例化工作。
优选的,采用的模块接口定义要求和模块例化要求为:
(1)支持单行注释,以及每条语句后边的注释,用符号“//”表示;
(2)支持空行;
(3)输入输出端口信号的定义要求在括号内完成;
(4)信号定义列表结尾的括号“);”,单独一行写;
(5)每一行起始部分不需要空格;
(6)支持`ifdef`ifndef`else`endif四种预编译命令及嵌套,对于端口定义括号内的预编译命令,对应的`endif必须在括号内完成;
(7)对于top.v模块内部定义的wire以及assign,wire在前集中列出、assign在后集中列出;
(8)对两个或多个模块信号链接时,信号名定义保持一致。
优选的,采用的FileList文件的格式要求:
(1)以“//”开头的单行注释,只支持单行注释;
(2)支持空行;
(3)例化一次的模块名,在flist.f某一行写模块名,后边进行“//”注释;
(4)例化多次的模块名、使用自动后缀,在flist.f文件某一行写:
“模块名//instance_num=2”
或
“模块名//instance_num:2”,
生成的顶层模块中,两次例化名的后缀自动生成为_inst_0和_inst_1;
(5)例化多次的模块名、使用指定后缀,书写格式如下:
“模块名//suffix=第一次例化指定后缀名,第二次例化指定后缀名”
或
“模块名//suffix:第一次例化指定后缀名,第二次例化指定后缀名”,
顶层模块中,两次例化名后缀自动生成为_ab和_cd;
(6)对模块例化时的条件编译命令,支持`ifdef`ifndef`else`endif四种,并支持这些命令的嵌套使用,在这些命令后边加“//”注释;
(7)每一行起始部分不需要空格。
与现有技术相比,本发明的有益效果是:本方案设计了一种数字芯片模块链接的自动化设计方法,模块链接自动化,提高集成效率,减少集成出错的概率;
模块链接自动化方法采用批处理脚本工具,对需要集成的模块,自动识别模块例化数、模块接口定义、模块间链接关系,完成模块间链接及顶层集成工作;
规范并统一模块接口定义,提高代码可集成、可复用性,模块链接自动化方法要求统一各个模块链接的接口信号命名,模块负责人共同制定接口信号定义,加强工程师间的沟通。由于模块接口的规范一致性,通过链接自动化批处理脚本可以使得集成工程师、模块设计工程师并行开展工作。
附图说明
图1为本专利模块链接批处理脚本运行流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,本发明提供一种技术方案:一种数字芯片模块链接的自动化设计方法,包括下述步骤:
s1:开始,通过file_list_read函数读取flist.f文件,生成列表instance_info_list;
s2:打开top.v文件;
s3:新建result.v文件:
s4:读取top.v文件输入输出端口、wire定义,转换并写入result.v文件;
s5:读取top.v文件中assign语句,转换并写入result.v文件,结束。
所述步骤1中的列表instance_info_list包含需要例化模块的文件名、后缀、输入端口信息列表和端口信息。
所述步骤4和步骤5中的转换并写入result.v文件具体为:调用instance_generate、all_output_process函数、例化模块、完成模块间链接。
所述步骤1中file_list_read函数具体为:读取flist.f文件,函数返回列表instance_info_list,判断flist.f文件中每一行的内容,得到每一次例化的输出端口列表output_info_list和端口列表port_info_list。
所述all_output_process函数具体为:读取instance_info_list,在result.v文件中写入模块例化需要的中间信号,函数返回列表all_output_info_list;所述instance_generate具体为:读取instance_info_list,在result.v文件中进行模块例化工作。
代码风格主要涉及top.v文件和各个RTL模块。top.v是顶层集成者编写的顶层模块初始框架,自动化批处理脚本module_connector.py,根据top.v生成完整的顶层result.v模块;top.v主要是定义顶层模块的输入输出端口,以及顶层模块内部除例化之外的一些逻辑。
RTL模块的代码风格主要是针对各模块的端口定义部分,module_connector.py只读取各个RTL模块对应的端口声明列表。
采用的模块接口定义要求和模块例化要求为:
(1)支持单行注释,以及每条语句后边的注释,用符号“//”表示;
(2)支持空行;
(3)输入输出端口信号的定义要求在括号内完成;
(4)信号定义列表结尾的括号“);”,单独一行写;
(5)每一行起始部分不需要空格;
(6)支持`ifdef`ifndef`else`endif四种预编译命令及嵌套,对于端口定义括号内的预编译命令,对应的`endif必须在括号内完成;
例如:禁止使用下边左侧的情况,此脚本支持右侧的情况。
(7)对于top.v模块内部定义的wire以及assign,wire在前集中列出、assign在后集中列出;
(8)对两个或多个模块信号链接时,信号名定义保持一致。
FileList.f文件中,列出了各个模块的文件名,以及模块例化时的预编译命令,采用的FileList文件的格式要求:
(1)以“//”开头的单行注释,只支持单行注释;
(2)支持空行;
(3)例化一次的模块名,在flist.f某一行写模块名,后边进行“//”注释;
(4)例化多次的模块名、使用自动后缀,在flist.f文件某一行写:
“模块名//instance_num=2”
或
“模块名//instance_num:2”,
生成的顶层模块中,两次例化名的后缀自动生成为_inst_0和_inst_1;
(5)例化多次的模块名、使用指定后缀,书写格式如下:
“模块名//suffix=第一次例化指定后缀名,第二次例化指定后缀名”
或
“模块名//suffix:第一次例化指定后缀名,第二次例化指定后缀名”,
顶层模块中,两次例化名后缀自动生成为_ab和_cd;
(6)对模块例化时的条件编译命令,支持`ifdef`ifndef`else`endif四种,并支持这些命令的嵌套使用,在这些命令后边加“//”注释;
(7)每一行起始部分不需要空格。
模块链接自动化设计方法具有以下特点:
(1)直接性:所谓直接性,是指使用者在使用时只需要按照本设计方法的要求编写原有的设计文件,如RTL、FileList等,即可使用自动化批处理脚本进行模块链接,而不需要编写额外的文件。直接性的好处是:首先易于上手,不需要额外学习新的语法;其次易于维护,当RTL或FileList需要修改时可以直接使用本脚本重新产生模块链接,不需要再对别的模块进行修改,这点在持续时间长的项目中非常重要,因为在项目进度很紧的时候有的工程师可能愿意在调试时直接修改代码,而不会修改额外的文件,如果自动化批处理脚本依赖于额外的文件的话容易产生额外文件的内容和设计文件不一致的情况,给版本管理造成麻烦。
(2)灵活性:对于模块链接中同一模块多次例化的情况,支持对例化模块自动加数字编号后缀和自定义后缀两种方式,并可以根据例化名的后缀自动产生信号名;针对带位宽定义的信号,支持用数字方式直接定义或采用宏定义,并自动比较链接两个模块的信号位宽定义是否一致。
(3)简洁性:本设计方法在设计时并不以独立工作为目标,而是将批处理脚本放在已有的设计方法学中进行考虑,有意忽略了对一些在仿真器或综合器中很容易就报出的错误和警告的检查,简化了脚本设计,避免了功能重复。
(4)扩展性:考虑到不同的项目可能有不同的语法需求,本设计方法的关键函数可以使用扩展文件中的用户自定义函数替代,用户可以在不修改原文件的情况下自定义语法的实现方式或增加新的功能,并且可以将自定义的扩展文件保存在SVN上,同时不影响脚文件的内容。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
Claims (7)
1.一种数字芯片模块链接的自动化设计方法,其特征在于,包括下述步骤:
s1:开始,通过file_list_read函数读取flist.f文件,生成列表instance_info_list;
s2:打开top.v文件;
s3:新建result.v文件:
s4:读取top.v文件输入输出端口、wire定义,转换并写入result.v文件;
s5:读取top.v文件中assign语句,转换并写入result.v文件,结束。
2.根据权利要求1所述的一种数字芯片模块链接的自动化设计方法,其特征在于,所述步骤1中的列表instance_info_list包含需要例化模块的文件名、后缀、输入端口信息列表和端口信息。
3.根据权利要求1所述的一种数字芯片模块链接的自动化设计方法,其特征在于,所述步骤4和步骤5中的转换并写入result.v文件具体为:调用instance_generate、all_output_process函数、例化模块、完成模块间链接。
4.根据权利要求1所述的一种数字芯片模块链接的自动化设计方法,其特征在于,所述步骤1中file_list_read函数具体为:读取flist.f文件,函数返回列表instance_info_list,判断flist.f文件中每一行的内容,得到每一次例化的输出端口列表output_info_list和端口列表port_info_list。
5.根据权利要求3所述的一种数字芯片模块链接的自动化设计方法,其特征在于,所述all_output_process函数具体为:读取instance_info_list,在result.v文件中写入模块例化需要的中间信号,函数返回列表all_output_info_list;所述instance_generate具体为:读取instance_info_list,在result.v文件中进行模块例化工作。
6.根据权利要求1所述的一种数字芯片模块链接的自动化设计方法,其特征在于,采用的模块接口定义要求和模块例化要求为:
(1)支持单行注释,以及每条语句后边的注释,用符号“//”表示;
(2)支持空行;
(3)输入输出端口信号的定义要求在括号内完成;
(4)信号定义列表结尾的括号“);”,单独一行写;
(5)每一行起始部分不需要空格;
(6)支持`ifdef`ifndef`else`endif四种预编译命令及嵌套,对于端口定义括号内的预编译命令,对应的`endif必须在括号内完成;
(7)对于top.v模块内部定义的wire以及assign,wire在前集中列出、assign在后集中列出;
(8)对两个或多个模块信号链接时,信号名定义保持一致。
7.根据权利要求1所述的一种数字芯片模块链接的自动化设计方法,其特征在于,采用的FileList文件的格式要求:
(1)以“//”开头的单行注释,只支持单行注释;
(2)支持空行;
(3)例化一次的模块名,在flist.f某一行写模块名,后边进行“//”注释;
(4)例化多次的模块名、使用自动后缀,在flist.f文件某一行写:
“模块名//instance_num=2”
或
“模块名//instance_num:2”,
生成的顶层模块中,两次例化名的后缀自动生成为_inst_0和_inst_1;
(5)例化多次的模块名、使用指定后缀,书写格式如下:
“模块名//suffix=第一次例化指定后缀名,第二次例化指定后缀名”
或
“模块名//suffix:第一次例化指定后缀名,第二次例化指定后缀名”,
顶层模块中,两次例化名后缀自动生成为_ab和_cd;
(6)对模块例化时的条件编译命令,支持`ifdef`ifndef`else`endif四种,并支持这些命令的嵌套使用,在这些命令后边加“//”注释;
(7)每一行起始部分不需要空格。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010340122.0A CN113553290A (zh) | 2020-04-26 | 2020-04-26 | 一种数字芯片模块链接的自动化设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010340122.0A CN113553290A (zh) | 2020-04-26 | 2020-04-26 | 一种数字芯片模块链接的自动化设计方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113553290A true CN113553290A (zh) | 2021-10-26 |
Family
ID=78129903
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010340122.0A Pending CN113553290A (zh) | 2020-04-26 | 2020-04-26 | 一种数字芯片模块链接的自动化设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113553290A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102012954A (zh) * | 2010-11-29 | 2011-04-13 | 杭州中天微系统有限公司 | 用于系统芯片集成设计的子系统集成方法及其子系统集成系统 |
CN102799437A (zh) * | 2012-07-18 | 2012-11-28 | 清华大学 | 一种编译脚本自动生成方法和自动生成装置 |
CN109739766A (zh) * | 2018-12-29 | 2019-05-10 | 湖北航天技术研究院总体设计所 | 一种快速搭建fpga数字仿真模型的系统及方法 |
CN110442929A (zh) * | 2019-07-18 | 2019-11-12 | 上海磐启微电子有限公司 | 一种基于perl实现芯片系统顶层自动例化的方法 |
CN110471810A (zh) * | 2019-08-21 | 2019-11-19 | 山东浪潮人工智能研究院有限公司 | 一种记录数字逻辑设计工程工作状态的方法及系统 |
-
2020
- 2020-04-26 CN CN202010340122.0A patent/CN113553290A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102012954A (zh) * | 2010-11-29 | 2011-04-13 | 杭州中天微系统有限公司 | 用于系统芯片集成设计的子系统集成方法及其子系统集成系统 |
CN102799437A (zh) * | 2012-07-18 | 2012-11-28 | 清华大学 | 一种编译脚本自动生成方法和自动生成装置 |
CN109739766A (zh) * | 2018-12-29 | 2019-05-10 | 湖北航天技术研究院总体设计所 | 一种快速搭建fpga数字仿真模型的系统及方法 |
CN110442929A (zh) * | 2019-07-18 | 2019-11-12 | 上海磐启微电子有限公司 | 一种基于perl实现芯片系统顶层自动例化的方法 |
CN110471810A (zh) * | 2019-08-21 | 2019-11-19 | 山东浪潮人工智能研究院有限公司 | 一种记录数字逻辑设计工程工作状态的方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6536031B2 (en) | Method for generating behavior model description of circuit and apparatus for logic verification | |
US20080244541A1 (en) | Code translator and method of automatically translating modeling language code to hardware language code | |
CN112100949A (zh) | 集成电路芯片的自动开发方法及装置、电子设备 | |
US7350180B1 (en) | Search algorithm for inheriting clock contexts in hardware description language translation tools | |
US7493606B2 (en) | Method for compiling and executing a parallel program | |
CN103605556A (zh) | 虚拟试验对象一体化构建系统及方法 | |
US20070157132A1 (en) | Process of automatically translating a high level programming language into a hardware description language | |
CN113408222B (zh) | 文件生成方法、装置、电子设备及存储介质 | |
CN114818553B (zh) | 一种芯片集成设计方法 | |
CN114236359A (zh) | 面向ate测试设备的新型集成电路测试激励生成方法 | |
US8881074B2 (en) | Device and method for refactoring hardware code | |
CN111290954B (zh) | 一种基于uvm的fpga构件可视化测试框架和方法 | |
KR101352383B1 (ko) | Vpl을 이용한 프로그램 개발 방법과 그 방법을 구현한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체 | |
CN115858336A (zh) | 测试向量生成方法及装置、计算设备和存储介质 | |
CN117131834A (zh) | 芯片设计重组方法、电子设备和介质 | |
CN110489297A (zh) | 一种基于图形界面的fpga调试信号设置方法 | |
CN113553290A (zh) | 一种数字芯片模块链接的自动化设计方法 | |
CN116629172A (zh) | 芯片设计中模块自动生成和集成方法、装置、设备及介质 | |
CN114756219A (zh) | 一种基于c++的fpga硬件构造语言实现系统 | |
CN113687814A (zh) | 基于autosar架构的模型框架和接口文件的自动化实现方法 | |
US6446251B1 (en) | Method and apparatus for socket-based design with reusable-IP | |
CN117131824A (zh) | 自动生成芯片设计rtl代码的方法、电子设备和介质 | |
Dall'Ora et al. | A common manipulation framework for transistor-level languages | |
CN112241268A (zh) | 一种keil工程的编译方法、系统及设备 | |
WO2008075087A1 (en) | Code translator and method of automatically translating modelling language code to hardware language code |
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 |