CN116627426B - 一种硬件描述语言增量编译方法及装置 - Google Patents
一种硬件描述语言增量编译方法及装置 Download PDFInfo
- Publication number
- CN116627426B CN116627426B CN202310620173.2A CN202310620173A CN116627426B CN 116627426 B CN116627426 B CN 116627426B CN 202310620173 A CN202310620173 A CN 202310620173A CN 116627426 B CN116627426 B CN 116627426B
- Authority
- CN
- China
- Prior art keywords
- code block
- database
- new code
- compiling
- hot
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 74
- 230000005284 excitation Effects 0.000 claims description 44
- 238000012986 modification Methods 0.000 claims description 20
- 230000004048 modification Effects 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 11
- 230000002441 reversible effect Effects 0.000 claims description 6
- 238000012546 transfer Methods 0.000 claims description 4
- 238000004088 simulation Methods 0.000 abstract description 24
- 238000011161 development Methods 0.000 abstract description 10
- 238000013461 design Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 238000012795 verification Methods 0.000 description 5
- 230000010354 integration Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 2
- 230000002035 prolonged effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 241000571697 Icarus Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 241000894007 species Species 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/48—Incremental compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本申请属于计算机技术领域,公开了一种硬件描述语言增量编译方法及装置,该方法包括:步骤S1,接收用户输入代码,将用户输入代码分别与热点代码区块和新代码区块进行对比,得到对比结果和用户输入代码中的无匹配部分;步骤S2,根据对比结果将新代码区块中的无修改部分移入热点代码区块中,将无匹配部分和热点代码区块中的修改部分移入新代码区块中;步骤S3,对新代码区块重新编译,得到增量数据库并将其合并到当前数据库。本申请能够大大减少了编译的迭代次数和仿真所需的时间,缩短模块的开发时间。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种硬件描述语言增量编译方法及装置。
背景技术
在数字逻辑开发过程中,开发人员在进行小模块开发时,往往会先进行仿真验证,以保证大模块集成时的正确性。使用仿真软件进行小模块仿真验证时,需要设计或验证人员手动输入测试激励。在输入测试激励后,需要进行编译、完整仿真步骤后,打开或刷新波形文件,才能确认模块功能的正确性。在对某个功能点进行迭代时,上述步骤往往需要重复多次。
而Cadence的Xcelium、Synopsys的VCS、Mentor的QuestaSim、以及开源的icarusverilog工具都是基于静态的文本输入进行编译仿真。Xilinx的Vivado套件中的编辑器支持对修改的文本进行语法检查,但它同样无法动态对某个模块进行编译仿真。
因此,现有技术中的verilog(硬件描述语言)编译无法支持动态仿真,在对代码中的某个功能点进行迭代或调整时,无论修改的内容大小,都需要对全部的代码执行一遍完整的编译、仿真和输出波形文件的过程,使得verilog编译模块的迭代次数增多、仿真所需的时间变长,从而导致模块的开发时间变长。
发明内容
本申请提供了一种硬件描述语言增量编译方法及装置,能够大大减少了编译的迭代次数和仿真所需的时间,缩短了模块的开发时间。
第一方面,本申请实施例提供了一种硬件描述语言增量编译方法,该方法包括:
步骤S1,接收用户输入代码,将用户输入代码分别与热点代码区块和新代码区块进行对比,得到对比结果和用户输入代码中的无匹配部分;
步骤S2,根据对比结果将新代码区块中的无修改部分移入热点代码区块中,将无匹配部分和热点代码区块中的修改部分移入新代码区块中;
步骤S3,对新代码区块重新编译,得到增量数据库并将其合并到当前数据库。
进一步的,该方法还包括:
在执行步骤S1之前,构建空的新代码区块和空的热点代码区块;
将首次接收的用户输入代码放入新代码区块中进行编译,得到当前数据库。
上述实施例的区块预编译过程,由新代码区块接收用户首次输入的代码并编译,得到当前数据库;随着代码的持续输入,通过生成的增量数据库实现对当前数据库的更新迭代。
进一步的,该方法还包括:在执行完步骤S1之后,根据对比结果将当前数据库中,新代码区块和热点代码区块的修改部分所对应的目标数据库删除。
上述实施例删除了当前数据库中出现修改的部分,避免了更新前后的数据同时存在于当前数据库中导致的模块编译仿真出错。
进一步的,增量数据库和当前数据库均包括以链表形式进行存储的信号相互关系和层次化结构信息。
上述实施例中数据库以链表的方式存储数据方便了增量数据库和当前数据库的合并,从而实现了当前数据库的快速更新迭代。
进一步的,该方法还包括:在对新代码区块中的无匹配部分进行编译时,若无匹配部分存在语法错误,则编译失败,生成语法错误警告信息并退出当编译流程。
上述实施例避免了编译后得到的信息出现错误,保证了后台编译过程及结果的准确性。
进一步的,该方法还包括:在执行完步骤S3之后,接收用户输入的端口激励,基于当前数据库和端口激励生成若干个输入激励波形和若干个数据库信号波形,并显示在显示界面上。
上述实施例采用输入激励波形和数据库信号波形显示用户输入代码和端口激励的仿真结果,方便用户根据显示的波形快速准确地调整端口激励,尤其是在开发或调整较复杂子模块,如在开发LFSR(线性反馈移位寄存器)、ECC(错误检查和纠正)生成或校验、流水线模块时,能够辅助开发人员快速验证设计预期。
进一步的,该方法还包括:接收用户输入的配置参数信息;
根据配置参数信息对若干个输入激励波形进行调整。
上述实施例实现了对有可配置参数的硬件模块的仿真和开发。
进一步的,该方法还包括:接收反向导出指令,根据反向导出指令将生成的若干个输入激励波形转换为硬件描述语言,并导出该硬件描述语言。
上述实施例使输入激励波形可反向导出为硬件描述语言,方便了用户进行后续仿真集成。
进一步的,该方法还包括:通过图形化界面接收用户输入的端口激励和配置参数信息。
上述实施例通过图形化界面接收端口激励和配置参数信息,令用户可以直观的看到对应产生的输入激励波形的变化,进一步实现了对端口激励和配置参数信息的快速、准确的调整。
第二方面,本申请实施例提供了一种硬件描述语言增量编译装置,该装置包括:
接收模块,用于接收用户输入代码,将用户输入代码分别与热点代码区块和新代码区块进行对比,得到对比结果和用户输入代码中的无匹配部分;
转移模块,用于根据对比结果将新代码区块中的无修改部分移入热点代码区块中,将无匹配部分和热点代码区块中的修改部分移入新代码区块中;
编译模块,用于对新代码区块重新编译,得到增量数据库并将其合并到当前数据库。
第三方面,本申请实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时执行如上述任一实施例的一种硬件描述语言增量编译方法的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如上述任一实施例的一种硬件描述语言增量编译方法的步骤。
综上,与现有技术相比,本申请实施例提供的技术方案带来的有益效果至少包括:
本申请实施例提供的一种硬件描述语言增量编译方法,通过将用户输入代码分别与热点代码区块和新代码区块进行对比,将两个区块现有内容中存在修改的部分、以及用户输入代码中和现有内容的无匹配部分全部放入新代码区块中,再对新代码区块重新编译后合并到当前数据库中,实现了对硬件描述语言代码的增量编译,即每次仅编译现有内容中有修改的和用户输入代码中新增的部分,然后与未修改的合并,而非对全部代码重新进行编译;实现了在开发人员在进行硬件模块编写时,后台文件编译的同步进行,大大减少了编译的迭代次数和仿真所需的时间,缩短了模块的开发时间。
附图说明
图1为本申请一个实施例提供的一种硬件描述语言增量编译方法的流程图。
图2为本申请一个实施例提供的数据库预编译步骤的流程图。
图3为本申请一个实施例提供的层次化结构树和数据库的示意图。
图4为本申请又一个实施例提供的层次化结构树和数据库的示意图。
图5为本申请一个实施例提供的新代码区块和热点代码区块的示意图。
图6为本申请一个实施例提供的仿真模拟和波形显示的示意图。
图7为本申请一个实施例提供的一种硬件描述语言增量编译装置的结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参见图1,本申请实施例提供了一种硬件描述语言增量编译方法,该方法应用于硬件语言编译设备,该设备包括新代码区块和热点代码区块,以执行主体是硬件语言编译设备为例进行说明,该方法具体包括以下步骤:
步骤S1,接收用户输入代码,将用户输入代码分别与热点代码区块和新代码区块进行对比,得到对比结果和用户输入代码中的无匹配部分。
步骤S2,根据对比结果将新代码区块中的无修改部分移入热点代码区块中,将无匹配部分和热点代码区块中的修改部分移入新代码区块中。
步骤S3,对新代码区块重新编译,得到增量数据库并将其合并到当前数据库。
其中,新代码区块和热点代码区块为文本区块,存储的是代码的文本内容,而当前数据库为在收到用户输入代码之前,对新代码区块和热点代码区块编译得到的数据库;在接收到用户输入代码之后,将当前数据库中被用户输入代码修改的部分删除,并对用户输入代码中新增的部分和两个区块中被修改的部分重新编译,得到增量数据库后合并到当前数据库中。
具体地,将热点代码区块中存在修改的部分移入新代码区块中,无修改的部分保留;将新代码区块中无修改的部分移入热点代码区块,存在修改的部分保留;在令用户输入代码中,和两个区块无匹配的部分,即新增的部分也放入新代码区块中,使得新代码区块中都是需要进行编译的内容,而热点代码区块中是不被修改、无需重新编译的内容。
上述实施例提供的一种硬件描述语言增量编译方法,通过将用户输入代码分别与热点代码区块和新代码区块进行对比,将两个区块现有内容中存在修改的部分、以及用户输入代码中和现有内容的无匹配部分全部放入新代码区块中,再对新代码区块重新编译后合并到当前数据库中,实现了对硬件描述语言代码的增量编译,即每次仅编译现有内容中有修改的和用户输入代码中新增的部分,然后与未修改的合并,而非对全部代码重新进行编译;实现了在开发人员在进行硬件模块编写时,后台文件编译的同步进行,大大减少了编译的迭代次数和仿真所需的时间,缩短了模块的开发时间。
请参见图2和图3,在一些实施例中,该方法还可以包括:
步骤S01,构建空的新代码区块和空的热点代码区块。
步骤S02,将首次接收的用户输入代码放入新代码区块中进行编译,得到当前数据库。
具体地,每次用户修改文件时,即进行文本分析和区块的预编译。数据库分为coldregion(新代码区块)和hot region(热点代码区块),各自存放verilog层次结构树和节点之间的逻辑关系。当用户首次输入一些代码时,两个区块都是空的,新代码被放入coldregion进行编译和当前数据库生成。如果后一次新的输入代码没有涉及之前cold region生成的当前数据库,则cold region中的当前数据库会与hot region进行合并,成为两个区块对应的数据库。
因此,如图3中所示,热点代码区块是每次编译verilog module(硬件描述语言模块)的过程中,不会被经常修改的部分;新代码区块是其他部分。
上述实施例的区块预编译过程,由新代码区块接收用户首次输入的代码并编译,得到当前数据库;随着代码的持续输入,通过生成的增量数据库实现对当前数据库的更新迭代。
在一些实施例中,该方法还包括:在执行完步骤S1之后,根据对比结果将当前数据库中,新代码区块和热点代码区块的修改部分所对应的目标数据库删除。
具体地,若用户输入的代码对新代码区块或热点代码区块中的内容有改动,则将两个区块中出现改动的部分,在当前数据库中对应的目标数据库删除,等到对新代码区块重新编译得到增量数据库后,合并到当前数据库中,作为下一次接收用户输入代码时的当前数据库。
上述实施例删除了当前数据库中出现修改的部分,避免了更新前后的数据同时存在于当前数据库中导致的模块编译仿真出错。
在一些实施例中,增量数据库和当前数据库均包括以链表形式进行存储的信号相互关系和层次化结构信息。具体地,对代码进行编译的过程,就是从用户输入的代码中识别出信号、变量的相互关系,以及层次结构信息,并转化为可被仿真程序识别的数据库的过程。
数据库在存储时,层次化结构信息和模块内的信号相互关系都可以用链表存储,信号相互关系存储时,会在层次结构树的链表基础上,会在组合逻辑赋值的左值或时序逻辑寄存器的对应空间内,额外存储变量间的组合逻辑或时序逻辑关系。
同时由于数据库内的信息都以链表形式存储,数据库合并也就是链表的合并。
请参见图4和图5,层次化结构信息可采用层次化结构树的形式来表示,其中,root是树的根节点,其子节点tb_top是用户可见的第一个节点,tb_top下例化了module A和module B,两个module中各自有内部信号和输入输出信号。
其中,已构建的层次结构树会包含变量信息及变量之间的连接关系,在对比用户输入代码和新代码区块、热点代码区块时,如果用户输入代码中的变量包含与层次化结构树中这些变量及连接关系相关的修改,则判断对新代码区块或热点代码区块有修改。
具体地,如果用户输入代码的修改涉及到热点代码区块中已构建的层次结构树的某一支,则对应的部分会从hot region中移除到cold region并重新编译,否则hot region的层次结构树的分支内容,和信号间相互关系不变。
上述实施例中数据库以链表的方式存储数据方便了增量数据库和当前数据库的合并,从而实现了当前数据库的快速更新迭代。
在一些实施例中,该方法还可以包括:在对新代码区块中的无匹配部分进行编译时,若无匹配部分存在语法错误,则编译失败,生成语法错误警告信息并退出当编译流程。
具体地,语法错误警告信息会在编辑器界面上显示以提醒用户。
上述实施例避免了编译后得到的信息出现错误,保证了后台编译过程及结果的准确性。
在一些实施例中,该方法还可以包括:
在执行完步骤S3之后,接收用户输入的端口激励,基于当前数据库和端口激励生成若干个输入激励波形和若干个数据库信号波形,并显示在显示界面上。
其中,数据库信号波形是根据当前数据库生成的,因此,若用户输入代码使得当前数据库发生了变化,数据库信号波形也会变化。
具体地,通过本申请对数据库的动态编译和用户输入的端口激励,使用户可以在修改verilog代码后,直接获得时间-事件-信号值的映射关系,并显示在输入激励波形上,也可以动态修改和选择当前所关注的输入激励波形。
上述实施例采用输入激励波形和数据库信号波形显示用户输入代码和端口激励的仿真结果,方便用户根据显示的波形快速准确地调整端口激励,尤其是在开发或调整较复杂子模块,如在开发LFSR(线性反馈移位寄存器)、ECC(错误检查和纠正)生成或校验、流水线模块时,能够辅助开发人员快速验证设计预期。
在一些实施例中,该方法还包括:接收用户输入的配置参数信息。
根据配置参数信息对若干个输入激励波形进行调整。
上述实施例实现了对有可配置参数的硬件模块的仿真和开发。
在一些实施例中,该方法还包括:接收反向导出指令,根据反向导出指令将生成的若干个输入激励波形转换为硬件描述语言,并导出该硬件描述语言。
上述实施例使输入激励波形可反向导出为硬件描述语言,方便了用户进行后续仿真集成。
请参见图6,在一些实施例中,该方法还包括:
通过图形化界面接收用户输入的端口激励和配置参数信息。
具体地,用户也可以通过图形化界面对输入的端口激励再次修改,如果设计的硬件模块中有可配置参数(parameter),用户可以直接在图形化界面中指定需要配置的值。
现有技术中通常采用顶层例化来设计模块,而顶层例化的方式都是通过verilog代码进行激励书写,当激励信号内部信号关系比较复杂时,容易导致需要反复进行尝试。
在本申请中,当用户在图形化界面进行操作时,即同步生成对应需要的tb_top的数据库及对应的子树,结构与其它module类似。
上述实施例通过图形化界面接收端口激励和配置参数信息,令用户可以直观的看到对应产生的输入激励波形的变化,进一步实现了对端口激励和配置参数信息的快速、准确的调整。
请参见图7,本申请另一实施例提供了一种硬件描述语言增量编译装置,该装置包括:
接收模块101,用于接收用户输入代码,将用户输入代码分别与热点代码区块和新代码区块进行对比,得到对比结果和用户输入代码中的无匹配部分。
转移模块102,用于根据对比结果将新代码区块中的无修改部分移入热点代码区块中,将无匹配部分和热点代码区块中的修改部分移入新代码区块中。
编译模块103,用于对新代码区块重新编译,得到增量数据库并将其合并到当前数据库。
上述实施例提供的一种硬件描述语言增量编译装置,通过将用户输入代码分别与热点代码区块和新代码区块进行对比,将两个区块现有内容中存在修改的部分、以及用户输入代码中和现有内容的无匹配部分全部放入新代码区块中,再对新代码区块重新编译后合并到当前数据库中,实现了对硬件描述语言代码的增量编译,即每次仅编译现有内容中有修改的和用户输入代码中新增的部分,然后与未修改的合并,而非对全部代码重新进行编译;实现了在开发人员在进行硬件模块编写时,后台文件编译的同步进行,大大减少了编译的迭代次数和仿真所需的时间,缩短了模块的开发时间。
本实施例中提供的关于一种硬件描述语言增量编译装置的具体限定,可以参见上文中关于一种硬件描述语言增量编译方法的实施例,于此不再赘述。上述一种硬件描述语言增量编译装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
以一个具体的例子说明本申请中一种硬件描述语言增量编译方法的实施过程:
1.后台编译。verilog的编译是从用户输入的文件中识别出信号、变量的相互关系,以及层次结构信息,并转化为可被仿真程序识别的数据库的过程。
数据库包含verilog文件的层次化结构信息和模块内的信号相互关系。层次化结构信息可以由树来表示。如图4和图5所示,root是树的根节点,其子节点tb_top是用户可见的第一个节点,tb_top下例化了module A和module B,两个module中各自有内部信号和输入输出信号。数据库存储时,层次化结构信息和模块内的信号相互关系都可以用链表存储,信号相互关系存储时,会在层次结构树的链表基础上,会在组合逻辑赋值的左值或时序逻辑寄存器的对应空间内,额外存储变量间的组合逻辑或时序逻辑关系。
请参见图3,本申请中的热点代码区块是每次编译verilog module的过程中,不会被经常修改的部分。每次用户修改文件时,即进行文本分析和区块的预编译。数据库分为cold region和hot region,各自存放verilog层次结构树和节点之间的逻辑关系。当用户输入新代码时,新代码被放入cold region进行数据库生成(生成可能由于语法错误失败,此时会在编辑器界面中提醒用户)。如果后一次输入的第二代码没有涉及之前cold region的改动,则cold region中的数据库信息会与hot region进行合并,由于数据库内的信息都以链表形式存储,合并的方式也就是链表的合并。如果新代码的修改涉及到hot region中的已构建的层次结构树的某一支,则对应代码会从hot region中移除并重新编译,否则hotregion的层次结构树的分支内容,和信号间相互关系不变。
更全面概括本申请的场景是,每一轮的代码更新完成以后,都会有hot region和cold region。
1)用户代码第一次输入,此时所有的代码都更新到cold region,hot region为空。
2)用户后续进行输入,此时hot region大概率是有代码的(基于用户不会全部修改),此时用户输入新代码:
如果有涉及hot region的改动,那么需要从hot region里拿出来放到coldregion进行编译。
如果用户新输入的代码涉及cold region的一些改动,那么对应改动仍然留在cold region。
但是未改动的cold region中的部分,可以合入hot region。
如图4所示,module A中,原本存在时钟信号clk,复位信号rst,寄存器RA0和RA1,以及组合逻辑线网WA0和WA1,WA0由RA0经过组合逻辑驱动,WA1由WA0经过组合逻辑驱动,RA1由WA1经过clk、rst驱动的时序逻辑驱动,所有的代码段都在Hot Region中。
如图5所示,随后用户新增加了wire WA2及新逻辑,影响到了WA1的驱动源,因此WA1的逻辑从Hot Region中移出到Cold region中重新编译,同时WA2的驱动逻辑也新增到Cold Region中,而WA0、RA1的驱动逻辑由于没有发生变化,因此仍然保留在Hot Region中。另外,新增加的WA2信号只影响层次结构树种的A->WA2,其它层次结构无需进行重新构建。
2.仿真模拟。用户可以在图形化界面(Waveform Explorer)中直接对设计模块的端口激励进行修改,而无需通过顶层例化设计模块,并输入仿真环境激励代码的方式进行仿真。在用户进行gui操作时,即生成对应需要的tb_top的数据库及对应的子树,结构与其它module类似。同时gui修改后的输入激励波形也可以导出为verilog,方便用户进行后续仿真集成。如果设计模块有可配置参数(parameter),用户可以直接在图形化界面中指定需要配置的值。
3.波形显示。通过后台的动态编译和输入的端口激励,用户可以在修改verilog代码后,直接获得时间-事件-信号值的映射关系,并显示在输入激励波形上,也可以动态修改和选择当前所关注的输入激励波形。
本申请可以在开发人员在进行硬件模块编写时,同步进行后台的文件编译、仿真模拟和波形显示。本申请还可以减少verilog模块的迭代次数和开发时间。在开发或调整较复杂子模块,如LFSR(线性反馈移位寄存器)、ECC生成或校验、流水线模块时,可以通过快速调整输入激励,辅助开发人员快速验证设计预期。
本申请实施例提供了一种计算机设备,该计算机设备可以包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。处计算机程序被处理器执行时,使得处理器执行如上述任一实施例的一种硬件描述语言增量编译方法的步骤。
本实施例提供的计算机设备的工作过程、工作细节和技术效果,可以参见上文中关于一种硬件描述语言增量编译方法的实施例,于此不再赘述。
本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如上述任一实施例的一种硬件描述语言增量编译方法的步骤。其中,所述计算机可读存储介质是指存储数据的载体,可以但不限于包括软盘、光盘、硬盘、闪存、优盘和/或记忆棒(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 (11)
1.一种硬件描述语言增量编译方法,其特征在于,所述方法包括:
构建空的新代码区块和空的热点代码区块;将首次接收的用户输入代码放入所述新代码区块中进行编译,得到当前数据库;
步骤S1,接收用户输入代码,将所述用户输入代码分别与热点代码区块和新代码区块进行对比,得到对比结果和所述用户输入代码中的无匹配部分;其中,所述热点代码区块为硬件描述语言编译过程中不会被经常修改的部分;所述新代码区块是其他部分;
步骤S2,根据所述对比结果将所述新代码区块中的无修改部分移入所述热点代码区块中,将所述无匹配部分和所述热点代码区块中的修改部分移入所述新代码区块中;
其中,所述新代码区块和所述热点代码区块存放有层次结构树和节点逻辑关系,所述层次结构树包含变量信息及变量连接关系;
具体地,若所述用户输入代码中的变量包含与所述层次结构树中的所述变量信息及所述变量连接关系相关的修改,则判断对所述新代码区块或所述热点代码区块有修改;
步骤S3,对所述新代码区块重新编译,得到增量数据库并将其合并到所述当前数据库。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在执行完步骤S1之后,根据所述对比结果将所述当前数据库中,所述新代码区块和所述热点代码区块的修改部分所对应的目标数据库删除。
3.根据权利要求1所述的方法,其特征在于,所述增量数据库和所述当前数据库均包括以链表形式进行存储的信号相互关系和层次化结构信息。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在对所述新代码区块中的所述无匹配部分进行编译时,若所述无匹配部分存在语法错误,则编译失败,生成语法错误警告信息并退出当编译流程。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在执行完步骤S3之后,接收用户输入的端口激励,基于所述当前数据库和所述端口激励生成若干个输入激励波形和若干个数据库信号波形,并显示在显示界面上。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
接收所述用户输入的配置参数信息;
根据所述配置参数信息对若干个所述输入激励波形进行调整。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
接收反向导出指令,根据所述反向导出指令将生成的若干个所述输入激励波形转换为硬件描述语言,并导出所述硬件描述语言。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
通过图形化界面接收所述用户输入的所述端口激励和所述配置参数信息。
9.一种硬件描述语言增量编译装置,其特征在于,所述装置包括:
接收模块,用于构建空的新代码区块和空的热点代码区块;将首次接收的用户输入代码放入所述新代码区块中进行编译,得到当前数据库;
还用于接收用户输入代码,将所述用户输入代码分别与热点代码区块和新代码区块进行对比,得到对比结果和所述用户输入代码中的无匹配部分;其中,所述热点代码区块为硬件描述语言编译过程中不会被经常修改的部分;所述新代码区块是其他部分;
转移模块,用于根据所述对比结果将所述新代码区块中的无修改部分移入所述热点代码区块中,将所述无匹配部分和所述热点代码区块中的修改部分移入所述新代码区块中;
其中,所述新代码区块和所述热点代码区块存放有层次结构树和节点逻辑关系,所述层次结构树包含变量信息及变量连接关系;
所述转移模块还用于在所述用户输入代码中的变量包含与所述层次结构树中的所述变量信息及所述变量连接关系相关的修改时,判断对所述新代码区块或所述热点代码区块有修改;
编译模块,用于对所述新代码区块重新编译,得到增量数据库并将其合并到当前数据库。
10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至8中任一项所述方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310620173.2A CN116627426B (zh) | 2023-05-29 | 2023-05-29 | 一种硬件描述语言增量编译方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310620173.2A CN116627426B (zh) | 2023-05-29 | 2023-05-29 | 一种硬件描述语言增量编译方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116627426A CN116627426A (zh) | 2023-08-22 |
CN116627426B true CN116627426B (zh) | 2023-11-24 |
Family
ID=87596999
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310620173.2A Active CN116627426B (zh) | 2023-05-29 | 2023-05-29 | 一种硬件描述语言增量编译方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116627426B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101286185A (zh) * | 2008-06-05 | 2008-10-15 | 北京北广科数字广播电视技术有限公司 | 基于线性插值结构的数字频率合成电路编译器实现方法 |
CN112328217A (zh) * | 2020-11-03 | 2021-02-05 | 中国平安人寿保险股份有限公司 | 一种代码部署方法、装置、系统、计算机设备和介质 |
CN113126994A (zh) * | 2019-12-31 | 2021-07-16 | Oppo广东移动通信有限公司 | 热点代码处理方法、装置、电子设备及存储介质 |
CN114756456A (zh) * | 2022-04-02 | 2022-07-15 | 广州文远知行科技有限公司 | 一种持续集成方法、装置以及计算机可读存储介质 |
CN115167868A (zh) * | 2022-07-29 | 2022-10-11 | 阿里巴巴(中国)有限公司 | 代码编译方法、装置、设备及计算机存储介质 |
CN115438610A (zh) * | 2022-09-01 | 2022-12-06 | 中山大学 | 图形化高层次综合电路性能分析方法、系统、装置及介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7051299B2 (en) * | 2003-07-31 | 2006-05-23 | International Business Machines Corporation | Method for generating reusable behavioral code |
US11144434B2 (en) * | 2019-05-31 | 2021-10-12 | The Mathworks, Inc. | Refining coverage analyses using context information |
-
2023
- 2023-05-29 CN CN202310620173.2A patent/CN116627426B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101286185A (zh) * | 2008-06-05 | 2008-10-15 | 北京北广科数字广播电视技术有限公司 | 基于线性插值结构的数字频率合成电路编译器实现方法 |
CN113126994A (zh) * | 2019-12-31 | 2021-07-16 | Oppo广东移动通信有限公司 | 热点代码处理方法、装置、电子设备及存储介质 |
CN112328217A (zh) * | 2020-11-03 | 2021-02-05 | 中国平安人寿保险股份有限公司 | 一种代码部署方法、装置、系统、计算机设备和介质 |
CN114756456A (zh) * | 2022-04-02 | 2022-07-15 | 广州文远知行科技有限公司 | 一种持续集成方法、装置以及计算机可读存储介质 |
CN115167868A (zh) * | 2022-07-29 | 2022-10-11 | 阿里巴巴(中国)有限公司 | 代码编译方法、装置、设备及计算机存储介质 |
CN115438610A (zh) * | 2022-09-01 | 2022-12-06 | 中山大学 | 图形化高层次综合电路性能分析方法、系统、装置及介质 |
Non-Patent Citations (2)
Title |
---|
C to D-Wave: A High-level C Compilation Framework for Quantum Annealers;Mohamed W. Hassan等;《2019 IEEE High Performance Extreme Computing Conference (HPEC)》;1-5 * |
基于FPGA的实时数字相干光接收机并行算法设计与实现;王晓东;《中国优秀硕士学位论文全文数据库 信息科技辑》;I135-234 * |
Also Published As
Publication number | Publication date |
---|---|
CN116627426A (zh) | 2023-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5995736A (en) | Method and system for automatically modelling registers for integrated circuit design | |
US5953519A (en) | Method and system for generating electronic hardware simulation models | |
US6931611B2 (en) | Design verification system for avoiding false failures and method therefor | |
US7143388B1 (en) | Method of transforming software language constructs to functional hardware equivalents | |
US9665674B2 (en) | Automating a microarchitecture design exploration environment | |
US8365110B2 (en) | Automatic error diagnosis and correction for RTL designs | |
US7895575B2 (en) | Apparatus and method for generating test driver | |
JPH08512152A (ja) | インクリメンタル生成システム | |
US9524366B1 (en) | Annotations to identify objects in design generated by high level synthesis (HLS) | |
CN114327476A (zh) | 芯片设计文件生成方法、装置、芯片设计方法及装置 | |
TWI464679B (zh) | 執行硬體描述語言程式碼之方法 | |
US7523029B2 (en) | Logic verification and logic cone extraction technique | |
CN110069414B (zh) | 回归测试方法及系统 | |
US20120166168A1 (en) | Methods and systems for fault-tolerant power analysis | |
CN110347588A (zh) | 软件验证方法、装置、计算机设备和存储介质 | |
Alizadeh et al. | Formal equivalence verification and debugging techniques with auto-correction mechanism for RTL designs | |
CN116627426B (zh) | 一种硬件描述语言增量编译方法及装置 | |
Goli et al. | Through the looking glass: Automated design understanding of SystemC-based VPs at the ESL | |
US6813599B1 (en) | Efficient memory structure simulation for sequential circuit design verification | |
Ayache et al. | Certifying and reasoning on cost annotations in C programs | |
US11657198B2 (en) | Verification of hardware design for data transformation component | |
US6968523B2 (en) | Design method of logic circuit using data flow graph | |
US8245211B2 (en) | Method and system for finding problems caused by access to partially uninitialized data storage which is accessed using index expressions | |
CN116956789B (zh) | 一种用于寄存器后门访问的方法、计算设备及介质 | |
CN116663463B (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 |