UVM中有需要从cmmand line 输入参数的需求,所有uvm_svcmd_dpi.svh和uvm_svcmd_dpi.cc 文件就是实现功能。
uvm_svcmd_dpi.svh的源代码如下,我们可以看SV采用import的方式导入C代码函数,所有者写函数的实现在uvm_svcmd_dpi.cc 中。当定义了UVM_CMDLINE_NO_DPI的宏时,所有函数返回值要么是NULL,要么是“?”。
// Import DPI functions used by the interface to generate the // lists. `ifndef UVM_CMDLINE_NO_DPI import "DPI-C" function string uvm_dpi_get_next_arg_c (int init); import "DPI-C" function string uvm_dpi_get_tool_name_c (); import "DPI-C" function string uvm_dpi_get_tool_version_c (); function string uvm_dpi_get_next_arg(int init=0); return uvm_dpi_get_next_arg_c(init); endfunction function string uvm_dpi_get_tool_name(); return uvm_dpi_get_tool_name_c(); endfunction function string uvm_dpi_get_tool_version(); return uvm_dpi_get_tool_version_c(); endfunction import "DPI-C" function chandle uvm_dpi_regcomp(string regex); import "DPI-C" function int uvm_dpi_regexec(chandle preg,