matlab - 使用 SNPS VCS 工具在 System verilog 中使用 MATLAB 脚本
问题描述
我已经使用 MATLAB R2019 脚本编写了一个算法,我希望在系统 verilog 文件中调用它,即 matlab 脚本生成的输出实际上是要输入到使用 SV 编写的测试台中。我不想使用 HDL 编码器工具,因为该算法非常复杂,并且在 SV/C 中重新编码非常困难。我使用 synopsys VCS 工具进行编译和阐述。我的问题是: 1. 是否可以在用 SV 编写的测试平台中调用 MATLAB 脚本?我听说过 DPI,但对它没有太多想法,也没有研究过它。2. MATLAB 脚本的输出是否可以存储在单独的文件中,例如一个文本文件,我可以在我的 SV 测试台中调用该文件。?
解决方案
按顺序回答你的问题,确实是可以的。
您需要执行以下操作:
在 SV 中,导入您将根据需要调用的 C 函数 (extern DPI-C)。假设我们称之为 callMatlabFn
在 C 中,定义一个名为 callMatlabFn 的外部函数。这实际上将调用您的 matlab fn。看看这里在 C 中调用 matlab:https ://www.mathworks.com/help/matlab/matlab_external/call-matlab-functions-from-c-1.html
- 请注意,您可以通过 DPI 返回数据,但这可能具有不同的含义。最好通过输出 arg 中的引用将 SV 中的任何数据返回到导入的 fn。
最后,SV 中的文本文件 I/O 是通过以下系统任务实现的:
$fopen (file_name) ;
$fclose (file_name) ;
$fdisplay (arguments) ;
$fwrite (arguments) ;
$fstrobe (arguments) ;
$fmonitor (arguments) ;
$readmemb ("file", memory_identifier [,begin_address[,end_address]]) ;
$readmemh ("file", memory_identifier [,begin_address[,end_address]]) ;
推荐阅读
- regex - Convert Regex to be safari compliant
- python - ImportError When Importing Tensorflow Pywrap_tfe
- apache-kafka - Partition replication in case of messages directly posted to a partition in Kafka
- python - 我可以使用 webhook 创建执行某些操作的日志吗?
- c# - InvalidOperationException:使用 cermgr 安装的证书在 AspNetCore 上未指定密钥类型
- vue.js - How to render a modal that is inside a component from another component in vueJs and Bootstrap
- android - 如何在 Android Jetpack Compose 中创建任意方向的拖动手势
- jax-rs - 在 quarkus 中检索客户端 IP 地址
- jenkins - Avoid report to verified/code-review flag for a specific Jenkins Job
- python - 在指数中插入缺失的季度收益日期