有没有办法在 VCS/UVM 中获取系统时间?我正在寻找类似于 Perl 的东西localtime(time)
。有没有办法为每个uvm_info
打印的打印系统时间?
问问题
8991 次
3 回答
4
取决于您使用的 VCS 版本。最新版本应支持IEEE Std 1800-2012 § 20.18.1$system
中的定义。假设您在基于 UNIX 的环境中运行,您可以执行以下操作:
function string get_localtime();
int fd;
string localtime;
void'($system("data > localtime")); // temp file
fd = $fopen("localtime", "r");
void'($fscanf(fd,"%s",localtime));
$fclose(fd);
void'($system("rm localtime")); // delete file
return localtime;
endfunction
如果您的 VCS 版本不支持$system
或者您更符合 C/C++,则使用 DPI(参见IEEE Std 1800-2012 § 35)。在 C 中创建一个函数并在 VCS 中使用您的 SystemVerilog 文件对其进行编译。在 SystemVerilog 中,添加import
以允许访问您的 C 函数。假设您的方法名称是 my_localtime 并且返回时间是一个字符串,导入应该如下所示:
import "DPI" function string my_localtime();
于 2014-09-25T20:47:01.727 回答
1
在 c 文件 wallclock.c 中:
#include <time.h>
wallclock() {
time_t t;
t = time(NULL);
return (ctime(&t));
//return time(NULL);
}
在 SV 文件中:
import "DPI-C" function string wallclock();
module try;
//int unsigned t;
string t;
initial begin
t = wallclock();
$write("time=%0s\n", t);
end
endmodule
于 2018-01-15T13:13:35.683 回答