module top; reg [8*11:1] str1; reg [8*25:1] str2; // filled by spaces at left reg a,b,c; reg [7:0] sprite[0:7]; // use one byte by line reg [15:0] sprite2; // sprite as bitfield integer i; initial begin str1 = "Hello World"; // string initialisation tests str2 = "Hello World"; a = 1'b1; // bit initialisation tests b = a^1; c = a^0; sprite[0] = 8'b10011000; // sprites initialisation tests sprite[1] = 8'b00100100; sprite[2] = 8'b01000010; sprite[3] = 8'b10011001; sprite[4] = 8'b10011001; sprite[5] = 8'b01000010; sprite[6] = 8'b00100100; sprite[7] = 8'b00011000; sprite2[ 7:0] = 8'b10011000; sprite2[15:8] = 8'b00100100; $display ("str1 = %s", str1); // strings display $display ("str2 = %s", str2); $display ("a = %d", a); // bits display $display ("b = a^1 = %d", b); $display ("c = a^0 = %d", c); for ( i=0; i<8; i=i+1) begin // sprites display $display ("sprite[%2d] = %b",i,sprite[i]); end for ( i=0; i<2; i=i+1) begin // try to read bitranges, including out of bounds $display ("sprite2[8*i(%1d) +: 8] = %8b",i,sprite2[8*i +:8]); $display ("sprite2[8*i(%1d) -: 8] = %8b",i,sprite2[8*i -:8]); $display ("sprite2[4*i(%1d) -: 8] = %8b",i,sprite2[4*i -:8]); end end endmodule