CN113392603B - 门级电路的rtl代码生成方法、装置和电子设备 - Google Patents

门级电路的rtl代码生成方法、装置和电子设备 Download PDF

Info

Publication number
CN113392603B
CN113392603B CN202110934179.8A CN202110934179A CN113392603B CN 113392603 B CN113392603 B CN 113392603B CN 202110934179 A CN202110934179 A CN 202110934179A CN 113392603 B CN113392603 B CN 113392603B
Authority
CN
China
Prior art keywords
level circuit
gate level
logic elements
rtl code
information
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
CN202110934179.8A
Other languages
English (en)
Other versions
CN113392603A (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 Core Vision Software Technology Co ltd
Original Assignee
Beijing Core Vision Software Technology 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 Core Vision Software Technology Co ltd filed Critical Beijing Core Vision Software Technology Co ltd
Priority to CN202110934179.8A priority Critical patent/CN113392603B/zh
Publication of CN113392603A publication Critical patent/CN113392603A/zh
Application granted granted Critical
Publication of CN113392603B publication Critical patent/CN113392603B/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
    • 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
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2115/00Details relating to the type of the circuit
    • G06F2115/12Printed circuit boards [PCB] or multi-chip modules [MCM]

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)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Computing Systems (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

本申请实施例提供了一种门级电路的RTL代码生成方法、装置和电子设备,属于集成电路技术领域,其中方法包括:获取第一门级电路的各逻辑元件的RTL代码;对所述各逻辑元件的RTL代码分别进行编译,以得到所述各逻辑元件的目标视图;根据所述各逻辑元件之间的连接关系和所述各逻辑元件的目标视图,生成所述第一门级电路的RTL代码。根据本申请实施例的门级电路的RTL代码生成方法、装置和电子设备,生成的门级电路的RTL代码能够更直观地描述电路的功能,从而便于理解门级电路的功能。

Description

门级电路的RTL代码生成方法、装置和电子设备
技术领域
本申请属于集成电路技术领域,尤其涉及一种门级电路的RTL代码生成方法、装置和电子设备。
背景技术
集成电路(又可称为“数字电路”,可简称为“电路”)由逻辑元件通过线网连接形成。集成电路设计时,编写描述硬件功能的RTL代码,通过逻辑综合工具,可以得到实现对应硬件功能的门级网表。由于门级网表的描述形式为结构化描述,或者说采用模块例化语句的形式描述,因此,复杂的电路在“门级”无法直观地描述出电路的功能,门级电路与原始设计的RTL代码较难进行关联。
发明内容
本申请实施例提供一种门级电路的RTL代码生成方法、装置、电子设备及计算机存储介质,能够将门级电路的结构化描述转化为RTL代码,以更直观地描述电路的功能。
第一方面,本申请实施例提供一种门级电路的RTL代码生成方法,包括:
获取第一门级电路的各逻辑元件的RTL代码;
对所述各逻辑元件的RTL代码分别进行编译,以得到所述各逻辑元件的目标视图;
根据所述各逻辑元件之间的连接关系和所述各逻辑元件的目标视图,生成所述第一门级电路的RTL代码。
第二方面,本申请实施例提供了一种门级电路的RTL代码生成装置,包括:
第一获取模块,用于获取第一门级电路的各逻辑元件的RTL代码;
编译模块,用于对所述各逻辑元件的RTL代码分别进行编译,以得到所述各逻辑元件的目标视图;
生成模块,用于根据所述各逻辑元件之间的连接关系和所述各逻辑元件的目标视图,生成所述第一门级电路的RTL代码。
第三方面,本申请实施例提供了一种电子设备,包括:处理器,以及存储有计算机程序指令的存储器;所述处理器读取并执行所述计算机程序指令,以实现第一方面的门级电路的RTL代码生成方法。
第四方面,本申请实施例提供了一种计算机存储介质,所述计算机存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现第一方面的门级电路的RTL代码生成方法。
本申请实施例中,通过对门级电路的各逻辑元件的RTL代码进行编译,以得到各逻辑元件的目标视图,并根据各逻辑元件之间的连接关系和各逻辑元件的目标视图,生成门级电路的RTL代码。这样生成的门级电路的RTL代码能够更直观地描述电路的功能,从而便于理解门级电路的功能。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单的介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的门级电路的RTL代码生成方法的流程示意图;
图2是本申请实施例提供的门级电路的RTL代码生成过程示意图;
图3是本申请实施例提供的一种门级电路的示意图;
图4是本申请实施例提供的对图3的逻辑元件编写RTL代码的示意图;
图5是根据图3的各逻辑元件的RTL代码直接生成门级电路的RTL代码的示意图;
图6是本申请实施例提供的对图3的逻辑元件编译得到目标视图的示意图;
图7是本申请实施例提供的根据目标视图生成RTL代码的示意图;
图8是本申请实施例提供的另一种门级电路的示意图;
图9是根据图8的各逻辑元件的RTL代码直接生成门级电路的RTL代码的示意图;
图10是本申请实施例提供的对图8的门级电路添加功能标注信息的示意图;
图11是本申请实施例提供的根据图10的门级电路生成RTL代码的示意图;
图12是本申请实施例提供的在图9示出的RTL代码中添加功能标注信息的示意图;
图13是本申请实施例提供的对图3的门级电路添加功能标注信息的示意图;
图14是本申请实施例提供的根据图13的门级电路生成的RTL代码示意图;
图15是本申请实施例提供的另一种门级电路的示意图;
图16是本申请实施例提供的根据图15的门级电路生成目标视图的示意图;
图17是本申请实施例提供的根据图16的门级电路生成RTL代码的示意图;
图18是本申请实施例提供的在图15中添加顺序标注信息的示意图;
图19是本申请实施例提供的根据图18的门级电路生成RTL代码的示意图;
图20是本申请实施例提供的在图15中添加嵌套的顺序标注信息的示意图;
图21是本申请实施例提供的根据图20的门级电路生成RTL代码的示意图;
图22是本申请实施例提供的在门级电路中添加第四子信息的示意图;
图23是本申请实施例提供的根据图22的门级电路生成RTL代码的示意图;
图24是本申请实施例提供的对门级电路添加功能标注信息和顺序标注信息的流程示意图;
图25是本申请实施例提供的一种门级电路的RTL代码生成装置的结构示意图;
图26是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将详细描述本申请的各个方面的特征和示例性实施例,为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本申请进行进一步详细描述。应理解,此处所描述的具体实施例仅意在解释本申请,而不是限定本申请。对于本领域技术人员来说,本申请可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本申请的示例来提供对本申请更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
随着集成电路的快速发展,集成电路的规模逐渐变大,构成一个数字系统的基本逻辑元件的数量超百万甚至千万,因此,采用门级网表这种结构描述方式很难理解电路的功能。
发明人发现,任何数字电路,无论其功能为何,均由寄存器和基本逻辑元件(例如与、或、非等逻辑元件)及其相互之间的输入输出连接实现,寄存器用来保存数据,基本逻辑元件构成的组合电路用来传输或变换数据。发明人进一步发现,RTL(Register TransferLevel,寄存器传输层)代码具有行为描述或数据流描述属性,以行为描述为例,其是一种对模块行为功能的抽象描述,行为描述的方式能够较直观地体现电路的功能。
鉴于此,为了能够更直观地描述电路的功能,本申请实施例提供了一种门级电路的RTL代码生成方法、装置、电子设备及计算机存储介质。
在对本申请实施例进行说明之前,先对本申请所涉及的术语进行解释。
术语“门级电路”是由基本逻辑元件(简称“逻辑元件”)的实例例化语句构成,门级电路可包括多个逻辑元件,逻辑元件可包括组合逻辑元件、时序逻辑元件等类型,例如可以包括寄存器、与门、或门、非门等,逻辑元件又可称为门器件。
术语“RTL”为一种抽象层级,在集成电路设计中, RTL是用于描述同步数字电路操作的抽象级。
术语“RTL代码”可采用VHDL/Verilog等HDL语言编写,VHDL/Verilog HDL是一种硬件描述语言,是一种以文本形式来描述数字系统硬件的结构和行为的语言,可以用来表示逻辑电路图、逻辑表达式,还可以用来表示数字逻辑系统所完成的逻辑功能。
术语“目标视图”为使用编译器编译HDL语言编写的代码得到的视图,“目标视图”可命名为但不限于命名为“BsModule视图”。
下面首先对本申请实施例所提供的门级电路的RTL代码生成方法进行介绍。
图1示出了本申请一个实施例提供的门级电路的RTL代码生成方法的流程示意图。本申请实施例的门级电路的RTL代码生成方法可由门级电路的RTL代码生成装置执行。
如图1所示,该方法可以包括以下步骤:
步骤101:获取第一门级电路的各逻辑元件的RTL代码;
步骤102:对所述各逻辑元件的RTL代码进行编译,以得到所述各逻辑元件的目标视图;
步骤103:根据所述各逻辑元件之间的连接关系和所述各逻辑元件的目标视图,生成所述第一门级电路的RTL代码。
在步骤101之前,可以预先针对第一门级电路的各逻辑元件编写RTL代码。具体的,可以通过人工实现各逻辑元件的RTL代码的编写,也可以通过软件实现各逻辑元件的RTL代码的编写;可以直接在第一门级电路中编写各逻辑元件的RTL代码,也可以在其他文件中编写第一门级电路的各逻辑元件的RTL代码。
通过对第一门级电路的各逻辑元件编写RTL代码,实现了采用行为描述语句的形式对各逻辑元件进行描述,例如,可采用assign、always等行为描述语句来描述各逻辑元件的功能。
在步骤102中,可以通过预先设置的编译器将各逻辑元件的RTL代码分别编译为目标视图,从而得到各逻辑元件的目标视图。目标视图是逻辑元件RTL代码的一种图形化显示形式,如此,步骤102能够将步骤101所获取到的各逻辑元件的RTL代码以图形化的电路图的形式进行展现,这能够较直观地显示逻辑元件的功能。
在步骤103中,可以根据各逻辑元件之间的连接关系和各逻辑元件的目标视图生成第一门级电路的RTL代码。这样生成的第一门级电路的RTL代码可采用assign、always等行为描述语句来描述第一门级电路的功能。
由上可知,本申请实施例中,门级电路RTL代码的生成过程为:先编写逻辑元件的RTL代码,再将逻辑元件的RTL代码经编译器编译为目标视图,然后基于各逻辑元件之间的连接关系和各逻辑元件的目标视图生成门级电路的RTL代码。为了便于理解,如图2所示,可以将逻辑元件、逻辑元件的RTL代码(图2中以“RTL代码”表示)以及逻辑元件的目标视图统一称为功能模块电路,该功能模块电路实现由逻辑元件至逻辑元件的RTL代码再至逻辑元件的目标视图的转化过程,并将门级电路的RTL代码称为功能模块RTL代码,即,实现了将功能模块电路转化为功能模块RTL代码。
相关技术中,门级电路RTL代码的生成过程一般是根据逻辑元件的RTL代码和各逻辑元件之间的连接关系直接生成门级电路的RTL代码,这样生成的RTL代码一般为两级结构,其中顶层为结构化的逻辑单元,下一层级为每个逻辑元件的RTL代码。这样生成的RTL代码无法直观地描述门级电路的功能。
相比于相关技术,本申请实施例通过对逻辑元件的RTL代码编译生成逻辑元件的目标视图,能够简化门级电路的层级结构,如此,基于各逻辑元件之间的连接关系和目标视图生成的RTL代码不再与结构化的逻辑单元共存,这能够更直观地描述门级电路的功能。
需要说明的是,在生成第一门级电路的RTL代码之后,还可以利用仿真软件对生成的RTL代码进行仿真,以进一步验证第一门级电路的功能。
以下结合图3至图7,以第一门级电路为8路选择器为例,对本申请实施例提供的门级电路RTL代码的生成过程与相关技术中门级电路RTL代码的生成过程进行示例性对比说明。
图3示出了该8路选择器的门级电路,该门级电路包括10个逻辑元件。
首先,对构成该8路选择器的各逻辑元件编写RTL代码。
图4示出了以8路选择器的逻辑元件OAI222为例,编写的逻辑元件OAI222的RTL代码的示意图。
图5示出了相关技术中,在对8路选择器的各逻辑元件编写各自的RTL代码之后,根据8路选择器的各逻辑元件的RTL代码和各逻辑元件之间的连接关系直接的生成门级电路的RTL代码的示意图。如图5所示,生成的8路选择器的RTL代码为两级结构,其中顶层为结构化的逻辑单元,下一层级为每个逻辑元件的RTL代码。这样生成的RTL代码无法直观地描述8路选择器的功能。
其次,本申请实施例通过编译器将8路选择器的各逻辑元件的RTL代码分别编译为各自对应的目标视图。
图6示出了以逻辑元件OAI222为例,将逻辑元件OAI222的RTL代码编译为逻辑元件OAI222的目标视图的示意图。
再次,本申请实施例根据8路选择器的各逻辑元件之间的连接关系和各逻辑元件的目标视图,生成8路选择器的RTL代码。
图7示出了根据8路选择器的各逻辑元件的目标视图生成的8路选择器的RTL代码的示意图。如图7所示,生成的8路选择器的RTL代码为一级结构,其不再显示结构化的逻辑单元,不仅简化了8路选择器的RTL代码,还能够更直观地描述8路选择器的功能。
通过上述示例可知,本申请实施例中,通过对门级电路的各逻辑元件的RTL代码进行编译,以得到各逻辑元件的目标视图,并根据各逻辑元件之间的连接关系和各逻辑元件的目标视图,生成门级电路的RTL代码,这样生成的门级电路的RTL代码能够更直观地描述电路的功能,从而便于理解门级电路的功能。
发明人发现,通过上述过程生成的第一门级电路的RTL代码由于一般采用assign、always等行为描述语句来描述第一门级电路的功能,随着电路复杂性的提高,这些行为描述语句可能还不能足以全面、直观地描述电路。
鉴于此,本申请实施例还提供通过添加标注信息的方式来优化门级电路的RTL代码的实施方式。以下对采用添加标注信息的方式来优化门级电路的RTL代码的多种实施方式进行介绍。
在一些实施例中,在步骤103之前,所述方法还包括:
获取所述第一门级电路中添加的标注信息;
步骤103包括:
根据所述各逻辑元件之间的连接关系、所述各逻辑元件的目标视图和所述标注信息,生成所述第一门级电路的RTL代码。
进一步的,可以直接对第一门级电路添加标注信息,也可以对编译得到的各逻辑元件的目标视图添加标注信息。
在一些实施例中,在步骤103之后,所述方法还包括:
对所述第一门级电路的RTL代码添加标注信息,以得到所述第一门级电路的新的RTL代码。
作为示例,在对第一门级电路的RTL代码添加标注信息之后,可通过对RTL代码进行刷新来得到第一门级电路的新的RTL代码。当然,还可以通过刷新之外的其他方式来更新RTL代码。
由上述两种实施方式可知,既可以在生成第一门级电路的RTL代码之前,预先在第一门级电路中添加标注信息,也可以在生成第一门级电路的RTL代码之后,在第一门级电路的RTL代码中添加标注信息。
在一些实施例中,所述第一门级电路的RTL代码包括所述标注信息。
不管是在第一门级电路中添加标注信息,还是在第一门级电路的RTL代码中添加标注信息,添加之后在第一门级电路和RTL代码中均可显示相应的标注信息,这便于理解门级电路的功能。
标注信息的添加可以通过人工实现,也可以通过软件实现。
标注信息的类型可以包括多种,例如,可以包括功能标注信息,也可以包括顺序标注信息,还可以包括其他类型的标注信息,标注信息的类型可以根据门级电路的类型来灵活地选择。
通过添加标注信息,能够使第一门级电路的RTL代码更全面、更直观地描述电路。
在一些实施例中,所述标注信息包括针对所述第一门级电路的第一线网添加的功能标注信息;
所述第一门级电路的RTL代码包括所述第一线网的功能标注信息。
该实施方式可适用于多路选择器、带控制信号的计数器等功能较为复杂的电路。对于多路选择器、带控制信号的计数器等功能较为复杂的电路,assign、always语句可能不能足够直观地展示电路的功能,例如,像译码控制的多选电路还可以使用case语句来描述,像计数器、加法器等电路还可以使用“+/-”来描述。因此,可以在门级电路中添加功能标注信息来得到更直观、更优化的RTL代码。
该实施方式中,可以针对第一门级电路的第一线网添加功能标注信息,第一线网既可以是单比特的线网,也可以是多比特的线网(或称总线形式的线网)。
在一些实施例中,所述功能标注信息包括第一子信息、第二子信息和第三子信息,所述第一子信息用于标注所述第一线网的类型,所述第一线网的类型包括单比特的线网和多比特的线网中的一项,所述第二子信息用于标注所述第一线网的功能,所述第三子信息为所述第一线网的描述信息。
例如,单比特的线网可以采用“@n”进行标注,多比特的线网可以采用“@b”进行标注。这里,“@n”和“@b”均为第一子信息。
在一些实施例中,所述第二子信息包括但不限于条件语句(if)、选择语句(select)、译码语句(decode)、开关语句(switch)、分支语句(branch)中的任一项。
在一些实施例中,所述第三子信息包括但不限于编译指令、模块信息、仿真向量等。在RTL代码生成时,第三子信息可以变成RTL代码中第一线网所在语句的注释。例如,在第一门级电路的第一线网中添加标注信息“@define word_length 32”,生成RTL代码后,将变为编译指令语句,`define word_length 32,该语句表示定义一个常量word_length,其值为32。
如果第一门级电路还包括第二线网、第三线网等线网,还可以针对第二线网、第三线网等线网添加功能标注信息。
添加的功能标注信息可体现在最后生成的第一门级电路的RTL代码中,因此,通过添加功能标注信息,能够使第一门级电路的RTL代码更全面、更直观地描述电路的功能。
以下结合图8至图10,以图8所示的第一门级电路为例,对添加功能标注信息的过程进行示例性说明。
图8示出的第一门级电路为:一个16位的与门AND2,其中与门AND2的一个输入端口都连接在一起,信号线为CTRL,AND2的另一个输入端口的输入信号为总线A<15:0>,输出信号总线为Z<15:0>。
图9示出了未对图8示出的第一门级电路添加功能标注信息而生成的RTL代码示意图。
图10示出了对图8示出的第一门级电路添加功能标注信息的示意图。如图10所示,对任一AND2的CTRL端添加标注信息“select @n”,该标注信息相当于给该线网添加了一个signal参数,其参数值为“select@n”。在电路中可以选中该线网查看其signal参数。
图11示出了根据图10示出的第一门级电路生成的RTL代码示意图。
通过对比图9示出的RTL代码和图11示出的RTL代码可知,图11示出的RTL代码能够更加直观且更简单地描述该门级电路的功能。
需要说明的是,既可以在生成第一门级电路的RTL代码之前,预先在第一门级电路中添加功能标注信息,也可以在生成第一门级电路的RTL代码之后,在第一门级电路的RTL代码中添加功能标注信息。不管是在第一门级电路中添加功能标注信息,还是在第一门级电路的RTL代码中添加功能标注信息,添加之后在第一门级电路和RTL代码中均可显示相应的功能标注信息。
仍以图8所示的第一门级电路为例,如图12所示,可以在图9示出的RTL代码中添加功能标注信息,添加功能标注信息后,通过刷新可以得到新的RTL代码,该新的RTL代码与图11示出的RTL代码相同。
以下结合图13至图14,以图3示出的8路选择器的门级电路为例,对添加功能标注信息的过程进行示例性说明。
图13示出了对图3示出的8路选择器添加功能标注信息的示意图。如图13所示,在8路选择器电路中对线网CTRL<1>添加功能标注信息“decode @b[2:0]”,其中,线网CTRL是以组的形式存在的,CTRL<0>/ CTRL<1>/ CTRL<2>为一组数据,因此,可以对任意一个线网添加标注信息,即可完成对整个组内的所有信号添加标注信息。同样的,如果线网不是以组的形式存在,可以单独对线网进行标注,其效果是一样的。
图14示出了根据图13示出的第一门级电路所生成的RTL代码示意图,其中,生成的RTL代码中包含有对线网CTRL<1>添加的功能标注信息,图14示出的RTL代码能够更加直观且更简单地描述该门级电路的功能。
以上为添加功能标注信息的实施方式的相关介绍,通过添加功能标注信息,能够使第一门级电路的RTL代码更全面、更直观地描述电路的功能。
在一些实施例中,所述标注信息包括针对所述第一门级电路的N个单元添加的第一顺序标注信息,所述第一顺序标注信息用于标注所述N个单元以第一预设顺序排序,N为大于或等于1的整数;
所述第一门级电路的RTL代码包括按所述第一预设顺序排序的所述N个单元的RTL代码。
该实施方式可适用于译码、多输出的逻辑电路。对于译码、多输出的逻辑电路,生成的RTL代码中存在多个assign、always语句,这多个assign、always语句的顺序是随机的,无法较好地与电路中的逻辑电路相对应。因此,可以在门级电路中添加顺序标注信息,使RTL代码中的行为描述语句的顺序符合电路中单元的顺序。
在一些实施例中,所述第一顺序标注信息包括界定所述N个单元的第一界定框和第四子信息,所述第四子信息包括针对所述N个单元的顺序描述信息。
作为示例,可以在电路中使用矩形框(即第一界定框)将需设定顺序的单元覆盖或包围,对矩形框添加“@xxx”参数(即第四子信息),其中“xxx”可以是任意的字符或文本。在添加了顺序标注信息之后,软件可通过识别矩形框及矩形框中的“@”标识来实现单元的排序,矩形框包围的逻辑元件将转换为RTL代码中位置连续且有序的代码片段,相应的“@xxx”将转换为RTL代码对应代码片段的注释,该注释可以为N个单元的描述信息,例如功能信息等。其中排序默认为在该矩形框内,从上至下,从左至右,但是并不仅仅限于该排序方式,还可以是其他排序方式。
在一些实施例中,所述标注信息还包括针对所述N个单元中的M个单元添加的第二顺序标注信息,所述第二顺序标注信息用于标注所述M个单元以第二预设顺序排序,M为大于或等于1且小于或等于N的整数。
该实施方式中,可以在第一门级电路中嵌套添加顺序标注信息,上述第二顺序标注信息即嵌套于第一顺序标注信息。第二顺序标注信息可包括界定M个单元的第二界定框和第五子信息,第五子信息可包括针对M个单元的顺序描述信息。
生成的第一门级电路的RTL代码可包括顺序标注信息,具体的,可包括第四子信息和第五子信息。
作为示例,可以在已经添加“@xxx”的矩形框中,再嵌套添加带“@yyy”的矩形框,即可实现顺序标注信息的嵌套。以下结合图15至图19,以电路test_new为例,对本申请实施例提供的添加顺序标注信息并生成门级电路RTL代码的过程进行示例性说明。
首先,打开电路test_new,编写该电路的各逻辑元件的RTL代码。图15示出了电路test_new中SC1_AND2_9_3的RTL代码示意图。
其次,通过编译器生成各逻辑元件的目标视图。图16示出了电路test_new中SC1_AND2_9_3的目标视图示意图。
图17示出了直接根据各逻辑元件之间的连接关系和各逻辑元件的目标视图生成的电路test_new的RTL代码示意图,电路test_new的RTL代码中,各单元的顺序为随机顺序。
图18示出了在电路test_new中添加顺序标注信息的示意图。如图18所示,对电路test_new中的Z<0>、Z<1>、ZN<2>、ZN<3>这四个输出所对应的单元用矩形框包围,并在矩形框中添加“@order”参数。
图19示出了在添加了上述顺序标注信息之后所生成的电路test_new的RTL代码示意图。如图19所示,电路test_new的RTL代码中,Z<0>、Z<1>、ZN<2>、ZN<3>这四个输出所对应的单元的RTL代码按照从上至下的顺序依次排列,而电路test_new的Z<4>、Z<5>、ZN<6>、ZN<7>这四个输出所对应的单元未添加顺序标注信息,其RTL代码的顺序则为随机顺序。
图20示出了在电路test_new中添加嵌套的顺序标注信息的示意图。如图20所示,先对电路test_new中的Z<0>、Z<1>、ZN<2>、ZN<3>、Z<4>、Z<5>这六个输出所对应的单元用大的矩形框包围,并在大的矩形框中添加“@order”参数,再对Z<0>、Z<1>、ZN<2>、ZN<3>、Z<4>、Z<5>这六个输出所对应的单元中的Z<0>、Z<1>、Z<4>、Z<5>这四个输出所对应的单元用小的矩形框包围,并在小的矩形框中添加“@inside”参数。
图21示出了在添加了上述顺序标注信息之后所生成的电路test_new的RTL代码示意图。如图21所示,电路test_new的RTL代码中,Z<0>、Z<1>、Z<4>、Z<5>、ZN<2>、ZN<3>这六个输出所对应的单元的RTL代码语句按照从上至下的顺序依次排列,首先,标注为@inside中的Z<0>、Z<1>、Z<4>、Z<5>这四个输出所对应的单元的RTL代码语句按照从上至下的顺序依次排列,然后Z<0>、Z<1>、Z<4>、Z<5>这四个输出所对应的单元作为一个整体,与ZN<2>、ZN<3>这两个输出所对应的单元按照从上至下的顺序依次排列。@order和@inside转化为了这一个代码片段的注释。而电路test_new的ZN<6>、ZN<7>这两个输出所对应的单元未添加顺序标注信息,其RTL代码的顺序则为随机顺序。
通过对比图17示出的RTL代码与图19(或图21)示出的RTL代码可知,图19(或图19)示出的RTL代码能够更加直观地描述该门级电路中单元的顺序。
以上为添加顺序标注信息的实施方式的相关介绍,通过添加顺序标注信息,能够使第一门级电路的RTL代码中描述语句的顺序符合电路中单元的顺序,从而能够更全面、更直观地描述电路。
在一些实施例中,顺序标注信息中的第四子信息还可包括对N个单元添加的“@xxx”参数以及对N个单元中的某个单元添加的起始序号参数等顺序描述信息。
作为示例,如图22所示,可以对Z<0>、Z<1>、Z<6>、Z<7>这四个输出所对应的单元添加“@order”参数,并可以对Z<0>这个输出所对应的单元添加起始序号“1”。添加了顺序标注信息之后,软件可通过识别“@”参数来实现单元的排序,转化后的RTL代码语句如图23所示,Z<0>、Z<1>、Z<6>、Z<7>这四个输出所对应的单元的RTL代码语句按照顺序依次排列,Z<2>、Z<3>、Z<4>、Z<5>这四个输出所对应的单元未添加顺序标注信息,其RTL代码的顺序则为随机顺序。其中,相应的“@xxx”将转换为RTL代码对应代码片段的注释,该注释可以为N个单元的描述信息,例如功能信息等。
以上为添加功能标注信息或添加顺序标注信息的相关示例。图24还示出了对门级电路添加功能标注信息和顺序标注信息的流程示意图。如图24所示,在将功能模块电路①转化为功能模块RTL代码②之后,可以在功能模块RTL代码②中添加功能标注信息,或者在功能模块电路①中添加功能标注信息,得到体现电路功能的RTL代码③。此外,还可以在功能模块电路①中添加顺序标注信息,得到功能模块优化的RTL代码④,功能模块优化的RTL代码④中,RTL代码片段可按电路顺序排序。
综上,本申请实施例中,通过对门级电路的各逻辑元件的RTL代码进行编译,以得到各逻辑元件的目标视图,并根据各逻辑元件之间的连接关系和各逻辑元件的目标视图,生成门级电路的RTL代码。这样生成的门级电路的RTL代码能够更直观地描述电路的功能,从而便于理解门级电路的功能。
图25是本申请实施例提供的一种门级电路的RTL代码生成装置的结构示意图。
如图25所示,门级电路的RTL代码生成装置210包括:
第一获取模块211,用于获取第一门级电路的各逻辑元件的RTL代码;
编译模块212,用于对所述各逻辑元件的RTL代码分别进行编译,以得到所述各逻辑元件的目标视图;
生成模块213,用于根据所述各逻辑元件之间的连接关系和所述各逻辑元件的目标视图,生成所述第一门级电路的RTL代码。
可选的,门级电路的RTL代码生成装置210还包括:
第二获取模块,用于获取所述第一门级电路中添加的标注信息;
生成模块213具体用于:
根据所述各逻辑元件之间的连接关系、所述各逻辑元件的目标视图和所述标注信息,生成所述第一门级电路的RTL代码。
可选的,所述第一门级电路的RTL代码包括所述标注信息。
可选的,所述标注信息包括针对所述第一门级电路的第一线网添加的功能标注信息。
可选的,所述功能标注信息包括第一子信息、第二子信息和第三子信息,所述第一子信息用于标注所述第一线网的类型,所述第一线网的类型包括单比特的线网和多比特的线网中的至少一项,所述第二子信息用于标注所述第一线网的功能,所述第三子信息为所述第一线网的描述信息。
可选的,所述第二子信息包括条件语句、选择语句、译码语句、开关语句、分支语句中的任一项。
可选的,所述标注信息包括针对所述第一门级电路的N个单元添加的第一顺序标注信息,所述第一顺序标注信息用于标注所述N个单元以第一预设顺序排序,N为大于或等于1的整数。
可选的,所述第一顺序标注信息包括界定所述N个单元的第一界定框和第四子信息,所述第四子信息包括针对所述N个单元的顺序描述信息。
可选的,所述标注信息还包括针对所述N个单元中的M个单元添加的第二顺序标注信息,所述第二顺序标注信息用于标注所述M个单元以第二预设顺序排序,M为大于或等于1且小于或等于N的整数。
可选的,门级电路的RTL代码生成装置210还包括:
添加模块,用于对所述第一门级电路的RTL代码添加标注信息,以得到所述第一门级电路的新的RTL代码。
图25所示装置中的各个模块/单元具有实现图1至图24中各个步骤的功能,并能达到其相应的技术效果,为简洁描述,在此不再赘述。
图26示出了本申请实施例提供的电子设备的硬件结构示意图。
如图26所示,该电子设备包括处理器301以及存储有计算机程序指令的存储器302。
具体地,上述处理器301可以包括中央处理器(Central Processing Unit,CPU),或者特定集成电路(Application Specific Integrated Circuit ,ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
存储器302可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器302可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在一个实例中,存储器302可以包括可移除或不可移除(或固定)的介质,或者存储器302是非易失性固态存储器。存储器302可在综合网关容灾设备的内部或外部。
在一个实例中,存储器302可以是只读存储器(Read Only Memory,ROM)。在一个实例中,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。
存储器302可以包括只读存储器(ROM),随机存取存储器(RAM),磁盘存储介质设备,光存储介质设备,闪存设备,电气、光学或其他物理/有形的存储器存储设备。因此,通常,存储器包括一个或多个编码有包括计算机可执行指令的软件的有形(非暂态)计算机可读存储介质(例如,存储器设备),并且当该软件被执行(例如,由一个或多个处理器)时,其可操作来执行参考根据本申请的一方面的门级电路的RTL代码生成方法所描述的操作。
处理器301通过读取并执行存储器302中存储的计算机程序指令,以实现图1至图24所示实施例中的方法/步骤,并达到图1至图24所示实例执行其方法/步骤达到的相应技术效果,为简洁描述在此不再赘述。
在一个示例中,电子设备还可包括通信接口303和总线310。其中,如图26所示,处理器301、存储器302、通信接口303通过总线310连接并完成相互间的通信。
通信接口303,主要用于实现本申请实施例中各模块、装置、单元和/或设备之间的通信。
总线310包括硬件、软件或两者,将门级电路的RTL代码生成设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(Accelerated Graphics Port,AGP)或其他图形总线、增强工业标准架构(Extended Industry Standard Architecture,EISA)总线、前端总线(Front Side Bus,FSB)、超传输(Hyper Transport,HT)互连、工业标准架构(Industry Standard Architecture,ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线310可包括一个或多个总线。尽管本申请实施例描述和示出了特定的总线,但本申请考虑任何合适的总线或互连。
该电子设备可以执行本申请实施例中的门级电路的RTL代码生成方法,从而实现结合图1和图2描述的门级电路的RTL代码生成方法和装置。
另外,结合上述实施例中的门级电路的RTL代码生成方法,本申请实施例可提供一种计算机存储介质来实现。该计算机存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种门级电路的RTL代码生成方法。
需要明确的是,本申请并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本申请的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本申请的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本申请的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RadioFrequency,RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本申请中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本申请不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
上面参考根据本申请的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本申请的各方面。应当理解,流程图和/或框图中的每个方框以及流程图和/或框图中各方框的组合可以由计算机程序指令实现。这些计算机程序指令可被提供给通用计算机、专用计算机、或其它可编程数据处理装置的处理器,以产生一种机器,使得经由计算机或其它可编程数据处理装置的处理器执行的这些指令使能对流程图和/或框图的一个或多个方框中指定的功能/动作的实现。这种处理器可以是但不限于是通用处理器、专用处理器、特殊应用处理器或者现场可编程逻辑电路。还可理解,框图和/或流程图中的每个方框以及框图和/或流程图中的方框的组合,也可以由执行指定的功能或动作的专用硬件来实现,或可由专用硬件和计算机指令的组合来实现。
以上所述,仅为本申请的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。

Claims (15)

1.一种门级电路的RTL代码生成方法,其特征在于,包括:
获取第一门级电路的各逻辑元件的RTL代码,其中,所述各逻辑元件的RTL代码根据所述第一门级电路得到;
对所述各逻辑元件的RTL代码分别进行编译,以得到所述各逻辑元件的目标视图,所述目标视图用于将各逻辑元件的RTL代码以图形化的形式显示;
根据所述各逻辑元件之间的连接关系和所述各逻辑元件的目标视图,生成所述第一门级电路的RTL代码,所述第一门级电路的RTL代码采用描述语句描述所述第一门级电路的功能。
2.根据权利要求1所述的方法,其特征在于,在所述根据所述各逻辑元件之间的连接关系和所述各逻辑元件的目标视图,生成所述第一门级电路的RTL代码之前,所述方法还包括:
获取所述第一门级电路中添加的标注信息;
所述根据所述各逻辑元件之间的连接关系和所述各逻辑元件的目标视图,生成所述第一门级电路的RTL代码,包括:
根据所述各逻辑元件之间的连接关系、所述各逻辑元件的目标视图和所述标注信息,生成所述第一门级电路的RTL代码。
3.根据权利要求2所述的方法,其特征在于,所述第一门级电路的RTL代码包括所述标注信息。
4.根据权利要求2所述的方法,其特征在于,所述标注信息包括针对所述第一门级电路的第一线网添加的功能标注信息。
5.根据权利要求4所述的方法,其特征在于,所述功能标注信息包括第一子信息、第二子信息和第三子信息,所述第一子信息用于标注所述第一线网的类型,所述第一线网的类型包括单比特的线网和多比特的线网中的至少一项,所述第二子信息用于标注所述第一线网的功能,所述第三子信息为所述第一线网的描述信息。
6.根据权利要求5所述的方法,其特征在于,所述第二子信息包括条件语句、选择语句、译码语句、开关语句、分支语句中的任一项。
7.根据权利要求2所述的方法,其特征在于,所述标注信息包括针对所述第一门级电路的N个单元添加的第一顺序标注信息,所述第一顺序标注信息用于标注所述N个单元以第一预设顺序排序,N为大于或等于1的整数。
8.根据权利要求7所述的方法,其特征在于,所述第一顺序标注信息包括界定所述N个单元的第一界定框和第四子信息,所述第四子信息包括针对所述N个单元的顺序描述信息。
9.根据权利要求7所述的方法,其特征在于,所述标注信息还包括针对所述N个单元中的M个单元添加的第二顺序标注信息,所述第二顺序标注信息用于标注所述M个单元以第二预设顺序排序,M为大于或等于1且小于或等于N的整数。
10.根据权利要求1所述的方法,其特征在于,在所述根据所述各逻辑元件之间的连接关系和所述各逻辑元件的目标视图,生成所述第一门级电路的RTL代码之后,所述方法还包括:
对所述第一门级电路的RTL代码添加标注信息,以得到所述第一门级电路的新的RTL代码。
11.一种门级电路的RTL代码生成装置,其特征在于,包括:
第一获取模块,用于获取第一门级电路的各逻辑元件的RTL代码,其中,所述各逻辑元件的RTL代码根据所述第一门级电路得到;
编译模块,用于对所述各逻辑元件的RTL代码分别进行编译,以得到所述各逻辑元件的目标视图,所述目标视图用于将各逻辑元件的RTL代码以图形化的形式显示;
生成模块,用于根据所述各逻辑元件之间的连接关系和所述各逻辑元件的目标视图,生成所述第一门级电路的RTL代码,所述第一门级电路的RTL代码采用描述语句描述所述第一门级电路的功能。
12.根据权利要求11所述的装置,其特征在于,还包括:
第二获取模块,用于获取所述第一门级电路中添加的标注信息;
所述生成模块具体用于:
根据所述各逻辑元件之间的连接关系、所述各逻辑元件的目标视图和所述标注信息,生成所述第一门级电路的RTL代码。
13.根据权利要求11所述的装置,其特征在于,还包括:
添加模块,用于对所述第一门级电路的RTL代码添加标注信息,以得到所述第一门级电路的新的RTL代码。
14.一种电子设备,其特征在于,包括:处理器,以及存储有计算机程序指令的存储器;所述处理器读取并执行所述计算机程序指令,以实现权利要求1至10中任一项所述的门级电路的RTL代码生成方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现权利要求1至10中任一项所述的门级电路的RTL代码生成方法。
CN202110934179.8A 2021-08-16 2021-08-16 门级电路的rtl代码生成方法、装置和电子设备 Active CN113392603B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110934179.8A CN113392603B (zh) 2021-08-16 2021-08-16 门级电路的rtl代码生成方法、装置和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110934179.8A CN113392603B (zh) 2021-08-16 2021-08-16 门级电路的rtl代码生成方法、装置和电子设备

Publications (2)

Publication Number Publication Date
CN113392603A CN113392603A (zh) 2021-09-14
CN113392603B true CN113392603B (zh) 2022-02-18

Family

ID=77622550

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110934179.8A Active CN113392603B (zh) 2021-08-16 2021-08-16 门级电路的rtl代码生成方法、装置和电子设备

Country Status (1)

Country Link
CN (1) CN113392603B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113919254B (zh) * 2021-11-13 2022-05-31 奇捷科技(深圳)有限公司 寄存器传输级信号映射构建方法、装置、设备和存储介质
CN115345095A (zh) * 2022-10-18 2022-11-15 北京芯愿景软件技术股份有限公司 数字电路分析、电路图显示方法、装置、设备及介质
CN116542191B (zh) * 2023-07-06 2023-12-05 奇捷科技(深圳)有限公司 逻辑更正方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1741026A (zh) * 2005-09-16 2006-03-01 北京中星微电子有限公司 一种快速生成逻辑电路的方法
CN105224320A (zh) * 2015-09-25 2016-01-06 武汉大学 一种rtl图形化描述方法
CN105303000A (zh) * 2015-11-26 2016-02-03 浪潮(北京)电子信息产业有限公司 一种电路设计方法及系统
CN107193623A (zh) * 2017-05-24 2017-09-22 南京大学 一种新型快速正则表达式的硬件电路编译方法及编译器实现
CN112257369A (zh) * 2020-12-21 2021-01-22 上海国微思尔芯技术股份有限公司 一种逻辑设计分割方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7036106B1 (en) * 2000-02-17 2006-04-25 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1741026A (zh) * 2005-09-16 2006-03-01 北京中星微电子有限公司 一种快速生成逻辑电路的方法
CN105224320A (zh) * 2015-09-25 2016-01-06 武汉大学 一种rtl图形化描述方法
CN105303000A (zh) * 2015-11-26 2016-02-03 浪潮(北京)电子信息产业有限公司 一种电路设计方法及系统
CN107193623A (zh) * 2017-05-24 2017-09-22 南京大学 一种新型快速正则表达式的硬件电路编译方法及编译器实现
CN112257369A (zh) * 2020-12-21 2021-01-22 上海国微思尔芯技术股份有限公司 一种逻辑设计分割方法及系统

Also Published As

Publication number Publication date
CN113392603A (zh) 2021-09-14

Similar Documents

Publication Publication Date Title
CN113392603B (zh) 门级电路的rtl代码生成方法、装置和电子设备
US10733508B2 (en) Methods and systems for data analysis in a state machine
US9866218B2 (en) Boolean logic in a state machine lattice
US8680888B2 (en) Methods and systems for routing in a state machine
CN104011736B (zh) 用于状态机中的检测的方法及系统
US20160321039A1 (en) Technology mapping onto code fragments
CN109871311A (zh) 一种推荐测试用例的方法和装置
CN115345095A (zh) 数字电路分析、电路图显示方法、装置、设备及介质
CN112989043B (zh) 指代消解方法、装置、电子设备及可读存储介质
US8443314B1 (en) Abstraction level-preserving conversion of flip-flop-inferred hardware description language (HDL) to instantiated HDL
US20190034562A1 (en) High-level synthesis device, high-level synthesis method, and computer readable medium
US20170364474A1 (en) Devices for time division multiplexing of state machine engine signals
CN104133931B (zh) 用于检测组合等效电路设计中的相应路径的方法和系统
CN115934082A (zh) 页面生成方法、装置、设备、可读存储介质及程序产品
US8954307B1 (en) Chained programming language preprocessors for circuit simulation
US8527922B1 (en) Method and system for optimal counterexample-guided proof-based abstraction
CN115293078B (zh) 集成电路的节点改写方法、装置、电子设备及介质
de Gennaro et al. Efficient composition of scenario‐based hardware specifications
US20210012051A1 (en) Circuit design visibility in integrated circuit devices
CN114565759A (zh) 图像语义分割模型优化方法、装置、电子设备及存储介质
JP2008009678A (ja) 論理図面表示方法、プログラム及び装置
JP5587459B2 (ja) 論理検証装置
CN117435850A (zh) 基于改进贪婪算法的道路巡检方法、系统、设备和介质
CN117540668A (zh) 数字电路的仿真方法及装置
CN117540671A (zh) 基于关键值真值表的数字电路仿真方法及装置

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