Saber不僅支持MAST語言和VHDL‐AMS語言建立模型,也支持C語言建立器件模型,這對(duì)熟悉C語言編程的用戶帶來了很大的方便和實(shí)用。采用C語言建立的模型可以像用硬件語言建立的模型一樣保存和使用。
使用C編譯器,能夠?qū)⒃创a編譯為Windows的動(dòng)態(tài)鏈接庫.dll文件或Linux的.so文件。Saber支持最新的C編譯器,Windows10平臺(tái)可支持Microsoft Visual Studio 2019 v16.4.5;Linux平臺(tái)支持GUN GCC 9.2.0。
一般步驟如下:
1.采用 C語言描述模型的行為特征,包括模型的端口及內(nèi)部邏輯,該步驟建立了模型的源文件,后綴為.c的文件;
2.采用編譯指令對(duì) C 源文件進(jìn)行編譯,生成動(dòng)態(tài)鏈接庫文件,后綴為.dll。該步驟之前需要安裝C 編譯器,如VC++、gcc 等;
3.利用生成的動(dòng)態(tài)鏈接庫文件在 Saber 環(huán)境下生成Saber 模型,后綴為.sin 文件和.ai_sym文件,對(duì)模型進(jìn)行保存使用,也可以將模型添加到模型庫中。
上述步驟的關(guān)鍵是動(dòng)態(tài)鏈接庫文件的生成,動(dòng)態(tài)鏈接庫文件是生成Saber 模型的基礎(chǔ),是從C文件到Saber模型的橋梁。
注意:下文中使用“[ ]”來標(biāo)識(shí)文本,括號(hào)內(nèi)需要你填寫有關(guān)你的設(shè)計(jì)和環(huán)境的具體信息。
具體演示
1>編輯 C 代碼以包含 Saber 連接到你的函數(shù)所需的信息。
C 例程頭文件將以下行添加到你的 .c 文件中,將“[my_function]”替換為你的函數(shù)名稱:
__declspec(dllexport) void [my_function]
(double* inp,long* ninp,long* ifl,long* nifl,double* out,long* nout,long* ofl,long* nofl,double* aundef,long* ier)
C例程示例
以下是包含示例的源代碼,其中有一個(gè)名為“SQRCUBE”的函數(shù):
2>確保你可以從命令行訪問 C 編譯器。假設(shè)我們正在使用 Microsoft Visual Studio 在 Windows 上執(zhí)行此任務(wù)。在命令提示符處鍵入編譯命令“cl”以確保你可以訪問該命令:C:> cl
你應(yīng)該會(huì)收到一條使用消息,說明你沒有包含源文件。
3>將源代碼編譯成動(dòng)態(tài)鏈接庫。從C代碼所在的目錄執(zhí)行此操作。在編譯源代碼時(shí),還需要為構(gòu)建指定兩個(gè)Saber庫(libai_saber和lib_analogy):
C:[my_proj_dir]> cl /LD [source].c
[saber_install_dir]Saberliblibai_saber.lib
[saber_install_dir]Saberliblibai_analogy.lib
假設(shè)附件提供的示例與Saber2022.03的安裝目錄為都在C:Synopsys下,則具體的命令行將是:
C:SynopsysDLL_example > cl /LD sqrcube.c
C:SynopsysSaber64T-2022.0332liblibai_saber.lib
C:SynopsysSaber64T-2022.0332liblibai_analogy.lib
假設(shè)你使用了SaberRD,則具體的命令行將是:
C:SynopsysDLL_example > cl /LD sqrcube.c
C:SynopsysSaberRD64T-2022.0364liblibai_saberhdl.lib
C:SynopsysSaber RD64T-2022.0364liblibai_analogy.lib
其中:"/LD"是 Visual C++ 編譯器選項(xiàng),指定創(chuàng)建動(dòng)態(tài)鏈接庫。不同的編譯器參數(shù)可能不同。
這將輸出一個(gè)名為 sqrcube.dll 的文件,位于當(dāng)前目錄中。
4>現(xiàn)在,你可以在Saber模型中使用此功能。將該函數(shù)聲明為外部例程,然后你將能夠在Saber模型中使用它。以下示例說明了sqrcube函數(shù)的這一點(diǎn)。以下是sqrcube.sin的源代碼:
5>如果你的Saber模型還沒有符號(hào),請(qǐng)使用Saber的自動(dòng)符號(hào)生成器創(chuàng)建一個(gè)。在Sketch中,選擇文件>新建>符號(hào)。將顯示一個(gè)符號(hào)頁面,右鍵單擊并選擇符號(hào)>創(chuàng)建>模型中的符號(hào)。導(dǎo)航到所需文件夾并選擇Saber模型 (.sin)。這將為選定的Saber模型創(chuàng)建一個(gè)符號(hào)。將符號(hào)保存在與Saber模型相同的目錄中。
6>將該模型用作任何其他Saber模型。如果你想與其他人共享此模型,請(qǐng)確保包含 .dll文件以及符號(hào)和模型文件。另外請(qǐng)注意,這是特定于平臺(tái)的。如果你在Windows上編譯并希望在Linux上使用該模型,則必須將C代碼重新編譯為 .so 而不是 .dll。
示例使用
使用方法:
(A) 在 Sketch 中打開附加的測(cè)試原理圖 (test.ai_sch)。
(B) 要運(yùn)行瞬態(tài)分析,請(qǐng)單擊分析 > 時(shí)域 > 瞬態(tài)。默認(rèn)情況下,分析設(shè)置是從默認(rèn)表單文件設(shè)置的。
(C) 在瞬態(tài)分析窗口中單擊確定。
(D) 檢查已經(jīng)在原理圖上的探針中的結(jié)果。
疑難解答
有時(shí),你的環(huán)境可能與示例中提供的 .dll 文件不兼容。例如,如果你使用Windows以外的平臺(tái)運(yùn)行示例,則此示例中的 .dll 文件不兼容。
在這種情況下,將在Saber腳本窗口中收到以下錯(cuò)誤:
Searching for licenses ... SABER_SIMULATOR: license.
Template sqrcube Template test Loading dynamic libraries... *** FATAL ERROR "ERR_NOT_FOUND" ***
File "sqrcube.dll" not found using "SABER_DATA_PATH"
要解決此問題,請(qǐng)使用上述說明重新編譯C代碼以創(chuàng)建動(dòng)態(tài)鏈接庫。可能還需要修改C例程頭文件,具體情況取決于你所使用的環(huán)境。
-
Linux系統(tǒng)
+關(guān)注
關(guān)注
4文章
596瀏覽量
27522 -
VHDL語言
+關(guān)注
關(guān)注
1文章
113瀏覽量
18102 -
C語言
+關(guān)注
關(guān)注
180文章
7614瀏覽量
137801
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
Saber軟件功率MOSFET自建模與仿真驗(yàn)證
請(qǐng)問如何在COSMIC C文件中使用匯編語言?
如何在嵌入式系統(tǒng)設(shè)計(jì)中使用UML技術(shù)?
如何在C程序中使用匯編
如何在Saber中使用模塊
Saber建模方法
如何在Vitis HLS中使用C語言代碼創(chuàng)建AXI4-Lite接口
如何在arduino中使用I2c LCD模塊
![如<b class='flag-5'>何在</b>arduino<b class='flag-5'>中使</b>用I2<b class='flag-5'>c</b> LCD模塊](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論