CN116661794B - 一种硬件描述语言语义转换方法及装置 - Google Patents

一种硬件描述语言语义转换方法及装置 Download PDF

Info

Publication number
CN116661794B
CN116661794B CN202310440474.7A CN202310440474A CN116661794B CN 116661794 B CN116661794 B CN 116661794B CN 202310440474 A CN202310440474 A CN 202310440474A CN 116661794 B CN116661794 B CN 116661794B
Authority
CN
China
Prior art keywords
program
list
matrix
vhdl
systemverilog
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
CN202310440474.7A
Other languages
English (en)
Other versions
CN116661794A (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.)
Hexin Technology Co ltd
Original Assignee
Hexin 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 Hexin Technology Co ltd filed Critical Hexin Technology Co ltd
Priority to CN202310440474.7A priority Critical patent/CN116661794B/zh
Publication of CN116661794A publication Critical patent/CN116661794A/zh
Application granted granted Critical
Publication of CN116661794B publication Critical patent/CN116661794B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/436Semantic checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/169Annotation, e.g. comment data or footnotes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation
    • 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)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Library & Information Science (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本申请属于软件处理技术领域,公开了一种硬件描述语言语义转换方法及装置,该方法包括:获取第一程序文件,并对其中的第一程序进行逐行识别;将识别到的第一程序转换为第二程序;当第一程序为VHDL程序时,第二程序为systemverilog程序;当第一程序为systemverilog程序时,第二程序为VHDL程序;基于转换得到的第二程序生成第二程序文件。本申请可以实现从VHDL程序到systemverilog程序的快速转换,无需人工手动翻译,避免了人工重复输入的操作,节省人力与时间,减少了数字逻辑后续的验证、综合实现的风险,提高了VHDL程序与systemverilog程序之间转换的效率和正确率。

Description

一种硬件描述语言语义转换方法及装置
技术领域
本申请涉及软件处理技术领域,尤其涉及一种硬件描述语言语义转换方法及装置。
背景技术
在数字逻辑系统开发过程中,由于开发人员习惯不同,或使用了第三方IP,会存在不同的硬件描述语言混合的情况。但由于仿真软件、综合软件对于各种硬件描述语言的支持各不相同,因此开发过程中往往会尽可能将各种硬件描述语言统一为同一种。VHDL与systemverilog都是硬件描述语言,但是VHDL与systemverilog的语法结构差别非常大,而systemverilog相对于VHDL,是一种较新、更轻量化、且新用户群体更大的编程语言。在遇到VHDL向systemverilog的转换需求时,基本需要手工操作,即编程人员基于自己对VHDL代码的理解,重新写出具有相同功能的systemverilog代码,并人工确保二者的一致性;在这个过程中,人工转换不可避免存在需要重复输入的操作,随之也带来了人工输入错误的风险;因此,现有技术中存在因VHDL向systemverilog的转换为人工操作,不仅工作量大耗费大量时间精力,且容易在转换过程中出现错误,降低转换正确率的技术问题。
发明内容
本申请提供了一种硬件描述语言语义转换方法及装置,能够节省大量的人力与时间,提高VHDL程序与systemverilog程序之间转换的效率和正确率。
第一方面,本申请实施例提供了一种硬件描述语言语义转换方法,该方法包括:
获取第一程序文件,并对其中的第一程序进行逐行识别;
将识别到的第一程序转换为第二程序;当第一程序为VHDL程序时,第二程序为systemverilog程序;当第一程序为systemverilog程序时,第二程序为VHDL程序;
基于转换得到的第二程序生成第二程序文件。
进一步的,当第一程序为VHDL程序时,VHDL程序包括信号声明、注释符、赋值表达式和多个实体词;上述将识别到的第一程序转换为第二程序,包括:
将识别到的第一实体词转换为当前模块的模块声明,并识别当前模块的信号列表;
将在第一实体词后的识别到的各实体词转换为当前模块下各子模块的子模块例化名,并识别各子模块的子模块信号列表;
将VHDL程序中的注释符转换为systemverilog注释符;
将识别到的信号声明转换为systemverilog程序的逻辑声明;
将识别到的赋值表达式转换为systemverilog程序的更新赋值表达式。
上述实施例实现了对VHDL程序中信号声明、注释符、赋值表达式和多个实体词的转换,保证了在将VHDL程序转换为systemverilog程序时,对VHDL程序描述的硬件结构中输入输出引脚、物理连线或存储单元、信号赋值和变量赋值以及多个结构体的正确描述和表达。
进一步的,VHDL程序还包括特征行;
将识别到的第一程序转换为第二程序,还包括:
将VHDL程序中的特征行转换为systemverilog注释行。
上述实施例解决了特征行在转换为systemverilog程序的过程中无法识别的问题,将特征行转换为systemverilog的注释行,保留了特征行的内容,方便开发人员后续查看或处理。
进一步的,该方法还包括:
在识别赋值表达式时,在无法识别的程序行末尾处添加异常标识。
上述实施例解决了VHDL程序本身编写出现错误的情况,同时避免了赋值表达式中出现本申请无法转换的函数操作符,将因编写错误或无法转换的程序行按原始文本输出,并在末尾处添加异常标识,方便开发人员在自动转换结束后人工校对处理,进一步保证转换的正确率。
进一步的,上述将识别到的赋值表达式转换为systemverilog程序的更新赋值表达式,包括:存储赋值表达式的左值,将赋值表达式中的右值进行分割后存入基础矩阵;
将基础矩阵中相同字符的指针分别存入各字符对应的指针矩阵中;
采用贪婪搜索算法对指针矩阵进行处理,得到贪婪搜索列表;
基于贪婪搜索列表和各指针矩阵处理基础矩阵,得到更新基础矩阵;
基于左值和更新基础矩阵得到更新赋值表达式。
上述实施例将赋值表达式的左值和右值分开处理,基于字符的指针矩阵处理基础矩阵中的右值,确保了对右值中各元素之间逻辑关系转换的正确性。
进一步的,该方法还包括:
在对右值进行分割时,检查右值中的括号对匹配是否正确;
若检查到括号对匹配错误,则退出程序转换流程。
上述实施例中对于赋值表达式中出现的括号对进行了检查,当VHDL程序的括号对匹配错误时,代表VHDL程序编写有误,即退出转换流程,不再对错误的VHDL程序进行转换,间接避免了对错误VHDL程序转换得到的错误systemverilog程序。
进一步的,贪婪搜索列表包括第一前向列表和第一后向列表;
上述采用贪婪搜索算法对指针矩阵进行处理,得到贪婪搜索列表,包括:
根据连接符对应的指针矩阵获取各连接符的位置;
根据各连接符的位置向前搜索,在搜索到字段时停止向前搜索,并将字段的位置存入第一前向列表;根据各连接符的位置向后搜索,在搜索到注释行或字段时停止向后搜索,并将字段的位置存入第一后向列表。
上述实施例中的第一前向列表和第一后向列表中所存储的位置即为systemverilog程序的拼接符插入的位置,贪婪搜索实现了对VHDL程序的右值中连接关系的正确获取,保证了转换得到的systemverilog程序中赋值表达式连接关系的正确性,提高了程序转换的正确率。
进一步的,贪婪搜索列表还包括第二前向列表和第二后向列表;
上述采用贪婪搜索算法对指针矩阵进行处理,得到贪婪搜索列表,包括:
在将字段的位置存入第一前向列表后,继续向前搜索,直到搜索到否定字符时停止向前搜索,并将否定字符的位置存入第二前向列表;
在搜索到注释行或将字段的位置存入第一后向列表后,继续向后搜索,直到搜索到括号对时停止向后搜索,并将括号对的位置存入第二后向列表。
上述实施例实现了对赋值表达式的右值中否定字符和括号对的位置获取,使得开发人员可以通过第二前向列表和第二后向列表得到右值中字符或操作符的结果。
进一步的,上述采用贪婪搜索算法对指针矩阵进行处理,得到贪婪搜索列表,还包括:
在向前搜索到字段之前,若搜索到了半边括号,则向前搜索至与半边括号相匹配的另半边括号后,再向前搜索到字段时,将字段的位置存入第一前向列表;
若搜索到了半边引号,则向前搜索至与半边引号相匹配的另半边引号后,再向前搜索到进制标识符时停止向前搜索,并将进制标识符的位置存入第一前向列表;
在向后搜索到注释行或字段之前;若搜索到了特殊符号或函数操作符,则向前搜索至信号名,并将信号名的位置存入第一后向列表。
上述实施例考虑了贪婪搜索到的互相关联的元素不是单个字符串的情况,确保了对被拼接元素的正确识别,进一步提高了对VHDL程序转换的正确率。
进一步的,上述基于贪婪搜索列表和各指针矩阵处理基础矩阵,得到更新基础矩阵,包括:
合并第一前向列表和第一后向列表,得到合并搜索列表;
将合并搜索列表中所存储的相邻位置中间添加隔离操作符;
基于合并搜索列表更新基础矩阵,得到拼接基础矩阵;
基于各指针矩阵处理拼接基础矩阵,得到更新基础矩阵。
上述实施例通过添加隔离操作符,避免了在相邻的位置重复添加systemverilog拼接符导致的拼接符重叠、在元素较多的时候就会发生错乱的问题,保证了拼接符的正确添加。同时通过合并搜索列表可以确定systemverilog的拼接符插入的位置,从而实现了对VHDL中元素之间连接关系的正确转换和表达。
进一步的,上述基于各指针矩阵处理拼接基础矩阵,得到更新基础矩阵,包括:
根据when和else分别对应的指针矩阵处理拼接基础矩阵中的判断表达式;
将拼接基础矩阵中的二元操作符转换为systemverilog二元操作符;
根据与非符和或非符分别对应的指针矩阵,将拼接基础矩阵中的与非符和或非符分别替换为systemverilog与非符和systemverilog或非符,得到更新基础矩阵。
上述实施例实现了对when else表达式、逻辑比较符的转换,避免对逻辑关系的转换错误,提高了对systemverilog语言自动转换的效率和正确率。
进一步的,上述基于各指针矩阵处理拼接基础矩阵,得到更新基础矩阵,还包括:
在得到systemverilog二元操作符后,在systemverilog二元操作符中连续出现的systemverilog连接符和连续出现的systemverilog或符之间分别增加括号。
上述实施例避免了转换后systemverilog程序中符号相同的一元操作符和二元操作符之间的混淆,保证了systemverilog程序中连接关系、或关系的正确逻辑表达。
第二方面,本申请实施例提供了一种硬件描述语言语义转换装置,该装置包括:
识别模块,用于获取第一程序文件,并对其中的第一程序进行逐行识别;
转换模块,用于将识别到的第一程序转换为第二程序;当第一程序为VHDL程序时,第二程序为systemverilog程序;当第一程序为systemverilog程序时,第二程序为VHDL程序;
生成模块,用于基于转换得到的第二程序生成第二程序文件。
第三方面,本申请实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时执行如上述任一实施例的一种硬件描述语言语义转换方法的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如上述任一实施例的一种硬件描述语言语义转换方法的步骤。
综上,与现有技术相比,本申请实施例提供的技术方案带来的有益效果至少包括:
本申请实施例提供的一种硬件描述语言语义转换方法,当第一程序为VHDL程序时,对VHDL程序进行逐行识别,再将识别到的VHDL程序依次转换为systemverilog程序,反之亦然。上述方法可以实现VHDL程序和systemverilog程序之间的快速转换,无需人工手动翻译,避免了人工重复输入的操作,节省了大量的人力与时间,减少了数字逻辑后续的验证、综合实现的风险,提高了VHDL程序与systemverilog程序转换的效率和正确率。
附图说明
图1为本申请一个示例性实施例提供的一种硬件描述语言语义转换方法的流程图。
图2为本申请一个示例性实施例提供的更新赋值表达式生成步骤的流程图。
图3为本申请一个示例性实施例提供的更新基础矩阵生成步骤的流程图。
图4为本申请又一个示例性实施例提供的更新基础矩阵生成步骤的流程图。
图5为本申请一个示例性实施例提供的一种硬件描述语言语义转换装置的结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参见图1,本申请实施例提供了一种硬件描述语言语义转换方法,该方法具体包括:
步骤S1,获取第一程序文件,并对其中的第一程序进行逐行识别。
步骤S2,将识别到的第一程序转换为第二程序;当第一程序为VHDL程序时,第二程序为systemverilog程序;当第一程序为systemverilog程序时,第二程序为VHDL程序。
步骤S3,基于转换得到的第二程序生成第二程序文件。
具体地,当第一程序为VHDL程序时,该方法还可以包括:
在对VHDL程序进行逐行识别之前,扫描VHDL程序文件中的门控时钟,通过综合工具根据systemverilog程序的代码风格推断出systemverilog程序的门控时钟,获得VHDL程序中的门控时钟与systemverilog程序中门控时钟的门控时钟使能的映射关系,并存入字典中。
基于本申请中给出的将VHDL程序转换为systemverilog程序的步骤方法,也可以实现从systemverilog程序到VHDL程序的逆向转换,但这种逆向转换在实际开发过程中不常用到。
上述实施例提供的一种硬件描述语言语义转换方法,当第一程序为VHDL程序时,对VHDL程序进行逐行识别,再将识别到的VHDL程序依次转换为systemverilog程序,反之亦然。上述方法可以实现VHDL程序和systemverilog程序之间的快速转换,无需人工手动翻译,避免了人工重复输入的操作,节省了大量的人力与时间,减少了数字逻辑后续的验证、综合实现的风险,提高了VHDL程序与systemverilog程序转换的效率和正确率。
在一些实施例中,当第一程序为VHDL程序时,VHDL程序包括信号声明、注释符、赋值表达式和多个实体词;上述将识别到的第一程序转换为第二程序,包括:
将识别到的第一实体词转换为当前模块的模块声明,并识别当前模块的信号列表。
将在第一实体词后的识别到的各实体词转换为当前模块下各子模块的子模块例化名,并识别各子模块的子模块信号列表。
将VHDL程序中的注释符转换为systemverilog注释符。
将识别到的信号声明转换为systemverilog程序的逻辑声明。
将识别到的赋值表达式转换为systemverilog程序的更新赋值表达式。
其中,VHDL程序中的实体词为entity,信号声明即VHDL中的signal声明。
将识别到的第一个entity作为第一实体词,将其转换为当前模块的模块声明,即systemverilog module声明;当前模块的信号列表包括VHDL的端口信号列表和第一个entity的内部信号列表。将第一个entity后出现的第一个括号对中的内容识别为端口信号列表,识别时以第一个entity后的“(”为开始,“)”为结束;将VHDL程序中的关键字“arch”为开始位置,关键字“begin”为结束位置,识别为内部信号列表。
子模块例化名意为子模块的名称,将在第一实体词后出现的entity分别作为当前模块下各个子模块的名称,进一步的,可以记录需要识别的特殊子模块,例如dff型,可以转换为systemverilog always block子模块,进一步的,可以根据各实体词后的端口映射语句来识别各子模块的子模块信号列表;端口映射语句为关键字port map,以port map作为子模块信号列表的开始,转换port连接端口和连接信号为systemverilog的语法。如果为dff,则可以识别dff的d和q,并匹配上述步骤中获得的systemverilog的门控时钟使能生成always block。
具体地,将VHDL程序中的signal声明转换成systemverilog的logic声明;VHDL程序中的注释符为“--”,将其转换为systemverilog程序中的注释符“//”,在对VHDL程序逐行识别过程中,对识别到的每一个“--”都执行该操作。
在具体实施过程中,VHDL程序还可能包括结束关键字end,若在第一实体词之后识别到结束关键字end,则结束对当前模块的转换。
上述实施例实现了对VHDL程序中信号声明、注释符、赋值表达式和多个实体词的转换,保证了在将VHDL程序转换为systemverilog程序时,对VHDL程序描述的硬件结构中输入输出引脚、物理连线或存储单元、信号赋值和变量赋值以及多个结构体的正确描述和表达。
在一些实施例中,VHDL程序还包括特征行;
将识别到的第一程序转换为第二程序,还包括:
将VHDL程序中的特征行转换为systemverilog注释行。
其中,特征行为VHDL程序中的attribute行,attribute行在systemverilog中无法识别,因此将attribute行转换为注释行,这样开发人员可以后续人工查看或处理。
上述实施例解决了特征行在转换为systemverilog程序的过程中无法识别的问题,将特征行转换为systemverilog的注释行,保留了特征行的内容,方便开发人员后续查看或处理。
在一些实施例中,该方法还包括:
在识别赋值表达式时,在无法识别的程序行末尾处添加异常标识。
其中,异常标识可以为“//TODO”。
上述实施例解决了VHDL程序本身编写出现错误的情况,同时避免了赋值表达式中出现本申请无法转换的函数操作符,将因编写错误或无法转换的程序行按原始文本输出,并在末尾处添加异常标识,方便开发人员在自动转换结束后人工校对处理,进一步保证转换的正确率。
请参见图2,在一些实施例中,上述将识别到的赋值表达式转换为systemverilog程序的更新赋值表达式,具体可以包括以下步骤:
步骤S11,存储赋值表达式的左值,将赋值表达式中的右值进行分割后存入基础矩阵。
具体地,用\W对赋值表达式的右值进行正则表达式分割匹配。
步骤S12,将基础矩阵中相同字符的指针分别存入各字符对应的指针矩阵中。
具体地,循环基础矩阵中的各个元素,记录需要顺序变化的位置,这些位置都是systemverilog中不通过关键字实现的逻辑转换,具体识别对象如下:
记录字符when的指针,存入when_matrix。
记录字符else的指针,存入else_matrix。
记录字符nand的指针,存入nand_matrix。
记录字符nor的指针,存入nor_matrix。
记录连接符&的指针,存入concat_matrix。
步骤S13,采用贪婪搜索算法对指针矩阵进行处理,得到贪婪搜索列表。
步骤S14,基于贪婪搜索列表和各指针矩阵处理基础矩阵,得到更新基础矩阵。
步骤S15,基于左值和更新基础矩阵得到更新赋值表达式。
具体地,在存储左值并处理完基础矩阵中的右值后,输出“assign左值=更新基础矩阵中的右值”,从而得到更新赋值表达式。
上述实施例将赋值表达式的左值和右值分开处理,基于字符的指针矩阵处理基础矩阵中的右值,确保了对右值中各元素之间逻辑关系转换的正确性。
在一些实施例中,该方法还包括:
在对右值进行分割时,检查右值中的括号对匹配是否正确。
若检查到括号对匹配错误,则退出程序转换流程。
具体地,在基础矩阵中,and、or、xor、xnor、srl、sll、<、>、/=、=等二元操作符,以及一元操作符not,是可以直接映射到systemverilog的,可以跳过;但对于gate、tconv等存在括号的函数操作,需检查括号深度,如果扫描到行尾发现括号不匹配,则直接异常退出。
上述实施例中对于赋值表达式中出现的括号对进行了检查,当VHDL程序的括号对匹配错误时,代表VHDL程序编写有误,即退出转换流程,不再对错误的VHDL程序进行转换,间接避免了对错误VHDL程序转换得到的错误systemverilog程序。
在一些实施例中,贪婪搜索列表包括第一前向列表和第一后向列表。
上述采用贪婪搜索算法对指针矩阵进行处理,得到贪婪搜索列表,包括:
根据连接符对应的指针矩阵获取各连接符的位置。
根据各连接符的位置向前搜索,在搜索到字段时停止向前搜索,并将字段的位置存入第一前向列表;根据各连接符的位置向后搜索,在搜索到注释行或字段时停止向后搜索,并将字段的位置存入第一后向列表。其中,字段即VHDL程序中的word。
上述实施例中的第一前向列表和第一后向列表中所存储的位置即为systemverilog程序的拼接符插入的位置,贪婪搜索实现了对VHDL程序的右值中连接关系的正确获取,保证了转换得到的systemverilog程序中赋值表达式连接关系的正确性,提高了程序转换的正确率。
在一些实施例中,贪婪搜索列表还包括第二前向列表和第二后向列表。
上述采用贪婪搜索算法对指针矩阵进行处理,得到贪婪搜索列表,包括:
在将字段的位置存入第一前向列表后,继续向前搜索,直到搜索到否定字符时停止向前搜索,并将否定字符的位置存入第二前向列表。
其中,否定字符为VHDL程序中的一元操作符not。
在搜索到注释行或将字段的位置存入第一后向列表后,继续向后搜索,直到搜索到括号对时停止向后搜索,并将括号对的位置存入第二后向列表。
上述实施例实现了对赋值表达式的右值中否定字符和括号对的位置获取,使得开发人员可以通过第二前向列表和第二后向列表得到右值中字符或操作符的结果。
在一些实施例中,上述采用贪婪搜索算法对指针矩阵进行处理,得到贪婪搜索列表,具体还可以包括以下步骤:
在向前搜索到字段之前,若搜索到了半边括号,则向前搜索至与半边括号相匹配的另半边括号后,再向前搜索到字段时,将字段的位置存入第一前向列表。
若搜索到了半边引号,则向前搜索至与半边引号相匹配的另半边引号后,再向前搜索到进制标识符时停止向前搜索,并将进制标识符的位置存入第一前向列表。
其中,进制标识符包括x、b或o等标识符。
在向后搜索到注释行或字段之前;若搜索到了特殊符号或函数操作符,则向前搜索至信号名,并将信号名的位置存入第一后向列表。其中,特殊符号为左括号、x、引号等符号,函数操作符包括not、and_reduce、or_reduce、gate等操作符。
上述实施例考虑了贪婪搜索到的互相关联的元素不是单个字符串的情况,确保了对被拼接元素的正确识别,进一步提高了对VHDL程序转换的正确率。
请参见图3,在一些实施例中,上述基于贪婪搜索列表和各指针矩阵处理基础矩阵,得到更新基础矩阵,具体可以包括以下步骤:
步骤S21,合并第一前向列表和第一后向列表,得到合并搜索列表。
步骤S22,将合并搜索列表中所存储的相邻位置中间添加隔离操作符。
具体地,若合并搜索列表中所存储的位置中,有两个位置是相邻的,则在这两个指针位置中间生成systemverilog的merge操作符“{,}”。
步骤S23,基于合并搜索列表更新基础矩阵,得到拼接基础矩阵。
具体地,基于连接符对应的指针矩阵进行贪婪搜索得到的第一前向列表和第一后向列表中记录了systemverilog的拼接符应插入的位置,基于合并搜索列表更新基础矩阵,就是在基础矩阵中存在互联关系的两个元素之间,插入systemverilog程序的拼接符。
步骤S24,基于各指针矩阵处理拼接基础矩阵,得到更新基础矩阵。
上述实施例通过添加隔离操作符,避免了在相邻的位置重复添加systemverilog拼接符导致的拼接符重叠、在元素较多的时候就会发生错乱的问题,保证了拼接符的正确添加。同时通过合并搜索列表可以确定systemverilog的拼接符插入的位置,从而实现了对VHDL中元素之间连接关系的正确转换和表达。
请参见图4,在一些实施例中,上述基于各指针矩阵处理拼接基础矩阵,得到更新基础矩阵,具体可以包括如下步骤:
步骤S31,根据when和else分别对应的指针矩阵处理拼接基础矩阵中的判断表达式。
具体地,是将字符when和字符else之间的表达式,转移到字符else的表达式之后。
步骤S32,将拼接基础矩阵中的二元操作符转换为systemverilog二元操作符。
具体地,将VHDL程序中的not、and、or、=、xor、xnor、sll、srl等二元操作符,替换为systemverilog中的~、&、|、==、^、~^、<<、>>操作符。
步骤S33,根据与非符和或非符分别对应的指针矩阵,将拼接基础矩阵中的与非符和或非符分别替换为systemverilog与非符和systemverilog或非符,得到更新基础矩阵。
具体地,根据nand_matrix和nor_matrix中的指针,处理nand和nor二元操作符,替换为systemverilog中的”~(&)”和”~(|)”表达式,这一步必须在得到拼接基础矩阵之后再操作,因为需要寻找&、|二元操作符的边界。
上述实施例实现了对when else表达式、逻辑比较符的转换,避免对逻辑关系的转换错误,提高了对systemverilog语言自动转换的效率和正确率。
在一些实施例中,上述基于各指针矩阵处理拼接基础矩阵,得到更新基础矩阵,还包括:
在得到systemverilog二元操作符后,在systemverilog二元操作符中连续出现的systemverilog连接符和连续出现的systemverilog或符之间分别增加括号。
具体地,在转换二元操作符后,转换and_reduce、or_reduce函数操作,由于systemverilog中的systemverilog连接符&、systemverilog或符|可以是一元操作符也可以是二元操作符,所以在转换后连续出现的二元操作符&、|和一元操作符&、|之间需要额外增加括号。
上述实施例避免了转换后systemverilog程序中符号相同的一元操作符和二元操作符之间的混淆,保证了systemverilog程序中连接关系、或关系的正确逻辑表达。
请参见图5,本申请另一实施例提供了一种硬件描述语言语义转换装置,该装置包括:
识别模块101,用于获取第一程序文件,并对其中的第一程序进行逐行识别。
转换模块102,用于将识别到的第一程序转换为第二程序。当第一程序为VHDL程序时,第二程序为systemverilog程序;当第一程序为systemverilog程序时,第二程序为VHDL程序。
生成模块103,用于基于转换得到的第二程序生成第二程序文件。
上述实施例提供的一种硬件描述语言语义转换装置,当第一程序为VHDL程序时,对VHDL程序进行逐行识别,再将识别到的VHDL程序依次转换为systemverilog程序,反之亦然。上述方法可以实现VHDL程序和systemverilog程序之间的快速转换,无需人工手动翻译,避免了人工重复输入的操作,节省了大量的人力与时间,减少了数字逻辑后续的验证、综合实现的风险,提高了VHDL程序与systemverilog程序转换的效率和正确率。
以一个具体的例子说明本申请的一种硬件描述语言语义转换方法的实现过程:
在转换前,本申请对输入的VHDL文程序件的要求是源文件可综合,不存在语法错误。
本申请会对vhdl程序文件中的基本结构体和关键字进行识别,转换流程如下:
1.循环1,扫描VHDL程序文件中的clock gate(门控时钟),获得systemverilog的always block中的inferred clock gate的clock enable信号和对应的clock映射关系,存入字典中。
2.循环2,逐行进行文本语义转换,具体流程为以下步骤:
2.1.处理注释行,将vhdl行注释“--”转换为systemverilog行注释“//”,处理后直接继续处理下一行,无需进行后续步骤。如果不是注释行,则进入下一个步骤。文件任何位置都可能出现注释行,因此本步骤可能会出现多次。
2.2.识别vhdl关键字entity。转换为systemverilog module声明。本步骤只会出现一次。
2.3.识别vhdl端口信号列表(多行)。开始位置为entity后的“(”,结束位置为“)”。
2.4.识别vhdl attribute,attribute行在systemverilog中无法识别,因此保留内容并转换为注释,这样开发人员可以后续人工查看或处理。本步骤也可能会出现多次。
2.5.识别vhdl entity内部信号列表,开始位置为vhdl关键字arch,结束位置为vhdl关键字begin。将vhdl signal声明转换成systemverilog的logic声明。
2.6.识别vhdl逻辑部分,以下都为逻辑转换的步骤:
2.7.如果识别到vhdl关键字end,则当前模块逻辑结束。
2.8.如果识别到vhdl关键字entity,则为子模块例化名,其中可以记录需要识别的特殊模块(如dff,型可以转换为systemverilog always block)。
2.9.如果识别到vhdl关键字port map,则为子模块信号列表的开始,转换port连接端口和连接信号为systemverilog的语法。(如果为dff,则可以识别dff的d和q,并匹配步骤1中已找到的clock enable生成always block)。
2.10.处理vhdl组合逻辑,需要识别赋值表达式的左值和右值。
2.10.1.保存赋值表达式的左值。
2.10.2.根据字段(word)分割右值(用\W进行正则表达式匹配),并存入base_matrix,即上述提到的基础矩阵。
2.10.3.循环base_martix中的各个元素element(e),记录需要顺序变化(reorganize)的位置,这些位置都是systemverilog中不通过关键字实现的逻辑操作,具体识别对象如下。
2.10.3.1.记录保留字when的指针,存入when_matrix。
2.10.3.2.记录保留字else的指针,存入else_matrix。
2.10.3.3.记录保留字nand的指针,存入nand_matrix。
2.10.3.4.记录保留字nor的指针,存入nor_matrix。
2.10.3.5.记录保留字&的指针,存入concat_matrix。
2.10.3.6.如果看到and、or、xor、xnor、srl、sll、<、>、/=、=等二元操作符,以及一元操作符not,是可以直接映射到systemverilog的,可以跳过。
2.10.3.7.并行检查gate、tconv等函数操作的括号深度,如果扫描到程序行的行尾,检查到括号对不匹配,则直接异常退出。
2.10.4.处理vhdl程序中的拼接符,该步骤为本申请的关键步骤。具体地,要根据保留字&存入concat_matrix中的指针位置进行迭代base_matrix。
2.10.4.1.根据每个&的位置,向前搜索base_matrix,直到搜索到word为止。过程中可能会遇到括号、索引方括号,则需要贪婪搜索到第一个匹配且没有更多待匹配括号,再向前继续搜索到字段word为止;如果遇到引号,则当前遇到常量,需要贪婪搜索到另一个引号,并向前搜索到进制标识符x、b或o为止,将停止位置存入第一前向列表backwardliteral result list。
2.10.4.2.搜索到word后,还要向前继续搜索可能存在的一元操作符not,若搜索到了,则停止搜索并将停止位置存入第二前向列表backward result list。
2.10.5.根据每个&操作符的位置,向后搜索。
2.10.5.1.向后搜索时,可能搜索到注释行,则直接结束。
2.10.5.2.如果向后搜索到了字段word,也直接结束,并将结束时的位置存入第一后向列表forward literal result list中。
2.10.5.3.如果搜索到左括号、x、引号等符号,或not、and_reduce、or_reduce、gate等函数操作符(function operand),需要向前贪婪搜索,如果搜索到信号名,则直接结束,将结束时的位置也存入第一后向列表forward literal result list中。
2.10.5.4.继续向后贪婪搜索可能存在的括号对,在搜索到括号对时结束向后贪婪搜索,并将结束位置存入第二后向列表forward result list中。
2.10.6.合并第一前向列表bwd literal result list和第一后向列表fwdliteral result list,因为可能存在连续拼接的操作,在合并后相邻的指针位置生成systemverilog的merge操作符“{,}”。
2.10.7.根据when_matrix和else_matrix中的指针,处理when else表达式,需要将vhdl程序中的when else中间的表达式,挪到else后的表达式之后。
2.10.8.转换逻辑比较符>、<、>=、<=、!=,步骤如下:
2.10.8.1.转换not、and、or、=、xor、xnor、sll、srl二元操作符,替换为systemverilog中的~、&、|、==、^、~^、<<、>>操作符。
2.10.8.2.转换and_reduce、or_reduce函数操作,由于systemverilog中&、|可以是一元操作符也可以是二元操作符,所以在连续出现时,二元操作符&、|和一元操作符&、|之间都需要额外增加括号。
2.10.8.3.根据nand_matrix和nor_matrix中的指针,处理nand和nor二元操作符,替换为systemverilog中的”~(&)”和”~(|)”表达式,这一步必须在处理完上述第一前向列表和第一后向列表合并并更新base_matrix之后,因为需要寻找&、|二元操作符的边界。
2.10.9.输出“assign左值=处理完的右值”。
2.10.10.如果出现处理异常,例如在vhdl程序中识别到本申请中没有描述的函数操作符,或由于vhdl文件本身存在编译错误导致某行无法完成正常的转换操作,则将该行vhdl原始文本输出,并在行尾标记//TODO,提醒开发人员人工校对处理。
本实施例中提供的关于一种硬件描述语言语义转换装置的具体限定,可以参见上文中关于一种硬件描述语言语义转换方法的实施例,于此不再赘述。上述一种硬件描述语言语义转换装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
本申请实施例提供了一种计算机设备,该计算机设备可以包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。处计算机程序被处理器执行时,使得处理器执行如上述任一实施例的一种硬件描述语言语义转换方法的步骤。
本实施例提供的计算机设备的工作过程、工作细节和技术效果,可以参见上文中关于一种硬件描述语言语义转换方法的实施例,于此不再赘述。
本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如上述任一实施例的一种硬件描述语言语义转换方法的步骤。其中,所述计算机可读存储介质是指存储数据的载体,可以但不限于包括软盘、光盘、硬盘、闪存、优盘和/或记忆棒(Memory Stick)等,所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。本实施例提供的计算机可读存储介质的工作过程、工作细节和技术效果,可以参见上文中关于一种硬件描述语言语义转换方法的实施例,于此不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (14)

1.一种硬件描述语言语义转换方法,其特征在于,所述方法包括:
获取第一程序文件,并对其中的第一程序进行逐行识别;
将识别到的所述第一程序转换为第二程序;
当所述第一程序为VHDL程序时,所述第二程序为systemverilog程序;当所述第一程序为systemverilog程序时,所述第二程序为VHDL程序;
当所述第一程序为所述VHDL程序时,所述VHDL程序包括赋值表达式;
其中,所述将识别到的所述第一程序转换为第二程序,包括:将识别到的所述赋值表达式转换为所述systemverilog程序的更新赋值表达式:
存储所述赋值表达式的左值,将所述赋值表达式中的右值进行分割后存入基础矩阵;
将所述基础矩阵中相同字符的指针分别存入各字符对应的指针矩阵中;
采用贪婪搜索算法对所述指针矩阵进行处理,得到贪婪搜索列表;
基于所述贪婪搜索列表和各所述指针矩阵处理所述基础矩阵,得到更新基础矩阵;
基于所述左值和所述更新基础矩阵得到所述更新赋值表达式;
基于转换得到的所述第二程序生成第二程序文件。
2.根据权利要求1所述的方法,其特征在于,当所述第一程序为所述VHDL程序时,所述VHDL程序还包括信号声明、注释符和多个实体词;
所述将识别到的所述第一程序转换为第二程序,包括:
将识别到的第一实体词转换为当前模块的模块声明,并识别所述当前模块的信号列表;
将在所述第一实体词后的识别到的各所述实体词转换为所述当前模块下各子模块的子模块例化名,并识别各所述子模块的子模块信号列表;
将所述VHDL程序中的注释符转换为systemverilog注释符;
将识别到的所述信号声明转换为所述systemverilog程序的逻辑声明。
3.根据权利要求2所述的方法,其特征在于,所述VHDL程序还包括特征行;
所述将识别到的所述第一程序转换为第二程序,还包括:
将所述VHDL程序中的特征行转换为systemverilog注释行。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在识别所述赋值表达式时,在无法识别的程序行末尾处添加异常标识。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在对所述右值进行分割时,检查所述右值中的括号对匹配是否正确;
若检查到括号对匹配错误,则退出程序转换流程。
6.根据权利要求1所述的方法,其特征在于,所述贪婪搜索列表包括第一前向列表和第一后向列表;所述采用贪婪搜索算法对所述指针矩阵进行处理,得到贪婪搜索列表,包括:
根据连接符对应的所述指针矩阵获取各所述连接符的位置;
根据各所述连接符的位置向前搜索,在搜索到字段时停止向前搜索,并将所述字段的位置存入所述第一前向列表;根据各所述连接符的位置向后搜索,在搜索到注释行或所述字段时停止向后搜索,并将所述字段的位置存入所述第一后向列表。
7.根据权利要求6所述的方法,其特征在于,所述贪婪搜索列表还包括第二前向列表和第二后向列表;所述采用贪婪搜索算法对所述指针矩阵进行处理,得到贪婪搜索列表,包括:
在将所述字段的位置存入所述第一前向列表后,继续向前搜索,直到搜索到否定字符时停止向前搜索,并将所述否定字符的位置存入所述第二前向列表;
在搜索到所述注释行或将所述字段的位置存入第一后向列表后,继续向后搜索,直到搜索到括号对时停止向后搜索,并将所述括号对的位置存入所述第二后向列表。
8.根据权利要求7所述的方法,其特征在于,所述采用贪婪搜索算法对所述指针矩阵进行处理,得到贪婪搜索列表,还包括:
在向前搜索到所述字段之前,若搜索到了半边括号,则向前搜索至与所述半边括号相匹配的另半边括号后,再向前搜索到所述字段时,将所述字段的位置存入所述第一前向列表;
若搜索到了半边引号,则向前搜索至与所述半边引号相匹配的另半边引号后,再向前搜索到进制标识符时停止向前搜索,并将所述进制标识符的位置存入所述第一前向列表;
在向后搜索到所述注释行或所述字段之前;若搜索到了特殊符号或函数操作符,则向前搜索至信号名,并将所述信号名的位置存入第一后向列表。
9.根据权利要求8所述的方法,其特征在于,所述基于所述贪婪搜索列表和各所述指针矩阵处理所述基础矩阵,得到更新基础矩阵,包括:
合并所述第一前向列表和所述第一后向列表,得到合并搜索列表;
将所述合并搜索列表中所存储的相邻位置中间添加隔离操作符;
基于所述合并搜索列表更新所述基础矩阵,得到拼接基础矩阵;
基于各所述指针矩阵处理所述拼接基础矩阵,得到更新基础矩阵。
10.根据权利要求9所述的方法,其特征在于,所述基于各所述指针矩阵处理所述拼接基础矩阵,得到更新基础矩阵,包括:
根据when和else分别对应的所述指针矩阵处理所述拼接基础矩阵中的判断表达式;
将所述拼接基础矩阵中的二元操作符转换为systemverilog二元操作符;
根据与非符和或非符分别对应的所述指针矩阵,将所述拼接基础矩阵中的所述与非符和所述或非符分别替换为systemverilog与非符和systemverilog或非符,得到所述更新基础矩阵。
11.根据权利要求10所述的方法,其特征在于,所述基于各所述指针矩阵处理所述拼接基础矩阵,得到更新基础矩阵,还包括:
在得到所述systemverilog二元操作符后,在所述systemverilog二元操作符中连续出现的systemverilog连接符和连续出现的systemverilog或符之间分别增加括号。
12.一种硬件描述语言语义转换装置,其特征在于,所述装置包括:
识别模块,用于获取第一程序文件,并对其中的第一程序进行逐行识别;
转换模块,用于将识别到的所述第一程序转换为第二程序;
当所述第一程序为VHDL程序时,所述第二程序为systemverilog程序;当所述第一程序为systemverilog程序时,所述第二程序为VHDL程序;
当所述第一程序为所述VHDL程序时,所述VHDL程序包括赋值表达式;所述转换模块用于将识别到的所述赋值表达式转换为所述systemverilog程序的更新赋值表达式:存储所述赋值表达式的左值,将所述赋值表达式中的右值进行分割后存入基础矩阵;将所述基础矩阵中相同字符的指针分别存入各字符对应的指针矩阵中;采用贪婪搜索算法对所述指针矩阵进行处理,得到贪婪搜索列表;基于所述贪婪搜索列表和各所述指针矩阵处理所述基础矩阵,得到更新基础矩阵;基于所述左值和所述更新基础矩阵得到所述更新赋值表达式;
生成模块,用于基于转换得到的所述第二程序生成第二程序文件。
13.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至11中任一项所述方法的步骤。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至11中任一项所述方法的步骤。
CN202310440474.7A 2023-04-21 2023-04-21 一种硬件描述语言语义转换方法及装置 Active CN116661794B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310440474.7A CN116661794B (zh) 2023-04-21 2023-04-21 一种硬件描述语言语义转换方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310440474.7A CN116661794B (zh) 2023-04-21 2023-04-21 一种硬件描述语言语义转换方法及装置

Publications (2)

Publication Number Publication Date
CN116661794A CN116661794A (zh) 2023-08-29
CN116661794B true CN116661794B (zh) 2024-04-05

Family

ID=87716118

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310440474.7A Active CN116661794B (zh) 2023-04-21 2023-04-21 一种硬件描述语言语义转换方法及装置

Country Status (1)

Country Link
CN (1) CN116661794B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002091234A1 (fr) * 2001-04-24 2002-11-14 Takahiro Nakamura Dispositif de recuperation destine a une base de donnees de textes joints contenant des informations secondaires
CN101055523A (zh) * 2006-06-01 2007-10-17 威盛电子股份有限公司 将软件程序代码断言转换为硬件描述语言程序代码的方法
CN103455362A (zh) * 2013-09-27 2013-12-18 西安电子科技大学 一种硬件语言自动转换系统
CN105631108A (zh) * 2015-12-24 2016-06-01 哈尔滨工业大学 基于Dsp Builder的卫星飞轮模拟器实现方法
CN113760246A (zh) * 2021-09-06 2021-12-07 网易(杭州)网络有限公司 应用程序文本语言处理方法、装置、电子设备及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002091234A1 (fr) * 2001-04-24 2002-11-14 Takahiro Nakamura Dispositif de recuperation destine a une base de donnees de textes joints contenant des informations secondaires
CN101055523A (zh) * 2006-06-01 2007-10-17 威盛电子股份有限公司 将软件程序代码断言转换为硬件描述语言程序代码的方法
CN103455362A (zh) * 2013-09-27 2013-12-18 西安电子科技大学 一种硬件语言自动转换系统
CN105631108A (zh) * 2015-12-24 2016-06-01 哈尔滨工业大学 基于Dsp Builder的卫星飞轮模拟器实现方法
CN113760246A (zh) * 2021-09-06 2021-12-07 网易(杭州)网络有限公司 应用程序文本语言处理方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN116661794A (zh) 2023-08-29

Similar Documents

Publication Publication Date Title
WO2021003913A1 (zh) 注释信息处理方法、装置、计算机设备及存储介质
CN112181489B (zh) 代码迁移方法、装置、计算机设备及存储介质
CN105793818A (zh) 源代码翻译
WO2022227314A1 (zh) 动态同步测试方法、装置、设备及存储介质
CN106991100A (zh) 数据导入方法及装置
CN111126010B (zh) Freemaker模板文件修复方法、装置、计算机设备及存储介质
CN109947711B (zh) 一种对ios项目开发过程中的多语言文件自动化管理方法
CN116661794B (zh) 一种硬件描述语言语义转换方法及装置
US20050289518A1 (en) Compiler and logic circuit design method
CN116861878A (zh) 一种结合输出形式的自定义报表生成方法与终端
US20090064092A1 (en) Visual programming language optimization
CN111638930A (zh) 基于shell配置iOS多语言脚本方法及系统
CN115599388B (zh) 一种api接口文档生成方法、存储介质及电子设备
CN116955393A (zh) 一种数据处理方法、装置、电子设备及存储介质
CN113360388B (zh) 对无人机地面站软件的测试过程进行一体化管理的方法
CN114356454A (zh) 对账数据处理方法、设备、存储介质及程序产品
CN111626585B (zh) 脚本数据提取方法、装置、计算机设备和存储介质
CN116627390B (zh) 航空软件开发中icd文件的替代方法及装置
CN112347122B (zh) Sql工作流处理方法、装置、电子设备和存储介质
CN109739506B (zh) 一种高性能应用编译中库函数缺失的处理方法及系统
CN112988137A (zh) 一种类文件导入代码管理系统及方法
CN115203237A (zh) 基于hive元数据生成查询sql的方法、装置及设备
CN113760690A (zh) 分析程序接口的方法、装置和计算机设备
CN116187351A (zh) 基于树模型的语料对齐方法及装置
CN114675831A (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