CN117131824A - 自动生成芯片设计rtl代码的方法、电子设备和介质 - Google Patents
自动生成芯片设计rtl代码的方法、电子设备和介质 Download PDFInfo
- Publication number
- CN117131824A CN117131824A CN202210555754.8A CN202210555754A CN117131824A CN 117131824 A CN117131824 A CN 117131824A CN 202210555754 A CN202210555754 A CN 202210555754A CN 117131824 A CN117131824 A CN 117131824A
- Authority
- CN
- China
- Prior art keywords
- interconnection
- information
- design
- bus
- basic unit
- 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
- 238000013461 design Methods 0.000 title claims abstract description 320
- 238000000034 method Methods 0.000 title claims abstract description 53
- 230000000977 initiatory effect Effects 0.000 claims description 29
- 230000008569 process Effects 0.000 claims description 16
- 239000000758 substrate Substances 0.000 claims 2
- 238000005215 recombination Methods 0.000 description 19
- 230000006798 recombination Effects 0.000 description 19
- 230000008521 reorganization Effects 0.000 description 12
- 238000004088 simulation Methods 0.000 description 5
- 238000012795 verification Methods 0.000 description 5
- 238000012938 design process Methods 0.000 description 4
- 239000003999 initiator Substances 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000013515 script Methods 0.000 description 3
- 239000000470 constituent Substances 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/10—Processors
-
- 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
- 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
本发明涉及一种自动生成芯片设计RTL代码的方法、电子设备和介质,方法包括步骤A1、获取多个基本单元信息作为第一基本单元信息,通过总线互联定义生成第一设计互联信息,加入自定义设计互联信息库中;步骤A2、从自定义设计互联信息库中获取多个第i设计互联信息,通过总线互联定义生成第j设计互联信息,或者,获取至少一个第i设计互联信息,并获取至少一个基本单元信息作为第j基本单元信息,通过总线互联定义生成第j设计互联信息,加入预设的自定义设计互联信息库中;步骤A3、基于第N设计互联信息生成芯片设计RTL代码。本发明基于高层次抽象层建立互联,提高了芯片设计的效率,不易出错,且能够实现可重构、可配置,可扩展性强。
Description
技术领域
本发明涉及芯片设计技术领域,尤其涉及一种自动生成芯片设计RTL代码的方法、电子设备和介质。
背景技术
在芯片设计过程中,通常需要建立多个模块以及多个层级之间的互联,尤其是GPU这种大规模的芯片设计,手动建立互联效率极低,因此需要自动互联。现有技术中,通常采用脚本(例如excel),使用PIN互联。例如把所有的管脚列到excel里去,然后通过脚本在excel里抓信号来做适配的互联,但现有技术至少具有以下缺点:把所有信号放置在excel里,维护困难,处理excel速度非常慢,且excel本身描述的一些内容比较简单,很难去自定义一些互联规则,可扩展性差。此外,现有技术均是基于底层信号层建立互联关系的,采用现有的方式进行芯片设计,需要编写大量的底层信号代码(例如Verilog代码),设计效率低,容易出错,且扩展性差,不能实现灵活配置及重构。由此可知,如何提供一种不易出错、高效、可扩展、可重构、可配置的芯片设计技术成为亟待解决的技术问题。
发明内容
本发明目的在于,提供一种自动生成芯片设计RTL代码的方法、电子设备和介质,基于高层次抽象层建立互联,提高了芯片设计的效率,不易出错,且能够实现可重构、可配置,可扩展性强。
根据本发明第一方面,提供了自动生成芯片设计RTL代码的方法,包括:
步骤A1、从预设的基本单元信息库获取多个基本单元信息作为第一基本单元信息,将所述第一基本单元信息通过总线互联定义生成第一设计互联信息,将所述第一设计互联信息加入预设的自定义设计互联信息库中,所述基本单元信息库中存储多个基本单元信息,所述基本单元信息为RTL代码;
步骤A2、从所述自定义设计互联信息库中获取多个第i设计互联信息,将所述多个第i设计互联信息通过总线互联定义生成第j设计互联信息,或者,从所述自定义设计互联信息库中获取至少一个第i设计互联信息,并从预设的基本单元信息库获取至少一个基本单元信息作为第j基本单元信息,将所述第i设计互联信息和第j基本单元信息通过总线互联定义生成第j设计互联信息,将所述第j设计互联信息加入预设的自定义设计互联信息库中,j的取值范围为2到N,N为目标设计层级总数,i的取值范围为1到j-1;
步骤A3、基于第N设计互联信息生成芯片设计RTL代码。
根据本发明第二方面,提供一种电子设备,包括:至少一个处理器;以及,与所述处理器通信连接的存储器;其中,所述存储器存储有可被所述处理器执行的指令,所述指令被设置为用于执行本发明第一方面所述的方法。
根据本发明第三方面,提供一种计算机可读存储介质,所述计算机指令用于执行本发明第一方面所述的方法。
本发明与现有技术相比具有明显的优点和有益效果。借由上述技术方案,本发明提供的一种自动生成芯片设计RTL代码的方法、电子设备和介质可达到相当的技术进步性及实用性,并具有产业上的广泛利用价值,其至少具有下列优点:
本发明只需对基本单元信息编写底层RTL代码,然后基于基本单元信息通过总线互联组成第一设计互联信息,即第一层级的设计互联信息,后续所有层级的设计互联信息均由已生成的设计互联信息、基本单元信息堆叠,且所有组成部分均通过总线互联定义,生成每一层级的设计互联信息,即仅通过高层次的抽象描述,通过简单的总线互联定义,即可生成每一层级的设计互联信息,无需编写大量的底层信号代码,且不出错,提高了芯片设计的效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
图1为实施例一提供的自动生成芯片设计RTL代码的方法流程图;
图2为实施例二提供的自动生成芯片空壳的方法流程图;
图3为实施例三提供的芯片弱驱壳的生成方法流程图;
图4为实施例四提供的芯片设计重组方法流程图。
具体实施方式
为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的一种自动生成芯片设计RTL代码的方法、电子设备和介质的具体实施方式及其功效,详细说明如后。
实施例一、
本发明实施例一提供了一种自动生成芯片设计RTL代码的方法,如图1所示,包括:
步骤A1、从预设的基本单元信息库获取多个基本单元信息作为第一基本单元信息,将所述第一基本单元信息通过总线互联定义生成第一设计互联信息,将所述第一设计互联信息加入预设的自定义设计互联信息库中,所述基本单元信息库中存储多个基本单元信息,所述基本单元信息为RTL代码;
需要说明的是,基本单元信息为预先编写好的RTL代码,例如可以为Verilog、VHDL或SystemVerilog编写的RTL代码。基本单元信息库中可以预先设置通用的多个基本单元信息,也可以根据新增的设计需求新增基本单元信息,也即基本单元信息库能够实现自定义,且具有很好的扩展性。第一基本单元信息用于组成第一设计互联信息,第一基本单元信息具体可为基本单元信息库中任意基本单元信息,多个第一基本单元可以为相同的基本单元信息,也可以为不同的基本单元信息。每一设计互联信息可以定义为一个DIY(DesignInterconnect assemblY,设计互联组装)。
步骤A2、从所述自定义设计互联信息库中获取多个第i设计互联信息,将所述多个第i设计互联信息通过总线互联定义生成第j设计互联信息,或者,从所述自定义设计互联信息库中获取至少一个第i设计互联信息,并从预设的基本单元信息库获取至少一个基本单元信息作为第j基本单元信息,将所述第i设计互联信息和第j基本单元信息通过总线互联定义生成第j设计互联信息,将所述第j设计互联信息加入预设的自定义设计互联信息库中,j的取值范围为2到N,N为目标设计层级总数,i的取值范围为1到j-1;
可以理解的是,第一设计互联信息是由多个基本单元信息互联组成的,从第二设计互联信息开始,每一层级设计互联信息的组成部分可以包括当前已经生成的设计互联信息以及基本单元信息作为组成部分,且各个组成部分之间全部是通过总线互联定义建立互联关系的,只需要简单的总线互联定义,无需编写大量的底层信号代码。第j基本单元信息用于组成第j设计互联信息,具体可为基本单元信息库中任意基本单元信息,多个第j基本单元可以为相同的基本单元信息,也可以为不同的基本单元信息。每一生成好的设计互联信息,即每一DIY,均可作为后续其他层级设计互联信息的组成部分。
步骤A3、基于第N设计互联信息生成芯片设计RTL代码。
芯片设计RTL代码具体可以为Verilog代码、System Verilog代码或VHDL代码等。作为一种示例,所述步骤A1和步骤A2中,通过总线互联定义生成对应的设计互联信息,包括:为各个基本单元信息、设计互联信息配置对应的总线重构结构,为每一发起端配置对应的互联总线重构结构的属性信息,并根据每一设计互联信息对应的互联关系建立对应的总线重构结构间的互联关系,生成对应的设计互联信息。需要说明的是,互联总线重构结构的属性信息指的是互联总线重构结构的细节参数信息。其中,配置对应的总线重构结构包括:定义总线重构结构的名称以及从预设的总线描述重构库中选择对应的总线重构结构类型。需要说明的是,每一组成部分的总线重构结构可能有一个或多个,组成部分指的是基本单元或某一层级生成的层级互联信息,两个组成部分之间可以通过一组或多组总线重构结构互联,设计互联信息与该设计互联信息的组成部分之间也可通过一组或多组总线重构结构互联,并基于此与其他设计互联信息通过总线进行互联。
作为一种示例,所述步骤A1和步骤A2中,根据每一设计互联信息对应的互联关系建立对应的总线重构结构间的互联关系,生成对应的设计互联信息,包括:定义总线重构结构之间的互联关系,以及相连总线重构结构中信号线之间的互联关系,基于所有总线重构结构之间的互联关系,建立对应的总线重构结构间的互联关系,建立每一发起端总线重构结构和对应接收端总线重构结构之间的连接;基于发起端存储的互联总线重构结构的属性信息,以及相连总线重构结构中信号线之间的互联关系自适应建立信号线之间的连接,生成对应的设计互联信息。需要说明的是,具有互联关系的两个组成部分之间,有一个是发起端,另一个是接收端,发起端和接收端的区分为本领域公知常识,在此不再展开描述。本发明实施例中,仅在每一发起端存储的互联总线重构结构的属性信息即可,发起端和接收端建立互联关系,共用对应的互联总线重构结构的属性信息。
作为一种示例,所述步骤A1中,将所述第一基本单元信息通过总线互联定义生成第一设计互联信息,具体可包括:
步骤A11、基于预设的总线描述重构库为每一第一基本单元信息和第一设计互联信息配置对应的一个或多个总线重构结构,为每一发起端配置对应的互联总线重构结构的属性信息;
步骤A12、基于所述第一基本单元信息之间的互联关系、第一基本单元信息与第一设计互联信息总线重构结构之间的互联关系,建立对应总线重构结构之间的互联,生成第一设计互联信息。
作为一种示例,所述步骤A2中,将所述多个第i设计互联信息通过总线互联定义生成第j设计互联信息,包括:
步骤A21、基于预设的总线描述重构库中为第j设计互联信息配置对应的一个或多个总线重构结构,为每一发起端配置对应的互联总线重构结构的属性信息;
步骤A22、基于所述多个第i设计互联信息之间的互联关系、所述多个第i设计互联信息与第j设计互联信息总线重构结构之间的互联关系,建立对应总线重构结构之间的互联,生成第j设计互联信息。
作为一种示例,所述步骤A2中,将所述第i设计互联信息和第j基本单元信息通过总线互联定义生成第j设计互联信息,包括:
步骤A23、基于预设的总线描述重构库中为每一第j基本单元信息和第j设计互联信息配置对应的一个或多个总线重构结构,为每一发起端配置对应的互联总线重构结构的属性信息;
步骤A24、基于所述第i设计互联信息、第j基本单元信息之间的互联关系,所述第i设计互联信息、第j基本单元信息与第j设计互联信息总线重构结构之间的互联关系,建立对应总线重构结构之间的互联,生成第j设计互联信息。
作为一种实施例,所述预设的总线描述重构库包括一个或多个预先定义的总线重构结构IDF(Interface Description Refactor),采用IDFm表示第m个总线重构结构,m的取值范围为1到M,M为总线重构结构数量。可以理解的是,总线描述重构库中的IDF是可以根据具体应用需求进行增加和删减的,即可自定义,且具有很好的扩展性,且IDF确定好以后,可以直接进行调用使用,无需在设计中重复定义。
IDF遵循预设的总线协议中任意一个总线协议,总线协议可以为现有的工业标准总线协议,例如AMBA(Arm Microcontroller Bus Architecure)、PCI-Express(peripheralcomponent interconnect express)等总线协议。也可以为根据设计需求自定义的总线协议。所述总线重构结构根据预设的总线描述重构结构生成,IDFm对应的总线描述重构结构的属性信息包括mX个信息段{S1 m,S2 m,…SmX m},其中,Smx m表示第m个总线重构结构中第mx个信号线对应的信息段,Smx m包括信号描述信息、时序图信息、方向信息、信号宽度信息、复位(reset)值和默认(default)值,mx的取值范围为1到mX,可以理解的是,不同的IDF可以对应不同的信号数量,每一信号对应一个信息段,即不同的IDF的mX的值可能不同。其中,信号描述信息用于描述信号,可以用于产生文档。所述方向信息包括input、output、inout,根据信号具体方向来配置。信号宽度信息可以这是为定值,也可设置为可配置的值。复位值和默认值根据具体信号来预先配置。复位值用于产生合理的驱动值,作为弱驱值。在复杂信号的应用场景下,Smx m还包括描述信号的结构体,根据Smx m对应的应用场景配置所述描述信号的结构体,例如通过描述信号的结构体来描述256bits的数据,其中不同的数据段表示的含义。IDF、基本单元信息、已生成的层级设计信息均具有通用性,可以重复使用,且IDF中可以通过配置细节参数,适配设计需求,但不会影响高层次的描述,且由于IDF的框架和大部分参数信息以及基本单元信息均以预先确定,设计过程中直接调用即可,设计效率高,且不易出错。需要说明的是,同一类型的总线重构结构,不同应用中,信号宽度、地址宽度等细节可能不同,此时可利用feature的变量来适配IDF里边的属性信息。
在建立对应总线结构之间的互联过程中,若存在互联链条末端互联端口,则将类型为output的末端互联端口设置为悬空状态,为类型为input的末端互联端口状态设置对应的默认值,或者为类型为input的末端互联端口对应的信号端口设置对应的自定义值。需要说明的是,一个互联端口对应一组信号端口。
现有的总线互联大部分是通过手工或脚本处理Verilog本身写Verilog本身,处理的也是信号线也是总线,是最底层的信号,即便是总线,也是展开的,比如一个总线包含100个信号线,现有技术是要对这100个信号线分别做处理的,对于本发明实施例来说,通过定义IDF,定义互联关系,仅通过高层次的抽象描述,通过简短的描述,声明总线类型,定义总线名称、互联关系,即可建立互联关系,且总线细节全部定义在IDF中,大大提高了设计互联效率和准确度,从而提高了芯片设计效率。
需要说明的是,现有技术的任意基于第N设计互联信息生成芯片设计RTL代码实现方式都落在本发明的保护之内,本领域技术人员也能理解,在本申请之后实现的任意基于第N设计互联信息生成芯片设计RTL代码的技术也落在本发明的保护之内。作为一种优选的示例,所述步骤A3中,
步骤A31、基于第N设计互联信息中各个组成部分对应的基本单元信息对应的RTL代码、各个生成部分之间的互联关系以及各个总线重构结构信息,按照预设的RTL代码格式模板生成目标设计RTL代码。
其中,第N设计互联信息中涉及的每一基本单元信息都对应有预先编写好的RTL代码,各个组成之间的互联关系,再从总线重构结构信息中获取对应的总线属性信息,按照预设的RTL代码格式模板逐层展开,即可得生成目标设计RTL代码。
其中,所述预设的RTL代码格式模板可以为Verilog代码格式模板、SystemVerilog代码格式模板或VHDL的RTL代码格式模板。
需要说明的是,如果有必要将第N设计互联信息中某一层级的设计互联信息,生成对应的设计RTL代码。则可获取该层级的设计互联信息,依据步骤A31中的流程生成对应的设计RTL代码。
实施例一中,只需对基本单元信息编写底层RTL代码,然后基于基本单元信息通过总线互联组成第一设计互联信息,即第一层级的设计互联信息,后续所有层级的设计互联信息均由已生成的设计互联信息、基本单元信息堆叠,且所有组成部分均通过总线互联定义,生成每一层级的设计互联信息,即仅通过高层次的抽象描述,通过简单的总线互联定义,即可生成每一层级的设计互联信息,无需编写大量的底层信号代码,且不出错,提高了芯片设计的效率。需要说明的是,后续其他实施例中的相关技术细节也可适用于本实施例中的相关步骤,在此不再重复赘述。
实施例二、
实施例一可以生成一个完整的目标设计RTL代码,但在有些应用场景下,例如在加速重组(regrouping)的场景中,如果将整个完整的目标设计全部导入,非常耗时,而对于部分设计,仅需要该设计对应的端口信息即可,而不用关注内部组成部分的具体信息,此时生成仅包括该设计端口信息的空壳(Stub或Interface Module)即可,需要说明的是,每一层级的设计互联信息均可对应生成一个设计,均可对应一个芯片。基于此,实施例二提供了一种自动生成芯片空壳的方法,如图2所示,包括:
步骤B1、从预设的基本单元信息库获取多个基本单元信息作为第一基本单元信息,基于所述第一基本单元信息的总线互联定义,生成仅包括第一基本单元端口信息和第一设计互联端口信息的第一设计空壳,将所述第一设计空壳加入预设的自定义设计空壳库中;
可以理解的是,本实施例中所指的芯片空壳,即仅包括端口信息,不包括芯片中具体组成部件详细RTL信息的芯片壳。自定义设计空壳库存储所有已生成的设计空壳,供后续层级的设计空壳直接调用,也即已生成的设计空壳可以作为后续层级设计空壳中的组成部分,避免重复设计,提高芯片设计效率。
步骤B2、从所述自定义设计空壳库中获取多个第p设计空壳,基于所述多个第p设计空壳通过总线互联定义,生成仅包括第p设计空壳和第q设计互联端口信息的第q设计空壳;
或者,
从所述自定义设计空壳库中获取至少一个第p设计空壳,并从预设的基本单元信息库获取至少一个基本单元信息作为第q基本单元信息,基于所述第p设计空壳和至少一个第q基本单元信息通过总线互联定义,生成仅包括第p设计空壳、第q基本单元端口信息和第q设计互联端口信息的第q设计空壳;
将所述第q设计空壳加入预设的自定义设计空壳库中,q的取值范围为2到N,N为目标设计层级总数,p的取值范围为1到q-1。
基于第q设计空壳可以按照预设的RTL代码格式模板生成第q设计空壳的RTL代码,可以为Verilog代码、System Verilog代码或VHDL代码等。
需要说明的是,步骤B1-步骤B2描述的是将每一层级的设计均生成对应设计空壳的方式,但可以理解的是,如果仅有部分设计层级需要生成为设计空壳,部分设计层级仍需要内部组成的具体信息,则将需要内部组成层级的部分按照实施例一中的步骤A1、步骤A2对应生成即可,在此不再赘述,对于需要生成设计空壳的设计层级按照步骤B1-步骤B2的方式生成。也即实施例一和实施例二在芯片设计中是可以根据具体应用需求组合应用的。
作为一种示例,所述步骤B1和步骤B2中,包括:
步骤B10、基于预设的总线描述重构库配置各个基本单元信息、设计互联信息对应的总线重构结构;
总线描述重构库,以及IDFm对应的总线描述重构结构的属性信息等细节已在实施例一中详细描述,在此不再赘述。
步骤B20、根据每一设计互联信息对应的互联关系建立生成对应总线重构结构间的互联关系,基于对应总线重构结构间的互联关系生成对应的设计空壳。
需要说明的是,每一组成部分的总线重构结构可能有一个或多个,组成部分指的是基本单元或某一层级生成的层级互联信息,两个组成部分之间可以通过一组或多组总线重构结构互联,设计互联信息与该设计互联信息的组成部分之间也可通过一组或多组总线重构结构互联,并基于此与其他设计互联信息通过总线进行互联。对应的,每一组成部分以及每一层级互联信息对应的端口信息为一个或多个。
作为一种示例,所述步骤B10中,配置对应的总线重构结构包括:
步骤B101、定义总线重构结构的名称以及从预设的总线描述重构库中选择对应的总线重构结构类型,为每一发起端配置对应的互联总线重构结构的属性信息。
需要说明的是,具有互联关系的两个组成部分之间,有一个是发起端,另一个是接收端,发起端和接收端的区分为本领域公知常识,在此不再展开描述。本发明实施例中,仅在每一发起端存储的互联总线重构结构的属性信息即可,发起端和接收端建立互联关系,共用对应的互联总线重构结构的属性信息。
作为一种示例,所述步骤B20包括:
B201、根据每一设计互联信息对应的互联关系,以及每一发起端配置互联总线重构结构的属性信息,按照预设的RTL代码结构展开生成对应的设计模块以及其所包含的每一层级设计模块的input、output、inout端口信息,得到所述对应的设计空壳。
需要说明的是,前序实施例以及后续其他实施例中的相关技术细节也可适用于本实施例中的相关步骤,在此不再重复赘述。
实施例二能够生成芯片设计空壳,可以加速芯片设计重组,提高设计重组的效率。
实施例三、
实施例二可以应用在芯片重组场景中,可以加速重组。但是在功能仿真和验证的应用场景中,仅仅生成芯片空壳虽然能加快芯片设计效率,但是不能实现仿真和验证功能,因为仅保留端口信息,而没有端口驱动的话会导致接收信号的组成部分悬空(例如出现Verilog端口的“Z状态”导致“X状态”传播,“Z状态”表示高阻态,“X状态”表示不确定或未知的逻辑状态),因此,为了可以在芯片空壳的基础上,为每一端口信息设置对应的合理驱动,即弱驱,从而既能正常实现芯片仿真和验证功能,还能加快芯片仿真和验证的速度,提高芯片设计效率。基于此,实施例三提供了一种芯片弱驱壳(Shell)的生成方法,包括:
步骤C1、从预设的基本单元信息库获取多个基本单元信息作为第一基本单元信息,基于所述第一基本单元信息的总线互联定义,生成包括第一基本单元端口信息、第一设计互联端口信息以及每一端口信息对应的弱驱信息的第一设计弱驱壳,将所述第一设计弱驱壳加入预设的自定义设计弱驱壳库中,所述基本单元信息库中存储多个基本单元信息,所述基本单元信息为RTL代码;
可以理解的是,本实施例中所指的设计弱驱壳,指的是包括端口信息以及端口信息对应的合理驱动信息,不包括芯片中具体组成部件详细RTL信息的芯片壳。自定义设计弱驱壳库存储所有已生成的设计弱驱壳,供后续层级的设计弱驱壳直接调用,也即已生成的设计弱驱壳可以作为后续层级设计弱驱壳中的组成部分,避免重复设计,提高芯片设计效率。
步骤C2、从所述自定义设计弱驱壳库中获取多个第p设计弱驱壳,基于所述多个第p设计弱驱壳通过总线互联定义,生成包括第p设计弱驱壳、第q设计互联端口信息以及每一端口信息对应的弱驱信息的第q设计弱驱壳,
或者,
从所述自定义设计弱驱壳库中获取至少一个第p设计弱驱壳,并从预设的基本单元信息库获取至少一个基本单元信息作为第q基本单元信息,基于所述第p设计弱驱壳和至少一个第q基本单元信息通过总线互联定义,生成包括第p设计弱驱壳、第q基本单元端口信息、第q设计互联端口信息以及每一端口信息对应的弱驱信息的第q设计弱驱壳;
将所述第q设计弱驱壳加入预设的自定义设计弱驱壳库中,q的取值范围为2到N,N为目标设计层级总数,p的取值范围为1到q-1。
基于第q设计弱驱壳可以按照预设的RTL代码格式模板生成第q设计弱驱壳的RTL代码,可以为Verilog代码、System Verilog代码或VHDL代码等。
需要说明的是,步骤C1-步骤C2描述的是将每一层级的设计均生成对应设计弱驱壳的方式,但可以理解的是,如果仅有部分设计层级需要生成为设计弱驱壳,部分设计层级仍需要内部组成的具体信息,则将需要内部组成层级的部分按照实施例一中的步骤A1、步骤A2对应生成即可,在此不再赘述;对于需要生成设计空壳的设计层级按照实施例二中步骤B1-步骤B2的方式生成,在此不再赘述;对于需要生成设计弱驱壳的设计层级按照步骤C1-步骤C2的方式生成。也即实施例一、实施例二、实施例三在芯片设计中是可以根据具体应用需求组合应用的。
作为一种示例,所述步骤C1和步骤C2中,包括:
步骤C10、基于预设的总线描述重构库配置各个基本单元信息、设计互联信息对应的总线重构结构;
总线描述重构库,以及IDFm对应的总线描述重构结构的属性信息等细节已在实施例一中详细描述,在此不再赘述。
步骤C20、根据每一设计互联信息对应的互联关系建立生成对应总线重构结构间的互联关系,基于对应总线重构结构间的互联关系生成每一设计生成单元以及设计互联信息对应的端口信息,并获取每一端口信息对应的弱驱信息,将所述弱驱信息添加至对应的端口信息,生成对应的设计弱驱壳。
需要说明的是,需要说明的是,每一组成部分的总线重构结构可能有一个或多个,组成部分指的是基本单元或某一层级生成的层级互联信息,两个组成部分之间可以通过一组或多组总线重构结构互联,设计互联信息与该设计互联信息的组成部分之间也可通过一组或多组总线重构结构互联,并基于此与其他设计互联信息通过总线进行互联。对应的,每一组成部分以及每一层级互联信息对应的端口信息为一个或多个。通过为端口信息添加对应的弱驱信息,而不用生成每一设计互联信息各个组成部分的具体组成信息,既能加速仿真和验证速度,还能保证仿真和验证的准确性,从而提高了芯片设计的效率。
作为一种示例,所述步骤C10中,配置对应的总线重构结构包括:
步骤C101、定义总线重构结构的名称以及从预设的总线描述重构库中选择对应的总线重构结构类型,为每一发起端配置对应的互联总线重构结构的属性信息。
需要说明的是,具有互联关系的两个组成部分之间,有一个是发起端,另一个是接收端,发起端和接收端的区分为本领域公知常识,在此不再展开描述。本发明实施例中,仅在每一发起端存储的互联总线重构结构的属性信息即可,发起端和接收端建立互联关系,共用对应的互联总线重构结构的属性信息。
作为一种示例,可以直接基于IDF中信号对应的复位值,设置端口对应的弱驱值,所述步骤C20中,获取每一端口信息对应的弱驱信息,包括:
步骤C201、从发起端配置的互联总线重构结构的属性信息中获取output方向对应的复位值,作为发起端output端口对应的弱驱信息,获取input方向对应的复位值,作为接收端output端口对应的弱驱信息。
作为一种示例,每一DIY中还可设置扩展域(tied off),可以通过扩展域线性设置弱驱值,从而覆盖掉对应的复位值,这样可以使得通常情况下,需要复位值作为弱驱值的场景,直接采用步骤C201设置弱驱值即可,而对于部分特殊的设置弱驱值的场景,通过扩展域设置弱驱值,而无需更改复位值,即无需更改对应的IDF。这样既能满足所有场景下的弱驱值获取需求,又能保证IDF的通用性。具体的,所述步骤C20中,在生成对应总线重构结构间的互联关系中,还包括在预设的扩展域中设置每一端口自定义弱驱值,所述步骤C20中,获取每一端口信息对应的弱驱信息,包括:
步骤C202、判断预设的扩展域中是否设置对应的自定义弱驱值,若存在,则执行步骤C203;
步骤C203、获取对应的自定义弱驱值作为端口信息对应的弱驱信息,若不存在,则从发起端配置互联总线重构结构的属性信息中获取output方向对应的复位值,作为发起端output端口对应的弱驱信息,获取input方向对应的复位值,作为接收端output端口对应的弱驱信息。
需要说明的是,前序实施例以及后续其他实施例中的相关技术细节也可适用于本实施例中的相关步骤,在此不再重复赘述。
实施例三能够生成芯片设计弱驱壳,可以加速仿真和验证的速度,提高设计的效率。
实施例四、
在芯片设计过程中,通常先基于逻辑互联生成原始目标设计信息,但在建立物理互联过程中,根据版图物理位置、综合需求等因素,往往需要部分组成部件的重组。现有的EDA公司通常需要解析设计的最底层代码(如Verilog),通过最底层的代码反推出重组设计规则,来设计重组芯片,这个过程需要消耗大量的时间,且容易出错。实施例四提供了一种芯片设计重组方法,应用于芯片逻辑互联到物理互联的重组过程,包括:
步骤D1、获取原始目标设计信息{DIY1,DIY2,…DIYN;IDF01,IDF02,…IDF0R},DIYn表示第n设计互联信息,n的取值范围为1到N,N为原始目标设计层级数量,IDF0r表示第r总线互联结构对应的总线描述重构结构的属性信息,R为原始目标设计信息的总线互联总数;
其中,所述原始目标设计信息基于逻辑互联关系生成。n=1时,DIYn由多个基本单元信息通过总线互联定义生成,n>1时,DIYn由多个DIYs通过总线互联定义生成,或者,由至少一个DIYs和至少一个基本单元信息通过总线互联定义生成。每一DIYn的具体生成过程可通过实施例一中的步骤A1-步骤A3相关过程实现,在此不再赘述。此外,为了加快重组过程,在不需要设计层级内部详细组成信息的情况下,可以根据实施例二中的步骤B1-步骤B2生成对应的设计空壳作为对应的DIYn,在此不再赘述。如果需要弱驱,可根据实施例三中的步骤C1-步骤C2生成对应的弱驱壳作为对应的DIYn,在此不再赘述。总线描述重构结构的属性信息的配置过程也在实施例一种详细描述,在此不再赘述。
步骤D2、获取芯片设计重组信息,解析所述原始目标设计信息,基于所述芯片设计重组信息确定目标重组起始层级y,1≤y≤N,解析DIYy,DIYy+1,…DIYN生成待重组单元信息库;
其中,所述芯片设计重组信息基于物理互联关系生成,具体可以根据设计版图物理位置、综合需求等决定芯片设计重组信息,芯片重组信息中是可以引入新的组成单元的。逐个解析DIYy,DIYy+1,…DIYN生成所有待重组单元信息,将所有待重组单元信息加入待重组单元信息库。可以理解的是,待重组单元信息为基本单元信息或DIY1,DIY2,…DIYy-1,重组过程中,目标设计信息中的DIY1,DIY2,…DIYy-1保持不变,将DIYy,DIYy+1,…DIYN的组成部分打散重组,且重组后保证互联关系保持不变,从而保证逻辑互联的准确性。
步骤D3、基于所述芯片设计重组信息、待重组单元信息库以及IDF01,IDF02,…IDF0R,逐层重组生成DIYy’,DIYy+1’,…DYT’,其中,DIYu’表示重组后的第u设计互联信息,u的取值范围为y到T,T为重组后的目标设计层级数量,DIYy’,DIYy+1’,…DIYT’中待重组单元信息的总线互联关系与DIYy,DIYy+1,…DIYN中的对应的待重组单元信息的总线互联关系保持不变;
步骤D4、生成重组目标设计信息{DIY1,DIY2,…DIYy-1,DIYy’,DIYy+1’,…DIYT’;IDF01,IDF02,…IDF0R}。
作为一种示例,所述步骤D3包括:
步骤D31、初始化u=y;
步骤D32、基于所述芯片设计重组信息从所述待重组单元信息库获取重组第u设计互联信息所需的待重组单元信息,并按照第u设计互联信息所需的待重组单元信息在原始目标设计信息中的互联关系进行总线互联定义,并从{IDF01,IDF02,…IDF0R}中获取重组第u设计互联信息中所有发起端对应的总线描述重构结构的属性信息,配置至对应的发起端信息中,生成重组第u设计互联信息DIYu’,将DIYu’加入所述待重组单元信息库中;
需要说明的是,总线互联定义、在发起端信息配置总线描述重构结构的属性信息以及总线描述重构结构的属性信息等细节均已在实施例一种详细描述,在此不再赘述。
步骤D33、判断u是否小于T,若小于,则设置u=u+1,返回执行步骤D32。
在重组过程中是可能引入新的组成单元的,若所述设计重组信息中包括新增重组单元信息{F1,F2,…FZ},Fz表示第z个新增重组单元信息作为一种示例,所述步骤D3包括:
步骤D301、将{F1,F2,…FZ}加入所述待重组单元信息库,初始化u=y;
步骤D32、基于所述芯片设计重组信息从所述待重组单元信息库获取重组第u设计互联信息所需的待重组单元信息,并按照第u设计互联信息所需的待重组单元信息在原始目标设计信息中的互联关系进行总线互联定义,并从{IDF01,IDF02,…IDF0R}中获取重组第u设计互联信息中所有发起端对应的总线描述重构结构的属性信息,配置至对应的发起端信息中,若涉及新增重组单元信息,则根据设计重组信息中新增生成单元信息Fz对应的互联关系与对应的待重组单元建立对应的总线互联,并设置对应的总线描述重构结构的属性信息IDFz’,生成重组第u设计互联信息DIYu’,将DIYu’加入所述待重组单元信息库中;
步骤D33、判断u是否小于T,若小于,则设置u=u+1,返回执行步骤D32。
若所述设计重组信息中包括新增重组单元信息,则所述步骤D4中,生成重组目标设计信息为{DIY1,DIY2,…DIYy-1,DIYy’,DIYy+1’,…DIYT’;IDF01,IDF02,…IDF0R,IDF1’,IDF2’,…IDFZ’}。
需要说明的是,前序实施例以及后续其他实施例中的相关技术细节也可适用于本实施例中的相关步骤,在此不再重复赘述。
实施例四在重组过程中,无需处理底层代码,只需要根据重组信息修改高层次的重组规则即可,不易出错,且重组效率高,从而提高了芯片设计效率。
需要说明的是,上述所有实施例均适用于所有类型芯片的设计过程,尤其适用于敏捷芯片的设计方法。
需要说明的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时处理可以被终止,但是还可以具有未包括在附图中的附加步骤。处理可以对应于方法、函数、规程、子例程、子程序等等。
本领域技术人员可以理解的是,全文中所有提到的在发起端设置信息的地方,也可以替换为在接收端设置对应信息,也即,可以选择全部在发起端设置,或者全部在接收端设置,在此不再赘述。
本发明实施例还提供一种电子设备,包括:至少一个处理器;以及,与所述处理器通信连接的存储器;其中,所述存储器存储有可被所述处理器执行的指令,所述指令被设置为用于执行本发明实施例所述的方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机指令用于执行本发明实施例所述的方法。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (10)
1.一种自动生成芯片设计RTL代码的方法,其特征在于,包括:
步骤A1、从预设的基本单元信息库获取多个基本单元信息作为第一基本单元信息,将所述第一基本单元信息通过总线互联定义生成第一设计互联信息,将所述第一设计互联信息加入预设的自定义设计互联信息库中,所述基本单元信息库中存储多个基本单元信息,所述基本单元信息为RTL代码;
步骤A2、从所述自定义设计互联信息库中获取多个第i设计互联信息,将所述多个第i设计互联信息通过总线互联定义生成第j设计互联信息,或者,从所述自定义设计互联信息库中获取至少一个第i设计互联信息,并从预设的基本单元信息库获取至少一个基本单元信息作为第j基本单元信息,将所述第i设计互联信息和第j基本单元信息通过总线互联定义生成第j设计互联信息,将所述第j设计互联信息加入预设的自定义设计互联信息库中,j的取值范围为2到N,N为目标设计层级总数,i的取值范围为1到j-1;
步骤A3、基于第N设计互联信息生成芯片设计RTL代码。
2.根据权利要求1所述的方法,其特征在于,
所述步骤A1和步骤A2中,通过总线互联定义生成对应的设计互联信息,包括:为各个基本单元信息、设计互联信息配置对应的总线重构结构,为每一发起端配置对应的互联总线重构结构的属性信息,并根据每一设计互联信息对应的互联关系建立对应的总线重构结构间的互联关系,生成对应的设计互联信息。
3.根据权利要求2所述的方法,其特征在于,
所述步骤A1中,将所述第一基本单元信息通过总线互联定义生成第一设计互联信息,包括:
步骤A11、基于预设的总线描述重构库为每一第一基本单元信息和第一设计互联信息配置对应的一个或多个总线重构结构,为每一发起端配置对应的互联总线重构结构的属性信息;
步骤A12、基于所述第一基本单元信息之间的互联关系、第一基本单元信息与第一设计互联信息总线重构结构之间的互联关系,建立对应总线重构结构之间的互联,生成第一设计互联信息。
4.根据权利要求2所述的方法,其特征在于,:
所述步骤A2中,将所述多个第i设计互联信息通过总线互联定义生成第j设计互联信息,包括:
步骤A21、基于预设的总线描述重构库中为第j设计互联信息配置对应的一个或多个总线重构结构,为每一发起端配置对应的互联总线重构结构的属性信息;
步骤A22、基于所述多个第i设计互联信息之间的互联关系、所述多个第i设计互联信息与第j设计互联信息总线重构结构之间的互联关系,建立对应总线重构结构之间的互联,生成第j设计互联信息。
5.根据权利要求2所述的方法,其特征在于,:
所述步骤A2中,将所述第i设计互联信息和第j基本单元信息通过总线互联定义生成第j设计互联信息,包括:
步骤A23、基于预设的总线描述重构库中为每一第j基本单元信息和第j设计互联信息配置对应的一个或多个总线重构结构,为每一发起端配置对应的互联总线重构结构的属性信息;
步骤A24、基于所述第i设计互联信息、第j基本单元信息之间的互联关系,所述第i设计互联信息、第j基本单元信息与第j设计互联信息总线重构结构之间的互联关系,建立对应总线重构结构之间的互联,生成第j设计互联信息。
6.根据权利要求3-5中任意一项所述的方法,其特征在于:
在建立对应总线结构之间的互联过程中,若存在互联链条末端互联端口,则将类型为output的末端互联端口设置为悬空状态,为类型为input的末端互联端口状态设置对应的默认值,或者为类型为input的末端互联端口对应的信号端口设置对应的自定义值。
7.根据权利要求1所述的方法,其特征在于:
所述步骤A3中,
步骤A31、基于第N设计互联信息中各个组成部分对应的基本单元信息对应的RTL代码、各个生成部分之间的互联关系以及各个总线重构结构信息,按照预设的RTL代码格式模板生成目标设计RTL代码。
8.根据权利要求7所述的方法,其特征在于,:
所述预设的RTL代码格式模板为Veri log的RTL代码格式模板、System Veri log的RTL代码格式模板或VHDL的RTL代码格式模板。
9.一种电子设备,其特征在于,包括:
至少一个处理器;
以及,与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被设置为用于执行前述权利要求1-8任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,存储有计算机可执行指令,所述计算机可执行指令用于执行前述权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210555754.8A CN117131824A (zh) | 2022-05-19 | 2022-05-19 | 自动生成芯片设计rtl代码的方法、电子设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210555754.8A CN117131824A (zh) | 2022-05-19 | 2022-05-19 | 自动生成芯片设计rtl代码的方法、电子设备和介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117131824A true CN117131824A (zh) | 2023-11-28 |
Family
ID=88855158
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210555754.8A Pending CN117131824A (zh) | 2022-05-19 | 2022-05-19 | 自动生成芯片设计rtl代码的方法、电子设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117131824A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117709259A (zh) * | 2024-02-01 | 2024-03-15 | 北京开源芯片研究院 | 一种芯片设计方法、装置、电子设备及可读存储介质 |
-
2022
- 2022-05-19 CN CN202210555754.8A patent/CN117131824A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117709259A (zh) * | 2024-02-01 | 2024-03-15 | 北京开源芯片研究院 | 一种芯片设计方法、装置、电子设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN117131834A (zh) | 芯片设计重组方法、电子设备和介质 | |
EP3185027B1 (en) | Information processing method and device and computer storage medium | |
CN110941934B (zh) | 一种fpga原型验证开发板分割仿真系统、方法、介质及终端 | |
CN113255258B (zh) | 逻辑综合方法、装置、电子设备及存储介质 | |
EP3089030A1 (en) | Flexible physical function and virtual function mapping | |
CN117291126A (zh) | 基于配置文件的soc芯片设计方法、电子设备和介质 | |
CN105701294A (zh) | 实现芯片复杂工程修改的方法及系统 | |
CN114239453A (zh) | 仿真验证平台构建方法、仿真验证方法、装置及设备 | |
CN110442929B (zh) | 一种基于perl实现芯片系统顶层自动例化的方法 | |
CN117131824A (zh) | 自动生成芯片设计rtl代码的方法、电子设备和介质 | |
CN116737117A (zh) | 基于Autosar架构的模型开发方法 | |
CN113868046B (zh) | 一种pad控制单元的功能验证方法及系统 | |
CN112733478A (zh) | 用于对设计进行形式验证的装置 | |
CN117131815A (zh) | 自动生成芯片弱驱壳的方法、电子设备和介质 | |
CN117131814A (zh) | 自动生成芯片空壳的方法、电子设备和介质 | |
US12073159B2 (en) | Computing device and method for detecting clock domain crossing violation in design of memory device | |
CN108334313A (zh) | 用于大型soc研发的持续集成方法、装置及代码管理系统 | |
US8555228B2 (en) | Tool for glitch removal | |
US7086017B1 (en) | Method of post-implementation simulation of a HDL design | |
CN116050309A (zh) | 数字电路的设计方法、装置、电子设备、存储介质 | |
CN113779918A (zh) | SoC仿真方法、装置、计算设备和计算机存储介质 | |
US8769449B1 (en) | System level circuit design | |
CN116451625B (zh) | 用于rtl和带sdf网表的联合仿真的装置和方法 | |
CN117436374B (zh) | 电路综合方法、装置、设备及存储介质 | |
CN117436384A (zh) | 大规模fpga电路验证方法、装置及存储介质 |
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 |