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文章
593浏览量
27396 -
VHDL语言
+关注
关注
1文章
113浏览量
18001 -
C语言
+关注
关注
180文章
7604浏览量
136737
发布评论请先 登录
相关推荐
评论