我知道在使用时report
,severity
Modelsim会将模拟时刻作为其消息的一部分显示给控制台.无论如何,这个时刻作为一个字符串变量"获取",所以我可以用这个"时间"字符串打印我自己的消息?
Mor*_*mer 11
模拟时间可通过now
函数获得,该函数将返回值作为time
类型.该类型的image
属性time
可用于将其转换为字符串time'image(now)
.因此,您可以使用以下命令在自己的消息中打印模拟时间:
report "This is the time: " & time'image(now);
Run Code Online (Sandbox Code Playgroud)
增加:如果需要额外的字符串操作,则模拟时间字符串可以用变量表示,代码如下:
process is
variable sim_time_str_v : string(1 to 30); -- 30 chars should be enough
variable sim_time_len_v : natural;
begin
...
sim_time_len_v := time'image(now)'length;
sim_time_str_v := (others => ' ');
sim_time_str_v(1 to sim_time_len_v) := time'image(now);
report "Sim time string length: " & integer'image(sim_time_len_v);
report "Sim time string.......:'" & sim_time_str_v & "'";
...
Run Code Online (Sandbox Code Playgroud)
但是,VHDL在文本字符串操作方面很麻烦,因为存储某些操作的结果需要知道长度.对于更高级的字符串操作,access
可以在模拟中使用与函数组合的类型.