Verilog中的%m如何在$ display system任务中工作

时间:2019-01-11 17:24:08

标签: verilog

我想知道Verilog中$ display系统任务中%m的用法

我正在学习verilog。

这是本书中给出的示例代码。最好有人用更多的例子来解释这一点,这在书中似乎还不清楚

//the highest-level module called top. No argument is required. This
//is a useful feature)
$display("This string is displayed from %m level of hierarchy");
-- This string is displayed from top.p1 level of hierarchy


1 个答案:

答案 0 :(得分:1)

免费的IEEE Std 1800-2012,第21.2.1.6节层次名称格式指出:

  

%m格式说明符不接受参数。相反,它   使显示任务打印设计的层次结构名称   调用的元素,子例程,命名块或带标签的语句   包含格式说明符的系统任务。这在以下情况下很有用   有许多调用系统任务的模块实例。

这里是一个例子:

module top;
   buff b0 (.buf_in(1'b0), .buf_out());
endmodule

module buff (
   input  buf_in,
   output buf_out
);
   wire  a;
   inv i0 (.in(buf_in), .out(a      ));
   inv i1 (.in(a     ), .out(buf_out));
   initial $display("Inside hierarchy %m");
endmodule

module inv (
   input  in,
   output out
);
   assign out = ~in;
   initial $display("Inside hierarchy %m");
endmodule         

输出:

Inside hierarchy top.b0
Inside hierarchy top.b0.i0
Inside hierarchy top.b0.i1