一种代码生成方法及相关设备与流程

本申请涉及硬件编程领域,尤其涉及一种代码生成方法、仿真系统、电子设备及计算机可读存储介质。
背景技术:
1、为验证硬件电路设计(或简称为设计)的合理性,通常需要对硬件电路设计进行仿真实验。仿真实验可以通过形式验证、虚拟仿真或实物仿真来进行。
2、其中,形式验证是一种静态的验证方式,通过验证待测样本是否与现有可信的样本在逻辑上对等,从而确定待测样本的准确性。然而,这种方式过于依赖现有样本的质量,因而在实际应用中并不常见。虚拟仿真又称逻辑仿真或软件仿真,是一种基于仿真软件,模拟硬件电路组件或系统运行过程或场景的验证方法。实物仿真,需要结合真实的硬件电路进行设计过程和性能的验证。在实际应用中,可以采用虚拟仿真与实物仿真结合的方式,综合地对硬件电路设计进行仿真实验,以验证硬件电路设计的合理性。
3、在进行硬件电路的虚拟仿真或实物仿真时,可以使用硬件描述语言(hardwaredescription language,hdl)描述硬件电路的结构、功能、时序、性能等特性,通过将硬件电路设计与hdl等编程语言结合,有利于对硬件电路设计的测试与验证。其中,verilog hdl(以下简称verilog)以其灵活性、能够进行分级设计的特点被广泛应用。
4、然而,传统的仿真系统不能基于用户对硬件电路的模块设计,自动生成硬件代码,而是需要用户手动编写,影响了硬件电路设计的仿真效率,增加了硬件电路的设计成本。
技术实现思路
1、有鉴于此,本申请提供一种代码生成方法及相关设备,以解决相关技术无法根据硬件电路设计自动生成对应硬件代码的问题,提高硬件电路设计的仿真效率,降低硬件电路的设计成本。
2、第一方面,本申请提供一种代码生成方法,应用于仿真系统,该方法包括:
3、仿真系统在仿真界面添加待生成硬件代码的目标模块,该目标模块用于基于硬件的位运算实现数据处理。然后,仿真系统接收用户通过目标模块的属性配置界面配置的输入数据的类型和位宽,根据输入数据的类型和位宽生成目标模块的硬件代码中的输入端口定义。接着,仿真系统根据目标模块的运算类型,确定与该运算类型对应的至少一个位操作符,并生成对输入数据进行运算的硬件代码。
4、如此,对于仿真系统中的硬件电路设计,实现了硬件代码的自动生成,提升了用户体验。同时,可以根据用户需求设置输入数据类型和输入数据位宽等参数,满足不同用户需求,具有较高灵活性。
5、在一些可能的实现方式中,仿真系统还可以接收用户通过目标模块的属性配置界面配置的输出数据的属性和位宽,根据输出数据的属性和位宽,生成对运算结果进行截取或位宽扩展的硬件代码。如此,仿真系统可以支持用户配置输出数据的格式,并按照该格式输出硬件代码,满足个性化的需求,而且该方法支持对运算结果进行截取,减少不必要的冗余长度。
6、在一些可能的实现方式中,仿真系统根据至少一个位操作符生成对所述输入数据进行运算的硬件代码可以通过如下方式进行:仿真系统基于输入数据的类型和位宽,生成对输入数据进行格式对齐的硬件代码。接着,根据至少一个位操作符生成对对齐后的输入数据进行运算的硬件代码。
7、可选地,对齐后的输入数据的格式为二进制格式,对齐后的输入数据的小数位宽为输入数据小数位宽的最大值。如此,就可以将输入的有符号数据或无符号数据统一转换为计算设备可以读取、存储并运算的二进制数据。同时,由于二进制数据中没有对于小数点的直观表示,因此需要限定小数位宽并对齐,利于后续对输入数据展开运算。
8、在一些可能的实现方式中,仿真系统根据至少一个位操作符生成对对齐后的输入数据进行运算的硬件代码可以通过如下方式进行:仿真系统根据对齐后的输入数据位宽和目标模块的运算类型,生成对对齐后的输入数据进行位宽扩展的硬件代码,根据至少一个位操作符生成对位宽扩展后的输入数据进行运算的硬件代码。
9、由于输入数据进行运算后可能产生进位,从而带来数据溢出的问题,因此需要在运算前对输入数据进行位宽扩展,避免运算结果溢出导致错误。由于目标模块的运算类型不同,输入数据运算后可能产生的溢出位宽不同,因此需要针对不同运算类型的目标模块对应地扩展输入数据的位宽。
10、在一些可能的实现方式中,仿真系统对对齐后的输入数据进行扩展之前,还应根据输入数据的类型为输入数据补充符号位。也即,对齐后的输入数据应转换为补码形式。
11、在一些可能的实现方式中,目标模块为加减模块或增益模块。加减模块可以实现对多个输入数据进行加法或减法运算,其中,输入数据的减法运算等效于对该输入数据的相反数进行加法运算,反应在计算设备中则为对其相反数的补码进行加法运算。由于加减模块可以实现对多个输入数据的运算,因此在进行顺序逐个相加时需要加入延时模块,以保证每次运算的步调一致。
12、增益模块则根据一个输入数据和增益数据进行运算。具体地,基于二进制的特点,根据输入数据中数值为“1”的位数和个数,对增益数据进行移位操作,并将产生的多个移位后数据存储在寄存器中,进行迭代相加。
13、在一些可能的实现方式中,增益模块产生的多个移位数据进行迭代相加时,可以采用并行的方式,根据移位数据的数量加入时钟,从而可以不顺序地对所有移位数据进行逐个相加。如此,可以提高计算效率,优化生成的硬件代码。
14、第二方面,本申请提供一种仿真系统,该系统包括用于执行第一方面或第一方面任意一种可能实现方式中的代码生成方法的各个模块,具体包括:
15、通信模块,用于接收用户通过目标模块的属性配置界面配置的输入数据的类型和位宽;
16、代码生成模块,用于根据输入数据的类型和位宽,生成所述目标模块的硬件代码中的输入端口定义,以及根据所述目标模块的运算类型,确定与该运算类型对应的至少一个位操作符,根据至少一个位操作符生成对输入数据进行运算的硬件代码。
17、第三方面,本申请提供一种电子设备。该设备包括处理器和存储器。其中,所述存储器用于存储计算机指令;所述处理器,用于根据所述计算机指令执行本申请第一方面或第一方面任意一种可能实现方式所述的方法。
18、第四方面,本申请提供一种计算机可读介质,所述计算机可读存储介质中存储有指令,当其在计算机设备上运行时,使得计算机设备执行本申请第一方面或第一方面任意一种可能实现方式所述的方法。
19、第五方面,本申请提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行本申请第一方面或第一方面任意一种可能实现方式所述的方法。
20、本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
技术特征:
1.一种代码生成方法,其特征在于,应用于仿真系统,该方法包括:
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
3.根据权利要求1所述的方法,其特征在于,所述根据所述至少一个位操作符生成对所述输入数据进行运算的硬件代码,包括:
4.根据权利要求3所述的方法,其特征在于,对齐后的所述输入数据的格式为补码格式,对齐后的所述输入数据的小数位宽为所述输入数据小数位宽的最大值。
5.根据权利要求3所述的方法,其特征在于,所述根据所述至少一个位操作符生成对对齐后的所述输入数据进行运算的硬件代码,包括:
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述目标模块为加减模块或增益模块。
7.根据权利要求1至5中任一项所述的方法,其特征在于,所述接收用户通过所述目标模块的属性配置界面配置的所述目标模块的输入数据的类型和位宽,还包括:
8.一种仿真系统,其特征在于,所述仿真系统包括:
9.一种电子设备,其特征在于,所述电子设备包括:
10.一种计算机存储介质,其特征在于,所述计算机存储介质用于存储计算机程序,所述计算机程序被执行时,用于实现权利要求1至7中任一项所述的方法。
技术总结
本申请公开了一种代码生成方法,应用于仿真系统,包括:在仿真界面添加待生成硬件代码的目标模块,该目标模块用于基于硬件的位运算实现数据处理。然后接收用户通过目标模块的属性配置界面配置的输入数据的类型和位宽,根据输入数据的类型和位宽生成目标模块的硬件代码中的输入端口定义。接着根据目标模块的运算类型,确定与该运算类型对应的至少一个位操作符,并生成对输入数据进行运算的硬件代码。该方法对于仿真系统中硬件电路的模块设计,实现了自动生成硬件代码,提升了设计效率。同时,该方法支持根据用户需求设置输入数据类型和输入数据位宽等参数,具有较高灵活性。
技术研发人员:李京燕,贝晓狮,杜旭东
受保护的技术使用者:北京世冠金洋科技发展有限公司
技术研发日:
技术公布日:2024/11/28
技术研发人员:李京燕,贝晓狮,杜旭东
技术所有人:北京世冠金洋科技发展有限公司
备 注:该技术已申请专利,仅供学习研究,如用于商业用途,请联系技术所有人。
声 明 :此信息收集于网络,如果你是此专利的发明人不想本网站收录此信息请联系我们,我们会在第一时间删除
