uvm与matlab联合仿真,SV及UVM接口应用篇之四:Matlab及Simulink模型与UVM的混合仿真...

本文介绍了如何利用Matlab的C API接口与SystemVerilog DPI结合,实现在UVM中控制Matlab引擎启动、结束以及加载Simulink模型。通过engOpen()和engEvalString()等函数,可以在UVM测试环境中与Matlab命令窗口通信,从而控制Simulink模型。虽然这种方法简化了模型创建,但在大规模模型仿真时,频繁交互可能影响仿真效率。下篇将探讨脚本语言与UVM的交互。
摘要由CSDN通过智能技术生成

由于Matlab自己提供C的接口库,用户可以通过调用C函数来触发和结束Matlab、传递和得到数据、以及向Matlab发送其它的控制命令。这些Matlab提供的C API包括有:

打开和关闭Matlab的执行引擎

传递和得到变量数据

向Matlab命令窗口(console)传递指令

打开和关闭Matlab的执行引擎

传递和得到变量数据

向Matlab命令窗口(console)传递指令

这些指令可以在Matlab的安装头文件“engine.h”中找到,用户可以在Matlab的安装目录中找到由C调用Matlab的例子$MATLAB/extern/examples/eng_mat/engdemo.c。

#include “engine.h”

main () {

Engine *ep;

ep = engOpen(‘’)

}

有了Matlab与C之间的通信,利用SV DPI的接口就顺利一些了。用户可以进一步将"engine.h"中定义的C函数再导入到SV中。

import “DPI-C” function void engOpen();

借助上面导入的函数,可以定义一个面向Matlab控制的engine class,这个类可以容纳上面导入的所有DPI函数。该类的实现方式如下:

class engine_example;

function void engOpen ();

endclass : engine_example

而通过由UVM导入C方法,继而间接导入Matlab控制函数的方式,用户可以在UVM一侧通过例化上面的engine class,调用它所具备的方法,便可以用来控制M

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值