CN106445524B - 基于模型的SystemC代码生成方法 - Google Patents
基于模型的SystemC代码生成方法 Download PDFInfo
- Publication number
- CN106445524B CN106445524B CN201610850432.0A CN201610850432A CN106445524B CN 106445524 B CN106445524 B CN 106445524B CN 201610850432 A CN201610850432 A CN 201610850432A CN 106445524 B CN106445524 B CN 106445524B
- Authority
- CN
- China
- Prior art keywords
- code
- model
- simulation
- field information
- systemc
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
Abstract
本发明公开了一种基于模型的SystemC代码生成方法,涉及工业电子工具技术领域。该方法,通过继承Modelook中行为逻辑模型数据,实现模型数据SystemC代码的自动生成,直接对行为逻辑模型数据进行数字化仿真验证,大大缩小了经济成本,节约了时间。另外,采用软硬件协同设计语言对行为逻辑模型数据进行验证,实现了对工业电子系统硬件功能和软件功能的集成仿真验证。
Description
技术领域
本发明涉及工业电子工具技术领域,涉及工业电子嵌入式系统建模至仿真过程中仿真代码的自动生成方法,尤其涉及一种基于模型的SystemC代码生成方法。
背景技术
自动代码生成技术作为一个新兴的工程实现技术,在国外航空航天国防领域、汽车领域、工业控制及自动化等领域,得到了广泛的应用。20世纪90年代,随着软件设计工具的发展,国外广泛采用基于模型的设计方法,大大提高了系统的开发效率,基于模型的开发方法中,一项核心的技术就是自动代码生成技术,在快速原型及系统实现等方面做出了巨大贡献。在航空航天国防领域,有两个优秀的设计软件工具——MathWorks公司的MATLAB和Esterel公司的SCADE,在自动代码生成技术方面得到了众多厂商的青睐。
目前,自动代码生成技术多为C++代码自动生成或Java代码自动生成,而工业电子系统需要软硬件协作完成任务,这就使得单一的C++代码和Java代码无法全面的完成工业电子系统的仿真工作,此外,软硬件行为逻辑模型的验证,也亟需通过数字化的手段实现。
发明内容
本发明的目的在于提供一种基于模型的SystemC代码生成方法,从而解决现有技术中存在的前述问题。
为了实现上述目的,本发明采用的技术方案如下:
一种基于模型的SystemC代码生成方法,包括如下步骤:
S1,将Simox仿真系统中不同的模型数据,分别使用不同的数据库表单和字段进行存储;
S2,逐一读取各数据库表单中的字段信息,并将所述字段信息转化为相应的SystemC代码;并将所有的SystemC代码合并组成为符合SystemC标准的完整函数体;
S3,生成能够在所述完整函数体中调用的与Simox仿真系统中的模型对应的主函数;
S4,生成端口描述代码。
优选地,S1中,所述Simox仿真系统中的模型包括:
场景模型,包含完整的仿真模型;
设备模型,为仿真场景中用的设备,模拟真实设备;
信号模型,为仿真场景中设备间的联系、触发关系,模拟真实环境中的信号
逻辑模型,为仿真场景中,设备间信号的逻辑关系;
激励模型,为驱动整个仿真场景运行的初始条件或初始值;
监控模型,记录仿真过程中,完整的数据信息、计算过程和显示结果;
仿真控制模型,用于控制仿真过程中的步长、时间、触发条件、运行速度和算法信息;
S1中,所述数据库表单包括:场景表单、设备表单、信号表单、逻辑表单、激励表单、监控表单和仿真控制表单。
优选地,S2具体为:
读取所述场景表单中的字段信息,转化为场景描述代码和场景代码文件;
读取所述设备表单中的字段信息,转化为设备描述代码和设备代码文件;
读取所述信号表单中的字段信息,转化为信号描述代码和信号代码文件;
读取所述逻辑表单中的字段信息,转化为逻辑描述代码和逻辑代码文件;
读取所述激励表单中的字段信息,转化为激励描述代码和激励代码文件;
读取所述监控表单中的字段信息,转化为监控描述代码和监控代码文件,在所述监控描述代码中自动添加逻辑计算结果、输入、输出功能代码,组成符合SystemC标准的完整的用于获取及显示仿真代码运行结果数据的一个函数体;
读取所述仿真控制表单的字段信息,转化为仿真控制描述代码和仿真控制代码文件,并将所述设备描述代码、信号描述代码、逻辑设备描述代码和仿真控制描述代码合并组成符合SystemC标准的用于仿真运行、运算的多个完整函数体。
优选地,S3具体为,在S2中读取到的所有字段信息中,单独提取基本信息,并添加函数头,生成能够在所述完整函数体中调用的与Simox仿真系统中的模型对应的主函数。
优选地,所述基本信息包括名称。
优选地,所述主函数包括设备函数、信号函数、逻辑函数、激励函数、监控函数和仿真控制函数。
优选地,S4具体为,将信号的输入输出关系及信号的类型,转换为SystemC代码中的端口类型,并把名称统一,保留类型,生成端口描述代码。
本发明的有益效果是:本发明实施例提供的一种基于模型的SystemC代码的生成方法,通过继承Modelook中行为逻辑模型数据,实现模型数据SystemC代码的自动生成,直接对行为逻辑模型数据进行数字化仿真验证,大大缩小了经济成本,节约了时间。另外,采用软硬件协同设计语言对行为逻辑模型数据进行验证,实现了对工业电子系统硬件功能和软件功能的集成仿真验证。
附图说明
图1是本发明实施例提供的一种基于模型的SystemC代码生成方法流程示意图;
图2是具体实施例的方法流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明实施例提供了一种基于模型的SystemC代码生成方法,包括如下步骤:
S1,将Simox仿真系统中不同的模型数据,分别使用不同的数据库表单和字段进行存储;
S2,逐一读取各数据库表单中的字段信息,并将所述字段信息转化为相应的SystemC代码;并将所有的SystemC代码合并组成为符合SystemC标准的完整函数体;
S3,生成能够在所述完整函数体中调用的与Simox仿真系统中的模型对应的主函数;
S4,生成端口描述代码。
其中,S1中,所述Simox仿真系统中的模型包括:
场景模型,包含完整的仿真模型;
设备模型,为仿真场景中用的设备,模拟真实设备;
信号模型,为仿真场景中设备间的联系、触发关系,模拟真实环境中的信号
逻辑模型,为仿真场景中,设备间信号的逻辑关系;
激励模型,为驱动整个仿真场景运行的初始条件或初始值;
监控模型,记录仿真过程中,完整的数据信息、计算过程和显示结果;
仿真控制模型,用于控制仿真过程中的步长、时间、触发条件、运行速度和算法信息;
S1中,所述数据库表单包括:场景表单、设备表单、信号表单、逻辑表单、激励表单、监控表单和仿真控制表单。
S2具体可以为:
读取所述场景表单中的字段信息,转化为场景描述代码和场景代码文件;
读取所述设备表单中的字段信息,转化为设备描述代码和设备代码文件;
读取所述信号表单中的字段信息,转化为信号描述代码和信号代码文件;
读取所述逻辑表单中的字段信息,转化为逻辑描述代码和逻辑代码文件;
读取所述激励表单中的字段信息,转化为激励描述代码和激励代码文件;
读取所述监控表单中的字段信息,转化为监控描述代码和监控代码文件,在所述监控描述代码中自动添加逻辑计算结果、输入、输出功能代码,组成符合SystemC标准的完整的用于获取及显示仿真代码运行结果数据的一个函数体;
读取所述仿真控制表单的字段信息,转化为仿真控制描述代码和仿真控制代码文件,并将所述设备描述代码、信号描述代码、逻辑设备描述代码和仿真控制描述代码合并组成符合SystemC标准的用于仿真运行、运算的多个完整函数体。
其中,生成的代码,里面包括了可描述模型完整信息的函数、运算、参数、条件、参数类型等信息,可在VC6.0的环境中编译及运行,并可利用VC6.0环境中的查错功能,在编译过程中定位自动生成代码的格式错误,并可设置断点。编译通过后,代码可直接运行,在运行过程中,通过生成的激励代码中的条件或数字参数,在函数运算中进行运算,输出运算结果,并用监控代码读取输出的结果并在VC6.0的环境下显示,观察系统运行状态和结果,实现了基于模型的数字化的系统的代码生成和模拟运行。
代码文件是作为在环境中运行的参数、条件,可在VC6.0的环境下编译,将静态代码转化为动态运行状态。
S3具体可以为,在S2中读取到的所有字段信息中,单独提取基本信息,并添加函数头,生成能够在所述完整函数体中调用的与Simox仿真系统中的模型对应的主函数。
所述基本信息可以包括名称。
如本领域技术人员可以理解的,除了名称外,还可以是其他的基本信息。
所述主函数包括设备函数、信号函数、逻辑函数、激励函数、监控函数和仿真控制函数。
本发明实施例中,S4具体可以为,将信号的输入输出关系及信号的类型,转换为SystemC代码中的端口类型,并把名称统一,保留类型,生成端口描述代码。
SystemC代码为一种软硬件描述性代码,在代码描述中,有“端口”描述,而在Simox仿真模型中,没有“端口”的描述或设计信息,故,如果需要构成可以在SystemC环境中编译的代码文件,必须生成“端口”描述代码,本发明实施例中,将信号的输入输出关系及信号的类型,转换为SystemC代码中的端口类型,并把名称统一,类型保留,即解决了此问题。
具体实施例
本发明实施例提供的基于模型的SystemC仿真代码的生成方法,通过获取Modelook中的设备模型、场景模型、逻辑模型、信号模型、条件模型、监控模型、激励模型,自动生成基于模型的SystemC代码,生成后在VC6.0的环境中编译运行。具体包括如下步骤:
a)获取场景模型、设备模型、信号模型、激励模型的名称及描述信息,生成主函数,并将场景模型、设备模型、信号模型、激励模型的描述信息添加至主函数中,生成完成后,将整个代码生成为可移植的C语言.h及.c代码文件。
b)获取场景模型信息,将场景模型名称生成为函数名,并根据模型存储关系获取场景中设备、信号模型名称,生成至函数中,生成完成后,将整个代码生成为可移植的C语言.h及.c代码文件。
c)获取设备模型信息,将设备模型名称生成为函数名,并根据模型存储关系获取设备中信号模型、逻辑模型,生成至函数中,生成完成后,将整个代码生成为可移植的C语言.h及.c代码文件。
d)获取监控模型信息,将监控模型名称生成为函数名,并根据模型存储关系获取监控中所需读取监控的信号、设备及运算信息,生成完成后,将整个代码生成为可移植的C语言.h及.c代码文件。
e)获取激励模型信息,将激励模型名称生成为函数名,并根据模型存储关系获取监控中所需读取激励的信号、初始运算信息,生成完成后,将整个代码生成为可移植的C语言.h及.c代码文件。
所有代码及文件生成完成后,可将代码文件移植至VC6.0的编译环境中,编译、运行代码,并根据运行过程及结果显示运行状态。可参见图2。
通过采用本发明公开的上述技术方案,得到了如下有益的效果:本发明实施例提供的一种基于模型的SystemC仿真代码的生成方法,通过继承Modelook中行为逻辑模型数据,实现模型数据SystemC代码的自动生成,直接对行为逻辑模型数据进行数字化仿真验证,大大缩小了经济成本,节约了时间。另外,采用软硬件协同设计语言对行为逻辑模型数据进行验证,实现了对工业电子系统硬件功能和软件功能的集成仿真验证
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域人员应该理解的是,上述实施例提供的方法步骤的时序可根据实际情况进行适应性调整,也可根据实际情况并发进行。
上述实施例涉及的方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机设备可读取的存储介质中,用于执行上述各实施例方法所述的全部或部分步骤。所述计算机设备,例如:个人计算机、服务器、网络设备、智能移动终端、智能家居设备、穿戴式智能设备、车载智能设备等;所述的存储介质,例如:RAM、ROM、磁碟、磁带、光盘、闪存、U盘、移动硬盘、存储卡、记忆棒、网络服务器存储、网络云存储等。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
Claims (4)
1.一种基于模型的SystemC代码生成方法,其特征在于,包括如下步骤:
S1,将Simox仿真系统中不同的模型数据,分别使用不同的数据库表单和字段进行存储;
S2,逐一读取各数据库表单中的字段信息,并将所述字段信息转化为相应的SystemC代码;并将所有的Sys temC代码合并组成为符合SystemC标准的完整函数体;
S3,生成能够在所述完整函数体中调用的与Simox仿真系统中的模型对应的主函数;
S4,生成端口描述代码,
其中,S3具体为,在S2中读取到的所有字段信息中,单独提取基本信息,并添加函数头,生成能够在所述完整函数体中调用的与Simox仿真系统中的模型对应的主函数;
S1中,所述Simox仿真系统中的模型包括:
场景模型,包含完整的仿真模型;
设备模型,为仿真场景中用的设备,模拟真实设备;
信号模型,为仿真场景中设备间的联系、触发关系,模拟真实环境中的信号逻辑模型,为仿真场景中,设备间信号的逻辑关系;
激励模型,为驱动整个仿真场景运行的初始条件或初始值;
监控模型,记录仿真过程中,完整的数据信息、计算过程和显示结果;
仿真控制模型,用于控制仿真过程中的步长、时间、触发条件、运行速度和算法信息;
S1中,所述数据库表单包括:场景表单、设备表单、信号表单、逻辑表单、激励表单、监控表单和仿真控制表单;
S2具体为:
读取所述场景表单中的字段信息,转化为场景描述代码和场景代码文件;
读取所述设备表单中的字段信息,转化为设备描述代码和设备代码文件;
读取所述信号表单中的字段信息,转化为信号描述代码和信号代码文件;
读取所述逻辑表单中的字段信息,转化为逻辑描述代码和逻辑代码文件;
读取所述激励表单中的字段信息,转化为激励描述代码和激励代码文件;
读取所述监控表单中的字段信息,转化为监控描述代码和监控代码文件,在所述监控描述代码中自动添加逻辑计算结果、输入、输出功能代码,组成符合SystemC标准的完整的用于获取及显示仿真代码运行结果数据的一个函数体;
读取所述仿真控制表单的字段信息,转化为仿真控制描述代码和仿真控制代码文件,并将所述设备描述代码、信号描述代码、逻辑设备描述代码和仿真控制描述代码合并组成符合SystemC标准的用于仿真运行、运算的多个完整函数体;
生成的代码,包括可描述模型完整信息的函数、运算、参数、条件、参数类型信息,可在VC6.0的环境中编译及运行,并可利用VC6.0环境中的查错功能,在编译过程中定位自动生成代码的格式错误,并可设置断点;编译通过后,代码可直接运行,在运行过程中,通过生成的激励代码中的条件或数字参数,在函数运算中进行运算,输出运算结果,并用监控代码读取输出的结果并在VC6.0的环境下显示,观察系统运行状态和结果,实现了基于模型的数字化的系统的代码生成和模拟运行。
2.根据权利要求1所述的基于模型的SystemC代码生成方法,其特征在于,所述基本信息包括名称。
3.根据权利要求1所述的基于模型的SystemC代码生成方法,其特征在于,所述主函数包括设备函数、信号函数、逻辑函数、激励函数、监控函数和仿真控制函数。
4.根据权利要求1所述的基于模型的SystemC代码生成方法,其特征在于,S4具体为,将信号的输入输出关系及信号的类型,转换为SystemC代码中的端口类型,并把名称统一,保留类型,生成端口描述代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610850432.0A CN106445524B (zh) | 2016-09-26 | 2016-09-26 | 基于模型的SystemC代码生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610850432.0A CN106445524B (zh) | 2016-09-26 | 2016-09-26 | 基于模型的SystemC代码生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106445524A CN106445524A (zh) | 2017-02-22 |
CN106445524B true CN106445524B (zh) | 2019-12-17 |
Family
ID=58169460
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610850432.0A Active CN106445524B (zh) | 2016-09-26 | 2016-09-26 | 基于模型的SystemC代码生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106445524B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2659742C1 (ru) * | 2017-08-17 | 2018-07-03 | Акционерное общество "Лаборатория Касперского" | Способ эмуляции исполнения файлов, содержащих инструкции, отличные от машинных |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102231132A (zh) * | 2011-06-30 | 2011-11-02 | 西北工业大学 | 一种基于SystemC的AADL软构件模型仿真测试实例生成方法 |
CN105354036A (zh) * | 2015-11-26 | 2016-02-24 | 深圳市金证科技股份有限公司 | 数据库操作代码生成方法及装置 |
CN105760168A (zh) * | 2016-02-23 | 2016-07-13 | 深圳竹信科技有限公司 | 一种代码文件自动生成方法及系统 |
-
2016
- 2016-09-26 CN CN201610850432.0A patent/CN106445524B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102231132A (zh) * | 2011-06-30 | 2011-11-02 | 西北工业大学 | 一种基于SystemC的AADL软构件模型仿真测试实例生成方法 |
CN105354036A (zh) * | 2015-11-26 | 2016-02-24 | 深圳市金证科技股份有限公司 | 数据库操作代码生成方法及装置 |
CN105760168A (zh) * | 2016-02-23 | 2016-07-13 | 深圳竹信科技有限公司 | 一种代码文件自动生成方法及系统 |
Non-Patent Citations (1)
Title |
---|
《模型驱动的嵌入式系统设计与性能优化》;栾静等;《计算机工程与应用》;20060731;第116页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106445524A (zh) | 2017-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107644286B (zh) | 工作流处理方法及装置 | |
EP2290535A1 (en) | Integration environment generator | |
CN110472154B (zh) | 一种资源推送方法、装置、电子设备及可读存储介质 | |
CN108279885B (zh) | 一种对多个模型代码进行软件集成的方法及装置 | |
CN101794224B (zh) | 一种基于性质规约模式的软件运行时性质监测方法 | |
CN109522228B (zh) | 接口自动化测试数据构造方法、装置、平台及存储介质 | |
CN110019116B (zh) | 数据追溯方法、装置、数据处理设备及计算机存储介质 | |
CN104881311A (zh) | 一种版本兼容的判断方法及装置 | |
CN107797805B (zh) | 一种代码封装方法、装置及计算机可读存储介质 | |
CN103942140A (zh) | 一种测试程序自动转换方法 | |
CN110109658B (zh) | 一种基于形式化模型的ros代码生成器及代码生成方法 | |
CN106445524B (zh) | 基于模型的SystemC代码生成方法 | |
Nägele et al. | Rapid construction of co-simulations of cyber-physical systems in HLA using a DSL | |
Englisch et al. | YellowCar | |
US20140324918A1 (en) | Database Generation System, Method For Generating A Database, Product Line Management System And Non-Transitory Data Carrier | |
JP2017522639A5 (zh) | ||
CN112948233A (zh) | 一种接口测试方法、装置、终端设备及介质 | |
CN116820480A (zh) | 一种提升代码可读性的方法及装置 | |
CN112119393A (zh) | 跨学科的仿真模型的创建 | |
Andersson et al. | Extracting simulation models from complex embedded real-time systems | |
US9741162B2 (en) | Functional visualization in system-level multi-domain simulators | |
CN110109697B (zh) | 神经网络模型的sdk输出方法、装置、电子设备及存储介质 | |
CN108897677B (zh) | 日志构建方法和系统 | |
Kugler et al. | Testing scenario-based models | |
CN112527631A (zh) | bug定位方法、系统、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |