CN115392176B - SoC芯片顶层模块集成设计方法及系统 - Google Patents

SoC芯片顶层模块集成设计方法及系统 Download PDF

Info

Publication number
CN115392176B
CN115392176B CN202211330585.4A CN202211330585A CN115392176B CN 115392176 B CN115392176 B CN 115392176B CN 202211330585 A CN202211330585 A CN 202211330585A CN 115392176 B CN115392176 B CN 115392176B
Authority
CN
China
Prior art keywords
information
design
file
module
bottom layer
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
Application number
CN202211330585.4A
Other languages
English (en)
Other versions
CN115392176A (zh
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.)
Beijing Winner Microeletronics Co ltd
Original Assignee
Beijing Winner Microeletronics 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 Beijing Winner Microeletronics Co ltd filed Critical Beijing Winner Microeletronics Co ltd
Priority to CN202211330585.4A priority Critical patent/CN115392176B/zh
Publication of CN115392176A publication Critical patent/CN115392176A/zh
Application granted granted Critical
Publication of CN115392176B publication Critical patent/CN115392176B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2115/00Details relating to the type of the circuit
    • G06F2115/02System on chip [SoC] design

Landscapes

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

Abstract

本公开涉及一种SoC芯片顶层模块集成设计方法及系统,其中方法包括:获取目标SoC芯片的设计文件,所述设计文件是基于硬件描述语言预先编写的;通过指定Python程序调用Pyverilog的代码解析器和数据流分析器,以对所述设计文件进行代码解析和数据流分析处理得到各个底层模块的设计信息;接收用户针对所述设计信息中的第一部分信息的输入信息,响应于用户针对所述设计信息中的第二部分信息的确认操作,基于所述设计信息和所述输入信息生成第一配置文件;通过所述指定Python程序读取所述第一配置文件,并调用所述Pyverilog的代码生成器以使所述代码生成器基于所述第一配置文件生成顶层设计文件。

Description

