在verilog中检测未分配的寄存器

K M*_*hta 2 verilog

我刚刚开始学习verilog,我遇到了一种情况,我试图检测寄存器是否尚未分配值.例如,给出以下代码:

reg [3:0] r;
initial
    begin
        $display("r = %b", r);
        if (r == 4'bxxxx) $display("success");
        else $display("failure");
    end
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,我得到此输出:

r = xxxx
failure
Run Code Online (Sandbox Code Playgroud)

我明白我无法将r与4'bxxxx进行比较,我理解为什么我不能这样做.但有没有其他方法来检测未分配的寄存器?

Tim*_*Tim 7

我认为你需要三重等于===运算符.结果1'bx == 1'bxx,结果1'bx === 1'bxtrue.

http://www.asic-world.com/verilog/operators1.html