N- bit  arithmetic shifter Verilog Code:
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
module nBitArithShifterGen(in, out, control);
                 parameter n=4;
                 input    [n-1:0]
in;
                 output                 [n-1:0]
out;
                 reg                        [n-1:0]
out;
                 input [2:0]control;
                 integer i;
always @ (control or in)
                begin     
                                case
(control)
                                0:
out = in*2;
                                1:
out = in*4;
                                2:
out = in;
                                3:
out = in/2;
                                4:
out = in/4;
                                5:
out = 0;
                                6:
begin
                                                for(i=0;
i<n; i=i+1)
                                                begin
                                                out[i]=1'b1;
                                                end
                                                end                        
                                7:            begin
                                                for(i=0;
i<n; i=i+1)
                                                begin
                                                out[i]=1'bZ;
                                                end
                                                end
                                default:
out=0;
                                endcase
                end
endmodule
`timescale 1ns / 1ps
////////////////////////////////////////////////////////////////////////////////
module shifterVTF;
                //
Inputs
                reg
[3:0] in;
                reg
[2:0]ctr;
                reg
error;
                reg
clk;
                reg
[3:0]out_tc;
                //
Outputs
                wire
[3:0] out;
                //
Instantiate the Unit Under Test (UUT)
                nBitArithShifterGen
uut (
                                .in(in),
                                .out(out),
                                .control(ctr)
                );
                initial
begin
                                //
Initialize Inputs
                                in
= 2;
                                ctr
= 0;
                                error
=0;
                                clk=0;
                                //
Wait 100 ns for global reset to finish
                                #100;
                                end
    always
                 begin
                 #20 clk=~clk;
                 end
                 always @ (posedge(clk))
                 begin
                 ctr=ctr+1;
                 end
                 always @(ctr or in)
                 begin
                 case (ctr)
                                0:
out_tc = in*2;
                                1:
out_tc = in*4;
                                2:
out_tc = in;
                                3:
out_tc = in/2;
                                4:
out_tc = in/4;
                                5:
out_tc = 0;
                                6:            out_tc = 4'b1111;
                                7:
out_tc = 4'bZZZZ;
                                default:
out_tc=0;
                                endcase
                end
                always
@(out,out_tc)
                begin
                if(out==out_tc)
error=0;
                else
error=1;
                end
endmodule