SoC芯片顶层模块集成设计方法及系统
技术领域
本公开实施例涉及芯片设计技术领域,尤其涉及一种SoC芯片顶层模块集成设计方法及系统。
背景技术
目前集成电路芯片设计制造技术已成为重要核心技术。通常的SoC芯片,也即片上系统,它是信息系统核心的集成芯片,是将系统关键部件集成在一块芯片上形成,已被广泛应用。
SoC芯片的设计和制造过程是两块相对独立的业务流程。其中SoC的设计过程包含一套复杂的流程,整个SoC的设计大致分为数字电路设计,模拟电路设计,嵌入式软件设计3条主线。其中的数字电路设计,模拟电路设计属于硬件实现部分,都需要在进行实际生产前确定设计数据。而嵌入式软件的相关设计定型可以在得到实际硬件电路后继续进行。目前大部分的SoC设计都是以数字电路设计为主线,数字电路设计流程又主要分为前端RTL(Register Transfer Level)实现,后端综合与布局布线设计等。在数字电路设计的前端RTL实现阶段,一般采用硬件编程语言Verilog或者VHDL实现。RTL的实现大致有两种形式。一种是对寄存器,状态机以及组合电路的直接行为描述,这种一般用于数字电路模块的具体功能设计。另一种是描述不同模块电路的连接,相当于电路图描述,这种一般用于顶层集成互联。一般的SoC设计过程中,都是先用第一种方法将各数字电路子模块设计好,然后用第二种方法将各底层子模块逐级封装成更高一级的模块,最后得到整个SoC芯片的顶层集成描述文件。
但是,目前SoC芯片设计中的RTL实现阶段,将各个底层子模块互联得到顶层集成描述文件的连接方式基本采用人工方式,即手动连接的方式, 这导致芯片代码的生产效率低下且代码质量差,延缓了芯片研发的进程。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开实施例提供了一种SoC芯片顶层模块集成设计方法及系统。
第一方面,本公开实施例提供了一种SoC芯片顶层模块集成设计方法,包括:
获取目标SoC芯片的设计文件,所述设计文件是基于硬件描述语言预先编写的;
通过指定Python程序调用Pyverilog的代码解析器和数据流分析器,以对所述设计文件进行代码解析和数据流分析处理得到各个底层模块的设计信息;
接收用户针对所述设计信息中的第一部分信息的输入信息,响应于用户针对所述设计信息中的第二部分信息的确认操作,基于所述设计信息和所述输入信息生成第一配置文件;
通过所述指定Python程序读取所述第一配置文件,并调用所述Pyverilog的代码生成器以使所述代码生成器基于所述第一配置文件生成顶层设计文件。
在一个实施例中,所述基于所述设计信息和所述输入信息生成第一配置文件,包括:
基于所述第一部分信息和所述输入信息确定第三部分信息;
基于所述第三部分信息和所述第二部分信息生成第一配置文件。
在一个实施例中,所述第一部分信息包括各个底层模块的参数名称、时钟信号标识、复位信号标识中的一个或多个;所述输入信息包括各个底层模块的参数名称对应的参数值、各个底层模块的时钟信号标识对应的时钟配置信息、各个底层模块的复位信号标识对应的复位配置信息。
在一个实施例中,所述接收用户针对所述设计信息中的第一部分信息的输入信息之前,该方法包括:
将所述各个底层模块的参数名称、时钟信号标识、复位信号标识写入第二配置文件;
打开所述第二配置文件以显示各个底层模块的参数名称、时钟信号标识、复位信号标识;
所述接收用户针对所述设计信息中的第一部分信息的输入信息,包括:
接收用户在所述第二配置文件中针对所述各个底层模块的参数名称、时钟信号标识、复位信号标识对应的输入框输入的各个底层模块的参数名称对应的参数值、各个底层模块的时钟信号标识对应的时钟配置信息、各个底层模块的复位信号标识对应的复位配置信息。
在一个实施例中,所述第一配置文件和第二配置文件均为Excel文件,所述各个底层模块的参数名称、时钟信号标识、复位信号标识在所述第二配置文件中对应写入工作表中,其中每个底层模块对应一个工作表。
在一个实施例中,所述第二部分信息包括各个底层模块的输入信号连接关系、各个底层模块的输出信号连接关系中的一个或多个;其中,所述各个底层模块的输入信号连接关系以及输出信号连接关系被写入所述第二配置文件中各底层模块对应的工作表中。
在一个实施例中,所述通过所述指定Python程序读取所述第一配置文件,并调用所述Pyverilog的代码生成器以使所述代码生成器基于所述第一配置文件生成顶层设计文件,包括:
通过所述Python程序调用openpyxl库相关函数读取所述第一配置文件中的相关信息;
将所述相关信息输入所述Pyverilog的代码生成器中,以使所述代码生成器基于所述相关信息生成顶层集成描述文件以及时钟复位控制器描述文件。
第二方面,本公开实施例提供一种SoC芯片顶层模块集成设计系统,包括:
文件获取模块,用于获取目标SoC芯片的设计文件,所述设计文件是基于硬件描述语言预先编写的;
文件处理模块,用于通过指定Python程序调用Pyverilog的代码解析器和数据流分析器,以对所述设计文件进行代码解析和数据流分析处理得到各个底层模块的设计信息;
第一文件生成模块,用于接收用户针对所述设计信息中的第一部分信息的输入信息,响应于用户针对所述设计信息中的第二部分信息的确认操作,基于所述设计信息和所述输入信息生成第一配置文件;
第二文件生成模块,用于通过所述指定Python程序读取所述第一配置文件,并调用所述Pyverilog的代码生成器以使所述代码生成器基于所述第一配置文件生成顶层设计文件。
第三方面,本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任一实施例所述SoC芯片顶层模块集成设计方法。
第四方面,本公开实施例提供一种电子设备,包括:
处理器;以及
存储器,用于存储计算机程序;
其中,所述处理器配置为经由执行所述计算机程序来执行上述任一实施例所述SoC芯片顶层模块集成设计方法。
本公开实施例提供的技术方案与现有技术相比具有如下优点:
本公开实施例提供的SoC芯片顶层模块集成设计方法及系统,获取目标SoC芯片的设计文件,所述设计文件是基于硬件描述语言预先编写的;通过指定Python程序调用Pyverilog的代码解析器和数据流分析器,以对所述设计文件进行代码解析和数据流分析处理得到各个底层模块的设计信息;接收用户针对所述设计信息中的第一部分信息的输入信息,响应于用户针对所述设计信息中的第二部分信息的确认操作,基于所述设计信息和所述输入信息生成第一配置文件;通过所述指定Python程序读取所述第一配置文件,并调用所述Pyverilog的代码生成器以使所述代码生成器基于所述第一配置文件生成顶层设计文件。本实施例中创造性的基于指定Python程序调用Pyverilog的代码解析器和数据流分析器来对设计文件进行代码解析和数据流分析处理自动准确得到各个底层模块的设计信息,并可对其中部分信息进行输入及确认后生成配置文件,基于配置文件自动生成顶层设计文件,如此减少了用户手动连接的方式,实现一定程度上的自动化处理进而提高芯片代码的生产效率,且可通过输入及确认操作提高代码质量,大幅提高了SoC芯片顶层模块集成设计的效率和代码规范性,整体加速了芯片研发的进程,节省投入成本。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例SoC芯片顶层模块集成设计方法流程图;
图2为本公开实施例生成顶层设计文件的过程示意图;
图3为本公开另一实施例SoC芯片顶层模块集成设计方法流程图;
图4为本公开实施例SoC芯片顶层模块集成设计系统示意图;
图5为本公开实施例的电子设备示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
应当理解,在下文中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
图1为本公开实施例的一种SoC芯片顶层模块集成设计方法流程图,该SoC芯片顶层模块集成设计方法可以由服务器或者计算机执行,具体可包括以下步骤:
步骤S101:获取目标SoC芯片的设计文件,所述设计文件是基于硬件描述语言预先编写的。
示例性的,设计文件可以是设计人员基于芯片的功能等基于Verilog语言编写的,具体的编写过程可以参考现有技术理解,此处不再赘述。
步骤S102:通过指定Python程序调用Pyverilog的代码解析器和数据流分析器,以对所述设计文件进行代码解析和数据流分析处理得到各个底层模块的设计信息。
示例性的,Pyverilog是一套基于Python的用于处理分析Verilog语言的工具包,主要功能包括Verilog代码解析器、数据流分析器,控制流分析器以及代码生成器等,使用者可以在此基础功能上开发自有的设计分析,代码转换生成等功能。该工具包可以理解为针对Verilog的Python库函数。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言, 随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。 Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码。
发明人通过研究Pyverilog的技术文档与代码,发现其可以对硬件描述语言文件如Verilog设计文件进行语法分析并提取出相应的每个底层模块的设计信息,例如输入输出管脚、端口信号,时钟与复位信号,parameter参数名称等,并可以字典方式存储到每个底层模块对象的相应域中,供用户直接读取。
基于上述研究发现,通过编写与Pyverilog匹配的Python程序即指定Python程序,如基于Python语言编写的与Pyverilog匹配的脚本,调用Pyverilog的代码解析器和数据流分析器,从而实现对例如Verilog设计文件进行代码解析和数据流分析处理,以得到其中涉及的各个底层模块的设计信息如输入输出管脚信息,时钟与复位信号,parameter参数名称等。
步骤S103:接收用户针对所述设计信息中的第一部分信息的输入信息,响应于用户针对所述设计信息中的第二部分信息的确认操作,基于所述设计信息和所述输入信息生成第一配置文件。
示例性的,所述第一部分信息可以包括但不限于各个底层模块的参数名称、时钟信号标识clk、复位信号标识rst中的一个或多个。例如图2所示,示例性的SoC芯片的Verilog设计文件包含三个模块(A、B、C)的设计文件。通过代码解析和数据流分析之后得到各个模块对应的多个子文件如A.param(参数名称文件,包含A模块的一个或多个参数名称)、A.clkrst(时钟复位文件,包含A模块的时钟信号标识clk、复位信号标识rst)。其它一些实施例中还可以有子文件A.input(包含A模块的输入信号)、子文件A.output(包含A模块的输出信号)。基于这些子文件可以得到例如模块A的参数名称、时钟信号标识clk、复位信号标识rst等设计信息即A模块的第一部分信息。
之后针对第一部分信息,即程序可以自动获取的需要配置信息如输入输出管脚,时钟与复位信号,parameter参数名称等,需要用户进行配置,因此需要用户操作以输入信息,例如可以显示输入界面,在输入界面输入信息,如输入各个底层模块的参数名称对应的参数值、各个底层模块的时钟信号标识对应的时钟配置信息、各个底层模块的复位信号标识对应的复位配置信息。其中,作为示例,时钟配置信息可以包含时钟相关的门控、分频信息等,复位配置信息可以包含软件复位信息和同步信息等,但也并不限于此。
针对第二部分信息,如各个底层模块的输入信号连接关系、各个底层模块的输出信号连接关系等,需要用户确认连接关系是否正确。具体的,各个模块管脚之间的连接关系,可以通过名称匹配度进行确定。本实施例中Python程序可以对一个模块A的例如输入信号进行自动匹配,具体依据对所有除此模块A之外的其余所有模块的输出信号进行自动字符匹配来进行配对,比如A模块的输入信号 htrans_in 会自动匹配到另一个模块中的htrans_out信号(包含相同的字符串“htrans”)。然而类似这种匹配未必是完全正确的,所以可能需要设计者进行确认或调整。确认第二部分信息如各个底层模块的输入信号连接关系/输出信号连接关系后,即可基于所述设计信息即第一部分信息、第二部分信息和输入信息生成第一配置文件如Excel文件,也即将自动提取的部分设计信息与人工确认的部分设计信息统一到Excel文件中作为第一配置文件。
在其它一些实施例中,如需调整第二部分信息,可以使用Excel文件的数据有效性属性,也就是可以通过下拉菜单来选择一个模块A的一个输入信号来自另外哪个模块的哪个输出信号,或者来自芯片顶层。这可以在生成Excel文件时,对每个输入信号的对应连接的单元格,进行数据有效性的定义,以便产生下拉菜单供用户选择操作。
步骤S104:通过所述指定Python程序读取所述第一配置文件,并调用所述Pyverilog的代码生成器以使所述代码生成器基于所述第一配置文件生成顶层设计文件。
示例性的,得到第一配置文件后,即可通过上述指定Python程序读取第一配置文件,然后调用Pyverilog的代码生成器,所述代码生成器开始工作,基于第一配置文件生成顶层设计文件。
本实施例中创造性的基于指定Python程序调用Pyverilog的代码解析器和数据流分析器来对设计文件进行代码解析和数据流分析处理自动准确得到各个底层模块的设计信息,并可对其中部分信息进行输入及确认后生成配置文件,基于配置文件自动生成顶层设计文件,如此减少了用户手动连接的方式,实现一定程度上的自动化处理进而提高芯片代码的生产效率,且可通过输入及确认操作提高代码质量,大幅提高了SoC芯片顶层模块集成设计的效率和代码规范性,整体加速了芯片研发的进程,节省投入成本。
在一个实施例中,步骤S103中基于所述设计信息和所述输入信息生成第一配置文件,具体可以包括以下步骤:基于所述第一部分信息和所述输入信息确定第三部分信息;基于所述第三部分信息和所述第二部分信息生成第一配置文件。
具体的,由于第一部分信息如各个底层模块的参数名称、时钟信号标识、复位信号标识需要对应的配置输入信息,因此基于输入信息如各个底层模块的参数名称对应的参数值、各个底层模块的时钟信号标识对应的时钟配置信息、各个底层模块的复位信号标识对应的复位配置信息,以及各个底层模块的参数名称、时钟信号标识、复位信号标识确定了各个底层模块的参数名称、时钟信号标识、复位信号标识以及对应的配置信息即第三部分信息,然后基于该第三部分信息和第二部分信息如各个底层模块的输入信号连接关系及输出信号连接关系生成最终的第一配置文件如Excel文件。如此可以使得第一配置文件中包含的信息更为准确,进而使得最终可以提高代码质量。
在一个实施例中,步骤S103中接收用户针对所述设计信息中的第一部分信息的输入信息之前,该方法可以包括以下步骤:将所述各个底层模块的参数名称、时钟信号标识、复位信号标识写入第二配置文件;打开所述第二配置文件以显示各个底层模块的参数名称、时钟信号标识、复位信号标识。相应的,步骤S103中接收用户针对所述设计信息中的第一部分信息的输入信息,具体可以包括:接收用户在所述第二配置文件中针对所述各个底层模块的参数名称、时钟信号标识、复位信号标识对应的输入框输入的各个底层模块的参数名称对应的参数值、各个底层模块的时钟信号标识对应的时钟配置信息、各个底层模块的复位信号标识对应的复位配置信息。
也即是说,可以先将第一部分信息如各个底层模块的参数名称、时钟信号标识、复位信号标识写入第二配置文件如Excel文件,作为预连接配置文件,然后在Excel文件中基于输入信息如各个底层模块的参数名称对应的参数值、各个底层模块的时钟信号标识对应的时钟配置信息、各个底层模块的复位信号标识对应的复位配置信息即可确定第三部分信息,之后即可基于输入信息即修改Excel文件得到第一配置文件。如此设置便于用户操作以输入信息。
在一个实施例中,所述第一配置文件和第二配置文件均为Excel文件,所述各个底层模块的参数名称、时钟信号标识、复位信号标识在所述第二配置文件中对应写入工作表中,其中每个底层模块对应一个工作表。例如,模块A对应一个工作表sheet A,模块B对应一个工作表sheet B,而模块C对应一个工作表sheet C,以工作表sheet A为例,模块A相关的第一部分信息中的如模块的参数名称以及对应参数值和第二部分信息可以写入sheet A中。而各模块的时钟信号标识、复位信号标识可单独统一写入一个工作表(clock resetsheet)中,但也并不限于此,可以根据具体情况调整。
在上述任一实施例的基础上,于一个实施例中,所述第二部分信息可以包括各个底层模块的输入信号连接关系、各个底层模块的输出信号连接关系中的一个或多个;其中,所述各个底层模块的输入信号连接关系以及输出信号连接关系被写入所述第二配置文件中各底层模块对应的工作表中。例如模块A对应一个工作表sheet A中可以写入模块A相关的第二部分信息。
通过上述设置,Python程序调用处理配置文件时速度更快,通过指定Python程序生成并处理基于Excel的配置文件的效率提高且便于操作实施,可以提高SoC芯片顶层模块集成设计处理效率。
在一个实施例中,参考图3中所示,步骤S104中通过所述指定Python程序读取所述第一配置文件,并调用所述Pyverilog的代码生成器以使所述代码生成器基于所述第一配置文件生成顶层设计文件,具体可以包括以下步骤:
步骤S301:通过所述Python程序调用openpyxl库相关函数读取所述第一配置文件中的相关信息。
步骤S302:将所述相关信息输入所述Pyverilog的代码生成器中,以使所述代码生成器基于所述相关信息生成顶层集成描述文件以及时钟复位控制器描述文件。
Python语言的openpyxl库对Excel文件的读写分析都有完善支持,所以采用Excel文件作为用户输入载体,可以提高处理效率。具体的,指定Python程序调用openpyxl库相关函数读取用户修改确认后的连接配置文件即第一配置文件,将其中的相关信息填入Pyverilog的代码生成器的对应变量中,然后调用写文件函数,生成出所需的顶层集成描述文件以及伴随的时钟复位控制器描述文件即可。
通过以上操作,将手动编写顶层集成文件和相关时钟复位控制器的行为,简化为对顶层内各个模块输入输出信号的连接选择以及少量的数字参数输入,可以大幅提高顶层集成的效率和代码规范性,相关Excel文件也直接可以作为设计文档,具有直接可读性。
本公开的一个具体示例中,实际提供了一种基于Pyverilog库以及Excel文件的SoC芯片顶层模块集成设计半自动化工具,实现一定程度上的自动化处理进而提高芯片代码的生产效率,且可通过输入及确认操作提高代码质量。
在该具体示例中,结合图2所示,整个顶层设计文件生成过程分以下三步:
1)通过指定Python程序生成模块预配置Excel文件(Excel pre config file);
2)确认及填写预配置Excel文件得到配置Excel文件;
3) 通过指定Python程序调用Pyverilog的代码生成器根据配置Excel文件产生顶层设计文件。
下面以下对上述步骤进行详细说明。其中第1)步生成预配置Excel文件的工作,需要用Python语言编写一个工具即指定Python程序,调用Pyverilog中的Verilog代码解析器和数据流分析器,提取出各个底层模块的端口信号如输入输出信号,参数名称,时钟和复位信号灯。然后生成各个底层模块的相应字典。之后对各个模块的字典中的条目进行遍历,可以产生如下几个关系表:各个模块输入信号的连接关系确认表、各个模块输出信号的连接关系确认表、各个模块参数值确认表、模块与例化名称对应表(module instance sheet)、时钟信号配置表、复位信号配置表。
以上这些关系表由Python程序内部数据结构生成后,对能够自动匹配的输入输出管脚进行自动匹配,不能自动匹配的则设置选项集合,然后通过openpyxl库按照每个Excel工作表(sheet)对应一个模块的结构写到一个Excel文件中,作为第2)步人工确认和输入配置信息的模板文件。由指定Python程序得到预配置Excel文件的过程,依次经过语法解析器、AST为抽象语法树生成器这2级处理后的各模块的设计信息都可以方便地在Python程序中直接访问。
需要说明的是,在对模块的输入信号进行自动匹配时,是依据对所有除此模块之外的所有模块的输出信号进行自动字符匹配来进行配对。然而类似这种匹配未必是正确的,所以可能需要集成设计者进行调整。这就是说这个信号在生成的Excel文件中的连接是一个推测出的连接,只能叫做预连接,因此叫预配置Excel文件。
对于第2)步确认与输入配置信息即修改,大致需要输入与确认如下内容:自动匹配的输入信号的连接关系确认与修改、输出信号是否输出到顶层的确认、各个参数名称对应的参数值的填写、各时钟信号的门控,分频信息的填写,各复位信号的软件复位、同步信息的填写。
对于第3)步,指定Python程序调用openpyxl库相关函数读入用户修改后的预配置Excel文件,将相关信息填入Pyverilog的代码生成器(verilog generator)的对应变量中,调用写文件函数,生成出所需的顶层集成描述文件(top.v)以及伴随的时钟复位控制器描述文件(clk_ctr.v、rst_ctr.v)即可。
需要说明的是,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。另外,也易于理解的是,这些步骤可以是例如在多个模块/进程/线程中同步或异步执行。
如图4所示,本公开实施例提供一种SoC芯片顶层模块集成设计系统,包括:
文件获取模块401,用于获取目标SoC芯片的设计文件,所述设计文件是基于硬件描述语言预先编写的;
文件处理模块402,用于通过指定Python程序调用Pyverilog的代码解析器和数据流分析器,以对所述设计文件进行代码解析和数据流分析处理得到各个底层模块的设计信息;
第一文件生成模块403,用于接收用户针对所述设计信息中的第一部分信息的输入信息,响应于用户针对所述设计信息中的第二部分信息的确认操作,基于所述设计信息和所述输入信息生成第一配置文件;
第二文件生成模块404,用于通过所述指定Python程序读取所述第一配置文件,并调用所述Pyverilog的代码生成器以使所述代码生成器基于所述第一配置文件生成顶层设计文件。
在一个实施例中,所述第一文件生成模块基于所述设计信息和所述输入信息生成第一配置文件,包括:基于所述第一部分信息和所述输入信息确定第三部分信息;基于所述第三部分信息和所述第二部分信息生成第一配置文件。
在一个实施例中,所述第一部分信息包括各个底层模块的参数名称、时钟信号标识、复位信号标识中的一个或多个;所述输入信息包括各个底层模块的参数名称对应的参数值、各个底层模块的时钟信号标识对应的时钟配置信息、各个底层模块的复位信号标识对应的复位配置信息。
在一个实施例中,所述,该系统包括数据处理模块,用于第一文件生成模块接收用户针对所述设计信息中的第一部分信息的输入信息之前,将所述各个底层模块的参数名称、时钟信号标识、复位信号标识写入第二配置文件;打开所述第二配置文件以显示各个底层模块的参数名称、时钟信号标识、复位信号标识;所述第一文件生成模块接收用户针对所述设计信息中的第一部分信息的输入信息,包括:接收用户在所述第二配置文件中针对所述各个底层模块的参数名称、时钟信号标识、复位信号标识对应的输入框输入的各个底层模块的参数名称对应的参数值、各个底层模块的时钟信号标识对应的时钟配置信息、各个底层模块的复位信号标识对应的复位配置信息。
在一个实施例中,所述第一配置文件和第二配置文件均为Excel文件,所述各个底层模块的参数名称、时钟信号标识、复位信号标识在所述第二配置文件中对应写入工作表中,其中每个底层模块对应一个工作表。
在一个实施例中,所述第二部分信息包括各个底层模块的输入信号连接关系、各个底层模块的输出信号连接关系中的一个或多个;其中,所述各个底层模块的输入信号连接关系以及输出信号连接关系被写入所述第二配置文件中各底层模块对应的工作表中。
在一个实施例中,所述第二文件生成模块,具体用于:通过所述Python程序调用openpyxl库相关函数读取所述第一配置文件中的相关信息;将所述相关信息输入所述Pyverilog的代码生成器中,以使所述代码生成器基于所述相关信息生成顶层集成描述文件以及时钟复位控制器描述文件。
关于上述实施例中的系统,其中各个模块执行操作的具体方式以及带来的相应技术效果已经在有关该方法的实施例中进行了对应的详细描述,此处将不做详细阐述说明。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。作为模块或单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现木公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任一项实施例所述SoC芯片顶层模块集成设计方法。
示例性的,该可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
本公开实施例还提供一种电子设备,包括处理器以及存储器,存储器用于存储计算机程序。其中,所述处理器配置为经由执行所述计算机程序来执行上述任一项实施例中SoC芯片顶层模块集成设计方法。
下面参照图5来描述根据本发明的这种实施方式的电子设备600。图5显示的电子设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同系统组件(包括存储单元620和处理单元610)的总线630、显示单元640等。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元610执行,使得所述处理单元610执行本说明书上述方法实施例部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元610可以执行如图1中所示方法的步骤。
所述存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(ROM)6203。
所述存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本公开实施方式的上述各实施例的方法步骤。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (9)

