将Modelsim模拟时间瞬间作为字符串变量?

bFi*_*ig8 5 vhdl

我知道在使用时report,severityModelsim会将模拟时刻作为其消息的一部分显示给控制台.无论如何,这个时刻作为一个字符串变量"获取",所以我可以用这个"时间"字符串打印我自己的消息?

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可以在模拟中使用与函数组合的类型.