主要内容

从Simulink生成本机SystemVerilog断言金宝app

此示例显示了如何在Simulink®模型中的断言生成本机SystemVerilog断言。金宝app每当在Simulink和HDL测试环境中需要相同的断言行为时,此功能都很有用。金宝app

需求和先决条件

下载188bet金宝搏本示例所需产品:

  • MATLAB®

  • 金宝app仿真软件®

  • 金宝appSimulink Coder™

  • MentorGraphics®SexchingIm®/Questasim®或支持的金宝appSystemVerilog模拟器

  • 支持的C编译器之一:M金宝appicrosoft®Visual c++,或GNU GCC

概述

要生成包含SystemVerilog断言的DPI-C组件,Simulink模型必须使用金宝app断言为DPI-C块。找到这个块在高密度脂蛋白验证器- >与DPI-C SystemVerilog一起使用图书馆如下所示:

该块可以像泛型一样使用断言块的模型验证图书馆。模拟行为与Simulink Assertion块相同,但是在DPI-C组件生成期间,块为金宝app每个组件生成一个本机SystemVerilog断言断言为DPI-C块显示在模型中。

设置示例

本例中的模型包含两个DPI-C块断言.其中一个块用于使用自定义选项提供延迟信息,第二个块被设置为在第二个延迟结束时提供警告。

运行以下代码以打开设计。

Open_System(“svdpi_assertion”);

建立代码生成模型

该模型预先配置了一个DPI-C系统目标文件(systemverilog_dpi_grt.tlc)。在生成DPI-C组件之前,请确保通过块掩码在SystemVerilog中配置所需的断言行为。

默认情况下,断言块将生成SystemVerilog错误(美元的误差(" "))触发时的空消息。这可以通过提供错误消息来更改,将错误更改为警告($警告(“”)),或者提供您自己的自定义SystemVerilog命令来执行。

下图显示了第一个延迟后断言块的SystemVerilog行为配置。在外面的参数DPI-C断言选项组只影响Simulink仿真行为。金宝app

请注意,断言定义命令是有效的SystemVerilog语句。

第二个断言块被配置为输出带有指定消息的警告,如下所示。

如果我们运行这个模型,我们可以看到在Simulink中会触发两个断言警告:金宝app

生成SystemVerilog DPI-C组件

  1. 在里面svdpi_assertion模型,右键单击DPI_C_Assertion块,选择C / C ++代码 - >构建此子系统。

  2. 在出现的对话框中单击Build。

  3. 生成的C代码DPI_C_Assertion系统Verilog DPI-C包装器和包文件“DPI_C_Assertion_build / DPI_C_Assertion_dpi.sv”“DPI_C_Assertion_build / DPI_C_Assertion_dpi_pkg.sv”

或者,你可以通过执行以下命令来生成组件:

slbuild ('svdpi_assertion / dpi_c_assertion');

在HDL模拟器中运行生成的测试台

对于本例,将使用ModelsSim/QuestaSim模拟器。要获得更多关于如何运行测试台的详细说明,请参阅“开始使用SystemVerilog DPI组件生成”。

运行testbench后,请注意,DPI-C组件抛出的消息和警告。

跟踪SystemVerilog断言回Simulink金宝app

如果你想跟踪生成警告的断言到Simulink,你需要从警告消息中找到Simulink标识符(SID),如下所示:金宝app

找到断言块的SID后,可以使用Simulink编程API突出显示相应的块。金宝app执行:

金宝appSimulink.ID.hilite ('svdpi_assertion:7');

这将突出相关块。

在HDL模拟器中过滤断言

如果希望在HDL Simulator中过滤断言,则需要将想要过滤的块的SID作为一个plusargs参数提供给HDL Simulator。

例如,“InfoAssertion”断言块的SID为“svdpi_assertion:6”。因此,为了过滤这个块提供的信息消息,我们需要向HDL模拟器提供参数“+svdpi_assertion:6”。对于ModelSim/QuestaSim中的这个例子,仿真命令是:

vsim-C-voptargs = + acc-sv_lib. . / DPI_C_Assertion工作。DPI_C_Assertion_dpi_tb+ svdpi_assertion: 6