1.一种SoC芯片顶层模块集成设计方法,其特征在于,包括:
获取目标SoC芯片的设计文件,所述设计文件是基于硬件描述语言预先编写的;
通过指定Python程序调用Pyverilog的代码解析器和数据流分析器,以对所述设计文件进行代码解析和数据流分析处理得到各个底层模块的设计信息;
接收用户针对所述设计信息中的第一部分信息的输入信息,响应于用户针对所述设计信息中的第二部分信息的确认操作,基于所述设计信息和所述输入信息生成第一配置文件;其中,所述第一部分信息包括各个底层模块的参数名称、时钟信号标识、复位信号标识中的一个或多个;所述输入信息包括各个底层模块的参数名称对应的参数值、各个底层模块的时钟信号标识对应的时钟配置信息、各个底层模块的复位信号标识对应的复位配置信息,所述第二部分信息包括各个底层模块的输入信号连接关系、各个底层模块的输出信号连接关系中的一个或多个;
通过所述指定Python程序读取所述第一配置文件,并调用所述Pyverilog的代码生成器以使所述代码生成器基于所述第一配置文件生成顶层设计文件。
2.根据权利要求1所述的方法,其特征在于,所述基于所述设计信息和所述输入信息生成第一配置文件,包括:
基于所述第一部分信息和所述输入信息确定第三部分信息;
基于所述第三部分信息和所述第二部分信息生成第一配置文件。
3.根据权利要求1所述的方法,其特征在于,所述接收用户针对所述设计信息中的第一部分信息的输入信息之前,该方法包括:
将所述各个底层模块的参数名称、时钟信号标识、复位信号标识写入第二配置文件;
打开所述第二配置文件以显示各个底层模块的参数名称、时钟信号标识、复位信号标识;
所述接收用户针对所述设计信息中的第一部分信息的输入信息,包括:
接收用户在所述第二配置文件中针对所述各个底层模块的参数名称、时钟信号标识、复位信号标识对应的输入框输入的各个底层模块的参数名称对应的参数值、各个底层模块的时钟信号标识对应的时钟配置信息、各个底层模块的复位信号标识对应的复位配置信息。
4.根据权利要求3所述的方法,其特征在于,所述第一配置文件和第二配置文件均为Excel文件,所述各个底层模块的参数名称、时钟信号标识、复位信号标识在所述第二配置文件中对应写入工作表中,其中每个底层模块对应一个工作表。
5.根据权利要求4所述的方法,其特征在于,所述各个底层模块的输入信号连接关系以及输出信号连接关系被写入所述第二配置文件中各底层模块对应的工作表中。
6.根据权利要求1所述的方法,其特征在于,所述通过所述指定Python程序读取所述第一配置文件,并调用所述Pyverilog的代码生成器以使所述代码生成器基于所述第一配置文件生成顶层设计文件,包括:
通过所述Python程序调用openpyxl库相关函数读取所述第一配置文件中的相关信息;
将所述相关信息输入所述Pyverilog的代码生成器中,以使所述代码生成器基于所述相关信息生成顶层集成描述文件以及时钟复位控制器描述文件。
7.一种SoC芯片顶层模块集成设计系统,其特征在于,包括:
文件获取模块,用于获取目标SoC芯片的设计文件,所述设计文件是基于硬件描述语言预先编写的;
文件处理模块,用于通过指定Python程序调用Pyverilog的代码解析器和数据流分析器,以对所述设计文件进行代码解析和数据流分析处理得到各个底层模块的设计信息;
第一文件生成模块,用于接收用户针对所述设计信息中的第一部分信息的输入信息,响应于用户针对所述设计信息中的第二部分信息的确认操作,基于所述设计信息和所述输入信息生成第一配置文件;其中,所述第一部分信息包括各个底层模块的参数名称、时钟信号标识、复位信号标识中的一个或多个;所述输入信息包括各个底层模块的参数名称对应的参数值、各个底层模块的时钟信号标识对应的时钟配置信息、各个底层模块的复位信号标识对应的复位配置信息,所述第二部分信息包括各个底层模块的输入信号连接关系、各个底层模块的输出信号连接关系中的一个或多个;
第二文件生成模块,用于通过所述指定Python程序读取所述第一配置文件,并调用所述Pyverilog的代码生成器以使所述代码生成器基于所述第一配置文件生成顶层设计文件。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1~6任一项所述SoC芯片顶层模块集成设计方法。
9.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储计算机程序;
其中,所述处理器配置为经由执行所述计算机程序来执行权利要求1~6任一项所述SoC芯片顶层模块集成设计方法。
CN202211330585.4A 2022-10-28 2022-10-28 SoC芯片顶层模块集成设计方法及系统 Active CN115392176B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211330585.4A CN115392176B (zh) 2022-10-28 2022-10-28 SoC芯片顶层模块集成设计方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211330585.4A CN115392176B (zh) 2022-10-28 2022-10-28 SoC芯片顶层模块集成设计方法及系统

