module tb;
logic [1:0] aa = 2'b1z;
logic [1:0] bb = 2'b10;
logic [1:0] cc = 2'b11;
logic [1:0] dd = 2'b1x;
logic result0;
logic [1:0] result1;
logic [1:0] result2;
logic [1:0] result_lor;
logic [1:0] result_land;
initial begin
result0 = (aa==bb);
$display("1z == 10 = %0b",result0);
result0 = (aa===bb);
$display("1z === 10 = %0b",result0);
result1 = aa | bb;
result_lor = aa || bb;
result2 = aa & bb;
result_land = aa && bb;
$display("1z | 10 = %0b",result1);
$display("1x | 10 = %0b",bb | dd);
$display("1x | 11 = %0b",dd | 2'b11);
$display("1z || 10 = %0b",result_lor);
$display("1x || 10 = %0b",bb || dd);
$display("1z & 10 = %0b",result2);
$display("1z && 10 = %0b",result_land);
result_land = bb && cc;
$display("11 && 10 = %0d",result_land);
result_land = bb && 2'b00;
$display("11 && 00 = %0d",result_land);
$display("11 & 1x = %0b",2'b11 & 2'b1x);
$display("11 & 1z = %0b",2'b11 & 2'b1z);
end
endmodule
结果:
# 1z == 10 = x
# 1z === 10 = 0
# 1z | 10 = 1x
# 1x | 10 = 1x
# 1x | 11 = 11
# 1z || 10 = 1
# 1x || 10 = 1
# 1z & 10 = 10
# 1z && 10 = 1
# 11 && 10 = 1
# 11 && 00 = 0
# 11 & 1x = 1x
# 11 & 1z = 1x
在四值信号中,x和z 会被认为是x,与0或是x,与1与是x。
&、| 是按位与或。
&&、|| 是逻辑与或,两边以真假判定,非0为真。结果为1位表示。
2.队列
module tb2;
initial begin
int AAA[$] = {1,2,3,4,5,6,7,8,9};
int temp;
foreach(AAA[i]) begin
temp = AAA.pop_front;
$display("AAA[%0d] = %0h",i,temp);
end
end
endmodule
结果: