CN116738900B - 知识产权块的代码转换装置和方法 - Google Patents

知识产权块的代码转换装置和方法 Download PDF

Info

Publication number
CN116738900B
CN116738900B CN202311022591.8A CN202311022591A CN116738900B CN 116738900 B CN116738900 B CN 116738900B CN 202311022591 A CN202311022591 A CN 202311022591A CN 116738900 B CN116738900 B CN 116738900B
Authority
CN
China
Prior art keywords
module
logic
sub
node
language code
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
CN202311022591.8A
Other languages
English (en)
Other versions
CN116738900A (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.)
Moore Threads Technology Co Ltd
Original Assignee
Moore Threads 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 Moore Threads Technology Co Ltd filed Critical Moore Threads Technology Co Ltd
Priority to CN202311022591.8A priority Critical patent/CN116738900B/zh
Publication of CN116738900A publication Critical patent/CN116738900A/zh
Application granted granted Critical
Publication of CN116738900B publication Critical patent/CN116738900B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/323Translation or migration, e.g. logic to logic, hardware description language [HDL] translation or netlist translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2115/00Details relating to the type of the circuit
    • G06F2115/08Intellectual property [IP] blocks or IP cores
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本申请涉及知识产权块设计领域,公开了一种知识产权块的代码转换装置和方法,其中该方法包括:扫描并分析所述知识产权块的硬件结构标记语言代码,提取所述硬件结构标记语言代码的各个模块的模块信息,并基于各个模块的模块信息,确定所述硬件结构标记语言代码中的全部模块对应的树型数据结构以及基于所述树型数据结构以及各个模块的模块信息,生成所述知识产权块的高级编程语言代码和/或抽象功能标记语言代码。本公开实施例能够将知识产权块的硬件结构标记语言代码转换为高级编程语言代码和/或抽象功能标记语言代码,有助于提高开发效率。

Description

