not16.v
/* Not16(in) : For i = 0..15 out[i] = Not(in[i]) */ // gate-level module not16_gate (output [15:0] out, input [15:0] in); // operations not(out[0], in[0]); not(out[1], in[1]); not(out[2], in[2]); not(out[3], in[3]); not(out[4], in[4]); not(out[5], in[5]); not(out[6], in[6]); not(out[7], in[7]); not(out[8], in[8]); not(out[9], in[9]); not(out[10], in[10]); not(out[11], in[11]); not(out[12], in[12]); not(out[13], in[13]); not(out[14], in[14]); not(out[15], in[15]); endmodule // behavioural-level module not16_behavioural (output reg [15:0] out, input [15:0] in); always @ (in) begin out = ~in; end endmodule // test module test; reg [15:0] in; wire [15:0] out; // not16_gate Instance0 (out, in); not16_behavioural Instance0 (out, in); // note: #(n) : delay by n timestep (check time scale with $printtimescale) initial begin in[7:0] = 8'b11111111; // 0, 0, 0, 0, 0, 0, 0, 0 in[15:8] = 8'b00000000; // 1, 1, 1, 1, 1, 1, 1, 1 end initial begin $printtimescale; // Time scale of (test) is 1s / 1s #(0) $monitor ("%2d | in = %d | out = %d", $time, in[0], out[0]); #(1) $monitor ("%2d | in = %d | out = %d", $time, in[1], out[1]); #(1) $monitor ("%2d | in = %d | out = %d", $time, in[2], out[2]); #(1) $monitor ("%2d | in = %d | out = %d", $time, in[3], out[3]); #(1) $monitor ("%2d | in = %d | out = %d", $time, in[4], out[4]); #(1) $monitor ("%2d | in = %d | out = %d", $time, in[5], out[5]); #(1) $monitor ("%2d | in = %d | out = %d", $time, in[6], out[6]); #(1) $monitor ("%2d | in = %d | out = %d", $time, in[7], out[7]); #(1) $monitor ("%2d | in = %d | out = %d", $time, in[8], out[8]); #(1) $monitor ("%2d | in = %d | out = %d", $time, in[9], out[9]); #(1) $monitor ("%2d | in = %d | out = %d", $time, in[10], out[10]); #(1) $monitor ("%2d | in = %d | out = %d", $time, in[11], out[11]); #(1) $monitor ("%2d | in = %d | out = %d", $time, in[12], out[12]); #(1) $monitor ("%2d | in = %d | out = %d", $time, in[13], out[13]); #(1) $monitor ("%2d | in = %d | out = %d", $time, in[14], out[14]); #(1) $monitor ("%2d | in = %d | out = %d", $time, in[15], out[15]); // 0 | in = 1 | out = 0 // 1 | in = 1 | out = 0 // 2 | in = 1 | out = 0 // 3 | in = 1 | out = 0 // 4 | in = 1 | out = 0 // 5 | in = 1 | out = 0 // 6 | in = 1 | out = 0 // 7 | in = 1 | out = 0 // 8 | in = 0 | out = 1 // 9 | in = 0 | out = 1 // 10 | in = 0 | out = 1 // 11 | in = 0 | out = 1 // 12 | in = 0 | out = 1 // 13 | in = 0 | out = 1 // 14 | in = 0 | out = 1 // 15 | in = 0 | out = 1 end endmodule