如何检查信号驱动强度?

时间:2015-02-09 04:08:06

标签: verilog system-verilog

我们如何检查电线上的信号驱动强度?可能吗? 通常情况下,我们只能使用条件检查1或三等于0检查导线的逻辑值=====。 但它并没有告诉我们力量,例如pullstrongweak等。

那么有没有办法检查驱动强度?例如,它将使用类似这样的东西:

wire a;
//... your a assignment
initial begin
//...
if (a && is_weak1(a)) $display("a is weak 1");
end

1 个答案:

答案 0 :(得分:5)

使用特殊%v字符显示驱动器强度。

$display("a is %v" a);

%v

显示的值
Strength   Value   %v
supply     7       Su
strong     6       St
pull       5       Pu
large      4       La
weak       3       We 
medium     2       Me
small      1       Sm
highz      0       HiZ

Source

在SystemVerilog中检查条件语句的值:

string str; 
initial begin
  //...
  str = $sformatf("%v", my_net);
  if (a && (str == "We1")) $display("a is weak 1");

注意:因为值1是在字符串中编码的,所以检查a为高是多余的,可能只是:

str = $sformatf("%v", my_net);
if (str == "We1") $display("a is weak 1");

由于Greg指出$psprintf实际上不是系统verilog标准的一部分,我们应该使用$sformatf代替。 IEEE Std 1800-2012第21.3.3节将数据格式化为字符串