

Verilog operators "&" ("and") and "|" ("or") can be applied to a bus. That allows to "gate" all the individual signals of a bus together.
| wire [7:0] my_bus; // these 2 statements are equivalent wire my_bus_is_all_1s = (my_bus==8'hFF); wire my_bus_is_all_1s = &my_bus; // these 2 statements are equivalent wire my_bus_is_all_0s = (my_bus==8'h00); wire my_bus_is_all_0s = ~|my_bus; // these 2 statements are equivalent wire my_bus_is_non_0 = (my_bus!=8'h00); wire my_bus_is_non_0 = |my_bus; | 
Here're 3 different ways to write a 2-to-1 mux.
| wire a, b, c; // This continuous assignment wire my_mux = (a ? b : c); // is equivalent to this procedural assignment reg my_mux; always @(a or b or c) begin case(a) 1'b1: my_mux = b; 1'b0: my_mux = c; endcase end // and this one too reg my_mux; always @(a or b or c) begin if(a) my_mux = b; else my_mux = c; end | 
| wire [7:0] my_bus = {2'b01, 4'hF, 1'b1, 1'b0}; wire this_signal_is_true = (my_bus==8'b01111110); | 
| wire [7:0] my_bus = {4{2'b01}}; wire this_signal_is_true = (my_bus==8'b01010101); | 
| wire [31:0] myvalue = 32'h76543210; wire [3:0] thisis4 = myvalue[19:16]; wire [3:0] thisis4too = myvalue[19-:4]; wire [3:0] thisis4also = myvalue[16+:4]; | 
| module test ( input [7:0] a, b, c, d, output [8:0] sum1, sum2 ); add #(8,9) myadder1 (.A(a), .B(b), .Q(sum1)); add #(8,9) myadder2 (.A(c), .B(d), .Q(sum2)); endmodule module add #(parameter wi=8, wo=9) ( input [wi-1:0] A, B, output [wo-1:0] Q ); assign Q = A+B; endmodule | 
reg clk;
initial    // clock generation
begin
  clk = 0;
  forever #10 clk = ~clk;
end
initial
begin
  @(posedge clk);
    while(value==0) @(posedge clk);
    repeat(100) @(posedge clk);
    $stop;
    $finish;
end