主要内容

DPI组件代万博1manbetx

DPI代概述

如果你有一个万博1manbetx®编码器™许可,您可以使用两种方法生成SystemVerilog DPI组件。

出口SystemVerilog DPI组件子系统

高密度脂蛋白校验™集成万博1manbetx仿真软件编码器出口一个子系统生成C代码在一个SystemVerilog组件直接编程接口(DPI)。你可以将这个组件集成到高密度脂蛋白模拟行为模型。编码器提供选项来定制生成的SystemVerilog结构。发电机支持测试的组件访问和可调参数。万博1manbetx编码器选择生成SystemVerilog试验台验证生成的DPI组件从仿真软件子系统对数据向量。万博1manbetx这个特性可以在模型中配置参数对话框,下代码生成。看到生成SystemVerilog DPI组件

生成SystemVerilog试验台高密度脂蛋白编码器

从高密度脂蛋白编码器™,你可以生成一个SystemVerilog DPI试验台。使用试验台验证生成的HDL代码用C代码生成的整个仿真软件模型,包括DUT和数据源。万博1manbetx要使用该功能,您的整个模型必须支持C代码生成万博1manbetx万博1manbetx仿真软件编码器。您可以访问这个特性在高密度脂蛋白工作流顾问HDL代码生成>设置Testbench选项,或在模型配置参数对话框,下HDL代码生成>试验台。另外,对于命令行访问,设置GenerateSVDPITestBench的属性makehdltb(高密度脂蛋白编码器)。看到使用SystemVerilog DPI试验台验证HDL设计(高密度脂蛋白编码器)

万博1manbetx支持万博1manbetx数据类型

万博1manbetx支持模型的数据类型转万博1manbetx换为SystemVerilog数据类型,如表所示。

你可以选择一个位向量,逻辑向量,或兼容的C类型。在配置参数对话框中,选择代码生成>SystemVerilog DPI节,在SystemVerilog港口>端口数据类型

生成SystemVerilog类型

MATLAB® SystemVerilog
兼容的C类型 逻辑向量 位向量
uint8 字节无符号 逻辑(7:0) 位(7:0)
uint16 shortint无符号 逻辑15:0 位(15:0)
uint32 int无符号 逻辑(31:0) 位(31:0)
uint64 longint无符号 逻辑(63:0) 位(63:0)
int8 字节 逻辑(7:0)签署 位签署(7:0)
int16 shortint 逻辑(15:0)签署 位签署(15:0)
int32 int 逻辑(31:0)签署 位签署(31:0)
int64 longint 逻辑(63:0)签署 位签署(63:0)
布尔 字节无符号 逻辑0时 位(0时)
定点

端口是符号扩展到一个内置的C类型,如int,int无符号,字节,字节无符号等。

逻辑(n-1:0)

逻辑(n-1:0)签署

逻辑向量长度(n)=。符号是继承了不动点的类型。

位(n-1:0)

位签署(n-1:0)

位向量的长度(n)=。符号是继承了不动点的类型。

shortreal
真正的
复杂的

你可以选择一个SystemVerilog之间结构体数据类型或平端口SystemVerilog实部和虚部的接口。这些选项之间选择,左窗格中的配置参数对话框中,选择代码生成>SystemVerilog DPI,然后设置复合数据类型参数结构夷为平地

向量,矩阵

你可以选择SystemVerilog数组或标量港口之间。这些选项之间选择,左窗格中的配置参数对话框中,选择代码生成>SystemVerilog DPI,然后选择Scalarize矩阵和向量的港口参数。

例如,一个双元素向量类型的uint32在仿真万博1manbetx软件生成这个SystemVerilog向量端口:

输入逻辑[31:0]vecInput (0:1)

当您选择Scalarize矩阵和向量的港口,生成的SystemVerilog包括这两个端口,每个类型逻辑(31:0):

输入逻辑31:0 vecInput_0,输入逻辑31:0 vecInput_1

在生成向量和阵列端口时,编码器平缓矩阵列为主的顺序。

nonvirtual总线

你可以选择一个SystemVerilog之间结构体为单独的组件类型或扁平的港口在SystemVerilog接口信号。这些选项之间选择,左窗格中的配置参数对话框中,选择代码生成>SystemVerilog DPI部分,并设置复合数据类型结构夷为平地

枚举数据类型 枚举

SystemVerilog生成包装器

产生控制信号

所有顺序SystemVerilog SystemVerilog DPI发生器生成的代码包含这些控制信号:

  • clk——同步时钟

  • clk_enable——时钟使

  • 重置——异步复位

当你为组合模型,生成SystemVerilog包装包装器不包括这些端口。

生成的SystemVerilog模块接口

选择端口列表,或者一个接口声明。下的配置参数,设置这个选项代码生成>SystemVerilog DPI>SystemVerilog港口>连接

  • 端口列表生成一个SystemVerilog模块的端口列表标题,代表其接口。

    例如:

    模块MyMod_dpi(输入时钟,clk_enable,输入重置,/ *信号仿真软件名称:“三机”* /输入真正的三机一体,/ *信号仿真软件名称:“万博1manbetx着干活”* /输出真实着干活);…endmodule

  • 接口生成一个SystemVerilog模块的接口名称标题,和一个单独的声明的接口。

    例如:

    接口simple_if;位时钟;位clk_enable;位复位;/ *万博1manbetx信号仿真软件名称:“三机”* /真正的三机一体;/ *万博1manbetx信号仿真软件名称:“着干活”* /真正的着干活;endinterface模块MyMod_dpi (simple_if vif);…endmodule

选择命令行:使用set_param(万博1manbetx模型)功能和设置DPIPortConnection参数是“界面”的端口列表

例如:

set_param (bdroot“DPIPortConnection”、“接口”)

SystemVerilog包装器组合设计

你可以生成一个SystemVerilog包装组合模型的选择代码生成>SystemVerilog DPI在左边窗格中,然后下组件模板组件模板类型组合

生成一个组合SystemVerilog包装时,界面不包括clk,clk_enable,或重置港口。

例如:

模块MyMod_dpi(/ *信号仿真软件万博1manbetx名称:“三机”* /输入真正的三机一体,/ *信号仿真软件名称:“着干活”* /输出真实着干活);…endmodule

选择命令行:使用set_param(万博1manbetx模型)功能和设置DPIComponentTemplateType参数是“顺序”组合的

组合SystemVerilog局限性

  • 选择一个组合模板只有如果你纯粹是组合仿真软件模型。万博1manbetx

  • 如果你的Simu万博1manbetxlink仿真模型是连续的,你必须选择顺序组件模板类型。顺序模型组合模板将不会正常工作。

  • 如果你的模型包括一个延迟块,它被认为是一个连续的设计。

  • 模型部分顺序和部分组合不支持SystemVerilog DPI的一代。万博1manbetx

生成的组件功能

SystemVerilog SystemVerilog DPI发生器生成的代码包含这些功能:

/ /声明进口C函数导入“DPI”功能chandle DPI_subsystemname_initialize (chandle existhandle);导入函数void DPI_ DPIsubsystemname输入真实In1 _output(输入chandle objhandle, inout真实着干活);导入函数void DPI_ DPIsubsystemname_terminate(输入chandle objhandle);

序贯设计,代码还包括以下功能:

导入“DPI”功能chandle DPI_subsystemname输入真实In1 _reset(输入chandle objhandle, inout真实着干活);导入函数void DPI_ DPIsubsystemname输入真实In1 _update(输入chandle objhandle);

在这里,subsystemname子系统的名称你生成的代码。

如果你的模型还包含了可调参数,看看参数调优

  • 初始化函数,初始化在模拟的开始函数被调用。

    例如,对于一个子系统题为dut:

    最初开始objhandle = DPI_dut_initialize (objhandle);结束
  • 重置函数调用重置功能,当你想重置模拟一个已知的复位状态。

    例如,对于一个子系统题为dut:

    最初开始objhandle = DPI_dut_reset (objhandle, 0, 0);结束
  • 输出函数——积极的边缘的时钟,如果clk_enable高,输出函数第一,紧随其后的是更新的功能。

    例如,对于一个子系统题为dut:

    如果(clk_enable)开始DPI_dut_output (objhandle, dut_In1 dut_Out1);DPI_dut_update (objhandle dut_In1);结束
  • 更新功能

    积极的边缘的时钟,如果clk_enable高,输出后更新函数被调用函数。

    例如,对于一个子系统题为dut:

    如果(clk_enable)开始DPI_dut_output (objhandle, dut_In1 dut_Out1);DPI_dut_update (objhandle dut_In1);结束
  • 终止函数

    定下明确的早期终止模拟条件。

    例如,对于一个子系统题为dut:

    如果终止(条件)开始DPI_dut_terminate (objhandle);结束

功能细节SystemVerilog从系统生成的代码有所不同。您可以检查生成的代码的细节。例如在上下文中生成的功能,看看开始使用SystemVerilog DPI组件的一代

参数调优

您可以运行不同的模拟仿真软件模型中各种参数的值。万博1manbetx如果您的系统可调参数,生成SystemVerilog代码还包含一组参数函数为每一个可调参数。

DPI组件生成器生成一组参数函数中的每一个可调参数的格式DPI_subsystemname_setparam_tunableparametername

在这个例子中,都有自己的可调增益参数setparam_gain函数。

导入“DPI”功能无效DPI_dut_setparam_gain(输入chandle objhandle,输入实际dut_P_gain);

生成的SystemVerilog代码不调用这个函数。相反,使用缺省参数。改变这些参数在仿真期间,显式地调用特定的setparam函数。例如,在子系统题为dut期间,你可以改变获得模拟值为6,插入以下电话:

DPI_dut_setparam_gain (objhandle 6);

参数可调,创建一个数据对象从子系统在生成SystemVerilog之前代码。看到在模拟优化增益参数

测试点访问函数

这一特性使您能够访问内部信号SystemVerilog DPI组件的高密度脂蛋白模拟器。你可以指定内部信号模型作为测试点和配置SystemVerilog DPI生成器来创建个人或分组访问函数。

您还可以在测试点上启用日志记录。启用了日志记录,您可以使用生成的试验台比较记录的数据模型与观察值在运行SystemVerilog组件。万博1manbetx

看到SystemVerilog DPI组件测试点访问开始使用SystemVerilog DPI组件的一代

额外的样品延迟

模型与原模型相比,生成SystemVerilog模块介万博1manbetx绍了一个额外的样品在输出延迟。例如,在接下来的仿真软件模型,输出是一个示例延迟版本的输入信万博1manbetx号。

生成的C代码保存这种行为,和输出包含一个示例延迟版本的输入信号。然而,SystemVerilog包装文件中,使用时钟信号同步输入和输出信号:

总是@ (posedge clk)开始DPI_blk2_output (blk2_In1 blk2_Out1);DPI_blk2_update ();结束

SystemVerilog模块的输出只能更新时钟的前沿。这个要求引入一个额外的样品延迟。

多重速率的系统行为

默认情况下,仿真软件子系万博1manbetx统有一个基本示例时间变量(FundST)表明,在仿真过程中,子系统产生的输出和更新其内部状态。与多重速率的系统,您可以指定不同的样品时间不同的港口。有关更多信息,请参见样品时间是什么?(万博1manbetx模型)

当一个多重速率的子系统生成一个DPI组件,DPI组件运行在样本时间等于所有样本的最大公约数次子系统。

例如,假设一个子系统有一个基本的样品时间0.01(也就是说,FundST0.01)和样品时间相约ST2分别为0.5和0.7。

相约= 0.5,ST2 = 0.7。0.1 DPI组件运行在一个样本的时间(因为0.1是0.5和0.7)的最大公约数。成功获得一个信号的采样时间0.5 (相约)或0.7 (ST2),高密度脂蛋白时钟信号必须切换五或七次,分别。

DPI组件时产生的顶层,组件执行的基本示例。

这个图表显示了HDL输入时钟和样品时间之间的关系相约,ST2

定制

您可以自定义生成的SystemVerilog包装通过修改模板包含高密度脂蛋白验证器(svdpi_grt_template.vgt)。或者,您可以创建自己的自定义模板。提供锚为生成的代码在你的模板来生成有效SystemVerilog代码验证模板。

提供的默认SystemVerilog模板,HDL验证器,svdpi_grt_template.vgt。在这个模板,特别clken_inclken_out控制信号被添加到SystemVerilog模块接口。

您可以生成SystemVerilog DPI从多个子系统和组件连接在一起的HDL模拟器。当你这样做,这些控制信号确定这些组件的执行顺序。他们还减少模型之间的延迟信号和SystemVerilog信号。万博1manbetx

您还可以指定您自己的模板文件与下列条件:

  • 文件必须在MATLAB路径和搜索。

  • 文件必须有一个.vgt扩展。

您可以使用这些可选的标记来定制生成的代码通过插入注释语句内整个模板:

  • % <文件名>

  • % < PortList >

  • % < EnumDataTypeDefinitions >

  • % < ImportInitFunction >

  • % < ImportOutputFunction >

  • % < ImportUpdateFunction >

  • % < ImportSetParamFunction >

  • % < CallInitFunction >

  • % < CallUpdateFunction >

  • % < CallOutputFunction >

  • % < IsLibContinuous >

  • % < ObjHandle >

看到自定义生成的SystemVerilog代码定制代码指令。

请注意

SystemVerilog DPI组件发电机不生成测试定制组件的长椅。

限制

  • 默认情况下,高密度脂蛋白校验矩阵和向量转换为一维数组SystemVerilog。例如,一个4×2的矩阵矩阵模型转换在SystemVerilog八万博1manbetx个元素的一维数组。生成多个标量港口SystemVerilog界面,选择Scalarize矩阵和向量的港口的配置参数。

  • SystemVerilog DPI组件生成子系统支持以下代码生成。万博1manbetx没有试验台对这些子系统的支持。万博1manbetx

    • 触发子系统

    • 启用子系统

    • 子系统与行动端口

为达到最佳效果,避免出口多个子系统分别因为它很难实现正确的执行顺序。相反,多个子系统组合为一个并生成代码与新创建的,单一的子系统。

相关的话题