知识产权块的代码转换装置和方法
技术领域
本申请涉及知识产权块设计领域,尤其涉及一种知识产权块的代码转换装置和方法。
背景技术
在芯片设计开发过程中,为了便于阅读理解、调试仿真,提高开发效率,例如,往往以对应硬件知识产权(intellectual property,简称IP)的高级编程语言进行功能仿真。
应该注意,上面对技术背景的介绍只是为了方便对本申请的技术方案进行清楚、完整的说明,并方便本领域技术人员的理解而阐述的。不能仅仅因为这些方案在本申请的背景技术部分进行了阐述而认为上述技术方案为本领域技术人员所公知。
发明内容
发明人发现,在现有的硬件开发的某些场合,例如,代码迭代时,硬件开发效率较低。
针对上述问题中的至少之一或类似的问题,本申请实施例提供一种知识产权块的代码转换装置和方法,将知识产权块的硬件结构标记语言代码转换知识产权块的高级编程语言代码和/或抽象功能标记语言代码,能够提高开发效率。例如,可以提高硬件IP代码的可读性,便于仿真调试,提高开发效率,可以便于修改、升级高级编程语言代码等,方便迭代改进升级。
本申请第一方面的实施例提供一种知识产权块的代码转换方法,所述代码转换方法包括:
扫描所述知识产权块的硬件结构标记语言代码,提取所述硬件结构标记语言代码的各个模块的模块信息,并基于各个模块的模块信息,确定所述硬件结构标记语言代码中的全部模块对应的树型数据结构;以及
基于所述树型数据结构以及各个模块的模块信息,生成所述知识产权块的高级编程语言代码和/或抽象功能标记语言代码。
在一种可能的实现方式中,所述生成步骤包括:
遍历所述树型数据结构的各个模块,针对各个模块,基于所提取的模块信息,生成所述模块对应的高级编程语言代码,以得到所述知识产权块的高级编程语言代码。
在一种可能的实现方式中,所述针对各个模块,基于所提取的模块信息,生成所述模块对应的高级编程语言代码,包括:
基于所述模块的模块信息,确定所述模块包括的至少一个逻辑节点;
根据所述模块包括的所有逻辑节点对应的高级编程语言代码,生成所述模块对应的高级编程语言代码。
在一种可能的实现方式中,所述生成步骤包括:
基于各个模块的模块信息,确定每个模块包括的逻辑节点;
基于所述树型数据结构,确定每个逻辑节点的层级深度;
删除硬件结构标记语言代码中层级深度大于或等于层级阈值的逻辑节点对应的代码块,得到所述知识产权块的抽象功能标记语言代码,
其中,所述抽象功能标记语言代码表征所述知识产权块包括的功能模块和/或功能模块调用的子模块。
在一种可能的实现方式中,逻辑节点包括所述模块的子模块逻辑节点、所述模块的非子模块逻辑节点以及所述模块的输入逻辑节点中的至少一者,其中,所述子模块逻辑节点是基于所述模块包括的子模块抽象得到的,所述非子模块逻辑节点是不包括子模块、基于所述模块的非子输出信号抽象得到的,所述非子输出信号包括所述模块的输出和/或所述模块包括的寄存器级信号,所述输入逻辑节点是基于所述模块的输入确定的。
在一种可能的实现方式中,其中,逻辑节点的输入信号是基于模块包括的寄存器级信号、子模块的输入、子模块的输出、模块的输出以及模块的输入中的至少一者确定的,
其中,逻辑节点的输出信号是基于模块的非子输出信号确定的。
在一种可能的实现方式中,其中,模块对应逻辑节点以及所述模块的输入逻辑节点的层级深度相同,模块的子模块逻辑节点以及非子模块逻辑节点的层级深度相同,模块对应逻辑节点的层级深度小于模块的子模块逻辑节点的层级深度。
在一种可能的实现方式中,模块包括的逻辑节点包括子模块逻辑节点、非子模块逻辑节点以及输入逻辑节点中的至少一者,其中,
子模块逻辑节点对应的高级编程语言代码是通过调用已生成的所述子模块逻辑节点对应模块的高级编程语言代码得到的;
非子模块逻辑节点对应的高级编程语言代码是基于所述非子模块逻辑节点生成的,所述模块的非子模块逻辑节点与所述模块的非子输出信号一一对应;
输入逻辑节点对应的高级编程语言代码是基于所述输入逻辑节点生成的,所述模块的输入逻辑节点与所述模块的输入一一对应。
在一种可能的实现方式中,目标逻辑节点包括组合逻辑以及参与所述组合逻辑的全部信号,其中,所述方法还包括:
翻译所述组合逻辑,得到对应的组合逻辑代码;
翻译得到参与所述组合逻辑的每个信号对应的信号变量;
基于所述组合逻辑代码以及参与组合逻辑的全部信号变量,生成所述目标逻辑节点对应的高级编程语言代码,
其中,所述目标逻辑节点为输入逻辑节点和/或非子模块逻辑节点。
在一种可能的实现方式中,其中,所述翻译所述组合逻辑,得到对应的组合逻辑代码,包括:
基于所述组合逻辑,建立逻辑树;
根据所述逻辑树以及数据库模板,翻译得到所述组合逻辑代码,
其中,基于所述组合逻辑代码以及参与组合逻辑的全部信号变量,生成所述目标逻辑节点对应的高级编程语言代码,包括:
以类的形式封装所述组合逻辑代码以及参与组合逻辑的全部信号变量,得到所述目标逻辑节点对应的高级编程语言代码。
在一种可能的实现方式中,所述树型数据结构是基于所有模块之间的例化关系确定的,每个模块的模块信息用于确定所述模块与其他模块之间的例化关系。
在一种可能的实现方式中,所述树型数据结构包括顶层模块,其中,所述方法还包括:
基于所述顶层模块对应的高级编程语言代码确定所述知识产权块的高级编程语言代码。
在一种可能的实现方式中,所述知识产权块包括知识产权子块,其中,所述方法还包括:
确定所述树型数据结构中所述知识产权子块对应的模块;
基于所述知识产权子块对应的模块的高级编程语言代码,确定所述知识产权子块对应的高级编程语言代码。
在一种可能的实现方式中,以深度优先方式遍历所述树型数据结构的各个模块。
在一种可能的实现方式中,所述知识产权块的硬件结构标记语言代码由所述知识产权块的硬件描述语言代码转换而来。
本申请第二方面的实施例提供一种知识产权块的代码转换装置,所述代码转换装置包括:
提取模块,用于扫描并分析所述知识产权块的硬件结构标记语言代码,提取所述硬件结构标记语言代码的各个模块的模块信息,并基于各个模块的模块信息,确定所述硬件结构标记语言代码中的全部模块对应的树型数据结构;以及
第一生成模块,用于基于所述树型数据结构以及各个模块的模块信息,生成所述知识产权块的高级编程语言代码和/或抽象功能标记语言代码。
本申请实施例还提供一种芯片开发系统,所述系统包括上述第二方面的实施例所述的代码转换装置。
本申请实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面的实施例所述的方法。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现第一方面的实施例所述的方法。
本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现第一方面的实施例所述的方法。
本申请实施例的有益效果之一在于:将知识产权块的硬件结构标记语言代码转换知识产权块的高级编程语言代码和/或抽象功能标记语言代码,有助于提高开发效率。例如,可以提高硬件IP代码的可读性,便于仿真调试,提高开发效率,还便于修改升级、高级编程语言代码,方便迭代改进升级。
参照后文的说明和附图,详细公开了本申请的特定实施方式,指明了本申请的原理可以被采用的方式。应该理解,本申请的实施方式在范围上并不因而受到限制。在所附权利要求的精神和条款的范围内,本申请的实施方式包括许多改变、修改和等同。针对一种实施方式描述和/或示出的特征可以以相同或类似的方式在一个或更多个其它实施方式中使用,与其它实施方式中的特征相组合,或替代其它实施方式中的特征。
附图说明
在此描述的附图仅用于解释目的,而不意图以任何方式来限制本申请公开的范围。另外,图中的各部件的形状和比例尺寸等仅为示意性的,用于帮助对本申请的理解,并不是具体限定本申请各部件的形状和比例尺寸。本领域的技术人员在本申请的教导下,可以根据具体情况选择各种可能的形状和比例尺寸来实施本申请。
图1示出本公开实施例提供的知识产权块的代码转换方法的流程图。
图2示出本公开实施例的以逻辑节点组织的知识产权块的示意图。
图3示出本公开实施例的一个树型数据结构的示意图。
图4示出本公开实施例的生成的知识产权块的高级编程语言代码的类的结构的示意图。
图5示出本公开实施例的深度优先的遍历方式的一个流程示意图。
图6示出本公开实施例提供的知识产权块的代码转换装置的示意图。
图7示出本公开实施例的芯片开发系统的示意图。
具体实施方式
下面将结合附图和具体实施例,对本申请的技术方案作详细说明,应理解这些实施例仅用于说明本申请而不用于限制本申请的范围,在阅读了本申请之后,本领域技术人员对本申请的各种等价形式的修改均落入本申请所附权利要求所限定的范围内。
在本申请实施例中,术语“第一”、“第二”等用于对不同元素从称谓上进行区分,但并不表示这些元素的空间排列或时间顺序等,这些元素不应被这些术语所限制。术语“和/或”包括相关联列出的术语的一种或多个中的任何一个和所有组合。术语“包含”、“包括”、“具有”等是指所陈述的特征、元素、元件或组件的存在,但并不排除存在或添加一个或多个其他特征、元素、元件或组件。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施方式的目的,不是旨在于限制本申请。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
硬件IP的设计迭代通常是通过参数配置的,不同迭代版本数字电路的子模块数目、结构、接口宽度等仅仅通过参数很难轻松达成配置,其中,硬件IP可以是CPU、GPU、TPU、DSP的、和/或可以应用与任何电子自动化领域的、可以被制造为芯片或者集成在FPGA/CPLD/ACAP的函数、算法、控制流程等。发明人发现硬件IP并不包括高级编程语言代码,在此情况下,如何实现硬件IP的硬件结构标记语言代码到高级编程语言代码的自动转换成为影响开发效率的重要因素,而相关技术中未有实现硬件IP的硬件结构标记语言代码到高级编程语言代码的自动转换的技术。并且,相关技术中也缺乏硬件IP的硬件结构标记语言代码到抽象功能标记语言代码的自动转换的技术。如何在版本迭代时,高效实现对硬件IP整体结构的展现、比较、管理成为亟待解决的问题。
本公开实施例提供了一种知识产权块的代码转换方法,通过提取所述硬件结构标记语言代码的各个模块的模块信息,并构建硬件结构标记语言代码中的全部模块的树型数据结构,基于模块的模块信息以及树型数据结构生成所述模块对应的高级编程语言代码和/或抽象功能标记语言代码,以得到所述知识产权块的高级编程语言代码和/或抽象功能标记语言代码。其中,所述代码转换方法可以用于在所述知识产权块的版本迭代过程中生成所述知识产权块的高级编程语言代码和/或抽象功能标记语言代码,这样,可以减少版本迭代耗时、提高开发效率、高效实现对硬件IP整体结构的展现、比较。
第一方面的实施例
图1示出本公开实施例提供的知识产权块的代码转换方法的流程图。在一种可能的实现方式中,所述知识产权块的代码转换方法的执行主体可以是知识产权块的代码转换装置,例如,所述知识产权块的代码转换方法可以由终端设备或服务器或其它电子设备执行。其中,终端设备可以是用户设备(User Equipment,UE)、移动设备、用户终端、终端、计算设备等。在一些可能的实现方式中,所述知识产权块的代码转换方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。如图1所示,所述知识产权块的代码转换方法包括:
在步骤S11中,扫描并分析所述知识产权块的硬件结构标记语言代码,提取所述硬件结构标记语言代码的各个模块的模块信息,并基于各个模块的模块信息,确定所述硬件结构标记语言代码中的全部模块对应的树型数据结构;
在步骤S12中,基于所述树型数据结构以及各个模块的模块信息,生成所述知识产权块的高级编程语言代码和/或抽象功能标记语言代码。
通过这种方式,能够高效实现将知识产权块的硬件结构标记语言代码自动转换为知识产权块的高级编程语言代码和/或抽象功能标记语言代码,从而提高开发效率。
其中,知识产权块的抽象功能标记语言代码可以表征知识产权块包括的功能模块和/或功能模块调用的子模块。
下文将分别示例性描述生成所述知识产权块的高级编程语言代码、抽象功能标记语言代码的方法。
示例性地,可以遍历所述树型数据结构的各个模块,针对各个模块,基于所提取的模块信息,生成所述模块对应的高级编程语言代码,以得到所述知识产权块的高级编程语言代码。或者,可以针对树型数据结构的各个模块,在满足生成模块对应的高级编程语言代码的条件的情况下,例如,在该模块对应子模块均已生成高级编程语言代码的情况下,确定满足该生成模块对应的高级编程语言代码的条件,可以执行生成高级编程语言代码的操作,以得到所述知识产权块的高级编程语言代码。
通过这种方式,能够高效实现将知识产权块的硬件结构标记语言代码自动转换为知识产权块的高级编程语言代码,从而提高硬件知识产权块代码的可读性,便于仿真调试,实现在硬件IP在对应高级编程语言领域进行功能仿真,增加了仿真的灵活性,且便于阅读、理解,从而提高开发效率,进而方便修改升级高级编程语言代码,方便迭代改进升级。
在一些可选的实施例中,高级编程语言代码包括高级编程语言代码框架、功能代码以及配置信息(例如,逻辑功能、流水线长度等)。示例性地,可以基于模块信息,生成高级编程语言代码框架,以结合高级编程语言代码框架、功能代码以及配置信息确定高级编程语言代码,本公开对生成高级编程语言代码框架的方式、功能代码以及配置信息的种类和类型均不做限制。
在本公开实施例中,可以利用高级编程语言代码的继承、多态特点,例如,利用继承特点,可以直接升级,无需复制硬件描述语言代码。例如,在参数的迭代升级过程中,针对不同版本,可以非常方便快捷的利用版本号作为索引,得到不同版本对应的参数。此外,版本号还可以作为组合逻辑函数、接口数据结构等的索引。利用多态特点,在一些示例实施例中,同样继承了加法器、浮点数加法器和整数加法器实现加法时,对应的功能一定是不同的,但是都可以抽象为加法器,从而便于迭代升级。
需要说明的是,本公开不限制生成的知识产权块的高级编程语言代码的适用场景和用途。示例性地,其可以用于硬件IP设计版本迭代。例如,其可以用于进一步生成硬件IP的硬件描述语言代码,从而实现基于高级编程语言代码管理硬件描述语言代码。其还可以用于更新完善、得到下一版本的高级编程语言代码,该下一版本的高级编程语言代码亦可以用于生成对应的硬件描述语言代码,以提高开发效率。
示例性地,可以对高级编程语言代码进行细化,确定所有功能的实现细节,并进行配置,将高级编程语言代码自动转化为对应的不同子版本的硬件描述语言代码。其中,还可以基于EDA工具对生成的不同子版本的硬件描述语言代码进行仿真、测试、综合,确定合格的目标子版本。
这样,可以得到知识产权块的硬件结构标记语言代码描述的电路结构对应的硬件描述语言代码。其中,对应于相同功能可以具有不同硬件结构的IP,不同子版本的硬件描述语言代码可以用于进一步生成对应的目标硬件结构标记语言代码,目标硬件结构标记语言代码可以不同于用于生成高级编程语言代码的硬件结构标记语言代码。其中,每个子版本的硬件描述语言代码对应一个目标硬件结构标记语言代码。
通过这种方式,在硬件IP设计涉及小范围修改(不是版本迭代)、需要最小化工作量的情况下,基于高级编程语言管理的硬件描述语言,可以直接修改相应的高级编程语言代码,或者对不同子版本的硬件描述语言配置进行小范围修改,再自动生成修改后的硬件描述语言代码(例如,包括子模块自动调用,顶层模块自动连接等),从而实现工作量的最小化,进而提高设计效率。
其中,知识产权块可以表示芯片中具有独立功能的电路模块设计,也可称为知识产权核或IP核。在本申请中,该知识产权块可以包括至少一个知识产权子块,例如,每个知识产权子块可以对应一个子功能。该知识产权块也可以作为其他知识产权块的知识产权子块,该知识产权块或者知识产权块的任意知识产权子块均可被其他知识产权块调用,该知识产权块或者知识产权块的任意知识产权子块亦可调用其他知识产权块,本公开对此不作限制。
如前文所述,扫描并分析硬件结构标记语言代码,可以提取所述硬件结构标记语言代码的各个模块的模块信息,基于提取到的各个模块信息,可以用于确定硬件结构标记语言代码中的全部模块的树型数据结构。
其中,硬件结构标记语言代码可以是任意标记语言代码,只要能够提取到知识产权块包括的各个模块的模块信息即可。其中,硬件结构标记语言代码可以包括用于描述知识产权块的各个模块的代码,本公开不限制硬件结构标记语言代码描述知识产权块的模块的方式。在一些可选的实施例中,硬件结构标记语言代码可以是由所述知识产权块的硬件描述语言代码转换而来的、也可以是获取得到的已编写代码。本公开对硬件结构标记语言代码、用于生成硬件结构标记语言代码的硬件描述语言代码的确定方式均不做限制。
其中,模块的模块信息可以是基于硬件结构标记语言代码提取得到的、用于描述该模块的各类信息。示例性地,模块信息可以包括该模块的输出、输入、寄存器级信号、该模块是否包括子模块等各类信息,模块信息可以用于确定该模块包括的逻辑节点的信息,模块信息还可以用于确定不同模块之间的例化关系,以确定树型数据结构,本公开对模块信息的类型、形式、数量、用途均不作限制。
在本申请实施例中,模块的输出可以为模块的全部向外部输出的信号,模块的输入可以为模块全部从外部接收的信号,寄存器级信号可以是指模块内部存储数据的信号,子模块可以是指该模块调用的其他模块,本公开不限制模块的输出、输入、寄存器级信号以及子模块的数量。
在本申请实施例中,模块信息可以包括逻辑节点的信息,以直接确定模块包括的逻辑节点,还可以是提取到的模块信息不包括逻辑节点的信息,可以基于提取到的模块信息,确定该模块包括的逻辑节点。
其中,逻辑节点可以理解为是对知识产权块的硬件结构标记语言代码包括的模块进行抽象表达得到的节点,不同抽象方式可以得到不同的逻辑节点。示例性地,可以基于模块是否包括子模块进行抽象,得到子模块逻辑节点或者非子模块逻辑节点。还可以是基于模块的输入抽象得到该模块的输入逻辑节点,本公开对逻辑节点的类型、抽象方式、数量等均不作限制。在一些可选的实施例中,模块的至少一个逻辑节点可以包括所述模块的子模块逻辑节点、所述模块的非子模块逻辑节点以及所述模块的输入逻辑节点中的至少一者。
其中,子模块逻辑节点可以是基于所述模块包括的子模块抽象得到的,例如,可以是将模块内部某个子模块抽象称为该模块的一个子模块逻辑节点。一个模块可以调用至少一个子模块,每个子模块可以对应抽象为该模块的一个子模块逻辑节点。
其中,所述非子模块逻辑节点可以是不包括子模块、基于所述模块的非子输出信号抽象得到的,其中,非子输出信号可以表征用于抽象得到非子模块逻辑节点的信号,例如,其可以包括所述模块的输出和/或所述模块包括的寄存器级信号。其中,基于非子输出信号的类型,非子模块逻辑节点可以包括非子模块输出逻辑节点以及非子模块寄存器级逻辑节点,非子模块逻辑节点与所述模块的非子输出信号一一对应。
其中,所述模块的输入逻辑节点可以是基于模块的输入确定的,其可以与所述模块的输入一一对应。
示例性地,模块信息可以确定该模块包括的至少一个逻辑节点、逻辑节点包括的组合逻辑、参与组合逻辑的全部信号等。其中,组合逻辑可以为逻辑节点输出信号对应的全部输入信号参与的组合逻辑,参与组合逻辑的全部信号可以包括该逻辑节点的输入信号、输出信号。
例如,可以将模块的每个输出以及每个输出对应的输入信号和组合逻辑抽象为该模块的非子模块输出逻辑节点。还可以将该模块的每个寄存级信号以及对应的全部输入信号和组合逻辑抽象为该模块的非子模块寄存器逻辑节点。
其中,本公开实施例的逻辑节点的输入信号可以是基于模块包括的寄存器级信号、模块的子模块的输入、模块的子模块的输出、模块的输出以及模块的输入中的至少一者确定的。其中,该逻辑节点为该模块包括的逻辑节点,模块的输入可以是包括该逻辑节点的任意模块的输入,例如,顶层模块包括该逻辑节点,该逻辑节点的输入信号可以是基于顶层模块的输入确定的。
其中,本公开实施例的逻辑节点的输出信号可以包括该逻辑节点对应模块的输出和/或该逻辑节点对应模块包括的寄存器级信号。
在一些可选的实施例中,可以基于模块信息,确定逻辑节点信息。其中,逻辑节点信息表征与逻辑节点相关的各类信息。示例性地,逻辑节点信息可以包括该逻辑节点的类型、该逻辑节点的名称、该逻辑节点包括的下一层级的逻辑节点的类型、输入逻辑节点的组合逻辑以及参与组合逻辑的全部信号、非子模块逻辑节点的组合逻辑以及参与组合逻辑的全部信号等至少一种信息,本公开不限制逻辑节点信息的类型、数量和形式。
在本申请实施例中,模块信息还可以用于确定不同模块之间的例化关系,以确定树型数据结构。相应地,各个模块的模块信息,可以用于确定所述硬件结构标记语言代码中的全部模块对应的树型数据结构。
示例性地,模块信息可以包括或者体现不同模块之间的例化关系或者层级关系,还可以用于确定不同逻辑节点之间的例化关系或者层级关系,从而能够用于构建全部模块对应的树型数据结构。
其中,树型数据结构可以是基于全部模块构建的,例如,硬件结构标记语言代码的模块与树型数据结构的节点一一对应。树型数据结构还可以是基于全部模块抽象得到的逻辑节点构建的,例如,全部模块抽象得到的逻辑节点(包括子模块逻辑节点以及非子模块逻辑节点)与树型数据结构的节点一一对应。本公开对基于模块的模块信息,确定全部模块对应的树型数据结构的方式不作限制。
在一种可能的实现方式中,每个模块的模块信息可以用于确定所述模块与其他模块之间的例化关系,所述树型数据结构可以是基于所有模块之间的例化关系确定的。
在一些可选的实施例中,树型数据结构可以包括多个节点,每个节点可以对应一个模块,可以基于确定的不同模块之间的例化关系,确定树型数据结构中的节点之间的父子层级。
示例性地,硬件结构标记语言代码可以确定不同模块之间的层级信息,可以通过扫描分析硬件结构标记语言代码的方式得到模块信息,并基于模块信息确定该层级信息,例如通过提取代码中的表示模块相关的关键字的方式获得的模块信息包括层级信息,基于层级信息,构建得到树型数据结构。例如,以模块A为顶层模块,模块B、模块C分别为模块A的两个子模块为例,构建得到树型数据结构包括两个层级,第一层级为模块A、第二层级为模块B和模块C,其中,模块A为模块B和模块C的父层级模块。
在一些可选的实施例中,树型数据结构的节点可以是基于全部模块抽象得到的逻辑节点构建的。
其中,模块对应逻辑节点以及所述模块的输入逻辑节点的层级深度相同,模块的子模块逻辑节点以及非子模块逻辑节点的层级深度相同,模块对应逻辑节点的层级深度小于模块的子模块逻辑节点的层级深度。
以前述模块A、模块B以及模块C为例,以模块A包括分别对应于模块B和模块C的两个子模块逻辑节点,还包括基于模块A的输出和/或寄存器级信号确定的非子模块逻辑节点以及基于模块A的输入确定的输入逻辑节点,模块B和模块C分别包括对应的非子模块逻辑节点以及输入逻辑节点为例,构建得到树型数据结构包括三个层级,第一层级为模块A对应的逻辑节点以及模块A对应的输入逻辑节点,第二层级为模块A的非子模块逻辑节点、模块B和模块C对应的逻辑节点以及模块B和模块C对应输入逻辑节点,第三层级为模块B和模块C对应的非子模块逻辑节点。
需要说明的是,模块信息可以用于确定硬件结构标记语言代码中的全部模块对应的树型数据结构、并生成模块对应的高级编程语言代码即可,本公开对硬件结构标记语言代码描述模块的方式、扫描并分析提取模块信息的方式、提取到的模块信息包括的信息类别、用途、形式均不做限制。
为便于理解,以下文所示的知识产权块的硬件结构标记语言代码为例进行示例性说明。图2示出本公开实施例的以逻辑节点组织的知识产权块的示意图。图3示出本公开实施例的一个树型数据结构的示意图。其中,图2、图3是基于下文示例的硬件结构标记语言代码确定的,需要说明的是,本公开实施例的代码转换方法不限于此。
##输入逻辑节点
<loiguc_module>
<type>输入逻辑节点</type>
<name>a3</name>
<logic>null</logic>
<inputs>in_a3<inputs>
</loiguc_module>
<loiguc_module>
<type>输入逻辑节点</type>
<name>a4</name>
<logic>null</logic>
<inputs>in_a4<inputs>
</loiguc_module>
<loiguc_module>
<type>输入逻辑节点</type>
<name>a5</name>
<logic>null</logic>
<inputs>in_a5<inputs>
</loiguc_module>
<loiguc_module> #TOP节点
<type>top</type>
<name>A</name>
##非子模块输出逻辑节点
<loiguc_module>
<type>非子模块输出逻辑节点</type>
<name>a1</name>
<logic>
assign a1 = b1;
</logic>
<inputs>B.b1<inputs>
</loiguc_module>
<loiguc_module>
<type>非子模块输出逻辑节点</type>
<name>a2</name>
<logic>
assign a2 = b2 + R0 + R1;
</logic>
<inputs>B.b2<inputs>
<inputs>R0<inputs>
<inputs>R1<inputs>
</loiguc_module>
##非子模块寄存器级逻辑节点
<loiguc_module>
<type>非子模块寄存器级逻辑节点</type>
<name>R0</name>
<logic>
assign R0 = in_a4;
</logic>
<inputs>in_a4<inputs>
</loiguc_module>
<loiguc_module>
<type>非子模块寄存器级逻辑节点</type>
<name>R1</name>
<logic>
assign R1 = in_a5^2;
</logic>
<inputs>in_a5<inputs>
</loiguc_module>
##子模块逻辑节点
<loiguc_module>
<type>子模块逻辑节点</type>
<name>B</name>
##非子模块输出逻辑节点
##非子模块寄存器级逻辑节点
##子模块逻辑节点
##输入逻辑节点
<loiguc_module>
</loiguc_module>
...
...
...
</loiguc_module>
##输入逻辑节点
<loiguc_module>
<type>输入逻辑节点</type>
<name>B.b3</name>
<logic>
assign B.b3 = B.up.a3 ^ 3;
</logic>
<inputs>B.up.a3<inputs>
</loiguc_module>
</loiguc_module>
示例性地,扫描上述硬件结构标记语言代码,可以提取到模块A和模块B的模块信息,下文以模块A和模块B为例、结合图2、图3示例性描述构建树型数据结构的方法。需要说明的是,硬件结构标记语言代码还可以包括其他模块,相应地,可以基于各个模块的模块信息构建全部模块对应的树型数据结构。为便于理解,下文以树型数据结构的节点可以是基于模块抽象得到的逻辑节点构建为例进行示例性说明。
以模块A为例,提取得到的模块信息可以包括模块A的类型以及基于模块A抽象得到的逻辑节点的逻辑节点信息。例如,可以确定模块A的类型为顶层模块,其被抽象得到的逻辑节点A为顶层的逻辑节点。
示例性地,分别基于输入in_a3、in_a4以及in_a5可以确定的模块A的三个输入逻辑节点a3、a4以及a5,其中,模块A的输入逻辑节点的组合逻辑为空,其可以理解为输入逻辑节点a3、a4以及a5的输入信号in_a3、in_a4以及in_a5分别是顶层模块A的输入in_a3、in_a4以及in_a5。在本申请实施例中,输入逻辑节点a3、a4以及a5的层级深度可以等于顶层模块A对应逻辑节点A的层级深度。
示例性地,逻辑节点A的下一层级逻辑节点包括非子模块逻辑节点(分别为非子模块输出逻辑节点a1、a2以及非子模块寄存器级逻辑节点R0、R1)以及子模块逻辑节点(逻辑节点B)。其中,非子模块输出逻辑节点a1、a2、非子模块寄存器级逻辑节点R0、R1以及逻辑节点B作为逻辑节点A的下一层级逻辑节点,其层级深度可以大于逻辑节点A的层级深度。
其中,非子模块输出逻辑节点a1的输入信号是模块B的输出b1(B.b1),组合逻辑是a1=b1。非子模块输出逻辑节点a2的输入信号分别是模块B的输出b2(B.b2)、寄存器级R0以及R1,组合逻辑是a2=b2 + R0 + R1。非子模块寄存器级逻辑节点R0的输入信号是顶层模块A的输入in_a4,组合逻辑是R0= in_a4。非子模块寄存器级逻辑节点R1的输入信号是顶层模块A的输入in_a5,组合逻辑是R1 = in_a5^2。需要说明的是,示例性的代码中省略了模块B的部分信息,可以理解的是,省略的部分信息可以确定b1、b2分别为模块B的输出。
相应地,可以基于模块B的模块信息确定模块B为模块A的子模块,其可以被抽象为逻辑节点B,逻辑节点B为逻辑节点A的子模块逻辑节点。逻辑节点B包括的下一层级逻辑节点包括非子模块输出逻辑节点、非子模块寄存器级逻辑节点、子模块逻辑节点。并且,其可以基于输入信号B.up.a3,确定输入逻辑节点B.b3,组合逻辑是B.b3 = B.up.a3^3,其中,B.up.a3可以表征该输入信号是基于模块A的输入in_a3确定的。
基于上述模块信息,可以确定顶层模块A包括子模块(模块B)、寄存器级R0、寄存器级R1、输出a1、输出a2、输入in_a3、输入in_a4以及输入in_a5。顶层模块A包括的逻辑节点有:子逻辑节点B、非子模块输出逻辑节点a1、a2,非子模块寄存器级逻辑节点R0、R1,输入逻辑节点a3、a4以及a5。相应地,模块B具有输入逻辑节点b3,其亦包括子模块、寄存器级、输入b3、输出b1、b2。
基于此,可以构建得到如图2所示的示意图,其中,L0、L1以及L2分别表示生成b3、R1以及a2 的组合逻辑。
由此,可以确定如图3所示的模块A以及模块B对应的树型数据结构。其中,模块B的子模块逻辑节点以及非子模块逻辑节点亦未示出。
在本申请实施例中,基于所提取的模块信息,生成所述知识产权块的高级编程语言代码,可以是生成每个模块对应的高级编程语言代码,并将顶层模块对应的高级编程语言代码确定为所述知识产权块的高级编程语言代码。例如,可以是遍历树型数据结构的各个模块,例如,以深度优先方式遍历每个模块,针对各个模块,基于所提取的模块信息,确定每个模块对应的高级编程语言代码。还可以是在某一模块的所有子模块对应的高级编程语言代码均已生成的情况下,确定满足生成该模块对应的高级编程语言代码的条件,应理解,生成部分模块对应的高级编程语言代码的步骤可以是并行或者串行执行的,本公开对此不作限制。
在一种可能的实现方式中,在基于模块信息,可以提取到模块包括的逻辑节点的情况下,例如,硬件结构标记语言代码是按照逻辑节点进行抽象表达模块的情况下,可以基于模块对应的所有逻辑节点,生成该模块对应的高级编程语言代码,其中,逻辑节点可以是不区分是否包括寄存级信号确定的节点,任意逻辑节点均可以采用同一种方式生成对应的高级编程语言代码。在逻辑节点包括不同类型时,还可以按照类型,确定是生成对应的高级编程语言代码还是直接调用已生成的高级编程语言代码。
在一种可能的实现方式中,所述针对各个模块,基于所提取的模块信息,生成所述模块对应的高级编程语言代码,可以包括:
基于所述模块的模块信息,确定所述模块包括的至少一个逻辑节点;
根据所述模块包括的所有逻辑节点对应的高级编程语言代码,生成所述模块对应的高级编程语言代码。
示例性地,模块包括的逻辑节点可以包括子模块逻辑节点、非子模块逻辑节点以及输入逻辑节点中的至少一者。其中,模块包括的逻辑节点对应的高级编程语言代码可以是已生成的、可被直接调用的,还可以是未生成的、待翻译的。
其中,模块包括子模块的情况下,其包括子模块逻辑节点。模块是否包括子模块可以是基于树型数据结构和/或模块信息确定的。示例性地,树型数据结构可以用于确定该模块是否包括子模块,在该模块为树型数据结构的顶层节点或者中间节点、其调用其他模块的情况下,该模块包括子模块,被调用的其他模块可以为该模块包括的子模块。在该模块为树型数据结构的叶子节点、其不调用其他模块的情况下,可以确定该模块不包括子模块。还可以基于所述模块的模块信息确定该模块是否包括子模块。例如,在模块信息包括子模块逻辑节点的情况下,可以确定该模块包括子模块。在模块信息不包括子模块逻辑节点的情况下,可以确定该模块不包括子模块。
其中,模块的输入逻辑节点可以是一个或多个,输入逻辑节点的数量与模块的输入数量相同,每个输入逻辑节点对应的高级编程语言代码可以是翻译得到的。模块包括的子模块逻辑节点可以是在生成模块对应的高级编程语言代码之前已生成的,可以直接调用得到的。模块包括的非子模块逻辑节点可以是翻译得到的。
其中,可以以类的形式封装模块包括的所有逻辑节点对应的高级编程语言代码,得到模块对应的高级编程语言代码。
通过这种方式,针对子模块逻辑节点,可以利用部分已生成的高级编程语言代码,从而实现高效生成模块对应的高级编程语言代码。
需要说明的是,本公开不限制基于模块信息确定逻辑节点的方式、模块包括的逻辑节点的数量、逻辑节点的类型、模块是否包括子模块的确定方式、模块的输入逻辑节点的数量以及对应高级编程语言代码的生成方式、模块包括的所有逻辑节点对应的高级编程语言代码的生成方式以及模块对应的高级编程语言代码的生成方式。
在本申请实施例中,输入逻辑节点以及非子模块逻辑节点对应的高级编程语言代码均可以是基于其对应的组合逻辑翻译得到,本公开不限制组合逻辑翻译的方式。
在一种可能的实现方式中,目标逻辑节点包括组合逻辑以及参与所述组合逻辑的全部信号,其中,所述方法还包括:
翻译所述组合逻辑,得到对应的组合逻辑代码;
翻译得到参与所述组合逻辑的每个信号对应的信号变量;
基于所述组合逻辑代码以及参与组合逻辑的全部信号变量,生成所述目标逻辑节点对应的高级编程语言代码,
其中,所述目标逻辑节点为输入逻辑节点和/或非子模块逻辑节点。
示例性地,以非子模块逻辑节点为例,可以通过翻译非子模块逻辑节点包括的组合逻辑、参与组合逻辑的每个信号等,生成对应的高级编程语言代码。其中,参与组合逻辑的信号可以包括该非子模块逻辑节点的输入信号、输出信号等。
其中,可以基于组合逻辑,构建对应的逻辑树,并基于逻辑树,生成对应的组合逻辑代码。例如,组合逻辑包括该逻辑节点的输入信号和输出信号,其中,在输出信号为寄存器级信号的情况下,输出信号变量为寄存器级信号变量。在输入信号为寄存器级信号的情况下,输入信号变量为寄存器级信号变量。通过整合组合逻辑代码、输入信号变量以及输出信号变量,可以得到逻辑节点对应的高级编程语言代码。本公开对翻译的方式、生成对应高级编程语言代码的方式均不做限制。应理解,子模块逻辑节点对应的高级编程语言代码、输入逻辑节点的高级编程语言代码均可通过上述方式生成,本公开对此不作限制。
通过这种方式,可以生成目标逻辑节点对应的高级编程语言代码。
在一种可能的实现方式中,所述翻译所述组合逻辑,得到对应的组合逻辑代码,可以包括:
基于所述组合逻辑,建立逻辑树;
根据所述逻辑树以及数据库模板,翻译得到所述组合逻辑代码。
示例性地,每个组合逻辑可以对应一个逻辑树(或称逻辑树结构)。可以以深度优先方式,遍历逻辑树,并结合数据库模板,翻译组合逻辑,得到组合逻辑代码。
下表示出数据库的一个示例,该数据库可以用于翻译得到组合逻辑代码。
需要说明的是,可以根据一个或者多个数据库模板,翻译逻辑树得到组合逻辑代码。参与组合逻辑的全部信号可以是基于所述模块的输入、所述模块包括的寄存器级信号以及所述模块的输出中的至少一者确定的,示例性地,模块的输入、所述模块包括的寄存器级信号以及所述模块的输出可以分别由不同的数据库模板进行翻译,本公开对此不作限制。
值得注意的是,以上仅为对于以树形数据结构的方式组织知识产权块的硬件结构标记语言代码的一个示例性说明,本申请不限于此,知识产权块的硬件结构标记语言代码还可以为其他方式的树形数据结构。
例如,在上述示例性说明中,寄存器级信号被抽象为模块内部的模块信息,但本申请不限于此,寄存器级信号也可以作为单独的模块,本申请对此不作限制,可根据实际情况进行选择。
其中,基于所述组合逻辑代码以及参与组合逻辑的全部信号变量,生成所述目标逻辑节点对应的高级编程语言代码,可以包括:
以类的形式封装所述组合逻辑代码以及参与组合逻辑的全部信号变量,得到所述目标逻辑节点对应的高级编程语言代码。
示例性地,基于所述组合逻辑代码、全部信号变量(例如,输入信号变量以及输出信号变量),生成所述逻辑节点对应的高级编程语言代码可以是整合该逻辑节点对应的高级编程语言代码。例如包括但不限于,使用"类"等形式将组合逻辑代码、输入信号变量以及输出信号变量封装在一个类中,得到所述目标逻辑节点对应的高级编程语言代码,本公开对整合方式不作限制。
通过这种方式,可以得到目标逻辑节点对应的高级编程语言代码,以得到模块对应的高级编程语言代码,从而基于顶层模块对应的高级编程语言代码,确定知识产权块的高级编程语言代码。
在本申请中,可以通过任意方式遍历所述树型数据结构的各个模块,例如,以深度优先方式遍历所述树型数据结构的各个模块,或者,是在确定某一模块的子模块的高级编程语言代码均已生成的情况下,满足生成该模块的高级编辑语言代码的条件,可以生成模块对应的高级编程语言代码,本公开对此不作限制。
为便于理解,针对基于所提取的模块信息以及树型数据结构生成知识产权块的高级编程语言代码,以下进行示例性说明。图4示出本公开实施例的生成的知识产权块的高级编程语言代码的类的结构的示意图。
如图4所示,展示了生成的知识产权块的高级编程语言代码的类的结构,其中,顶层模块A的输入逻辑节点生成了类a3、a4、a5,顶层模块A内部两个非子模块寄存器级逻辑节点生成了类R0、R1,两个非子模块输出逻辑点生成了类a1、a2,顶层模块A的子模块B对应子模块逻辑节点B。其中,子模块逻辑节点B对应的输入逻辑节点生成了类B_b3,这里子模块B内部进行了省略。
以下示例性说明深度优先遍历操作的流程。
图5示出本公开实施例的深度优先的遍历方式的一个流程示意图。如图5所示,深度优先操作流程可以包括:
步骤301,以主根节点作为初始节点,之后进入步骤302,主根节点对应知识产权块的顶层模块。
步骤302,将当前节点作为临时根节点,并读取当前节点全部信息,之后进入步骤303。
例如,当前节点为主根节点的情况下,读取主根节点的全部信息,例如,顶层模块的模块信息。
步骤303,判断是否操作了所有子节点,当判断结果为未操作所有子节点时,进入步骤304,否则进入步骤309。
其中,该步骤303中的操作表示是否对表示子模块的子节点进行了转换,可通过临时根节点中的操作标志位信息而确认,例如当操作标志位为大于0的正整数时,则判断未操作所有子节点,当操作标志位为0时,则判断已经操作了临时根节点的所有子节点,但本申请不限于此,操作标志位还可以通过其它方式表示是否操作了所有子节点。
步骤304,在判断未操作临时根节点的所有子节点的情况下,按照临时根节点的子节点顺序,访问临时根节点的第一个子节点或依次访问下一个子节点全部信息,之后进入步骤305。
步骤305,判断步骤304中所获取的“第一个子节点”或“下一个子节点”是否为叶子节点,若判断结果为是,则进入步骤306,否则进入步骤302迭代寻找叶子节点。
步骤306,对当前子节点进行转换操作,即将当前子节点对应的硬件结构标记语言代码转换为高级编程语言代码,关于针对各个节点或模块本身的转换操作将在下文进行示例性说明,之后进入步骤307。
步骤307,寻找当前子节点的父节点,更新父节点信息,包括更新父节点的操作标志位,例如将操作标志位的值减去1,之后返回步骤302以进行迭代操作。
步骤308,在步骤303中判断已经操作了临时根节点的所有子节点的情况下,对当前节点、也即临时根节点进行转换操作,即将当前节点对应的硬件结构标记语言代码转换为高级编程语言代码,例如包括将标志位置零,之后进入步骤309。
步骤309,判断当前节点、也即临时根节点是否为主根节点,若判断结果为否,进入步骤310,否则结束树型数据结构构建流程。
步骤310,在步骤309判断临时根节点并非主根节点的情况下,寻找临时根节点的父节点,并更新父节点的相关信息,例如将操作标志位减一,然后返回步骤302以进行迭代构建流程。
值得注意的是,上述说明仅为深度优先操作方式的示例性说明,本申请不限于此,例如,在操作的过程中,节点全部相关信息还可以为其它方式,例如,节点全部相关信息可以不包含标志位,标志位相关信息可以为深度优先构建方法或程序中设置的一个变量表示。
如前所述,模块信息包括模块的输入、输出等各类信息,树型数据结构可以体现模块之间的例化关系,从而可以基于每个模块的模块信息,采用各种方式生成所述模块对应的高级编程语言代码,例如,可以基于模块信息,生成模块对应的高级编程语言代码,还可以基于模块信息以及树型数据结构,生成模块对应的高级编程语言代码,本公开对此不作限制。
应理解,针对各个模块,基于所提取的模块信息生成所述模块对应的高级编程语言代码的方式可以是基于硬件结构标记语言代码中知识产权块的模块的描述方式来确定的,例如,在硬件结构标记语言代码包括的模块被描述为至少一个逻辑节点的情况下,可以通过确定每个逻辑节点对应的高级编程语言代码,基于该模块包括的所有逻辑节点对应的高级编程语言代码生成所述模块对应的高级编程语言代码。在硬件结构标记语言代码包括的模块是根据是否包括寄存级信号描述为不同形式时,可以根据模块是否包括寄存器级信号,确定对应的生成方式。本公开对基于所提取的模块信息以及树型数据结构生成所述模块对应的高级编程语言代码的方式不作限制。
在一种可能的实现方式中,所述树型数据结构包括顶层模块,其中,所述方法还包括:
基于所述顶层模块对应的高级编程语言代码确定所述知识产权块的高级编程语言代码。
如前所述,顶层模块可以理解为树型数据结构的第一层的模块,应理解,顶层模块对应的高级编程语言代码是基于知识产权块包括的各个模块的例化关系以及每个模块对应的高级编程语言代码整合得到的,可以将顶层模块对应的高级编程语言代码确定为所述知识产权块的高级编程语言代码。
通过这种方式,可以高效实现将知识产权块的硬件结构标记语言代码自动转换为知识产权块的高级编程语言代码,从而提高硬件知识产权块代码的可读性,便于仿真调试,提高开发效率。
在一种可能的实现方式中,所述知识产权块包括知识产权子块,其中,所述方法还包括:
确定所述树型数据结构中所述知识产权子块对应的模块;
基于所述知识产权子块对应的模块的高级编程语言代码,确定所述知识产权子块对应的高级编程语言代码。
如前所述,知识产权块可以包括知识产权子块,例如,可以确定所述树型数据结构中所述知识产权子块对应的模块,从而基于所述知识产权子块对应的模块的高级编程语言代码,确定所述知识产权子块对应的高级编程语言代码。
通过这种方式,本公开除了可以确定该知识产权块的高级编程语言代码,还可以确定知识产权子块对应的高级编程语言代码,该知识产权子块对应的高级编程语言代码可被灵活调用,从而提高开发效率。
下文将示例性描述生成所述知识产权块的抽象功能标记语言代码的方法。
在一种可能的实现方式中,步骤S12可以包括:
基于各个模块的模块信息,确定每个模块包括的逻辑节点;
基于所述树型数据结构,确定每个逻辑节点的层级深度;
删除硬件结构标记语言代码中层级深度大于或等于层级阈值的逻辑节点对应的代码块,得到所述知识产权块的抽象功能标记语言代码,
其中,所述抽象功能标记语言代码表征所述知识产权块包括的功能模块和/或功能模块调用的子模块。
其中,层级阈值可以基于该知识产权块本身对应的层级结构确定得到的。
其中,模块对应逻辑节点以及所述模块的输入逻辑节点的层级深度相同,模块的子模块逻辑节点以及非子模块逻辑节点的层级深度相同,模块对应逻辑节点的层级深度小于模块的子模块逻辑节点的层级深度。
如前所述,可以确定每个模块包括的逻辑节点,在此不再赘述。可以遍历树型数据结构,确定每个逻辑节点的层级深度以及对应代码的行数。其中,任意一个子节点的层级深度大于其父节点的层级深度。采用深度优先方式,删除层级深度大于或等于层级阈值的逻辑节点和对应的代码,例如,删除硬件结构标记语言代码中层级深度大于或等于层级阈值的逻辑节点对应的代码块,将删除后的、不包括层级深度大于或等于层级阈值的标记语言代码,确定为所述知识产权块的抽象功能标记语言代码。
在本申请中,抽象功能标记语言代码与硬件结构标记语言代码可以为相同或者不同的标记语言,应当理解,在抽象功能标记语言代码与硬件结构标记语言代码为相同的标记语言时,实现效率较高。
其中,抽象功能标记语言代码可以用于参与硬件IP的迭代升级。示例性地,知识产权块的抽象功能标记语言代码以及硬件结构标记语言代码可以用于生成知识产权块的高级编程语言代码,抽象功能标记语言代码亦可以用于生成知识产权块的高级编程语言代码,本公开对此不作限制。其中,可以基于抽象功能标记语言代码,生成高级编程语言代码框架,并基于高级编程语言代码框架、功能代码以及配置信息,得到高级编程语言代码。其中,功能代码以及配置信息可以直接获取得到的、已编写的具体代码。
通过这种方式,可以得到能够体现知识产权块的功能模块划分、包括的功能模块和/或功能模块调用的子模块的抽象功能标记语言代码,从而实现知识产权块设计的模块化,便于对知识产权块设计进行管理。在硬件设计迭代升级过程中,可以得到不同版本的抽象功能标记语言代码,便于浏览、比较,从而指导设计的迭代升级。
如前所述,本公开实施例提供的方法,能够通过高级编程语言代码、硬件描述语言代码、标记语言(例如,包括硬件结构标记语言代码、抽象功能标记语言代码)等多种代码综合描述某一个版本或者多个版本的硬件IP,具有综合性高、立体性强的特点,从整体和细节方面均体现硬件IP设计,便于快速实现硬件IP版本迭代升级、版本概况预览、版本比较,指导硬件IP设计升级,便于整体把控硬件IP升级迭代过程。
第二方面的实施例
本发明第二方面的实施例提供一种知识产权块的代码转换转置,由于该装置解决问题的原理与第一方面的实施例的方法类似,因此其具体的实施可以参考第一方面的实施例的方法的实施,内容相同之处不再重复说明。
图6示出本公开实施例提供的知识产权块的代码转换装置的示意图。如图6所示,所述代码转换装置1000包括:
提取模块1001,用于扫描所述知识产权块的硬件结构标记语言代码,提取所述硬件结构标记语言代码的各个模块的模块信息,并基于各个模块的模块信息,确定所述硬件结构标记语言代码中的全部模块对应的树型数据结构;以及
第一生成模块1002,用于基于所述树型数据结构以及各个模块的模块信息,生成所述知识产权块的高级编程语言代码和/或抽象功能标记语言代码。
在一种可能的实现方式中,第一生成模块,被配置为:
遍历所述树型数据结构的各个模块,针对各个模块,基于所提取的模块信息,生成所述模块对应的高级编程语言代码,以得到所述知识产权块的高级编程语言代码。
在一种可能的实现方式中,第一生成模块,被配置为:
基于所述模块的模块信息,确定所述模块包括的至少一个逻辑节点;
根据所述模块包括的所有逻辑节点对应的高级编程语言代码,生成所述模块对应的高级编程语言代码。
在一种可能的实现方式中,第一生成模块,被配置为:
基于各个模块的模块信息,确定每个模块包括的逻辑节点;
基于所述树型数据结构,确定每个逻辑节点的层级深度;
删除所述硬件结构标记语言代码中层级深度大于或等于层级阈值的逻辑节点对应的代码块,得到所述知识产权块的抽象功能标记语言代码,
其中,所述抽象功能标记语言代码表征所述知识产权块包括的功能模块和/或功能模块调用的子模块。
在一种可能的实现方式中,逻辑节点包括所述模块的子模块逻辑节点、所述模块的非子模块逻辑节点以及所述模块的输入逻辑节点中的至少一者,其中,所述子模块逻辑节点是基于所述模块包括的子模块抽象得到的,所述非子模块逻辑节点是不包括子模块、基于所述模块的非子输出信号抽象得到的,所述非子输出信号包括所述模块的输出和/或所述模块包括的寄存器级信号,所述输入逻辑节点是基于所述模块的输入确定的。
在一种可能的实现方式中,其中,逻辑节点的输入信号是基于模块包括的寄存器级信号、子模块的输入、子模块的输出、模块的输出以及模块的输入中的至少一者确定的,
其中,逻辑节点的输出信号是基于模块的非子输出信号确定的。
在一种可能的实现方式中,其中,模块对应逻辑节点以及所述模块的输入逻辑节点的层级深度相同,模块的子模块逻辑节点以及非子模块逻辑节点的层级深度相同,模块对应逻辑节点的层级深度小于模块的子模块逻辑节点的层级深度。
在一种可能的实现方式中,模块包括的逻辑节点包括子模块逻辑节点、非子模块逻辑节点以及输入逻辑节点中的至少一者,其中,
子模块逻辑节点对应的高级编程语言代码是通过调用已生成的所述子模块逻辑节点对应模块的高级编程语言代码得到的;
非子模块逻辑节点对应的高级编程语言代码是基于所述非子模块逻辑节点生成的,所述模块的非子模块逻辑节点与所述模块的非子输出信号一一对应;
输入逻辑节点对应的高级编程语言代码是基于所述输入逻辑节点生成的,所述模块的输入逻辑节点与所述模块的输入一一对应。
在一种可能的实现方式中,目标逻辑节点包括组合逻辑以及参与所述组合逻辑的全部信号,其中,所述装置还包括:
第一翻译模块,被配置为:翻译所述组合逻辑,得到对应的组合逻辑代码;
第二翻译模块,被配置为:翻译得到参与所述组合逻辑的每个信号对应的信号变量;
第二生成模块,被配置为:基于所述组合逻辑代码以及参与组合逻辑的全部信号变量,生成所述目标逻辑节点对应的高级编程语言代码,
其中,所述目标逻辑节点为输入逻辑节点和/或非子模块逻辑节。
在一种可能的实现方式中,所述第一翻译模块,被配置为:
基于所述组合逻辑,建立逻辑树;
根据所述逻辑树以及数据库模板,翻译得到所述组合逻辑代码,
其中,所述第二生成模块,被配置为:
以类的形式封装所述组合逻辑代码以及参与组合逻辑的全部信号变量,得到所述目标逻辑节点对应的高级编程语言代码。
在一种可能的实现方式中,所述树型数据结构是基于所有模块之间的例化关系确定的,每个模块的模块信息用于确定所述模块与其他模块之间的例化关系。
在一种可能的实现方式中,所述树型数据结构包括顶层模块,其中,所述装置还包括:
第一确定模块,被配置为:基于所述顶层模块对应的高级编程语言代码确定所述知识产权块的高级编程语言代码。
在一种可能的实现方式中,所述知识产权块包括知识产权子块,其中,所述装置还包括:
第二确定模块,被配置为:确定所述树型数据结构中所述知识产权子块对应的模块;
第三确定模块,被配置为:基于所述知识产权子块对应的模块的高级编程语言代码,确定所述知识产权子块对应的高级编程语言代码。
在一种可能的实现方式中,以深度优先方式遍历所述树型数据结构的各个模块。
在一种可能的实现方式中,所述知识产权块的硬件结构标记语言代码由所述知识产权块的硬件描述语言代码转换而来。
根据本申请实施例,能够实现同一知识产权块的不同语言代码之间的转换,开发人员可根据实际开发情况获得所需语言的代码,有利于提高开发效率。
第三方面的实施例
本发明第三方面的实施例提供一种芯片开发系统,该芯片开发系统包括如第二方面的实施例中描述的代码转换装置,关于该代码转换装置的内容合并于此,具体的实施可以参考第二方面的实施例的描述,内容相同之处不再重复说明。
图7示出本公开实施例的芯片开发系统的示意图,如图7所示,芯片开发系统1100包括代码转换装置1000,代码转换装置1000也可以称为硬件IP设计系统程序,可实现标记语言,高级编程语言,以及硬件描述语言之间的灵活转化,由此,能够根据开发者的需要自动地完成硬件IP的不同语言代码之间的转换,有助于提高IP开发效率。
在一个或多个实施例中,如图7所示,芯片开发系统1100可包括硬件、应用和交互接口。
在至少一个实施例中,硬件至少可包含能够运行所述应用,并实现所述交互接口功能的处理器,该处理器可以为CPU或GPU,此外,硬件还可包括FPGA(ACAP: XilinxTM)、存储器、互联总线等。
在本申请实施例中,应用可包括代码转换装置1000,此外,应用还可包括工业常用操作系统,比如CentOSTM。此外,应用还可包括工业界常用EDA工具,比如SynopsysTM公司的Design CompilerTM, Synopsys VCSTM等。在本申请实施例中,操作系统运行于硬件上,并主要负责执行应用,以及实现交互接口的功能。并可以包括能够执行深度学习处理的程序,来辅助前述功能的实现。
在至少一个实施例中,应用还可以包括草图/框图绘制设计软件,例如硬件IP草图设计软件,可用于辅助硬件IP初步草图设计,此外,应用还可以包括实现描述硬件IP的抽象功能和硬件结构的标记语言转化为2D,3D模块视图的软件,即硬件IP功能/结构示意图软甲,实现模块视图生成,浏览等。
在一个或多个实施例中,交互接口可包括输入输出设备和显示设备,输入输出设备例如可以为键盘、鼠标、触控板等,显示设备可以为显示器等,例如可以包括多个辅助显示器,也可以包括云上服务器、局域网络,来进行所述系统和开发者端的通讯。
本申请实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的代码转换方法。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述的代码转换方法。
本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述的代码转换方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、移动磁盘、CD-ROM或者本领域已知的任何其它形式的存储介质)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或晶体管逻辑器件、分立硬件组件、或者其任意适当组合以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施例而已,并不用于限定本申请的保护范围,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (18)

