我们如何检查电线上的信号驱动强度?可能吗?
通常情况下,我们只能使用条件检查1
或三等于0
检查导线的逻辑值==
或===
。
但它并没有告诉我们力量,例如pull
,strong
或weak
等。
那么有没有办法检查驱动强度?例如,它将使用类似这样的东西:
wire a;
//... your a assignment
initial begin
//...
if (a && is_weak1(a)) $display("a is weak 1");
end
答案 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
在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节将数据格式化为字符串。