主要内容

生成Cosimulation模型

需求

Cosimulation模型是什么?

cosimulation模型是一个自动生成的仿真软件金宝app®模型配置为两种仿真软件仿真和设计cosimulati金宝appon HDL模拟器。高密度脂蛋白编码器™支金宝app持自动生成cosimulation模型作为试验台生成过程的一部分。

cosimulation模型包括:

  • 行为模型的设计,在仿真软件子系统实现。金宝app

  • 一个相应的高密度脂蛋白Cosimulation块,配置为cosimulate使用HDL验证器的设计。高密度脂蛋白编码器配置高密度脂蛋白Cosimulation块与导师图形使用®ModelSim®,节奏敏锐的®,或者Xilinx®Vivado®模拟器。

  • 测试输入数据,计算从您指定的试验台的刺激。

  • 块范围,让你观察和比较DUT高密度脂蛋白cosimulation输出,以及这些信号之间的任何错误。

  • Goto和块捕获DUT的刺激和响应信号,使用这些信号来驱动cosimulation。

  • 比较/断言机制报告之间的差异原来DUT输出和cosimulation输出。

除了生成模型,高密度脂蛋白编码器生成一个TCL脚本启动并配置cosimulation工具。注释脚本文件文档中的时钟、复位和其他定时信号信息定义的编码器cosimulation工具。

生成一个Cosimulation模型使用模型配置参数

这个例子演示了生成cosimulation模型的过程。模型的例子中,hdl_cosim_demo1,实现了一个简单的乘法和积累(MAC)算法。打开模型通过输入MATLAB的名字®命令行:

hdl_cosim_demo1

下图显示了顶级模型。

DUT的MAC子系统。

Cosimulation模型试验台的一代发生在一代。作为一项最佳实践,生成HDL代码生成测试前的长椅上,如下:

  1. 打开配置参数对话框。右键单击空白的Simulink仿真模型和选择金宝app模型配置参数

  2. HDL代码生成面板的配置参数对话框中,设置产生高密度脂蛋白hdl_cosim_demo1 / MAC

  3. 点击应用

  4. 点击生成。HDL编码显示进度信息,如以下清单所示:

    # # #应用高密度脂蛋白HDL代码生成控制语句# # #开始检查。# # # HDL检查完成0错误,警告和0的消息。代码生成# # # # # #开始硬件描述语言(VHDL)致力于hdl_cosim_demo1 / MAC hdlsrc \ MAC。vhd # # # HDL代码生成完成。

接下来,配置试验台选项包括代cosimulation模型:

  1. 选择HDL代码生成>试验台面板的配置参数对话框。

  2. 选择Cosimulation模型复选框。然后选择你仿真工具的下拉菜单。

  3. 配置要求试验台选项。HDL编码记录选项设置在生成的脚本文件Cosimulation脚本文件)。

  4. 点击应用

接下来,生成和cosimulation模型试验台代码:

  1. 底部的试验台窗格中,单击生成测试工作台。HDL编码显示进度信息见下面的清单:

    # # # # # #开始TestBench代产生新的cosimulation模型:gm_hdl_cosim_demo1_mq0。mdl # # #产生新的cosimulation tcl脚本:hdlsrc / gm_hdl_cosim_demo1_mq0_tcl。米# # # Cosimulation模型生成完成。# # #生成试验台:hdlsrc \ MAC_tb。vhd # # #请稍等…# # # HDL TestBench代完成。

    当试验台一代完成,高密度脂蛋白编码器打开生成的cosimulated模型。下面的图显示生成的模型。

  2. 保存生成的模型。生成的模型只存在于内存中,除非你保存它。

显示的代码生成消息,高密度脂蛋白编码器生成下列文件除了通常的HDL试验台文件:

  • cosimulation模型(gm_hdl_cosim_demo1_mq)

  • 一个文件,它包含一个TCL cosimulation脚本和信息设置的cosimulation模型(gm_hdl_cosim_demo1_mq_tcl.m)

生成的文件名称源自模型名称、描述命名约定Cosimulation生成模型和脚本

在下一节中,生成的结构模型,描述了模型的特点。在运行cosimulation之前,熟悉这些特性。

生成的结构模型

您可以使用控制设置和启动cosimulation位于生成的模型。本节探讨了MAC子系统模型产生的例子。

模拟路径

模型由两个平行的信号路径。的模拟路径位于窗口的上半部分模型,原始DUT几乎是相同的。模拟路径的目的是执行一个正常仿真软件模拟和cosimulation提供一个参考信号进行比较的结果。金宝app下面的图显示了模拟路径。

这两个子系统的标签ToCosimSrcToCosimSink不改变模拟路径的性能。他们的目的是捕获刺激和DUT的响应信号和路线的高密度脂蛋白cosimulation块(见信号模拟和Cosimulation之间的路由路径)。

Cosimulation路径

cosimulation路径位于窗口的下半部分模型,包含生成的高密度脂蛋白Cosimulation块。下面的图显示了cosimulation路径。

FromCosimSrc子系统接收相同的输入信号,驱动DUT。在gm_hdl_cosim_demo1_mq0子系统模型,简单地通过输入的高密度脂蛋白Cosimulation块。其他数据类型需要进一步的信号处理在这个阶段(见信号模拟和Cosimulation之间的路由路径)。

比较子系统的cosimulation路径比较cosimulation输出到模拟产生的参考输出路径。如果检测到一个比较差异,断言块比较子系统显示一条警告消息。如果需要,您可以禁用断言和控制的其他操作比较子系统。看到控制断言和显示范围获取详细信息。

高密度脂蛋白编码器填充高密度脂蛋白Cosimulation块的编译DUT的I / O接口。下面的图显示了港口面板的Mac_mq高密度脂蛋白Cosimulation块。

HDL编码设置完整的高密度脂蛋白的名字,样品时间,数据类型和其他领域所需的模型。高密度脂蛋白编码器还配置高密度脂蛋白Cosimulation块参数下时间尺度Tcl窗格。

提示

高密度脂蛋白编码器配置生成的高密度脂蛋白Cosimulation块的共享内存连接方法。

开始模拟控制

ModelSim或深刻的®用户——当你双击开始模拟器控制,启动所选cosimulation工具,通过在启动命令的工具。启动模拟器图标显示的启动命令,如下图所示。

执行的命令,当你双击启动模拟器图标启动并建立cosimulation工具,但他们不实际cosimulation开始。启动一个Cosimulation描述了如何运行一个cosimulation使用生成的模型。

Vivado模拟器用户——当你双击开始模拟器控制,再生一个共享库(DLL文件)。启动模拟器图标显示这些信息,如下图所示。

信号模拟和Cosimulation之间的路由路径

生成的模型路线之间的信号模拟和cosimulation路径使用Goto和块。例如,转到块中ToCosimSrc子系统每个DUT输入信号路由到相应的块FromCosimSrc子系统。下图显示了Goto和块在每个子系统。

之前的数据显示简单的标量输入。信号的复杂和向量数据类型需要进一步处理。看到复杂的Cosimulation生成模型和矢量信号为进一步的信息。

控制断言和显示范围

比较子系统允许您控制信号的显示范围,并从断言警告消息。下面的图显示了比较子系统的gm_hdl_cosim_demo1_mq0模型。

对于每个DUT的输出,高密度脂蛋白编码器生成一个断言检查子系统(Assert_OutN)。子系统计算差异(犯错)之间的原始DUT输出(dut裁判)和相应的cosimulation输出(cosim)。子系统的路线比较结果断言。如果比较结果不是零,断言块报告差异。

下面的图显示了Assert_Out1子系统的gm_hdl_cosim_demo1_mq0模型。

这个子系统还路线dut裁判,cosim,犯错信号范围的显示模型的顶层。

默认情况下,生成的cosimulation模型使所有断言和显示所有范围。使用上的按键比较子系统或隐藏范围禁用断言。

提示

断言信息警告,不停止仿真。

启动一个Cosimulation

运行cosimulation使用生成的模型:

  1. 双击比较子系统配置范围和断言的设置。

    如果你想禁用范围显示或断言cosimulation警告之前,使用上的按键比较子系统(如下图所示)。

  2. 双击启动模拟器控制。

    启动模拟器控制启动了你的高密度脂蛋白模拟器(在这种情况下,高密度脂蛋白校验使用导师图形ModelSim)。

    高密度脂蛋白模拟器执行启动脚本。在这种情况下,启动脚本由位于TCL命令gm_hdl_cosim_demo1_mq0_tcl.m。高密度脂蛋白模拟器完成执行启动脚本时,它显示一个消息如下。

    #准备cosimulation……
  3. 在模型编辑器中金宝app生成的模型,开始模拟。

    cosimulation运行,高密度脂蛋白模拟器显示信息如下。

    #运行仿真软件Cos金宝appimulation块。#芯片名称:- > hdl_cosim_demo1 / MAC #目标语言:- - >硬件描述语言(vhdl) #目标目录:- - > hdlsrc #星期五2009年6月05东部时间下午4:26:34 #仿真停止请求外国接口。#做

    cosimulation结束,如果你有启用显示范围,比较范围显示以下信号:

    • cosim:信号输出的结果高密度脂蛋白Cosimulation块。

    • dut裁判:DUT的参考输出信号。

    • 犯错:这两个之间的区别(错误)输出。

    下面的图显示了这些信号。

Cosimulation脚本文件

生成的脚本文件有两个部分:

  • 评论部分相关的文档模型设置cosimulation。

  • 一个函数,商店TCL的几行代码到一个变量,tclCmds。cosimulation工具启动cosimulation时执行这些命令。

头评论部分

下面的清单显示了生成的脚本文件的评论部分hdl_cosim_demo1模型:

% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %自动生成cosimulation tclstart的脚本% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %源模型:hdl_cosim_demo1。mdl %生成的模型:gm_hdl_cosim_demo1。mdl % Cosimulation模型:gm_hdl_cosim_demo1_mq。mdl % % DUT来源:gm_hdl_cosim_demo1_mq / MAC % Cosimulation DUT: gm_hdl_cosim_demo1_mq / MAC_mq % %文件位置:hdlsrc / gm_hdl_cosim_demo1_mq_tcl。m %创建:2009-06-16 10:51:01 % %由MATLAB 7.9和HDL编码器1.6% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ClockName: clk % ResetName:重置% ClockEnableName: clk_enable % % ClockLowTime: 5 ns % ClockHighTime: 5 ns % ClockPeriod: 10 ns % % ResetLength: 20 ns % ClockEnableDelay: 10 ns % HoldTime: 2 ns % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ModelBaseSampleTime: 1% OverClockFactor: 1% % % % % % % %金宝app % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %的映射DutBaseSampleTime ClockPeriod % % N = (ClockPeriod / DutBaseSampleTime) * OverClockFactor % 1秒10 ns模型对应的HDL模拟器(N = 10) % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ResetHighAt: (ClockLowTime + ResetLength + HoldTime) % ResetRiseEdge: 27 ns % ResetType:异步% ResetAssertedLevel: 1% % ClockEnableHighAt: (ClockLowTime + ResetLength + ClockEnableDelay + HoldTime) % ClockEnableRiseEdge: 37 ns % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %

在评论部分包括以下部分:

  • 头的评论:这部分文档模型和生成的源文件的名称和源和DUT生成。

  • 试验台的设置:这部分文档makehdltb影响cosimulation模型生成的属性值。生成的TCL脚本使用这些值来初始化cosimulation工具。

  • 样品时间信息:接下来的两个小节将文档的基本样本时间和过采样因子模型。高密度脂蛋白编码器使用ModelBaseSampleTimeOverClockFactor模型的时钟周期映射到高密度脂蛋白cosimulation时钟周期。

  • 时钟,时钟使,重置波形:这部分文档的责任周期的计算clk,clk_enable,重置信号。

TCL命令部分

下面的清单显示了TCL命令生成一个脚本文件的部分hdl_cosim_demo1模型:

函数tclCmds = gm_hdl_cosim_demo1_mq_tcl tclCmds = {MAC_compile.do’,……%编译生成的代码' vsimulink work.MAC’,…金宝app…%发起cosimulation‘添加波/ MAC / clk’,……%为芯片添加波命令输入信号加波/ MAC /重置,…“添加/ MAC / clk_enable浪潮”,……“添加波/ MAC /三机一体”,……“添加波/ MAC / In2”,……“添加/ MAC / ce_out浪潮”,……%为芯片输出信号添加波命令添加波/ MAC /着干活,…UserTimeUnit ns,这……%设置仿真时间单位“将”“”,…把“准备cosimulation…”,… }; end

复杂的Cosimulation生成模型和矢量信号

输入信号的复杂或向量数据类型需要额外的元素插入cosimulation路径。本节描述这些元素。

复杂的信号

cosimulation模型自动生成了复杂输入实部和虚部。下面的图显示了一个FromCosimSrc子系统接收两个复杂的输入信号。子系统把输入分为实部和虚部之前通过子系统输出。

模型保持真实和虚构的成分的分离整个cosimulation路径。的比较子系统执行单独的比较和单独的真实和虚构的信号组件的显示范围。

矢量信号

向量输入生成的cosimulation模型趋于平缓。下面的图显示了一个FromCosimSrc子系统接收两个向量维数2的输入信号。子系统减小输入标量之前通过子系统输出。

从命令行生成一个Cosimulation模型

从命令行生成一个cosimulation模型,通过GenerateCosimModel财产makehdltb函数。GenerateCosimModel采用下列属性值之一:

  • “ModelSim”:生成一个cosimulation模型配置为使用导师图形ModelSim HDL校验。

  • “尖锐”:生成一个cosimulation模型配置为高密度脂蛋白校验与节奏的使用。

  • “Vivado模拟器”:生成一个cosimulation模型配置为使用Xilinx Vivado HDL校验。

下面的命令,makehdltb生成一个cosimulation模型配置为使用导师图形ModelSim HDL校验。

makehdltb (“hdl_cosim_demo1 / MAC”、“GenerateCosimModel”,“ModelSim”);

命名约定Cosimulation生成模型和脚本

cosimulation生成模型的命名约定

前缀_modelname_toolid_后缀,地点:

  • 前缀是字符串通用汽车

  • modelname生成模型的名称。

  • toolid是一个标识符表明选择的高密度脂蛋白模拟器Cosimulation模型为:选择。有效的toolid字符串是“mq”,“在”,或“与”

  • 后缀是一个整数,为每个生成的模型提供了一个唯一的名称。后缀的增量与每个连续试验台一代对于一个给定的模型。例如,如果原始模型的名字测试,然后生成的序列cosimulation模型名称gm_test_toolid_0,gm_test_toolid_1,等等。

cosimulation脚本生成的命名约定是一样的模型,除了文件扩展名。m

限制Cosimulation模型生成

当您配置cosimulation模型生成的模型,观察以下限制:

  • 显式地指定源块的样品时间到DUT的模拟路径。使用默认的样品时间(1源块中)可能会导致样品时间传播问题在cosimulation路径生成的模型。

  • 高密度脂蛋白编码器软件不支持连续样本时间cosimulation金宝app模型生成。不要使用样本0在源块模拟路径。

  • 如果你设置时钟输入多个,高密度脂蛋白编码器不支持代cosimul金宝appation模型。

  • 组合输出路径(由于没有登记在生成的代码)在cosimulation有一个额外的延迟周期。为了避免差异对比模拟和cosimulation输出,允许直接引线选择在港口面板的高密度脂蛋白Cosimulation块将自动被选中。

    或者,您可以通过指定输出管道(见避免延迟OutputPipeline)。这将完全注册在代码生成输出。

  • 不支持的数据类型的两倍金宝app高密度脂蛋白Cosimulation块。避免使用双数据类型的模拟路径生成HDL代码和cosimulation模型。