module gen_prod1(input [7:0] A,input neg,input zero,input one,input two,output [10:0] prod1);reg [7:0] D;reg [10:0] prod_pre;wire [3:0] m;assign m={{neg},{zero},{one},{two}};always @ (*) begin casex(m) 4'b01xx: prod_pre <={{1{1'b1}},{!neg},{9{1'b0}}}; 4'b0x1x: prod_pre <= {{1'b1} ,{{!neg}},{1'b0}, A}; 4'b0xx1: prod_pre <= {{1'b1} ,{{!neg}}, A, {1'b0}}; 4'b1x1x:begin D[0]=A[0]; D[1]=A[1]^A[0]; D[2]=A[2]^(A[1]||A[0]); D[3]=A[3]^(A[2]||A[1]||A[0]); D[4]=A[4]^(A[3]||A[2]||A[1]||A[0]); D[5]=A[5]^(A[4]||A[3]||A[2]||A[1]||A[0]); D[6]=A[6]^(A[5]||A[4]||A[3]||A[2]||A[1]||A[0]); D[7]=A[7]^(A[6]||A[5]||A[4]||A[3]||A[2]||A[1]||A[0]); prod_pre <= {{1'b1} ,{{!neg}},{1'b1}, D}; end 4'b1xx1:begin D[0]=1'b0; D[1]=A[0]^{1'b0}; D[2]=A[1]^A[0]; D[3]=A[2]^(A[1]||A[0]); D[4]=A[3]^(A[2]||A[1]||A[0]);