主要内容

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

此示例向您展示如何从Simulink®模型中的断言生成本机SystemVerilog断言。金宝app当您在Simulink和HDL测试环境中需要相同的断言行为时,此功能非常有用。金宝app

要求和前提条件

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

  • MATLAB®

  • 金宝app仿真软件®

  • 金宝app仿真软件编码器™

  • Mentor Graphics®ModelSim®/QuestaSim®或支持的S金宝appystemVerilog模拟器

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

概述

为了生成包含SystemVerilog断言的DPI-C组件,Simulink模型必须使用金宝appDPI-C的断言块。在高密度脂蛋白验证器->用于DPI-C SystemVerilog库如下所示:

此块可以像通用块一样使用断言模型验证图书馆。模拟行为与Simulink断言块相同,但是在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_Assertionblock,然后选择C/ c++ Code -> Build This Subsystem。

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

  3. 的C代码生成DPI_C_Assertion子系统,以及System 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组件生成入门”。

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

将SystemVerilog断言跟踪回Simulink金宝app

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

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

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

这将突出显示相关的块。

在HDL模拟器中过滤断言

如果你想在HDL模拟器中过滤一个断言,你需要提供你想要过滤的块的SID作为plusargs参数给HDL模拟器。

例如,“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