1.一种知识产权块的代码转换方法,其特征在于,所述代码转换方法包括:
扫描所述知识产权块的硬件结构标记语言代码,提取所述硬件结构标记语言代码的各个模块的模块信息,并基于各个模块的模块信息,确定所述硬件结构标记语言代码中的全部模块对应的树型数据结构,所述树型数据结构是基于所有模块之间的例化关系确定的;以及
基于所述树型数据结构以及各个模块的模块信息,生成所述知识产权块的高级编程语言代码和/或抽象功能标记语言代码,
其中,所述模块信息用于确定所述模块包括的逻辑节点,所述逻辑节点包括所述模块的子模块逻辑节点、所述模块的非子模块逻辑节点以及所述模块的输入逻辑节点中的至少一者,其中,所述子模块逻辑节点是基于所述模块包括的子模块抽象得到的,所述非子模块逻辑节点是不包括子模块、基于所述模块的非子输出信号抽象得到的,所述非子输出信号包括所述模块的输出和/或所述模块包括的寄存器级信号,所述输入逻辑节点是基于所述模块的输入确定的。
2.根据权利要求1所述的方法,其特征在于,所述基于所述树型数据结构以及各个模块的模块信息,生成所述知识产权块的高级编程语言代码和/或抽象功能标记语言代码包括:
遍历所述树型数据结构的各个模块,针对各个模块,基于所提取的模块信息,生成所述模块对应的高级编程语言代码,以得到所述知识产权块的高级编程语言代码。
3.根据权利要求2所述的方法,其特征在于,所述针对各个模块,基于所提取的模块信息,生成所述模块对应的高级编程语言代码,包括:
基于所述模块的模块信息,确定所述模块包括的至少一个逻辑节点;
根据所述模块包括的所有逻辑节点对应的高级编程语言代码,生成所述模块对应的高级编程语言代码。
4.根据权利要求1所述的方法,其特征在于,所述基于所述树型数据结构以及各个模块的模块信息,生成所述知识产权块的高级编程语言代码和/或抽象功能标记语言代码包括:
基于各个模块的模块信息,确定每个模块包括的逻辑节点;
基于所述树型数据结构,确定每个逻辑节点的层级深度;
删除硬件结构标记语言代码中层级深度大于或等于层级阈值的逻辑节点对应的代码块,得到所述知识产权块的抽象功能标记语言代码,
其中,所述抽象功能标记语言代码表征所述知识产权块包括的功能模块和/或功能模块调用的子模块。
5.根据权利要求1所述的方法,其特征在于,其中,逻辑节点的输入信号是基于模块包括的寄存器级信号、子模块的输入、子模块的输出、模块的输出以及模块的输入中的至少一者确定的,
其中,逻辑节点的输出信号是基于模块的非子输出信号确定的。
6.根据权利要求1所述的方法,其特征在于,其中,模块对应逻辑节点以及所述模块的输入逻辑节点的层级深度相同,模块的子模块逻辑节点以及非子模块逻辑节点的层级深度相同,模块对应逻辑节点的层级深度小于模块的子模块逻辑节点的层级深度。
7.根据权利要求3所述的方法,其特征在于,模块包括的逻辑节点包括子模块逻辑节点、非子模块逻辑节点以及输入逻辑节点中的至少一者,其中,
子模块逻辑节点对应的高级编程语言代码是通过调用已生成的所述子模块逻辑节点对应模块的高级编程语言代码得到的;
非子模块逻辑节点对应的高级编程语言代码是基于所述非子模块逻辑节点生成的,所述模块的非子模块逻辑节点与所述模块的非子输出信号一一对应;
输入逻辑节点对应的高级编程语言代码是基于所述输入逻辑节点生成的,所述模块的输入逻辑节点与所述模块的输入一一对应。
8.根据权利要求7所述的方法,其特征在于,目标逻辑节点包括组合逻辑以及参与所述组合逻辑的全部信号,其中,所述方法还包括:
翻译所述组合逻辑,得到对应的组合逻辑代码;
翻译得到参与所述组合逻辑的每个信号对应的信号变量;
基于所述组合逻辑代码以及参与组合逻辑的全部信号变量,生成所述目标逻辑节点对应的高级编程语言代码,
其中,所述目标逻辑节点为输入逻辑节点和/或非子模块逻辑节点。
9.根据权利要求8所述的方法,其特征在于,其中,所述翻译所述组合逻辑,得到对应的组合逻辑代码,包括:
基于所述组合逻辑,建立逻辑树;
根据所述逻辑树以及数据库模板,翻译得到所述组合逻辑代码,
其中,基于所述组合逻辑代码以及参与组合逻辑的全部信号变量,生成所述目标逻辑节点对应的高级编程语言代码,包括:
以类的形式封装所述组合逻辑代码以及参与组合逻辑的全部信号变量,得到所述目标逻辑节点对应的高级编程语言代码。
10.根据权利要求1所述的方法,其特征在于,其中,每个模块的模块信息用于确定所述模块与其他模块之间的例化关系。
11.根据权利要求2所述的方法,其特征在于,所述树型数据结构包括顶层模块,其中,所述方法还包括:
基于所述顶层模块对应的高级编程语言代码确定所述知识产权块的高级编程语言代码。
12.根据权利要求2所述的方法,其特征在于,所述知识产权块包括知识产权子块,其中,所述方法还包括:
确定所述树型数据结构中所述知识产权子块对应的模块;
基于所述知识产权子块对应的模块的高级编程语言代码,确定所述知识产权子块对应的高级编程语言代码。
13.根据权利要求2所述的方法,其特征在于,其中,以深度优先方式遍历所述树型数据结构的各个模块。
14.根据权利要求1所述的方法,其特征在于,所述知识产权块的硬件结构标记语言代码由所述知识产权块的硬件描述语言代码转换而来。
15.一种知识产权块的代码转换装置,其特征在于,所述代码转换装置包括:
提取模块,用于扫描并分析所述知识产权块的硬件结构标记语言代码,提取所述硬件结构标记语言代码的各个模块的模块信息,并基于各个模块的模块信息,确定所述硬件结构标记语言代码中的全部模块对应的树型数据结构,所述树型数据结构是基于所有模块之间的例化关系确定的;以及
第一生成模块,用于基于所述树型数据结构以及各个模块的模块信息,生成所述知识产权块的高级编程语言代码和/或抽象功能标记语言代码,
其中,所述模块信息用于确定所述模块包括的逻辑节点,所述逻辑节点包括所述模块的子模块逻辑节点、所述模块的非子模块逻辑节点以及所述模块的输入逻辑节点中的至少一者,其中,所述子模块逻辑节点是基于所述模块包括的子模块抽象得到的,所述非子模块逻辑节点是不包括子模块、基于所述模块的非子输出信号抽象得到的,所述非子输出信号包括所述模块的输出和/或所述模块包括的寄存器级信号,所述输入逻辑节点是基于所述模块的输入确定的。
16.一种芯片开发系统,其特征在于,所述系统包括如权利要求15所述的代码转换装置。
17.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至14中任一项所述的方法。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至14中任一项所述的方法。
CN202311022591.8A 2023-08-14 2023-08-14 知识产权块的代码转换装置和方法 Active CN116738900B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311022591.8A CN116738900B (zh) 2023-08-14 2023-08-14 知识产权块的代码转换装置和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311022591.8A CN116738900B (zh) 2023-08-14 2023-08-14 知识产权块的代码转换装置和方法

