Home Articles

如何检查信号驱动强度?

Asked
Viewed 1295 times
2

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

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

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

1 Answer

  • 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节将数据格式化为字符串 .

Related