如何查看信号驱动强度?

问题描述 投票:0回答:1

如何检查线路上的信号驱动强度?是否可以? 通常,我们只能使用条件检查

1
或三重等于
0
来检查电线的逻辑值
==
===
。 但它并没有告诉我们强度,例如
pull
strong
weak

那么有没有办法检查驱动强度呢?例如,它会这样使用:

wire a;
//... your a assignment
initial begin
//...
if (a && is_weak1(a)) $display("a is weak 1");
end
verilog system-verilog
1个回答
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 节 将数据格式化为字符串

© www.soinside.com 2019 - 2024. All rights reserved.