本發(fā)明涉及工業(yè)電子工具技術(shù)領(lǐng)域,涉及工業(yè)電子嵌入式系統(tǒng)建模至仿真過程中仿真代碼的自動生成方法,尤其涉及一種基于模型的SystemC代碼生成方法。
背景技術(shù):
自動代碼生成技術(shù)作為一個(gè)新興的工程實(shí)現(xiàn)技術(shù),在國外航空航天國防領(lǐng)域、汽車領(lǐng)域、工業(yè)控制及自動化等領(lǐng)域,得到了廣泛的應(yīng)用。20世紀(jì)90年代,隨著軟件設(shè)計(jì)工具的發(fā)展,國外廣泛采用基于模型的設(shè)計(jì)方法,大大提高了系統(tǒng)的開發(fā)效率,基于模型的開發(fā)方法中,一項(xiàng)核心的技術(shù)就是自動代碼生成技術(shù),在快速原型及系統(tǒng)實(shí)現(xiàn)等方面做出了巨大貢獻(xiàn)。在航空航天國防領(lǐng)域,有兩個(gè)優(yōu)秀的設(shè)計(jì)軟件工具——MathWorks公司的MATLAB和Esterel公司的SCADE,在自動代碼生成技術(shù)方面得到了眾多廠商的青睞。
目前,自動代碼生成技術(shù)多為C++代碼自動生成或Java代碼自動生成,而工業(yè)電子系統(tǒng)需要軟硬件協(xié)作完成任務(wù),這就使得單一的C++代碼和Java代碼無法全面的完成工業(yè)電子系統(tǒng)的仿真工作,此外,軟硬件行為邏輯模型的驗(yàn)證,也亟需通過數(shù)字化的手段實(shí)現(xiàn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種基于模型的SystemC代碼生成方法,從而解決現(xiàn)有技術(shù)中存在的前述問題。
為了實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案如下:
一種基于模型的SystemC代碼生成方法,包括如下步驟:
S1,將Simox仿真系統(tǒng)中不同的模型數(shù)據(jù),分別使用不同的數(shù)據(jù)庫表單和字段進(jìn)行存儲;
S2,逐一讀取各數(shù)據(jù)庫表單中的字段信息,并將所述字段信息轉(zhuǎn)化為相應(yīng)的SystemC代碼;并將所有的SystemC代碼合并組成為符合SystemC標(biāo)準(zhǔn)的完整函數(shù)體;
S3,生成能夠在所述完整函數(shù)體中調(diào)用的與Simox仿真系統(tǒng)中的模型對應(yīng)的主函數(shù);
S4,生成端口描述代碼。
優(yōu)選地,S1中,所述Simox仿真系統(tǒng)中的模型包括:
場景模型,包含完整的仿真模型;
設(shè)備模型,為仿真場景中用的設(shè)備,模擬真實(shí)設(shè)備;
信號模型,為仿真場景中設(shè)備間的聯(lián)系、觸發(fā)關(guān)系,模擬真實(shí)環(huán)境中的信號
邏輯模型,為仿真場景中,設(shè)備間信號的邏輯關(guān)系;
激勵模型,為驅(qū)動整個(gè)仿真場景運(yùn)行的初始條件或初始值;
監(jiān)控模型,記錄仿真過程中,完整的數(shù)據(jù)信息、計(jì)算過程和顯示結(jié)果;
仿真控制模型,用于控制仿真過程中的步長、時(shí)間、觸發(fā)條件、運(yùn)行速度和算法信息;
S1中,所述數(shù)據(jù)庫表單包括:場景表單、設(shè)備表單、信號表單、邏輯表單、激勵表單、監(jiān)控表單和仿真控制表單。
優(yōu)選地,S2具體為:
讀取所述場景表單中的字段信息,轉(zhuǎn)化為場景描述代碼和場景代碼文件;
讀取所述設(shè)備表單中的字段信息,轉(zhuǎn)化為設(shè)備描述代碼和設(shè)備代碼文件;
讀取所述信號表單中的字段信息,轉(zhuǎn)化為信號描述代碼和信號代碼文件;
讀取所述邏輯表單中的字段信息,轉(zhuǎn)化為邏輯描述代碼和邏輯代碼文件;
讀取所述激勵表單中的字段信息,轉(zhuǎn)化為激勵描述代碼和激勵代碼文件;
讀取所述監(jiān)控表單中的字段信息,轉(zhuǎn)化為監(jiān)控描述代碼和監(jiān)控代碼文件,在所述監(jiān)控描述代碼中自動添加邏輯計(jì)算結(jié)果、輸入、輸出功能代碼,組成符合SystemC標(biāo)準(zhǔn)的完整的用于獲取及顯示仿真代碼運(yùn)行結(jié)果數(shù)據(jù)的一個(gè)函數(shù)體;
讀取所述仿真控制表單的字段信息,轉(zhuǎn)化為仿真控制描述代碼和仿真控制代碼文件,并將所述設(shè)備描述代碼、信號描述代碼、邏輯設(shè)備描述代碼和仿真控制描述代碼合并組成符合SystemC標(biāo)準(zhǔn)的用于仿真運(yùn)行、運(yùn)算的多個(gè)完整函數(shù)體。
優(yōu)選地,S3具體為,在S2中讀取到的所有字段信息中,單獨(dú)提取基本信息,并添加函數(shù)頭,生成能夠在所述完整函數(shù)體中調(diào)用的與Simox仿真系統(tǒng)中的模型對應(yīng)的主函數(shù)。
優(yōu)選地,所述基本信息包括名稱。
優(yōu)選地,所述主函數(shù)包括設(shè)備函數(shù)、信號函數(shù)、邏輯函數(shù)、激勵函數(shù)、監(jiān)控函數(shù)和仿真控制函數(shù)。
優(yōu)選地,S4具體為,將信號的輸入輸出關(guān)系及信號的類型,轉(zhuǎn)換為SystemC代碼中的端口類型,并把名稱統(tǒng)一,保留類型,生成端口描述代碼。
本發(fā)明的有益效果是:本發(fā)明實(shí)施例提供的一種基于模型的SystemC代碼的生成方法,通過繼承Modelook中行為邏輯模型數(shù)據(jù),實(shí)現(xiàn)模型數(shù)據(jù)SystemC代碼的自動生成,直接對行為邏輯模型數(shù)據(jù)進(jìn)行數(shù)字化仿真驗(yàn)證,大大縮小了經(jīng)濟(jì)成本,節(jié)約了時(shí)間。另外,采用軟硬件協(xié)同設(shè)計(jì)語言對行為邏輯模型數(shù)據(jù)進(jìn)行驗(yàn)證,實(shí)現(xiàn)了對工業(yè)電子系統(tǒng)硬件功能和軟件功能的集成仿真驗(yàn)證。
附圖說明
圖1是本發(fā)明實(shí)施例提供的一種基于模型的SystemC代碼生成方法流程示意圖;
圖2是具體實(shí)施例的方法流程示意圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施方式僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
如圖1所示,本發(fā)明實(shí)施例提供了一種基于模型的SystemC代碼生成方法,包括如下步驟:
S1,將Simox仿真系統(tǒng)中不同的模型數(shù)據(jù),分別使用不同的數(shù)據(jù)庫表單和字段進(jìn)行存儲;
S2,逐一讀取各數(shù)據(jù)庫表單中的字段信息,并將所述字段信息轉(zhuǎn)化為相應(yīng)的SystemC代碼;并將所有的SystemC代碼合并組成為符合SystemC標(biāo)準(zhǔn)的完整函數(shù)體;
S3,生成能夠在所述完整函數(shù)體中調(diào)用的與Simox仿真系統(tǒng)中的模型對應(yīng)的主函數(shù);
S4,生成端口描述代碼。
其中,S1中,所述Simox仿真系統(tǒng)中的模型包括:
場景模型,包含完整的仿真模型;
設(shè)備模型,為仿真場景中用的設(shè)備,模擬真實(shí)設(shè)備;
信號模型,為仿真場景中設(shè)備間的聯(lián)系、觸發(fā)關(guān)系,模擬真實(shí)環(huán)境中的信號
邏輯模型,為仿真場景中,設(shè)備間信號的邏輯關(guān)系;
激勵模型,為驅(qū)動整個(gè)仿真場景運(yùn)行的初始條件或初始值;
監(jiān)控模型,記錄仿真過程中,完整的數(shù)據(jù)信息、計(jì)算過程和顯示結(jié)果;
仿真控制模型,用于控制仿真過程中的步長、時(shí)間、觸發(fā)條件、運(yùn)行速度和算法信息;
S1中,所述數(shù)據(jù)庫表單包括:場景表單、設(shè)備表單、信號表單、邏輯表單、激勵表單、監(jiān)控表單和仿真控制表單。
S2具體可以為:
讀取所述場景表單中的字段信息,轉(zhuǎn)化為場景描述代碼和場景代碼文件;
讀取所述設(shè)備表單中的字段信息,轉(zhuǎn)化為設(shè)備描述代碼和設(shè)備代碼文件;
讀取所述信號表單中的字段信息,轉(zhuǎn)化為信號描述代碼和信號代碼文件;
讀取所述邏輯表單中的字段信息,轉(zhuǎn)化為邏輯描述代碼和邏輯代碼文件;
讀取所述激勵表單中的字段信息,轉(zhuǎn)化為激勵描述代碼和激勵代碼文件;
讀取所述監(jiān)控表單中的字段信息,轉(zhuǎn)化為監(jiān)控描述代碼和監(jiān)控代碼文件,在所述監(jiān)控描述代碼中自動添加邏輯計(jì)算結(jié)果、輸入、輸出功能代碼,組成符合SystemC標(biāo)準(zhǔn)的完整的用于獲取及顯示仿真代碼運(yùn)行結(jié)果數(shù)據(jù)的一個(gè)函數(shù)體;
讀取所述仿真控制表單的字段信息,轉(zhuǎn)化為仿真控制描述代碼和仿真控制代碼文件,并將所述設(shè)備描述代碼、信號描述代碼、邏輯設(shè)備描述代碼和仿真控制描述代碼合并組成符合SystemC標(biāo)準(zhǔn)的用于仿真運(yùn)行、運(yùn)算的多個(gè)完整函數(shù)體。
其中,生成的代碼,里面包括了可描述模型完整信息的函數(shù)、運(yùn)算、參數(shù)、條件、參數(shù)類型等信息,可在VC6.0的環(huán)境中編譯及運(yùn)行,并可利用VC6.0環(huán)境中的查錯功能,在編譯過程中定位自動生成代碼的格式錯誤,并可設(shè)置斷點(diǎn)。編譯通過后,代碼可直接運(yùn)行,在運(yùn)行過程中,通過生成的激勵代碼中的條件或數(shù)字參數(shù),在函數(shù)運(yùn)算中進(jìn)行運(yùn)算,輸出運(yùn)算結(jié)果,并用監(jiān)控代碼讀取輸出的結(jié)果并在VC6.0的環(huán)境下顯示,觀察系統(tǒng)運(yùn)行狀態(tài)和結(jié)果,實(shí)現(xiàn)了基于模型的數(shù)字化的系統(tǒng)的代碼生成和模擬運(yùn)行。
代碼文件是作為在環(huán)境中運(yùn)行的參數(shù)、條件,可在VC6.0的環(huán)境下編譯,將靜態(tài)代碼轉(zhuǎn)化為動態(tài)運(yùn)行狀態(tài)。
S3具體可以為,在S2中讀取到的所有字段信息中,單獨(dú)提取基本信息,并添加函數(shù)頭,生成能夠在所述完整函數(shù)體中調(diào)用的與Simox仿真系統(tǒng)中的模型對應(yīng)的主函數(shù)。
所述基本信息可以包括名稱。
如本領(lǐng)域技術(shù)人員可以理解的,除了名稱外,還可以是其他的基本信息。
所述主函數(shù)包括設(shè)備函數(shù)、信號函數(shù)、邏輯函數(shù)、激勵函數(shù)、監(jiān)控函數(shù)和仿真控制函數(shù)。
本發(fā)明實(shí)施例中,S4具體可以為,將信號的輸入輸出關(guān)系及信號的類型,轉(zhuǎn)換為SystemC代碼中的端口類型,并把名稱統(tǒng)一,保留類型,生成端口描述代碼。
SystemC代碼為一種軟硬件描述性代碼,在代碼描述中,有“端口”描述,而在Simox仿真模型中,沒有“端口”的描述或設(shè)計(jì)信息,故,如果需要構(gòu)成可以在SystemC環(huán)境中編譯的代碼文件,必須生成“端口”描述代碼,本發(fā)明實(shí)施例中,將信號的輸入輸出關(guān)系及信號的類型,轉(zhuǎn)換為SystemC代碼中的端口類型,并把名稱統(tǒng)一,類型保留,即解決了此問題。
具體實(shí)施例
本發(fā)明實(shí)施例提供的基于模型的SystemC仿真代碼的生成方法,通過獲取Modelook中的設(shè)備模型、場景模型、邏輯模型、信號模型、條件模型、監(jiān)控模型、激勵模型,自動生成基于模型的SystemC代碼,生成后在VC6.0的環(huán)境中編譯運(yùn)行。具體包括如下步驟:
a)獲取場景模型、設(shè)備模型、信號模型、激勵模型的名稱及描述信息,生成主函數(shù),并將場景模型、設(shè)備模型、信號模型、激勵模型的描述信息添加至主函數(shù)中,生成完成后,將整個(gè)代碼生成為可移植的C語言.h及.c代碼文件。
b)獲取場景模型信息,將場景模型名稱生成為函數(shù)名,并根據(jù)模型存儲關(guān)系獲取場景中設(shè)備、信號模型名稱,生成至函數(shù)中,生成完成后,將整個(gè)代碼生成為可移植的C語言.h及.c代碼文件。
c)獲取設(shè)備模型信息,將設(shè)備模型名稱生成為函數(shù)名,并根據(jù)模型存儲關(guān)系獲取設(shè)備中信號模型、邏輯模型,生成至函數(shù)中,生成完成后,將整個(gè)代碼生成為可移植的C語言.h及.c代碼文件。
d)獲取監(jiān)控模型信息,將監(jiān)控模型名稱生成為函數(shù)名,并根據(jù)模型存儲關(guān)系獲取監(jiān)控中所需讀取監(jiān)控的信號、設(shè)備及運(yùn)算信息,生成完成后,將整個(gè)代碼生成為可移植的C語言.h及.c代碼文件。
e)獲取激勵模型信息,將激勵模型名稱生成為函數(shù)名,并根據(jù)模型存儲關(guān)系獲取監(jiān)控中所需讀取激勵的信號、初始運(yùn)算信息,生成完成后,將整個(gè)代碼生成為可移植的C語言.h及.c代碼文件。
所有代碼及文件生成完成后,可將代碼文件移植至VC6.0的編譯環(huán)境中,編譯、運(yùn)行代碼,并根據(jù)運(yùn)行過程及結(jié)果顯示運(yùn)行狀態(tài)??蓞⒁妶D2。
通過采用本發(fā)明公開的上述技術(shù)方案,得到了如下有益的效果:本發(fā)明實(shí)施例提供的一種基于模型的SystemC仿真代碼的生成方法,通過繼承Modelook中行為邏輯模型數(shù)據(jù),實(shí)現(xiàn)模型數(shù)據(jù)SystemC代碼的自動生成,直接對行為邏輯模型數(shù)據(jù)進(jìn)行數(shù)字化仿真驗(yàn)證,大大縮小了經(jīng)濟(jì)成本,節(jié)約了時(shí)間。另外,采用軟硬件協(xié)同設(shè)計(jì)語言對行為邏輯模型數(shù)據(jù)進(jìn)行驗(yàn)證,實(shí)現(xiàn)了對工業(yè)電子系統(tǒng)硬件功能和軟件功能的集成仿真驗(yàn)證
本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。
本領(lǐng)域人員應(yīng)該理解的是,上述實(shí)施例提供的方法步驟的時(shí)序可根據(jù)實(shí)際情況進(jìn)行適應(yīng)性調(diào)整,也可根據(jù)實(shí)際情況并發(fā)進(jìn)行。
上述實(shí)施例涉及的方法中的全部或部分步驟可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以存儲于計(jì)算機(jī)設(shè)備可讀取的存儲介質(zhì)中,用于執(zhí)行上述各實(shí)施例方法所述的全部或部分步驟。所述計(jì)算機(jī)設(shè)備,例如:個(gè)人計(jì)算機(jī)、服務(wù)器、網(wǎng)絡(luò)設(shè)備、智能移動終端、智能家居設(shè)備、穿戴式智能設(shè)備、車載智能設(shè)備等;所述的存儲介質(zhì),例如:RAM、ROM、磁碟、磁帶、光盤、閃存、U盤、移動硬盤、存儲卡、記憶棒、網(wǎng)絡(luò)服務(wù)器存儲、網(wǎng)絡(luò)云存儲等。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視本發(fā)明的保護(hù)范圍。