提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
content
- 前言
- 一、verilog
- 二、习语嫣
- 1.头文件:time.h
- 2.
- 3.
- 三、python
前言
第一篇博客,总结一下各个语言返回系统时间的方法,欢迎补充。
以下是本篇文章正文内容,案例多是网上cv而来,算是帮大家搜集整理一下吧
一、verilog
使用$system()运行任何系统命令,包括系统的日期命令
initial begin
$system("date");
end
最新版本应支持§20.18.1中定义的
$system
假设在基于UNIX的环境中运行,则可以执行以下操作:
function string get_localtime(); int fd;string localtime;void'($system("data > localtime")); // temp filefd = $fopen("localtime", "r");void'($fscanf(fd,"%s",localtime));$fclose(fd);void'($system("rm localtime")); // delete filereturn localtime;
endfunction
如果VCS不支持
$system
那么可以用C语言创建一个函数,并用SystemVerilog文件在VCS中编译它。在SystemVerilog中,添加
导入以允许访问C函数。假设方法名为my_localtime,返回时间为字符串,则导入应如下所示:
import "DPI" function string my_localtime();
在c文件wallclock.c中:
#include
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 begint = wallclock();$write("time=%0s\n", t);end
endmodule
二、习语嫣
1.头文件:time.h
代码如下(示例):
time_time(time_t*)
2.
代码如下(示例):
now()
该处使用的url网络请求的数据。
3.
sysdate()
三、python
from datetime import datetime
start = datetime.now() #获取当前系统时间
from datetime import datetime
start = datetime.now() #获取当前系统时间