如何查看信号驱动强度?
How to check signal drive strength?
我们如何检查线上的信号驱动强度?可能吗?
通常,我们只能使用条件检查 ==
或三重等于 ===
来检查连线的逻辑值 1
或 0
。
但它并没有告诉我们强度,例如pull
、strong
或 weak
等
那么有没有办法检查驱动强度?例如,它会像这样使用:
wire a;
//... your a assignment
initial begin
//...
if (a && is_weak1(a)) $display("a is weak 1");
end
使用特殊的 %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 pointed out the $psprintf
is not actually part of the system verilog standard we should use $sformatf
instead. IEEE Std 1800-2012 第 21.3.3 节 将数据格式化为字符串。
我们如何检查线上的信号驱动强度?可能吗?
通常,我们只能使用条件检查 ==
或三重等于 ===
来检查连线的逻辑值 1
或 0
。
但它并没有告诉我们强度,例如pull
、strong
或 weak
等
那么有没有办法检查驱动强度?例如,它会像这样使用:
wire a;
//... your a assignment
initial begin
//...
if (a && is_weak1(a)) $display("a is weak 1");
end
使用特殊的 %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 pointed out the $psprintf
is not actually part of the system verilog standard we should use $sformatf
instead. IEEE Std 1800-2012 第 21.3.3 节 将数据格式化为字符串。