Publications (2)

Publication Number Publication Date
CN116738900A CN116738900A (zh) 2023-09-12
CN116738900B true CN116738900B (zh) 2023-11-28

Family

ID=87911856

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311022591.8A Active CN116738900B (zh) 2023-08-14 2023-08-14 知识产权块的代码转换装置和方法

Country Status (1)

Country Link
CN (1) CN116738900B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2650785A1 (en) * 2012-04-10 2013-10-16 Siemens Aktiengesellschaft Method, system, and computer program product for transforming machine code to source code
CN110471666A (zh) * 2019-07-18 2019-11-19 五八有限公司 代码自动转换方法和装置、代码转换器及介质
CN115016793A (zh) * 2022-04-25 2022-09-06 中国平安人寿保险股份有限公司 基于语法树的代码生成方法和装置、电子设备、存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2650785A1 (en) * 2012-04-10 2013-10-16 Siemens Aktiengesellschaft Method, system, and computer program product for transforming machine code to source code
CN110471666A (zh) * 2019-07-18 2019-11-19 五八有限公司 代码自动转换方法和装置、代码转换器及介质
CN115016793A (zh) * 2022-04-25 2022-09-06 中国平安人寿保险股份有限公司 基于语法树的代码生成方法和装置、电子设备、存储介质

