那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在Saber中使用C語言進行建模呢?

冬至子 ? 來源:Saber仿真 ? 作者:Greatalent ? 2023-12-05 11:30 ? 次閱讀

Saber不僅支持MAST語言和VHDL‐AMS語言建立模型,也支持C語言建立器件模型,這對熟悉C語言編程的用戶帶來了很大的方便和實用。采用C語言建立的模型可以像用硬件語言建立的模型一樣保存和使用。

使用C編譯器,能夠將源代碼編譯為Windows的動態鏈接庫.dll文件或Linux的.so文件。Saber支持最新的C編譯器,Windows10平臺可支持Microsoft Visual Studio 2019 v16.4.5;Linux平臺支持GUN GCC 9.2.0。

一般步驟如下:

1.采用 C語言描述模型的行為特征,包括模型的端口及內部邏輯,該步驟建立了模型的源文件,后綴為.c的文件;
2.采用編譯指令對 C 源文件進行編譯,生成動態鏈接庫文件,后綴為.dll。該步驟之前需要安裝C 編譯器,如VC++、gcc 等;
3.利用生成的動態鏈接庫文件在 Saber 環境下生成Saber 模型,后綴為.sin 文件和.ai_sym文件,對模型進行保存使用,也可以將模型添加到模型庫中。

上述步驟的關鍵是動態鏈接庫文件的生成,動態鏈接庫文件是生成Saber 模型的基礎,是從C文件到Saber模型的橋梁。

注意:下文中使用“[ ]”來標識文本,括號內需要你填寫有關你的設計和環境的具體信息

具體演示

1>編輯 C 代碼以包含 Saber 連接到你的函數所需的信息。

C 例程頭文件將以下行添加到你的 .c 文件中,將“[my_function]”替換為你的函數名稱:

__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例程示例

以下是包含示例的源代碼,其中有一個名為“SQRCUBE”的函數:

圖片

2>確保你可以從命令行訪問 C 編譯器。假設我們正在使用 Microsoft Visual Studio 在 Windows 上執行此任務。在命令提示符處鍵入編譯命令“cl”以確保你可以訪問該命令:C:> cl

你應該會收到一條使用消息,說明你沒有包含源文件。

3>將源代碼編譯成動態鏈接庫。從C代碼所在的目錄執行此操作。在編譯源代碼時,還需要為構建指定兩個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

假設附件提供的示例與Saber2022.03的安裝目錄為都在C:Synopsys下,則具體的命令行將是:

C:SynopsysDLL_example > cl /LD sqrcube.c

C:SynopsysSaber64T-2022.0332liblibai_saber.lib

C:SynopsysSaber64T-2022.0332liblibai_analogy.lib

假設你使用了SaberRD,則具體的命令行將是:

C:SynopsysDLL_example > cl /LD sqrcube.c

C:SynopsysSaberRD64T-2022.0364liblibai_saberhdl.lib

C:SynopsysSaber RD64T-2022.0364liblibai_analogy.lib

其中:"/LD"是 Visual C++ 編譯器選項,指定創建動態鏈接庫。不同的編譯器參數可能不同。

這將輸出一個名為 sqrcube.dll 的文件,位于當前目錄中。

4>現在,你可以在Saber模型中使用此功能。將該函數聲明為外部例程,然后你將能夠在Saber模型中使用它。以下示例說明了sqrcube函數的這一點。以下是sqrcube.sin的源代碼:

圖片

5>如果你的Saber模型還沒有符號,請使用Saber的自動符號生成器創建一個。在Sketch中,選擇文件>新建>符號。將顯示一個符號頁面,右鍵單擊并選擇符號>創建>模型中的符號。導航到所需文件夾并選擇Saber模型 (.sin)。這將為選定的Saber模型創建一個符號。將符號保存在與Saber模型相同的目錄中。

6>將該模型用作任何其他Saber模型。如果你想與其他人共享此模型,請確保包含 .dll文件以及符號和模型文件。另外請注意,這是特定于平臺的。如果你在Windows上編譯并希望在Linux上使用該模型,則必須將C代碼重新編譯為 .so 而不是 .dll。

示例使用

使用方法:

(A) 在 Sketch 中打開附加的測試原理圖 (test.ai_sch)。

(B) 要運行瞬態分析,請單擊分析 > 時域 > 瞬態。默認情況下,分析設置是從默認表單文件設置的。

(C) 在瞬態分析窗口中單擊確定。

(D) 檢查已經在原理圖上的探針中的結果。

疑難解答

有時,你的環境可能與示例中提供的 .dll 文件不兼容。例如,如果你使用Windows以外的平臺運行示例,則此示例中的 .dll 文件不兼容。

在這種情況下,將在Saber腳本窗口中收到以下錯誤:

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"

要解決此問題,請使用上述說明重新編譯C代碼以創建動態鏈接庫。可能還需要修改C例程頭文件,具體情況取決于你所使用的環境。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux系統
    +關注

    關注

    4

    文章

    595

    瀏覽量

    27510
  • VHDL語言
    +關注

    關注

    1

    文章

    113

    瀏覽量

    18088
  • C語言
    +關注

    關注

    180

    文章

    7614

    瀏覽量

    137712
