$isunknown判断是否存在叉态.只对具有4状态的类型有用,比如logic,wire,reg。如下例所示,对二状态类型是没有用。注意在TB中如果使用$isunknown,或者需要X和阻态传播,使用四值的类型。
例子:
`timescale 1ns/1ns
module top();
logic [4:0] a;
int b;
wire [4:0] c=5'b00x00;
bit [4:0] d;
reg [4:0] e;
initial begin
a=5'b00x00;
b=32'b000x00;
d=5'b00x00;
e=5'b00x00;
$display("a=%0b",a);
$display("b=%0b",b);
$display("c=%0b",c);
$display("d=%0b",d);
$display("e=%0b",e);
$display("isa=%0d",$isunknown(a));
$display("isb=%0d",$isunknown(b));
$display("isc=%0d",$isunknown(c));
$display("isd=%0d",$isunknown(d));
$display("ise=%0d",$isunknown(e));
b=a;
$display("isb=%0d",$isunknown(b));
$display("b=%0b",b);
d=c;
$display("isd=%0d",$isunknown(d));
$display("d=%0b",d);
$finish;
end
endmodule
仿真结果,可以看到对int和bit是无效(并不是无效,只是因为是两态,所以判断结果一直为0):
a=x00
b=0
c=x00
d=0
e=x00
isa=1
isb=0
isc=1
isd=0
ise=1
isb=0
b=0
isd=0
d=0
$finish called from file "lab13_fork.sv", line 101.