Also Published As

Publication number Publication date
CN116738900A (zh) 2023-09-12

Similar Documents

Publication Publication Date Title
EP1706833B1 (en) System and method for modeling, abstraction, and analysis of software
CN107704382B (zh) 面向Python的函数调用路径生成方法和系统
Maksimović et al. Gillian, part II: real-world verification for javascript and C
US20230289502A1 (en) Recovery of a hierarchical functional representation of an integrated circuit
Riener et al. metaSMT: focus on your application and not on solver integration
CN114756219A (zh) 一种基于c++的fpga硬件构造语言实现系统
CN117077583B (zh) 一种寄存器传输级电路设计的资源估算方法及装置
Niemetz et al. Towards satisfiability modulo parametric bit-vectors
CN116738900B (zh) 知识产权块的代码转换装置和方法
Fritzson et al. Metamodelica–a symbolic-numeric modelica language and comparison to julia
CN113835688B (zh) 一种科学计算语言解释器的对象封装方法
Unel et al. CutLang V2: towards a unified Analysis Description Language
CN116738899B (zh) 硬件知识产权块的代码转换装置和方法
Pearce et al. Verifying Whiley programs with boogie
Pottier et al. Revisiting Smalltalk-80 blocks: a logic generator for FPGAs
Caballero et al. Two type extensions for the constraint modeling language MiniZinc
Khalifa et al. Implementation of a Predicate-Guided Termination Analysis for Pointer Programs
Ostroumov et al. Generation of structural vhdl code with library components from formal event-b models
Grov et al. Towards a Box Calculus for Hierarchical Hume.
Li et al. Mapping Modern JVM Language Code to Analysis-Friendly Graphs: A Study with Kotlin
Yue et al. A modeling method of algorithm-hardware based on SysML
Malm et al. Towards automated analysis of executable models
Hammond et al. The hume report, version 1.1
Lovic et al. HDLRuby: A Ruby Extension for Hardware Description and its Translation to Synthesizable Verilog HDL
Mosbeck Subcircuit pattern matching in digital designs

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