硬件知识产权块的代码转换装置和方法与流程
未命名
09-14
阅读:64
评论:0

1.本技术涉及知识产权块设计领域,尤其涉及一种知识产权块的代码转换装置和方法。
背景技术:
2.在芯片设计开发过程中,硬件描述语言(hardware description language,简称hdl)是常用的语言,例如vhdl(verilog hardware description language)。
3.应该注意,上面对技术背景的介绍只是为了方便对本技术的技术方案进行清楚、完整的说明,并方便本领域技术人员的理解而阐述的。不能仅仅因为这些方案在本技术的背景技术部分进行了阐述而认为上述技术方案为本领域技术人员所公知。
技术实现要素:
4.申请人发现,硬件描述语言不便于开发者的阅读,开发者难以快速了解硬件描述语言代码所描述的硬件的硬件结构,难以快速找到硬件的“性能瓶颈”,影响开发效率。
5.针对上述问题中的至少之一或类似的问题,本技术实施例提供一种知识产权块的代码转换装置和方法,将硬件描述语言代码转换为硬件结构的标记语言代码,提高硬件ip代码的可读性,提高开发效率。
6.本技术实施例提供一种知识产权块的代码转换方法,代码转换方法包括:基于提取知识产权块的硬件描述语言代码得到的模块信息,确定逻辑节点信息,所述逻辑节点信息表征硬件描述语言代码被抽象为逻辑节点对应的信息;基于所述逻辑节点信息,构建树型数据结构,其中,树型数据结构的节点与逻辑节点一一对应;基于所述树型数据结构以及所述逻辑节点信息,确定每个逻辑节点的硬件结构标记语言代码,以得到所述知识产权块的硬件结构标记语言代码。
7.在一种可能的实现方式中,基于所述树型数据结构以及所述逻辑节点信息,确定每个逻辑节点的硬件结构标记语言代码,包括:以深度优先方式遍历所述树型数据结构,根据所述逻辑节点信息,确定每个逻辑节点的硬件结构标记语言代码;或者,响应于目标节点的全部子节点对应逻辑节点的硬件结构标记语言代码均已生成或者所述目标节点为叶子节点,根据所述逻辑节点信息,确定所述目标节点对应逻辑节点的硬件结构标记语言代码,其中,所述目标节点为所述树型数据结构的任意节点。
8.在一种可能的实现方式中,其中,确定每个逻辑节点的硬件结构标记语言代码,包括:响应于逻辑节点的类型为子模块逻辑节点,确定所述逻辑节点的输入信号;抓取每个输入信号对应的输入逻辑节点;基于所述逻辑节点的全部输入逻辑节点以及全部子逻辑节点,确定所述逻辑节点
的硬件结构标记语言代码,其中,子模块逻辑节点为包括子逻辑节点的逻辑节点。
9.在一种可能的实现方式中,所述逻辑节点的输入信号是基于目标模块的输入、目标模块的输出、目标模块的寄存器级信号、目标模块的子模块的输入以及目标模块的子模块的输出中的至少一者确定的,其中,在所述逻辑节点为顶层逻辑节点的情况下,所述目标模块为知识产权块的顶层模块,在所述逻辑节点为非顶层逻辑节点的情况下,所述目标模块为所述逻辑节点的父逻辑节点对应的模块。
10.在一种可能的实现方式中,其中,确定每个逻辑节点的硬件结构标记语言代码,包括:响应于逻辑节点的类型为非子模块逻辑节点,确定所述逻辑节点的输出信号,抓取输出信号对应的非子模块逻辑节点,以确定所述逻辑节点的硬件结构标记语言代码,其中,非子模块逻辑节点为不包括子逻辑节点的逻辑节点。
11.在一种可能的实现方式中,所述输出信号包括所述逻辑节点的父逻辑节点对应模块的输出或寄存器级信号,所述非子模块逻辑节点包括基于输出确定的非子模块输出逻辑节点和/或基于寄存器级信号确定的非子模块寄存器逻辑节点。
12.在一种可能的实现方式中,其中,抓取得到的目标逻辑节点包括生成目标信号的组合逻辑以及参与所述组合逻辑的全部信号,其中,在所述目标逻辑节点为输入逻辑节点的情况下,所述目标信号为逻辑节点的输入信号,在所述目标逻辑节点为非子模块逻辑节点的情况下,所述目标信号为逻辑节点的输出信号。
13.在一种可能的实现方式中,其中,以代码引用或者直接调用方式将目标逻辑节点添加到包括所述目标逻辑节点的逻辑节点的硬件结构标记语言代码中。
14.在一种可能的实现方式中,所述逻辑节点信息包括每个逻辑节点对应的代码块,其中,所述基于所述逻辑节点信息,构建树型数据结构,包括:基于逻辑节点信息,确定不同逻辑节点对应的代码块之间的层级信息;基于所述层级信息,构建树型数据结构。
15.在一种可能的实现方式中,所述树型数据结构包括顶层节点,其中,所述知识产权块的硬件结构标记语言代码是基于顶层节点对应逻辑节点的硬件结构标记语言代码确定的。
16.在一种可能的实现方式中,所述硬件描述语言代码是基于所述知识产权块的高级编程语言代码生成的。
17.本技术实施例还提供一种知识产权块的代码转换装置,所述代码转换装置包括:提取模块,用于基于提取知识产权块的硬件描述语言代码得到的模块信息,确定逻辑节点信息,所述逻辑节点信息表征硬件描述语言代码被抽象为逻辑节点对应的信息;第一确定模块,用于基于所述逻辑节点信息,构建树型数据结构,其中,树型数据结构的节点与逻辑节点一一对应;第二确定模块,用于基于所述树型数据结构以及所述逻辑节点信息,确定每个逻辑节点的硬件结构标记语言代码,以得到所述知识产权块的硬件结构标记语言代码。
18.在一种可能的实现方式中,所述第二确定模块用于:以深度优先方式遍历所述树型数据结构,根据所述逻辑节点信息,确定每个逻辑节点的硬件结构标记语言代码;或者,响应于目标节点的全部子节点对应逻辑节点的硬件结构标记语言代码均已生成或者所述目标节点为叶子节点,根据所述逻辑节点信息,确定所述目标节点对应逻辑节点的硬件结构标记语言代码,其中,所述目标节点为所述树型数据结构的任意节点。
19.在一种可能的实现方式中,其中,所述第二确定模块用于:响应于逻辑节点的类型为子模块逻辑节点,确定所述逻辑节点的输入信号;抓取每个输入信号对应的输入逻辑节点;基于所述逻辑节点的全部输入逻辑节点以及全部子逻辑节点,确定所述逻辑节点的硬件结构标记语言代码,其中,子模块逻辑节点为包括子逻辑节点的逻辑节点。
20.在一种可能的实现方式中,所述逻辑节点的输入信号是基于目标模块的输入、目标模块的输出、目标模块的寄存器级信号、目标模块的子模块的输入以及目标模块的子模块的输出中的至少一者确定的,其中,在所述逻辑节点为顶层逻辑节点的情况下,所述目标模块为知识产权块的顶层模块,在所述逻辑节点为非顶层逻辑节点的情况下,所述目标模块为所述逻辑节点的父逻辑节点对应的模块。
21.在一种可能的实现方式中,其中,所述第二确定模块用于:响应于逻辑节点的类型为非子模块逻辑节点,确定所述逻辑节点的输出信号,抓取输出信号对应的非子模块逻辑节点,以确定所述逻辑节点的硬件结构标记语言代码,其中,非子模块逻辑节点为不包括子逻辑节点的逻辑节点。
22.在一种可能的实现方式中,所述输出信号包括所述逻辑节点的父逻辑节点对应模块的输出或寄存器级信号,所述非子模块逻辑节点包括基于输出确定的非子模块输出逻辑节点和/或基于寄存器级信号确定的非子模块寄存器逻辑节点。
23.在一种可能的实现方式中,其中,抓取得到的目标逻辑节点包括生成目标信号的组合逻辑以及参与所述组合逻辑的全部信号,其中,在所述目标逻辑节点为输入逻辑节点的情况下,所述目标信号为逻辑节点的输入信号,在所述目标逻辑节点为非子模块逻辑节点的情况下,所述目标信号为逻辑节点的输出信号。
24.在一种可能的实现方式中,其中,以代码引用或者直接调用方式将目标逻辑节点添加到包括所述目标逻辑节点的逻辑节点的硬件结构标记语言代码中。
25.在一种可能的实现方式中,所述第一确定模块用于:基于逻辑节点信息,确定不同逻辑节点对应的代码块之间的层级信息;基于所述层级信息,构建树型数据结构。
26.在一种可能的实现方式中,所述树型数据结构包括顶层节点,其中,所述知识产权块的硬件结构标记语言代码是基于顶层节点对应逻辑节点的硬件结构标记语言代码确定的。
27.在一种可能的实现方式中,所述硬件描述语言代码是基于所述知识产权块的高级
编程语言代码生成的。
28.本技术实施例还提供一种芯片开发系统,所述系统包括上述任意实施例所述的代码转换装置。
29.本技术实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法。
30.本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述方法。
31.本技术实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述方法。
32.本技术实施例的有益效果之一在于:将知识产权块的硬件描述语言代码转换为硬件结构标记语言代码,提高硬件ip代码的可读性,提高开发效率。
33.参照后文的说明和附图,详细公开了本技术的特定实施方式,指明了本技术的原理可以被采用的方式。应该理解,本技术的实施方式在范围上并不因而受到限制。在所附权利要求的精神和条款的范围内,本技术的实施方式包括许多改变、修改和等同。针对一种实施方式描述和/或示出的特征可以以相同或类似的方式在一个或更多个其它实施方式中使用,与其它实施方式中的特征相组合,或替代其它实施方式中的特征。
附图说明
34.在此描述的附图仅用于解释目的,而不意图以任何方式来限制本技术公开的范围。另外,图中的各部件的形状和比例尺寸等仅为示意性的,用于帮助对本技术的理解,并不是具体限定本技术各部件的形状和比例尺寸。本领域的技术人员在本技术的教导下,可以根据具体情况选择各种可能的形状和比例尺寸来实施本技术。
35.图1示出本技术实施例的知识产权块的代码转换方法的一个示意图。
36.图2示出本技术实施例的知识产权块包括的模块的示意图。
37.图3示出本技术实施例的树型数据结构的示意图。
38.图4示出本技术实施例的构建树型数据结构的一个流程示意图。
39.图5示出本技术第二方面的实施例的代码转换装置的一个示意图。
40.图6示出本技术实施例的芯片开发系统的一个示意图。
具体实施方式
41.下面将结合附图和具体实施例,对本技术的技术方案作详细说明,应理解这些实施例仅用于说明本技术而不用于限制本技术的范围,在阅读了本技术之后,本领域技术人员对本技术的各种等价形式的修改均落入本技术所附权利要求所限定的范围内。
42.在本技术实施例中,术语“第一”、“第二”等用于对不同元素从称谓上进行区分,但并不表示这些元素的空间排列或时间顺序等,这些元素不应被这些术语所限制。术语“和/或”包括相关联列出的术语的一种或多个中的任何一个和所有组合。术语“包含”、“包括”、“具有”等是指所陈述的特征、元素、元件或组件的存在,但并不排除存在或添加一个或多个其他特征、元素、元件或组件。
43.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的
技术人员通常理解的含义相同。本文中在本技术的说明书中所使用的术语只是为了描述具体的实施方式的目的,不是旨在于限制本技术。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
44.第一方面的实施例图1示出本技术实施例的知识产权块的代码转换方法的一个示意图。在一种可能的实现方式中,所述知识产权块的代码转换方法的执行主体可以是知识产权块的代码转换装置,例如,所述知识产权块的代码转换方法可以由终端设备或服务器或其它电子设备执行。其中,终端设备可以是用户设备(user equipment,ue)、移动设备、用户终端、终端、计算设备等。在一些可能的实现方式中,所述知识产权块的代码转换方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。如图1所示,该方法包括:在步骤s11中,基于提取知识产权块的硬件描述语言代码得到的模块信息,确定逻辑节点信息,所述逻辑节点信息表征硬件描述语言代码被抽象为逻辑节点对应的信息;在步骤s12中,基于所述逻辑节点信息,构建树型数据结构,其中,树型数据结构的节点与逻辑节点一一对应;在步骤s13中,基于所述树型数据结构以及所述逻辑节点信息,确定每个逻辑节点的硬件结构标记语言代码,以得到所述知识产权块的硬件结构标记语言代码。
45.通过这种方式,可以将知识产权块的硬件描述语言代码转换为知识产权块的硬件结构标记语言代码,能够将知识产权块的可读性较低的硬件描述语言代码转换为可读性较高的硬件结构标记语言代码,提高了知识产权块的代码的可读性,有利于提高开发效率。
46.其中,知识产权块可以表示芯片中具有独立功能的电路模块设计,也可称为知识产权核或ip核。在本技术中,该知识产权块可以包括至少一个知识产权子块,例如,每个知识产权子块可以对应一个子功能。该知识产权块也可以作为其他知识产权块的知识产权子块,该知识产权块或者知识产权块的任意知识产权子块均可被其他知识产权块调用,该知识产权块或者知识产权块的任意知识产权子块亦可调用其他知识产权块,本公开对此不作限制。示例性地,知识产权块可以对应一个顶层模块(或称主模块),该顶层模块可以调用至少一个子模块,每个子模块可以对应一个知识产权子块。
47.在本技术实施例中,模块信息可以是用于描述知识产权块对应模块的各类信息,示例性地,可以包括模块的类型、模块的名称等信息,模块信息还可以包括逻辑节点信息,或者可以用于确认逻辑节点信息,模块信息可以用于确认至少一个逻辑节点的逻辑节点信息。其中,硬件描述语言代码可以是将知识产权块抽象为逻辑节点得到的,其中,逻辑节点可以理解为是对知识产权块的硬件描述语言代码包括的模块进行抽象表达得到的节点,不同抽象方式可以得到不同的逻辑节点。可以提取并基于知识产权块的硬件描述语言代码的模块信息,确定逻辑节点信息。其中,硬件描述语言代码可以是基于所述知识产权块的高级编程语言代码生成的、亦可以是获取得到的已编写代码,本公开对硬件描述语言代码的确定方式、形式均不作限制。
48.在一些可选的实施例在中,硬件描述语言代码可以为代码文件,包括所有硬件描述语言代码的文件清单、对应参数包的文件清单等。
49.在本技术实施例中,代码文件可以为经过初步编译后的文件,例如,通过硬件描述语言编译器(vcs、synopsys
tm
等)进行了初步编译。其中,代码文件可以为经定位并已改正错
误的代码文件,由此,能够降低转换过程出现异常或转换后的硬件结构标记语言代码中包含错误的发生概率。
50.在一些可选的实施例中,知识产权块的硬件描述语言代码抽象的多个逻辑节点具有层级关系,层级关系可以表征多个逻辑节点中不同逻辑节点之间的例化关系。其中,对于任意一个逻辑节点,该逻辑节点可以例化一个或多个其他逻辑节点,亦可以不例化其他逻辑节点。该逻辑节点为其例化的其他逻辑节点的父逻辑节点,被例化的其他逻辑节点为该逻辑节点的子逻辑节点。示例性地,知识产权块的硬件描述语言代码可以对应一个顶层模块(例如,顶层模块可以对应顶层逻辑节点,顶层逻辑节点对应树型数据结构的顶层节点),该顶层逻辑节点为第一层级,其例化的其他的子逻辑节点(例如,该顶层模块的子模块对应的逻辑节点)为第二层级。第二层级的逻辑节点例化的其他逻辑节点为第三层级的逻辑节点,以此类推。并且,基于逻辑节点是否为顶层模块对应的逻辑节点,确定所有逻辑节点可以包括顶层逻辑节点以及除顶层逻辑节点之外的非顶层逻辑节点。
51.其中,逻辑节点信息表征硬件描述语言代码被抽象为逻辑节点对应的信息,逻辑节点信息可以用于确定逻辑节点包括的代码块、参数、函数等,还可以用于确定不同逻辑节点之间的层级关系、逻辑节点的类型,亦可以用于确定逻辑节点的输入信号、输出信号、处理逻辑、不同处理逻辑之间的信号连接以及组合逻辑等,其中,处理逻辑可以理解为从输入信号到输出信号的逻辑,组合逻辑可以是与输入信号、输出信号相关的处理逻辑,例如,可以是基于一个输出信号确定的、与该输出信号对应的全部输入信号参与的处理逻辑,还可以是基于一个输入信号确定的、与生成该输入信号对应的全部信号参与的处理逻辑。本公开不限制组合逻辑的表示形式,例如,可以是包括但不限于函数、参数等方式表示的组合逻辑。
52.在一些可选的实施例中,所述逻辑节点的输入信号是基于目标模块的输入、目标模块的输出、目标模块的寄存器级信号、目标模块的子模块的输入以及目标模块的子模块的输出中的至少一者确定的,其中,在所述逻辑节点为顶层逻辑节点的情况下,所述目标模块为知识产权块的顶层模块,在所述逻辑节点为非顶层逻辑节点的情况下,所述目标模块为所述逻辑节点的父逻辑节点对应的模块。
53.示例性地,在逻辑节点为知识产权块的顶层模块对应的顶层逻辑节点的情况下,该逻辑节点的输入信号可以是基于顶层模块的输入确定的。当逻辑节点为非顶层逻辑节点的情况下,目标模块可以为该逻辑节点的父逻辑节点对应的模块。例如,第二层级的逻辑节点的输入信号可以是基于顶层模块的输入、顶层模块的输出、顶层模块的寄存器级信号、顶层模块的子模块的输入以及顶层模块的子模块的输出中的至少一者确定的。
54.在一些可选的实施例中,逻辑节点的输出信号可以是该逻辑节点的父逻辑节点对应模块的输出和/或寄存器级信号。其中,寄存器级信号可以是逻辑节点的父逻辑节点对应模块内部存储数据的信号。
55.需要说明的是,逻辑节点信息可以表征至少一个逻辑节点对应的信息,本公开对逻辑节点信息包括的内容、形式、类别、数量、用途均不做限制。
56.在本公开实施例中,用于确定知识产权块的硬件描述语言代码的逻辑节点信息的模块信息,可以是扫描、解析知识产权块的硬件描述语言代码得到的,其中,扫描、解析得到
的逻辑节点信息可以包括所有逻辑节点对应的信息。所述逻辑节点信息表征硬件描述语言代码被抽象为逻辑节点对应的信息,示例性地,可以扫描、解析知识产权块的硬件描述语言代码,得到模块信息,并基于模块信息确定模块包括的逻辑节点,对于任意一个逻辑节点,可以搜索或定位到该逻辑节点例化的其他逻辑节点。例如,可以通过识别硬件描述语言代码中的特定关键字(例如,module)以搜索或定位到逻辑节点,本公开对确定知识产权块的硬件描述语言代码的逻辑节点信息的方式不作限制。
57.在本公开实施例中,基于所述逻辑节点信息,构建树型数据结构,树型数据结构的节点与逻辑节点一一对应,可以是基于逻辑节点信息确定知识产权块抽象得到的所有逻辑节点以及不同逻辑节点之间的层级关系,以构建树型数据结构,树型数据结构的节点与逻辑节点一一对应。
58.其中,逻辑节点信息可以直接包括不同逻辑节点之间的层级关系,示例性地,在前文所述的确定逻辑节点信息的过程中,已直接提取到层级关系,例如,逻辑节点b的父逻辑节点包括逻辑节点a,逻辑节点b与逻辑节点a1、逻辑节点a2、逻辑节点a3为同一层级的逻辑节点,逻辑节点c的父逻辑节点包括逻辑节点b等。逻辑节点信息也可以并不直接包括不同逻辑节点之间的层级关系,而是通过逻辑节点信息包括的信息,例如,每个逻辑节点对应的代码块,进一步确定不同逻辑节点之间的层级关系,本公开对基于所述逻辑节点信息,构建树型数据结构的方式不作限制。
59.在一种可能的实现方式中,所述逻辑节点信息包括每个逻辑节点对应的代码块,其中,所述基于所述逻辑节点信息,构建树型数据结构,包括:基于逻辑节点信息,确定不同逻辑节点对应的代码块之间的层级信息;基于所述层级信息,构建树型数据结构。
60.示例性地,每个逻辑节点可以包括对应的代码块,逻辑节点之间的层级关系可以在代码块中体现,提取到的逻辑节点信息包括逻辑节点对应的代码块,通过解析、执行代码块的代码,可以确定不同逻辑节点对应的代码块之间的层级信息。例如,代码块可以表征当前逻辑节点的输入信号、输出信号,可以基于当前逻辑节点的输入信号、输出信号,确定当前逻辑节点的父逻辑节点以及子逻辑节点,进而确定树型数据结构。
61.其中,对于逻辑节点包括的参数(例如,输入信号、输出信号),可以通过参数提取操作计算得到对应的参数值。示例性地,参数提取操作可以是根据硬件描述语言代码以及相应的文件列表filelist文件,得到顶层逻辑节点(对应于顶层模块)对应代码块所在文件的路径,进而得到对应的代码文件,代码文件可以用于确定下一层级逻辑节点相关的信息。例如,可以根据任意当前层级逻辑节点的代码文件,获得其下一层级逻辑节点相关的信息,例如,下一层级逻辑节点的代码路径以及例化的下一层级逻辑节点的个数等,进而能够得到下下一层级逻辑节点,从而获得表示各个逻辑节点之间的层级关系的层级信息。
62.在本技术实施例中,逻辑节点的输入信号、输出信号可以理解为逻辑节点的参数,在硬件结构标记语言中关注参数的名称、参数的取值以及参数在整个代码文件中的路径。另外,标记语言代码中的参数还可包括子逻辑节点例化的个数、接口位宽、代码循环次数等信息,在本技术实施例中,通过对硬件描述语言代码的解析和计算,可以获得上述各种参数以及参数相关的信息。
63.通过这种方式,能够构建得到包括的节点与逻辑节点一一对应的树型数据结构,以进一步实现硬件描述语言代码到硬件结构标记语言代码的转换。
64.在本公开实施例中,基于所述树型数据结构以及所述逻辑节点信息,确定每个逻辑节点的硬件结构标记语言代码,以得到所述知识产权块的硬件结构标记语言代码,可以是依次确定每个逻辑节点的硬件结构标记语言代码,并将最后确定的、树型数据结构顶层节点对应的逻辑节点的硬件结构标记语言代码确定为知识产权块的硬件结构标记语言代码。
65.在一些可选的实施例中,还可以是确定树型数据结构中至少一部分叶子节点对应逻辑节点的硬件结构标记语言代码,并确定非子叶子节点对应逻辑节点的硬件结构标记语言代码,其中,确定树型数据结构中至少一部分叶子节点对应逻辑节点的硬件结构标记语言代码可以是并行操作或串行操作,本公开对基于所述树型数据结构以及所述逻辑节点信息,确定每个逻辑节点的硬件结构标记语言代码的方式不作限制。
66.在一种可能的实现方式中,所述基于所述树型数据结构以及所述逻辑节点信息,确定每个逻辑节点的硬件结构标记语言代码,可以包括:以深度优先方式遍历所述树型数据结构,根据所述逻辑节点信息,确定每个逻辑节点的硬件结构标记语言代码;或者,响应于目标节点的全部子节点对应逻辑节点的硬件结构标记语言代码均已生成或者所述目标节点为叶子节点,根据所述逻辑节点信息,确定所述目标节点对应逻辑节点的硬件结构标记语言代码,其中,所述目标节点为所述树型数据结构的任意节点。
67.在一些可选的实施例中,可以以深度优先方式遍历所述树型数据结构,根据所述逻辑节点信息,确定每个逻辑节点的硬件结构标记语言代码,应理解,以深度优先方式遍历所述树型数据结构,最后确定的、树型数据结构顶层节点对应的逻辑节点的硬件结构标记语言代码可以直接确定为知识产权块的硬件结构标记语言代码。
68.以深度优先方式遍历树型数据结构,可以保证每个逻辑节点的硬件结构标记语言代码均被生成,提高代码转换的准确度。
69.在一些可选的实施例中,还可以是响应于目标节点的全部子节点对应逻辑节点的硬件结构标记语言代码均已生成或者所述目标节点为叶子节点,根据所述逻辑节点信息,确定所述目标节点对应逻辑节点的硬件结构标记语言代码,其中,所述目标节点为所述树型数据结构的任意节点。
70.通过这种方式,生成过程可以并行或者串行执行,从而可以更灵活地确定每个逻辑节点的硬件结构标记语言代码。
71.在一种可能的实现方式中,所述树型数据结构包括顶层节点,其中,所述知识产权块的硬件结构标记语言代码是基于顶层节点对应逻辑节点的硬件结构标记语言代码确定的。
72.如前所述,可以基于树型数据结构顶层节点对应逻辑节点的硬件结构标记语言代码确定所述知识产权块的硬件结构标记语言代码。
73.在本公开实施例中,逻辑节点可以包括多种类型,例如,类型可以包括子模块逻辑节点和非子模块逻辑节点,其中,子模块逻辑节点可以理解为包括子逻辑节点的逻辑节点,本公开不限制一个子模块逻辑节点包括的子逻辑节点的数量。其中,非子模块逻辑节点可
以是指不包括任何子逻辑节点、基于知识产权块的模块的输出和/或寄存器级信号确定的。需要说明的是,对于子模块逻辑节点,其包括的子逻辑节点的类型可以为子模块逻辑节点,还可以为非子模块逻辑节点。逻辑节点的类型可以是基于逻辑节点信息和/或树型数据结构确定得到。
74.在本公开实施例中,基于输出信号的不同类型,非子模块逻辑节点还可以包括非子模块输出逻辑节点和非子模块寄存器逻辑节点。例如,基于模块的输出为输出信号确定的逻辑节点为非子模块输出逻辑节点,基于模块的寄存器级信号为输出信号确定的逻辑节点为非子模块寄存器逻辑节点。
75.需要说明的是,确定不同类型的逻辑节点的硬件结构标记语言代码的方式可以不同或相同,例如,子模块逻辑节点和非子模块逻辑节点的硬件结构标记语言代码的确定方式可以不同。非子模块输出逻辑节点和非子模块寄存器逻辑节点的硬件结构标记语言代码的确定方式可以相同。还可以不区分类型、采用统一的方法确定逻辑节点的硬件结构标记语言代码,本公开对此不作限制。
76.在一种可能的实现方式中,确定每个逻辑节点的硬件结构标记语言代码,可以包括:响应于逻辑节点的类型为子模块逻辑节点,确定所述逻辑节点的输入信号;抓取每个输入信号对应的输入逻辑节点;基于所述逻辑节点的全部输入逻辑节点以及全部子逻辑节点,确定所述逻辑节点的硬件结构标记语言代码,其中,子模块逻辑节点为包括子逻辑节点的逻辑节点。
77.示例性地,在根据逻辑节点信息确定所述逻辑节点的类型为子模块逻辑节点的情况下,例如,逻辑节点信息包括该逻辑节点的类型,或者逻辑节点信息可以表征该逻辑节点包括子逻辑节点,或者,在根据树型数据结构确定该子模块逻辑节点包括子逻辑节点的情况下,可以确定该逻辑节点包括的子逻辑节点。例如,可以基于树型数据结构和/或所述逻辑节点信息,确定该逻辑节点作为父逻辑节点对应的所有子逻辑节点。
78.例如,该逻辑节点可以为顶层逻辑节点,其作为第一层级的逻辑节点,基于树型数据结构确定的第二层级的所有逻辑节点为该顶层逻辑节点的子逻辑节点,该顶层逻辑节点为包括子逻辑节点的子模块逻辑节点。
79.示例性地,在该逻辑节点为子模块逻辑节点的情况下,其还可以包括输入信号,可以确定该逻辑节点的输入信号。例如,可以基于所述树型数据结构和/或所述逻辑节点信息,确定该逻辑节点的输入信号。
80.其中,可以针对每个输入信号,抓取其对应的输入逻辑节点,得到与该逻辑节点的输入信号一一对应的输入逻辑节点。示例性地,每个输入信号可以是基于一个或多个信号(例如,逻辑节点的父逻辑节点的输出信号、逻辑节点的父逻辑节点对应模块的输入等)根据组合逻辑生成的,抓取输入信号对应的输入逻辑节点可以理解为抓取到生成该输入信号的组合逻辑以及对应的所述一个或多个信号。例如,可以构建每个输入信号对应的组合逻辑树,并基于组合逻辑树确定该输入信号对应的输入逻辑节点。
81.可以基于该逻辑节点包括的全部输入逻辑节点以及所述逻辑节点的全部子逻辑节点,确定所述逻辑节点的硬件结构标记语言代码。应理解,逻辑节点的全部子逻辑节点的
硬件结构标记语言代码为采用类似方法、已生成的硬件结构标记语言代码,输入逻辑节点可以采用代码引用或者直接调用方式加入到该逻辑节点的硬件结构标记语言代码中。
82.通过这种方式,可以高效、准确生成类型为子模块逻辑节点的逻辑节点的硬件结构标记语言代码、并节省代码存储空间。
83.需要说明的是,输入逻辑节点可以是在确定逻辑节点的硬件结构标记语言代码过程中抓取得到的,其可以不参与树型数据结构的构建。
84.在一种可能的实现方式中,确定每个逻辑节点的硬件结构标记语言代码,可以包括:响应于逻辑节点的类型为非子模块逻辑节点,确定所述逻辑节点的输出信号,抓取输出信号对应的非子模块逻辑节点,以确定所述逻辑节点的硬件结构标记语言代码,其中,非子模块逻辑节点为不包括子逻辑节点的逻辑节点。
85.示例性地,在根据逻辑节点信息确定所述逻辑节点的类型为非子模块逻辑节点的情况下,例如,逻辑节点信息包括该逻辑节点的类型,或者逻辑节点信息可以表征该逻辑节点不包括子逻辑节点,或者,在根据树型数据结构确定该逻辑节点不包括子逻辑节点的情况下,例如,该逻辑节点对应叶子节点的情况下,抓取所述逻辑节点的输出信号对应的非子模块逻辑节点。
86.在本技术实施例中,可以抓取该输出信号对应的全部组合逻辑,以及抓取到全部组合逻辑对应的输入信号,并将输出信号、输入信号以及组合逻辑确定为输出信号对应的非子模块逻辑节点。例如,可以构建输出信号对应的组合逻辑树,并基于组合逻辑树确定该输出信号对应的非子模块逻辑节点。
87.通过这种方式,可以抓取到逻辑节点的输出信号对应的非子模块逻辑节点,以确定所述逻辑节点的硬件结构标记语言代码,并基于此实现硬件描述语言代码到硬件结构标记语言代码的转换。
88.在一种可能的实现方式中,其中,抓取得到的目标逻辑节点包括生成目标信号的组合逻辑以及参与所述组合逻辑的全部信号,其中,在所述目标逻辑节点为输入逻辑节点的情况下,所述目标信号为逻辑节点的输入信号,在所述目标逻辑节点为非子模块逻辑节点的情况下,所述目标信号为逻辑节点的输出信号。
89.示例性地,在抓取输入逻辑节点的过程中,可以将抓取生成该输入信号的组合逻辑以及参与组合逻辑的全部信号(例如,包括该输入信号本身以及用于生成该输入信号的一个或多个信号)确定为输入逻辑节点。在抓取非子模块逻辑节点的过程中,可以将抓取到的输出信号对应的组合逻辑以及参与组合逻辑的全部信号(例如,包括输出信号本身以及用于生成该输出信号的输入信号)确定为非子模块逻辑节点。
90.其中,在抓取目标逻辑节点的过程中,可以通过解析对应硬件描述语言代码,确定生成目标信号的组合逻辑。例如,通过对package、parameter、function等解析,对计算得出的参数等进行计算解析,把函数等翻译成目标逻辑节点的组合逻辑。
91.通过这种方式,可以确定输入逻辑节点和/或非子模块逻辑节点,以确定逻辑节点的硬件结构标记语言代码。
92.在一种可能的实现方式中,可以以代码引用或者直接调用方式将目标逻辑节点添
加到包括所述目标逻辑节点的逻辑节点的硬件结构标记语言代码中。
93.举例来说,在抓取到目标逻辑节点的情况下,可以采用代码引用或者直接调用方式将其添加到包括该目标逻辑节点的硬件结构标记语言代码中。例如,硬件描述语言代码中包括代码索引,代码索引可以用于定位到代码块和/或代码行。如前所述,抓取得到目标逻辑节点包括参与组合逻辑的全部信号以及组合逻辑,其中,可以采用代码引用的方式,将组合逻辑以及参与组合逻辑的全部信号对应的代码索引加入到包括所述目标逻辑节点的逻辑节点的硬件结构标记语言代码中。直接调用方式可以理解为将代码复制粘贴到包括所述目标逻辑节点的逻辑节点的硬件结构标记语言代码中。
94.采用代码引用或者直接调用方式存储抓取到的目标逻辑节点,而无需将目标逻辑节点加入到硬件结构标记语言代码中,由此,有利于减小硬件结构标记语言代码的篇幅和存储空间,可以有效节省代码存储空间、增加灵活性。
95.在本技术实施例中,在硬件结构标记语言代码块中,除了和组合逻辑对应的输入信号和输出信号,还可以包括该逻辑节点的信息,例如该逻辑节点的类型信息、逻辑节点的标识信息等,本公开对此不作限制。
96.图2示出本技术实施例的知识产权块包括的模块的示意图。图3示出本技术实施例的树型数据结构的示意图。为便于理解,下文以图2、图3示例性说明本公开实施例的代码转换方法。
97.如图2所示,模块a具有输入1、输出1、寄存器级信号d(简称寄存器级d)、寄存器级信号f(简称寄存器级f)以及子模块(例如,模块b)。模块b具有输入1、输入2、输出1、输出2、寄存器级信号c(简称寄存器级c)以及子模块(例如,模块c)。其中,模块c的输入、输出等信息未示出。
98.以模块b为例,其为模块a的子模块,为模块c的父模块。相应地,模块b对应逻辑节点(逻辑节点b)为模块a对应逻辑节点(逻辑节点a)的子逻辑节点、逻辑节点b为模块c对应逻辑节点(逻辑节点c)的父逻辑节点。逻辑节点b为包括子逻辑节点的子模块逻辑节点,基于模块b包括的两个输出以及寄存器级信号c,可以确定逻辑节点b的三个输出信号以及与每个输出信号对应的非子模块逻辑节点。逻辑节点b的子逻辑节点可以包括逻辑节点c以及上述三个非子模块逻辑节点。
99.相应地,可以确定逻辑节点a包括的子逻辑节点可以为逻辑节点b以及与逻辑节点a的输出1、寄存器级d、寄存器级信号f分别对应的三个非子模块逻辑节点。
100.基于此,可以确定不同逻辑节点的层级关系,并构建对应的树型数据结构。如图3所示,图中树型数据结构包括多个节点,每个节点对应于一个逻辑节点。为便于理解,图3中示出的树型数据结构的节点标记有该节点对应逻辑节点的信息。如图3所示,树型数据结构的节点对应的逻辑节点包括逻辑节点a、非子模块输出逻辑节点a1、非子模块寄存器逻辑节点a2、非子模块寄存器逻辑节点a3、逻辑节点b、逻辑节点c、非子模块输出逻辑节点b1、非子模块输出逻辑节点b2、非子模块寄存器逻辑节点b3。
101.其中,非子模块输出逻辑节点a1、非子模块寄存器逻辑节点a2、非子模块寄存器逻辑节点a3以及逻辑节点b分别为逻辑节点a的子逻辑节点,逻辑节点a还包括基于模块a的输入1确定的输入逻辑节点x。
102.逻辑节点c、非子模块输出逻辑节点b1、非子模块输出逻辑节点b2、非子模块寄存
器逻辑节点b3分别为逻辑节点b的子逻辑节点。
103.其中,逻辑节点b的类型为子模块逻辑节点,在确定类型为子模块逻辑节点的逻辑节点的硬件结构标记语言代码的过程中包括抓取该逻辑节点输入信号对应的输入逻辑节点。如前所述,确定逻辑节点b包括两个输入信号,分别抓取每个输入信号对应的输入逻辑节点。图3所示的y、z可以理解为分别对应于逻辑节点b的两个输入逻辑节点。
104.下文示例性描述构建树型数据结构的方法,应理解,本公开实施例不限制逻辑节点的数量、逻辑节点之间的层级关系、构建树型数据结构的方法。
105.在本技术实施例中,可以基于提取到的逻辑节点信息,确定顶层逻辑节点对应的相关全部信息,作为树型数据结构的顶层节点(或称主根节点)连接到树上。其中,顶层逻辑节点对应的相关全部信息可以包括其对应的代码块、或者与顶层逻辑节点相关的任何信息,例如,可以包括该顶层逻辑节点包括的所有子逻辑节点、所有子逻辑节点的顺序、顶层逻辑节点的输入信号、输出信号、处理逻辑、用于指示逻辑节点的所有子逻辑节点是否已被记录完毕的信息(可以用于确定子逻辑节点是否均已连接到树上),例如,标志位,以构建完整、准确的树型数据结构。在一些可选的实施例中,逻辑节点信息确定的相关全部信息可以不包括用于指示逻辑节点的所有子逻辑节点是否已被记录完毕的信息,其可以为树型数据结构构建方法或程序中设置的一个变量,本公开对顶层逻辑节点对应的相关信息的类型、数量均不做限制。
106.为便于理解,下文以标志位为例进行示例性说明,例如,当标志位为正整数时,存在尚未被记录的子逻辑节点,当标志位为0时,确定所有子逻辑节点是否已被记录完毕,其中,标志位的初始化数值可以为该逻辑节点包括的子逻辑节点数量。
107.图4示出本技术实施例的构建树型数据结构的一个流程示意图。如图4所示,构建流程可以包括:步骤301,获取主根节点相关全部信息,连接到树上,之后进入步骤302。
108.步骤302,将当前节点作为临时根节点,并读取当前节点的相关全部信息,之后进入步骤303。
109.例如,在树上仅包含主根节点的情况下,将主根节点作为临时根节点,并读取主根节点相关全部信息以进行主根节点的模块化处理,在当前节点为主根节点的一个子节点时,将该子节点作为临时根节点,并读取该子节点相关全部信息以进行该子节点的模块化处理。其中,节点的模块化处理可以表示将该节点的代码块所调用的代码块构建于树型数据结构上,具体可参见步骤303、304、305、306和308中的处理。节点模块化处理可以用于构建树型数据结构。
110.步骤303,判断是否操作了所有子节点,当判断结果为未操作所有子节点时,进入步骤304,否则进入步骤309。
111.其中,该步骤303中的操作表示是否将表示子模块的子节点连接到树上,可通过临时根节点中的标志位信息而确认,例如当标志位为正整数时,则判断未操作所有子节点,当标志位为0时,则判断已经操作了临时根节点的所有子节点,但本技术不限于此,标志位还可以通过其它方式表示是否操作了所有子节点。
112.步骤304,在判断未操作临时根节点的所有子节点的情况下,按照临时根节点的子节点顺序,依次获取下一个子节点相关全部信息,之后进入步骤305。
113.步骤305,判断步骤304中所获取的“下一个子节点”是否为叶子节点,若判断结果为是,则进入步骤306,否则进入步骤308。
114.步骤306,记录当前子节点信息,即连接到树上作为临时根节点的子节点,并且对当前子节点进行叶子节点化,也就是说,当前子节点信息不包括当前子节点的子节点相关的信息,而仅包括当前子节点本身的节点信息,之后进入步骤307。
115.步骤307,寻找当前子节点的父节点,更新父节点信息,包括更新父节点的标志位,例如将标志位的值减去1,之后返回步骤302直到操作了临时根节点的所有子节点。
116.步骤308,记录当前子节点信息,即连接到树上作为临时根节点的子节点,并且对当前子节点进行中间节点化,也就是说,当前子节点信息包括当前子节点的子节点相关的信息,之后返回步骤302将当前子节点作为临时根节点以进行迭代构建流程。
117.步骤309,在步骤303中判断已经操作了临时根节点的所有子节点的情况下,判断临时根节点是否为主根节点,若判断结果为否,进入步骤310,否则结束树型数据结构构建流程。
118.步骤310,在步骤309判断临时根节点并非主根节点的情况下,寻找临时根节点的父节点,并更新父节点的相关信息,例如将标志位减一,然后返回步骤302,即将步骤310中寻找到的父节点作为临时根节点以进行迭代构建流程。
119.以构建图3所示树型数据结构为例,可以将a、b、c、b1、b2、b3、a1、a2、a3表示的逻辑节点连接到树上,从而建立如图3所示的树型数据结构,其中,节点与逻辑节点一一对应,每个节点用以存放对应逻辑节点的硬件描述语言代码的模块化信息,模块化信息可以是基于逻辑节点信息确定的、与该逻辑节点对应的相关全部信息。
120.但本技术不下于此,也可以通过其它方式构建如图3所示的树型数据结构,例如,以广度优先的方式,即依次将模块a、b、a1、a2、a3、c、b1、b2、b3表示的节点连接到树上。
121.下文结合图3将示例性说明基于所述树型数据结构以及所述逻辑节点信息,确定每个逻辑节点的硬件结构标记语言代码,以得到所述知识产权块的硬件结构标记语言代码的方式。
122.例如,可以以深度优先方式遍历所述树型数据结构,根据所述逻辑节点信息,按照c、b1、b2、b3、b、a1、a2、a3、a的顺序生成对应逻辑节点的硬件结构标记语言代码,将逻辑节点a的硬件结构标记语言代码确定为知识产权块的硬件结构标记语言代码。还可以是按照c、b1、b2、b3、a1、a2、a3、b、a生成对应逻辑节点的硬件结构标记语言代码,其中,c、b1、b2、b3、a1、a2、a3的至少部分生成操作可以是并行操作。
123.通过本公开实施例,可以将知识产权块的硬件描述语言代码转换为知识产权块的硬件结构标记语言代码,能够将知识产权块的可读性较低的硬件描述语言代码转换为可读性较高的硬件结构标记语言代码,提高了知识产权块的代码的可读性,有利于提高开发效率。
124.在本技术实施例中,通过上述步骤,可以实现对硬件描述语言代码的逻辑节点划分和结构化存储,对各个逻辑节点分别进行转换操作,能够实现对硬件描述语言代码整体向硬件结构标记语言代码的转换。
125.值得说明的是,在以深度优先的方式遍历树型数据结构以生成硬件结构标记语言代码的情况下,由于进行的是一个递归的深度优先树操作的过程,当前顶层逻辑节点调用
的全部子逻辑节点已经被处理完毕,即全部子逻辑节点对应的硬件描述语言代码均已经转换成了硬件结构标记语言代码,换言之,全部子逻辑节点对应的信息已经被记录以生成硬件结构标记语言代码,因此,对于当前逻辑节点而言,在完成该逻辑节点本身所对应的硬件描述语言代码的转换操作之后,当前逻辑节点所对应的全部硬件描述语言代码的转换操作即全部完成。
126.需要说明的是,在本技术实施例中,硬件描述语言中任何参数的计算提取过程,可以利用深度优先构建树以及深度优先遍历树的方式进行。
127.例如,可以利用深度优先构建的方式构建参数的树型数据结构,例如,对于任意一个参数,通过扫描和解析硬件描述语言代码,以及相应的文件列表filelist文件,得到参数所在的文件路径,得到参数所在文件路径后抓取参数对应的“下一级”参数,计算代码,或者直接定义,然后是下一级参数的文件路径,以及下下一级参数的路径,直到抓取到参数的直接数值定义,当然也可以通过广度优先遍历的方式构建参数的树型数据结构。参数的树型数据结构可以为信号连接图,参数的树型数据结构中的任意节点可以存储如下信息:当前参数名称、当前参数对应的数值、当前参数对应的“下一级”的全部参数以及计算代码(或计算逻辑)。
128.但本技术不限于此,例如,也可以仅通过一个树型的数据结构存储知识产权块的硬件描述语言代码的全部信息包括层级信息和模块信息,例如以其它形式的数据格式存储该模块的输入输出逻辑,例如以表格的形式,本技术对此不作限制,可根据实际需要而选择。
129.第二方面的实施例本发明第二方面的实施例提供一种知识产权块的代码转换转置,由于该装置解决问题的原理与第一方面的实施例的方法类似,因此其具体的实施可以参考第一方面的实施例的方法的实施,内容相同之处不再重复说明。
130.图5示出本技术第二方面的实施例的代码转换装置的一个示意图。
131.如图5所示,所述代码转换装置包括:提取模块21,用于基于提取知识产权块的硬件描述语言代码得到的模块信息,确定逻辑节点信息,所述逻辑节点信息表征硬件描述语言代码被抽象为逻辑节点对应的信息;第一确定模块22,用于基于所述逻辑节点信息,构建树型数据结构,其中,树型数据结构的节点与逻辑节点一一对应;第二确定模块23,用于基于所述树型数据结构以及所述逻辑节点信息,确定每个逻辑节点的硬件结构标记语言代码,以得到所述知识产权块的硬件结构标记语言代码。
132.在一种可能的实现方式中,所述第二确定模块用于:以深度优先方式遍历所述树型数据结构,根据所述逻辑节点信息,确定每个逻辑节点的硬件结构标记语言代码;或者,响应于目标节点的全部子节点对应逻辑节点的硬件结构标记语言代码均已生成或者所述目标节点为叶子节点,根据所述逻辑节点信息,确定所述目标节点对应逻辑节点的硬件结构标记语言代码,其中,所述目标节点为所述树型数据结构的任意节点。
133.在一种可能的实现方式中,其中,所述第二确定模块用于:
响应于逻辑节点的类型为子模块逻辑节点,确定所述逻辑节点的输入信号;抓取每个输入信号对应的输入逻辑节点;基于所述逻辑节点的全部输入逻辑节点以及全部子逻辑节点,确定所述逻辑节点的硬件结构标记语言代码,其中,子模块逻辑节点为包括子逻辑节点的逻辑节点。
134.在一种可能的实现方式中,所述逻辑节点的输入信号是基于目标模块的输入、目标模块的输出、目标模块的寄存器级信号、目标模块的子模块的输入以及目标模块的子模块的输出中的至少一者确定的,其中,在所述逻辑节点为顶层逻辑节点的情况下,所述目标模块为知识产权块的顶层模块,在所述逻辑节点为非顶层逻辑节点的情况下,所述目标模块为所述逻辑节点的父逻辑节点对应的模块。
135.在一种可能的实现方式中,其中,所述第二确定模块用于:响应于逻辑节点的类型为非子模块逻辑节点,确定所述逻辑节点的输出信号,抓取输出信号对应的非子模块逻辑节点,以确定所述逻辑节点的硬件结构标记语言代码,其中,非子模块逻辑节点为不包括子逻辑节点的逻辑节点。
136.在一种可能的实现方式中,所述输出信号包括所述逻辑节点的父逻辑节点对应模块的输出或寄存器级信号,所述非子模块逻辑节点包括基于输出确定的非子模块输出逻辑节点和/或基于寄存器级信号确定的非子模块寄存器逻辑节点。
137.在一种可能的实现方式中,其中,抓取得到的目标逻辑节点包括生成目标信号的组合逻辑以及参与所述组合逻辑的全部信号,其中,在所述目标逻辑节点为输入逻辑节点的情况下,所述目标信号为逻辑节点的输入信号,在所述目标逻辑节点为非子模块逻辑节点的情况下,所述目标信号为逻辑节点的输出信号。
138.在一种可能的实现方式中,其中,以代码引用或者直接调用方式将目标逻辑节点添加到包括所述目标逻辑节点的逻辑节点的硬件结构标记语言代码中。
139.在一种可能的实现方式中,所述第一确定模块用于:基于逻辑节点信息,确定不同逻辑节点对应的代码块之间的层级信息;基于所述层级信息,构建树型数据结构。
140.在一种可能的实现方式中,所述树型数据结构包括顶层节点,其中,所述知识产权块的硬件结构标记语言代码是基于顶层节点对应逻辑节点的硬件结构标记语言代码确定的。
141.在一种可能的实现方式中,所述硬件描述语言代码是基于所述知识产权块的高级编程语言代码生成的。
142.第三方面的实施例本发明第三方面的实施例提供一种芯片开发系统,该芯片开发系统包括如第二方面的实施例中描述的代码转换装置,关于该代码转换装置的内容合并于此,具体的实施可以参考第二方面的实施例的描述,内容相同之处不再重复说明。
143.图6示出本技术实施例的芯片开发系统的一个示意图,如图6所示,芯片开发系统1000包括代码转换装置900,代码转换装置900也可以称为硬件ip设计系统程序,可实现标
记语言,高级编程语言,以及硬件描述语言之间的灵活转化,由此,能够根据开发者的需要自动地完成硬件ip的不同语言代码之间的转换,有助于提高ip开发效率。
144.在一个或多个实施例中,如图6所示,芯片开发系统1000可包括硬件、应用和交互接口。
145.在至少一个实施例中,硬件至少可包含能够运行所述应用,并实现所述交互接口功能的处理器,该处理器可以为cpu或gpu,此外,硬件还可包括fpga(acap: xilinx
tm
)、存储器、互联总线等。
146.在本技术实施例中,应用可包括代码转换装置900,此外,应用还可包括工业常用操作系统,比如centos
tm
。此外,应用还可包括工业界常用eda工具,比如synopsys
tm
公司的design compiler
tm
, synopsys vcs
tm
等。在本技术实施例中,操作系统运行于硬件上,并主要负责执行应用,以及实现交互接口的功能。并可以包括能够执行深度学习处理的程序,来辅助前述功能的实现。
147.在至少一个实施例中,应用还可以包括草图/框图绘制设计软件,例如硬件ip草图设计软件,可用于辅助硬件ip初步草图设计,此外,应用还可以包括实现描述硬件ip的抽象功能和硬件结构的标记语言转化为2d,3d模块视图的软件,即硬件ip功能/结构示意图软甲,实现模块视图生成,浏览等。
148.在一个或多个实施例中,交互接口可包括输入输出设备和显示设备,输入输出设备例如可以为键盘、鼠标、触控板等,显示设备可以为显示器等,例如可以包括多个辅助显示器,也可以包括云上服务器、局域网络,来进行所述系统和开发者端的通讯。
149.本技术实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的代码转换方法。
150.本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述的代码转换方法。
151.本技术实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述的代码转换方法。
152.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、移动磁盘、cd-rom或者本领域已知的任何其它形式的存储介质)上实施的计算机程序产品的形式。
153.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其它可编程逻辑器件、分立门或晶体管逻辑器件、分立硬件组件、或者其任意适当组合以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能
的装置。
154.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
155.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
156.以上所述的具体实施例,对本技术的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本技术的具体实施例而已,并不用于限定本技术的保护范围,凡在本技术的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
技术特征:
1.一种知识产权块的代码转换方法,其特征在于,所述方法包括:基于提取知识产权块的硬件描述语言代码得到的模块信息,确定逻辑节点信息,所述逻辑节点信息表征硬件描述语言代码被抽象为逻辑节点对应的信息;基于所述逻辑节点信息,构建树型数据结构,其中,树型数据结构的节点与逻辑节点一一对应;基于所述树型数据结构以及所述逻辑节点信息,确定每个逻辑节点的硬件结构标记语言代码,以得到所述知识产权块的硬件结构标记语言代码。2.根据权利要求1所述的方法,其特征在于,基于所述树型数据结构以及所述逻辑节点信息,确定每个逻辑节点的硬件结构标记语言代码,包括:以深度优先方式遍历所述树型数据结构,根据所述逻辑节点信息,确定每个逻辑节点的硬件结构标记语言代码;或者,响应于目标节点的全部子节点对应逻辑节点的硬件结构标记语言代码均已生成或者所述目标节点为叶子节点,根据所述逻辑节点信息,确定所述目标节点对应逻辑节点的硬件结构标记语言代码,其中,所述目标节点为所述树型数据结构的任意节点。3.根据权利要求1所述的方法,其特征在于,其中,确定每个逻辑节点的硬件结构标记语言代码,包括:响应于逻辑节点的类型为子模块逻辑节点,确定所述逻辑节点的输入信号;抓取每个输入信号对应的输入逻辑节点;基于所述逻辑节点的全部输入逻辑节点以及全部子逻辑节点,确定所述逻辑节点的硬件结构标记语言代码,其中,子模块逻辑节点为包括子逻辑节点的逻辑节点。4.根据权利要求3所述的方法,其特征在于,所述逻辑节点的输入信号是基于目标模块的输入、目标模块的输出、目标模块的寄存器级信号、目标模块的子模块的输入以及目标模块的子模块的输出中的至少一者确定的,其中,在所述逻辑节点为顶层逻辑节点的情况下,所述目标模块为知识产权块的顶层模块,在所述逻辑节点为非顶层逻辑节点的情况下,所述目标模块为所述逻辑节点的父逻辑节点对应的模块。5.根据权利要求1所述的方法,其特征在于,其中,确定每个逻辑节点的硬件结构标记语言代码,包括:响应于逻辑节点的类型为非子模块逻辑节点,确定所述逻辑节点的输出信号,抓取输出信号对应的非子模块逻辑节点,以确定所述逻辑节点的硬件结构标记语言代码,其中,非子模块逻辑节点为不包括子逻辑节点的逻辑节点。6.根据权利要求5所述的方法,其特征在于,所述输出信号包括所述逻辑节点的父逻辑节点对应模块的输出或寄存器级信号,所述非子模块逻辑节点包括基于输出确定的非子模块输出逻辑节点和/或基于寄存器级信号确定的非子模块寄存器逻辑节点。7.根据权利要求3至6中任意一项所述的方法,其特征在于,其中,抓取得到的目标逻辑节点包括生成目标信号的组合逻辑以及参与所述组合逻辑的全部信号,其中,在所述目标逻辑节点为输入逻辑节点的情况下,所述目标信号为逻辑节点的输入信号,在所述目标逻辑节点为非子模块逻辑节点的情况下,所述目标信号为逻辑节点的
输出信号。8.根据权利要求7所述的方法,其特征在于,其中,以代码引用或者直接调用方式将目标逻辑节点添加到包括所述目标逻辑节点的逻辑节点的硬件结构标记语言代码中。9.根据权利要求1所述的方法,其特征在于,所述逻辑节点信息包括每个逻辑节点对应的代码块,其中,所述基于所述逻辑节点信息,构建树型数据结构,包括:基于逻辑节点信息,确定不同逻辑节点对应的代码块之间的层级信息;基于所述层级信息,构建树型数据结构。10.根据权利要求1所述的方法,其特征在于,所述树型数据结构包括顶层节点,其中,所述知识产权块的硬件结构标记语言代码是基于顶层节点对应逻辑节点的硬件结构标记语言代码确定的。11.根据权利要求1所述的方法,其特征在于,所述硬件描述语言代码是基于所述知识产权块的高级编程语言代码生成的。12.一种知识产权块的代码转换装置,其特征在于,所述代码转换装置包括:提取模块,用于提取知识产权块的硬件描述语言代码得到的模块信息,确定逻辑节点信息,所述逻辑节点信息表征硬件描述语言代码被抽象为逻辑节点对应的信息;第一确定模块,用于基于所述逻辑节点信息,构建树型数据结构,其中,树型数据结构的节点与逻辑节点一一对应;第二确定模块,用于基于所述树型数据结构以及所述逻辑节点信息,确定每个逻辑节点的硬件结构标记语言代码,以得到所述知识产权块的硬件结构标记语言代码。13.一种芯片开发系统,其特征在于,所述系统包括如权利要求12所述的代码转换装置。14.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至11中任一项所述的方法。15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至11中任一项所述的方法。
技术总结
本申请涉及知识产权块设计领域,公开了一种硬件知识产权块的代码转换装置和方法,方法包括:基于提取知识产权块的硬件描述语言代码得到的模块信息,确定逻辑节点信息,所述逻辑节点信息表征硬件描述语言代码被抽象为逻辑节点对应的信息;基于所述逻辑节点信息,构建树型数据结构;基于所述树型数据结构以及所述逻辑节点信息,确定每个逻辑节点的硬件结构标记语言代码,以得到所述知识产权块的硬件结构标记语言代码。本申请实施例能够将知识产权块的硬件描述语言代码转换为硬件结构标记语言代码,有助于提高开发效率。有助于提高开发效率。有助于提高开发效率。
技术研发人员:请求不公布姓名
受保护的技术使用者:摩尔线程智能科技(北京)有限责任公司
技术研发日:2023.08.14
技术公布日:2023/9/13
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:一种风道杀菌灯的制作方法 下一篇:一种PVC造粒机挤出装置的制作方法