| |
| // test_intermout_always_comb_1_test.v |
| module f1_test(a, b, c, d, z); |
| input a, b, c, d; |
| output z; |
| reg z, temp1, temp2; |
| |
| always @(a or b or c or d) |
| begin |
| temp1 = a ^ b; |
| temp2 = c ^ d; |
| z = temp1 ^ temp2; |
| end |
| |
| endmodule |
| |
| // test_intermout_always_comb_3_test.v |
| module f2_test (in1, in2, out); |
| input in1, in2; |
| output reg out; |
| |
| always @ ( in1 or in2) |
| if(in1 > in2) |
| out = in1; |
| else |
| out = in2; |
| endmodule |
| |
| // test_intermout_always_comb_4_test.v |
| module f3_test(a, b, c); |
| input b, c; |
| output reg a; |
| |
| always @(b or c) begin |
| a = b; |
| a = c; |
| end |
| endmodule |
| |
| // test_intermout_always_comb_5_test.v |
| module f4_test(ctrl, in1, in2, out); |
| input ctrl; |
| input in1, in2; |
| output reg out; |
| |
| always @ (ctrl or in1 or in2) |
| if(ctrl) |
| out = in1 & in2; |
| else |
| out = in1 | in2; |
| endmodule |
| |
| // test_intermout_always_ff_3_test.v |
| module f5_NonBlockingEx(clk, merge, er, xmit, fddi, claim); |
| input clk, merge, er, xmit, fddi; |
| output reg claim; |
| reg fcr; |
| |
| always @(posedge clk) |
| begin |
| fcr = er | xmit; |
| |
| if(merge) |
| claim = fcr & fddi; |
| else |
| claim = fddi; |
| end |
| endmodule |
| |
| // test_intermout_always_ff_4_test.v |
| module f6_FlipFlop(clk, cs, ns); |
| input clk; |
| input [31:0] cs; |
| output [31:0] ns; |
| integer is; |
| |
| always @(posedge clk) |
| is <= cs; |
| |
| assign ns = is; |
| endmodule |
| |
| // test_intermout_always_ff_5_test.v |
| module f7_FlipFlop(clock, cs, ns); |
| input clock; |
| input [3:0] cs; |
| output reg [3:0] ns; |
| reg [3:0] temp; |
| |
| always @(posedge clock) |
| begin |
| temp = cs; |
| ns = temp; |
| end |
| |
| endmodule |
| |
| // test_intermout_always_ff_6_test.v |
| module f8_inc(clock, counter); |
| |
| input clock; |
| output reg [3:0] counter; |
| always @(posedge clock) |
| counter <= counter + 1; |
| endmodule |
| |
| // test_intermout_always_ff_8_test.v |
| module f9_NegEdgeClock(q, d, clk, reset); |
| input d, clk, reset; |
| output reg q; |
| |
| always @(negedge clk or negedge reset) |
| if(!reset) |
| q <= 1'b0; |
| else |
| q <= d; |
| |
| endmodule |
| |
| // test_intermout_always_ff_9_test.v |
| module f10_MyCounter (clock, preset, updown, presetdata, counter); |
| input clock, preset, updown; |
| input [1: 0] presetdata; |
| output reg [1:0] counter; |
| |
| always @(posedge clock) |
| if(preset) |
| counter <= presetdata; |
| else |
| if(updown) |
| counter <= counter + 1; |
| else |
| counter <= counter - 1; |
| endmodule |
| |
| // test_intermout_always_latch_1_test.v |
| module f11_test(en, in, out); |
| input en; |
| input [1:0] in; |
| output reg [2:0] out; |
| |
| always @ (en or in) |
| if(en) |
| out = in + 1; |
| endmodule |
| |
| // test_intermout_bufrm_1_test.v |
| module f12_test(input in, output out); |
| //no buffer removal |
| assign out = in; |
| endmodule |
| |
| // test_intermout_bufrm_2_test.v |
| module f13_test(input in, output out); |
| //intermediate buffers should be removed |
| wire w1, w2; |
| assign w1 = in; |
| assign w2 = w1; |
| assign out = w2; |
| endmodule |
| |
| // test_intermout_bufrm_6_test.v |
| module f14_test(in, out); |
| input in; |
| output out; |
| |
| wire w1, w2, w3, w4; |
| assign w1 = in; |
| assign w2 = w1; |
| assign w4 = w3; |
| assign out = w4; |
| f14_mybuf _f14_mybuf(w2, w3); |
| endmodule |
| |
| module f14_mybuf(in, out); |
| input in; |
| output out; |
| wire w1, w2, w3, w4; |
| |
| assign w1 = in; |
| assign w2 = w1; |
| assign out = w2; |
| endmodule |
| |
| |
| // test_intermout_bufrm_7_test.v |
| module f15_test(in1, in2, out); |
| input in1, in2; |
| output out; |
| // Y with cluster of f15_mybuf instances at the junction |
| |
| wire w1, w2, w3, w4, w5, w6, w7, w8, w9, w10; |
| assign w1 = in1; |
| assign w2 = w1; |
| assign w5 = in2; |
| assign w6 = w5; |
| assign w10 = w9; |
| assign out = w10; |
| |
| f15_mybuf _f15_mybuf0(w2, w3); |
| f15_mybuf _f15_mybuf1(w3, w4); |
| |
| f15_mybuf _f15_mybuf2(w6, w7); |
| f15_mybuf _f15_mybuf3(w7, w4); |
| |
| f15_mybuf _f15_mybuf4(w4, w8); |
| f15_mybuf _f15_mybuf5(w8, w9); |
| endmodule |
| |
| module f15_mybuf(in, out); |
| input in; |
| output out; |
| wire w1, w2, w3, w4; |
| |
| assign w1 = in; |
| assign w2 = w1; |
| assign out = w2; |
| endmodule |
| |
| |
| // test_intermout_exprs_add_test.v |
| module f16_test(out, in1, in2, vin1, vin2, vout1); |
| output out; |
| input in1, in2; |
| input [1:0] vin1; |
| input [2:0] vin2; |
| output [3:0] vout1; |
| |
| assign out = in1 + in2; |
| assign vout1 = vin1 + vin2; |
| endmodule |
| |
| // test_intermout_exprs_binlogic_test.v |
| module f17_test(in1, in2, vin1, vin2, out, vout, vin3, vin4, vout1 ); |
| input in1, in2; |
| input [1:0] vin1; |
| input [3:0] vin2; |
| input [1:0] vin3; |
| input [3:0] vin4; |
| output vout, vout1; |
| output out; |
| |
| assign out = in1 && in2; |
| assign vout = vin1 && vin2; |
| assign vout1 = vin3 || vin4; |
| endmodule |
| |
| // test_intermout_exprs_bitwiseneg_test.v |
| module f18_test(output out, input in, output [1:0] vout, input [1:0] vin); |
| |
| assign out = ~in; |
| assign vout = ~vin; |
| endmodule |
| |
| // test_intermout_exprs_buffer_test.v |
| module f19_buffer(in, out, vin, vout); |
| input in; |
| output out; |
| input [1:0] vin; |
| output [1:0] vout; |
| |
| assign out = in; |
| assign vout = vin; |
| endmodule |
| |
| // test_intermout_exprs_condexpr_mux_test.v |
| module f20_test(in1, in2, out, vin1, vin2, vin3, vin4, vout1, vout2, en1, ven1, ven2); |
| input in1, in2, en1, ven1; |
| input [1:0] ven2; |
| output out; |
| input [1:0] vin1, vin2, vin3, vin4; |
| output [1:0] vout1, vout2; |
| |
| assign out = en1 ? in1 : in2; |
| assign vout1 = ven1 ? vin1 : vin2; |
| assign vout2 = ven2 ? vin3 : vin4; |
| endmodule |
| |
| // test_intermout_exprs_condexpr_tribuf_test.v |
| module f21_test(in, out, en, vin1, vout1, en1); |
| input in, en, en1; |
| output out; |
| input [1:0] vin1; |
| output [1:0] vout1; |
| |
| assign out = en ? in : 1'bz; |
| assign vout1 = en1 ? vin1 : 2'bzz; |
| endmodule |
| |
| // test_intermout_exprs_constshift_test.v |
| module f22_test(in, out, vin, vout, vin1, vout1, vin2, vout2); |
| |
| input in; |
| input [3:0] vin, vin1, vin2; |
| output [3:0] vout, vout1, vout2; |
| output out; |
| |
| assign out = in << 1; |
| assign vout = vin << 2; |
| assign vout1 = vin1 >> 2; |
| assign vout2 = vin2 >>> 2; |
| endmodule |
| |
| // test_intermout_exprs_const_test.v |
| module f23_test (out, vout); |
| output out; |
| output [7:0] vout; |
| |
| assign out = 1'b1; |
| assign vout = 9; |
| endmodule |
| |
| // test_intermout_exprs_div_test.v |
| module f24_test(out, in1, in2, vin1, vin2, vout1); |
| output out; |
| input in1, in2; |
| input [1:0] vin1; |
| input [2:0] vin2; |
| output [3:0] vout1; |
| |
| assign out = in1 / in2; |
| assign vout1 = vin1 / vin2; |
| endmodule |
| |
| // test_intermout_exprs_logicneg_test.v |
| module f25_test(out, vout, in, vin); |
| output out, vout; |
| input in; |
| input [3:0] vin; |
| assign out = !in; |
| assign vout = !vin; |
| endmodule |
| |
| // test_intermout_exprs_mod_test.v |
| module f26_test(out, in1, in2, vin1, vin2, vout1); |
| output out; |
| input in1, in2; |
| input [1:0] vin1; |
| input [2:0] vin2; |
| output [3:0] vout1; |
| |
| assign out = in1 % in2; |
| assign vout1 = vin1 % vin2; |
| endmodule |
| |
| // test_intermout_exprs_mul_test.v |
| module f27_test(out, in1, in2, vin1, vin2, vout1); |
| output out; |
| input in1, in2; |
| input [1:0] vin1; |
| input [2:0] vin2; |
| output [3:0] vout1; |
| |
| assign out = in1 * in2; |
| assign vout1 = vin1 * vin2; |
| endmodule |
| |
| // test_intermout_exprs_redand_test.v |
| module f28_test(output out, input [1:0] vin, output out1, input [3:0] vin1); |
| |
| assign out = &vin; |
| assign out1 = &vin1; |
| endmodule |
| |
| // test_intermout_exprs_redop_test.v |
| module f29_Reduction (A1, A2, A3, A4, A5, A6, Y1, Y2, Y3, Y4, Y5, Y6); |
| input [1:0] A1; |
| input [1:0] A2; |
| input [1:0] A3; |
| input [1:0] A4; |
| input [1:0] A5; |
| input [1:0] A6; |
| output Y1, Y2, Y3, Y4, Y5, Y6; |
| //reg Y1, Y2, Y3, Y4, Y5, Y6; |
| assign Y1=&A1; //reduction AND |
| assign Y2=|A2; //reduction OR |
| assign Y3=~&A3; //reduction NAND |
| assign Y4=~|A4; //reduction NOR |
| assign Y5=^A5; //reduction XOR |
| assign Y6=~^A6; //reduction XNOR |
| endmodule |
| |
| // test_intermout_exprs_sub_test.v |
| module f30_test(out, in1, in2, vin1, vin2, vout1); |
| output out; |
| input in1, in2; |
| input [1:0] vin1; |
| input [2:0] vin2; |
| output [3:0] vout1; |
| |
| assign out = in1 - in2; |
| assign vout1 = vin1 - vin2; |
| endmodule |
| |
| // test_intermout_exprs_unaryminus_test.v |
| module f31_test(output out, input in, output [31:0] vout, input [31:0] vin); |
| |
| assign out = -in; |
| assign vout = -vin; |
| endmodule |
| |
| // test_intermout_exprs_unaryplus_test.v |
| module f32_test(output out, input in); |
| |
| assign out = +in; |
| endmodule |
| |
| // test_intermout_exprs_varshift_test.v |
| module f33_test(vin0, vout0); |
| input [2:0] vin0; |
| output reg [7:0] vout0; |
| |
| wire [7:0] myreg0, myreg1, myreg2; |
| integer i; |
| assign myreg0 = vout0 << vin0; |
| |
| assign myreg1 = myreg2 >> i; |
| endmodule |