使用 SNPS VCS 工具在 System verilog 中使用 MATLAB 脚本

MATLAB script use in System verilog using SNPS VCS tool

我已经使用 MATLAB R2019 脚本编写了一个算法,我希望在 System verilog 文件中调用它,即 matlab 脚本生成的输出实际上将被送入使用 SV 编写的测试台。我不想使用 HDL 编码器工具,因为该算法非常复杂,并且在 SV/C 中重新编码非常困难。我使用 synopsys VCS 工具进行编译和阐述。 我的问题是: 1. 是否可以在用 SV 编写的测试台中调用 MATLAB 脚本?我听说过 DPI,但对它没有太多想法,也没有研究过它。 2. MATLAB 脚本的输出是否可以存储在单独的文件中,例如一个文本文件,我可以在我的 SV 测试台中调用该文件。?

按顺序回答你的问题,确实可以。

您需要执行以下操作:

  1. 在 SV 中,导入一个 C 函数(外部 DPI-C),您将根据需要调用该函数。假设我们调用这个 callMatlabFn

  2. 在C语言中,定义一个名为callMatlabFn的extern函数。这实际上会调用你的 matlab fn。在这里查看在 C 中调用 matlab:https://www.mathworks.com/help/matlab/matlab_external/call-matlab-functions-from-c-1.html

  3. 请注意,您可以通过 DPI return 数据,但这可能有不同的含义。最好通过输出 arg 中的引用将 SV 中的任何数据 return 导入 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]]) ;