赞
踩
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
第一篇博客,总结一下各个语言返回系统时间的方法,欢迎补充。
以下是本篇文章正文内容,案例多是网上cv而来,算是帮大家搜集整理一下吧
使用$system()运行任何系统命令,包括系统的日期命令
initial begin
$system("date");
end
最新版本应支持§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语言创建一个函数,并用SystemVerilog文件在VCS中编译它。在SystemVerilog中,添加
导入以允许访问C函数。假设方法名为my_localtime,返回时间为字符串,则导入应如下所示:
import "DPI" function string my_localtime();
在c文件wallclock.c中:
#include <time.h>
wallclock() {
time_t t;
t = time(NULL);
return (ctime(&t));
//return time(NULL);
}
localtime()是C库的函数,返回的不是字符串。命名您自己的函数,而不是localtime,否则,由于共享库顺序依赖关系,模拟器可能调用错误的函数。
date
命令输出类似于:
Mon Aug 7 14:00:34 PDT 2017
调用 $fscanf时,使用的格式是
%s
,因此它将匹配一个字符串(根据LRM,这是一个非空白字符序列)。由于第4个字符是空白,因此
localtime
字符串将仅包含输出的前3个字符(即一周中的第几天)。$system在退出时直接返回系统调用的返回值,但该值仅为一到两个字节,通常为0或错误代码。在模拟器中提取时间的常用技术是将其写入一个文件,如我在回答中发布的链接中所述。在UVM中,是否可以转储每个阶段所花费的挂钟时间?看起来您是在谈论模拟器运行每个阶段所花费的时间。如果是,答案是肯定的,在每个阶段之前和之后调用 $system,每次将输出写入文件并读回。然后测量差异。
import "DPI-C" function string wallclock();
module try;
//int unsigned t;
string t;
initial begin
t = wallclock();
$write("time=%0s\n", t);
end
endmodule
代码如下(示例):
time_time(time_t*)
代码如下(示例):
now()
该处使用的url网络请求的数据。
sysdate()
from datetime import datetime
start = datetime.now() #获取当前系统时间
from datetime import datetime
start = datetime.now() #获取当前系统时间
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。