收藏 人收藏

    評論

    相關推薦

    何在linux下進行c語言編程

    何在linux下進行c語言編程
    發表于 08-20 22:55

    Saber軟件功率MOSFET自建模與仿真驗證

    利用功率MOSFET手冊,利用Saber軟件里的自建模工具對功率MOSFET進行建模,并仿真驗證其性能。淘寶上搜索“功率MOSFET建模”,
    發表于 04-12 20:43

    請問如何在COSMIC C文件中使用匯編語言

    如何分配變量到指定的地址如何在COSMIC C文件中使用匯編語言如何觀察RAM/FLASH/EEPROM的最終分配情況如何生成hex格式的輸出文件什么是MEMORY MODELlkf
    發表于 11-20 07:48

    何在嵌入式系統設計中使用UML技術?

    統一建模語言UML及其特點UML在車載GPS終端設計中的應用如何在嵌入式系統設計中使用UML技術
    發表于 04-23 06:26

    何在C程序中使用匯編

    怎樣在C程序中使用匯編,如何在C程序中使用匯編:方法一:在每個匯編語句前加asm即可。如:void reset_data(void) { a
    發表于 09-23 23:43 ?55次下載

    何在Saber中使用模塊

    介紹了如何在Saber中使用這些模型.其實很簡單,當你下載完基于Saber軟件的模型(*.sin文件)以后,所需要做的事情就是為這個模型建立一個同名的符號(*.ai_sym文件),并設
    發表于 06-18 16:24 ?55次下載

    Saber建模方法

    接著來聊聊構建宏模型的建模方法,構建宏模型是指利用Saber軟件的模板,根據器件的功能和內部構造,搭建器件模型。構建宏模型條件如下:1)沒有現存單個模板存在;2)
    發表于 06-21 09:51 ?102次下載

    何在C++代碼中使C頭文件

    何在C++代碼中使C頭文件。從C++調用C頭文件之前,C
    發表于 10-19 09:24 ?3次下載

    何在Vitis HLS中使C語言代碼創建AXI4-Lite接口

    您是否想創建自己帶有 AXI4-Lite 接口的 IP 卻感覺無從著手?本文將為您講解有關如何在 Vitis HLS 中使C 語言代碼創建 AXI4-Lite 接口的基礎知識。
    的頭像 發表于 07-08 09:40 ?1897次閱讀

    go語言代碼中使用HTTP代理IP的方法

    何在go語言代碼中使用HTTP代理IP。
    的頭像 發表于 08-04 16:13 ?3239次閱讀

    何在易e語言代碼中使用HTTP代理IP

    何在易e語言代碼中使用HTTP代理IP,示例代碼demo直接可用(步驟注釋清晰)
    的頭像 發表于 08-05 16:29 ?7013次閱讀

    何在c語言代碼中使用HTTP代理IP

    何在c語言代碼中使用HTTP代理IP,示例代碼demo直接可用(步驟注釋清晰)
    的頭像 發表于 08-05 16:31 ?2395次閱讀

    何在c#語言代碼中使用HTTP代理IP

    何在c#語言代碼中使用HTTP代理IP,示例代碼demo直接可用(步驟注釋清晰)
    的頭像 發表于 08-05 16:33 ?2680次閱讀

    何在arduino中使用I2c LCD模塊

    電子發燒友網站提供《如何在arduino中使用I2c LCD模塊.zip》資料免費下載
    發表于 10-26 14:29 ?1次下載
    如<b class='flag-5'>何在</b>arduino<b class='flag-5'>中使</b>用I2<b class='flag-5'>c</b> LCD模塊

    ESL事務級建模語言簡介

    是RTL級建模的最佳語言,有足夠的精度如比特精確和周期精確,但缺乏高層次抽象的能力,而且對軟件部分的描述無能為力。 而C/C++、Java等都是軟件的優秀描述
    的頭像 發表于 11-02 15:10 ?789次閱讀
    tt线上娱乐| 罗马百家乐官网的玩法技巧和规则 | 百家乐官网起步多少| 免费百家乐规律| 六合彩图库大全| 长赢百家乐官网赌徒| 大发888卡| 连环百家乐官网的玩法技巧和规则| 大发888官方 hplsj| 百家乐官网制胜法| 大发888舍出同线牌| 卢克索百家乐官网的玩法技巧和规则| 大发888玩哪个| 百家乐官网庄闲和的倍数| 大发888娱乐场下载iypu| 吉利百家乐官网的玩法技巧和规则 | 金满堂百家乐官网的玩法技巧和规则| 大发888官网e世博备用网址| 百家乐官网任你博娱乐场开户注册| 水果机8键遥控器| 如何打百家乐官网的玩法技巧和规则| 大发888注册步骤| 百家乐现实赌场| 开封县| 网上百家乐真的假| 网上百家乐官网赌场| 实战百家乐十大取胜原因百分百战胜百家乐不买币不吹牛只你能做到按我说的.百家乐基本规则 | 最好百家乐的玩法技巧和规则| 百家乐官网赌场论坛在线| 百家乐永利娱乐场| 誉博百家乐官网327589| 大发888容易赢吗| 百家乐娱乐城信息| 百家乐官网开户博彩论坛| 亚洲百家乐博彩的玩法技巧和规则 | 百家乐诀| OG百家乐官网大转轮| 六合彩脑筋急转弯| 百家乐白茫茫| 澳门百家乐官网娱乐网| 优博网|