Design an Error Checker that inspects an 8-bit input bus and reports whether any bit is x or z in simulation. When the bus is fully known (only 0/1), pass it through; otherwise, output zeros.
error_checker_xzbus[7:0]all_known β 1 when every bit of bus is 0/1 (no x/z)has_unknown β 1 when any bit of bus is x or zbus_if_known[7:0] β equals bus when all_known=1, else 8'h00bus = 8'hA5 β all_known=1, has_unknown=0, bus_if_known=8'hA5bus = 8'b0000_0x01 β all_known=0, has_unknown=1, bus_if_known=8'h00bus = 8'bzzzz_zzzz β all_known=0, has_unknown=1, bus_if_known=8'h00Blocking (=): Executes immediately, sequential.
a = b; c = a; // c gets new a
Non-blocking (<=): Updates scheduled, parallel.
a <= b; c <= a; // c gets old a
= in combinational always blocks.<= in sequential (clocked) always blocks.+, -, *, /, %
signed.x.reg signed [3:0] x = -3, y = 2;
assign z = x / y; // result = -1
+, -<, <=, >, >=
1 or 0.x/z β result = x.==, != β logical compare, x/z β x.===, !== β case equality (checks x/z too).if (a === 1'bx) $display("a is unknown");
&&, ||, !
x/z as unknown (x).&, |, ^, ~^
assign y = a ^ b; // XOR
<<, >> β logical shift.<<<, >>> β arithmetic shift (preserve sign).reg signed [7:0] a = -4;
assign b = a >>> 1; // arithmetic shift right β -2
assign x = {a, b}; // concat
assign y = {4{1βb1}}; // replicate β 1111
Applies operator across all bits: &a, |a, ^a, ~&a, etc.
assign parity = ^data; // XOR reduction (parity bit)
?:)assign out = sel ? a : b;
?:) operator is an inline ifβelse in an expression: y = sel ? a : b;sel=1 β use the then value; sel=0 β use the else value.sel = x/z: Verilog evaluates both branches and merges bit-by-bit:x.(1βbx) ? 4βb1111 : 4βb1111 β 1111(1βbx) ? 4βb1111 : 4βb0000 β xxxx$signed(expression)expression into a signed expression of the same bit-width.Example:
reg [3:0] a = 4'b1000; // 8 (unsigned)
$display("%0d", $signed(a)); // -8
$unsigned(expression)expression into an unsigned expression of the same bit-width.Example:
reg signed [3:0] b = 4'b1000; // -8 (signed)
$display("%0d", $unsigned(b)); // 8