Publications (2)

Publication Number Publication Date
CN115392176A CN115392176A (zh) 2022-11-25
CN115392176B true CN115392176B (zh) 2023-01-10

Family

ID=84115281

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211330585.4A Active CN115392176B (zh) 2022-10-28 2022-10-28 SoC芯片顶层模块集成设计方法及系统

Country Status (1)

Country Link
CN (1) CN115392176B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116384295B (zh) * 2023-06-02 2023-09-22 深圳市航顺芯片技术研发有限公司 一种顶层文件生成方法、装置、计算机设备及存储介质
CN117706987A (zh) * 2023-12-05 2024-03-15 广东全芯半导体有限公司 一种主控芯片控制系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9235494B2 (en) * 2013-03-14 2016-01-12 Syntel, Inc. Automated code analyzer
CN111709215A (zh) * 2020-06-01 2020-09-25 哈尔滨工业大学 一种ip管理系统及ip管理方法
CN111859827B (zh) * 2020-06-29 2022-06-17 山东云海国创云计算装备产业创新中心有限公司 一种芯片ip集成方法、装置及电子设备和存储介质
CN112698825B (zh) * 2021-01-08 2024-04-02 乐聚(深圳)机器人技术有限公司 编程积木块转换方法、装置、处理设备及存储介质
CN114692532A (zh) * 2022-03-01 2022-07-01 比科奇微电子(杭州)有限公司 芯片系统的集成方法、装置及计算机可读存储介质

Also Published As

Publication number Publication date
CN115392176A (zh) 2022-11-25

Similar Documents

Publication Publication Date Title
CN115392176B (zh) SoC芯片顶层模块集成设计方法及系统
US7100133B1 (en) Computer system and method to dynamically generate system on a chip description files and verification information
US8578322B2 (en) Method and apparatus for AMS simulation of integrated circuit design
US6321369B1 (en) Interface for compiling project variations in electronic design environments
US9703921B1 (en) Naturally connecting mixed-signal power networks in mixed-signal simulations
US6658628B1 (en) Developement of hardmac technology files (CLF, tech and synlib) for RTL and full gate level netlists
CN111859827B (zh) 一种芯片ip集成方法、装置及电子设备和存储介质
US7062427B2 (en) Batch editor for netlists described in a hardware description language
US7346864B2 (en) Logic design development tool and method
CN114780100B (zh) 编译方法、电子设备及存储介质
CN113569524A (zh) 芯片设计中基于综合网表提取时钟树的方法及应用
CN113408222A (zh) 文件生成方法、装置、电子设备及存储介质
CN111400169A (zh) 一种自动化生成用于测试软硬件的网表文件的方法及系统
CN117195818B (zh) 电源设计命令生成方法、装置、电子设备及存储介质
US10437946B1 (en) Using implemented core sources for simulation
CN116976252A (zh) 一种回归仿真方法、装置、设备、介质及程序产品
CN115291963A (zh) 配置硬件资源的方法、电子设备及存储介质
US6684372B2 (en) Method, system and computer product to translate electronic schematic files between computer aided design platforms
CN111240979A (zh) 一种用于人工智能的人机交互逻辑引擎的方法及系统
CN117521587B (zh) 系统级芯片的设计方法、装置、电子设备及存储介质
US20230110701A1 (en) Techniques for design verification of domain crossings
Dönmez Towards a Distributed Low‑Noise Signal Generation System for Quantum Gas Experiments: A Scalable FPGA‑Based Design
CN117709260B (zh) 一种芯片设计方法、装置、电子设备及可读存储介质
CN113515485B (zh) 一种SoC芯片控制寄存器模块RTL代码自动生成方法
CN112613261B (zh) 一种确定block端口时钟域的方法

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