SRL16E.v


// $Header: /hq/hwdev/pegasus/source_code/cvsroot/p3dev/pgtest/virtex/pin_tests/array_pintest/v/SRL16E.v,v 1.5 2000/12/09 01:52:22 polybus Exp $

/*

FUNCTION    : 16 bit Shift Register LUT with Clock Enable

*/


`timescale  100 ps / 10 ps

`celldefine

module SRL16E (Q, A0, A1, A2, A3, CE, CLK, D);

    parameter cds_action = "ignore";

    parameter INIT = 16'h0000;

    output Q;

    input  A0, A1, A2, A3, CE, CLK, D;

    reg  [5:0]  count;
    reg  [15:0] data;
    wire [3:0]  addr;
    wire    q_int;

    buf b_a3 (addr[3], A3);
    buf b_a2 (addr[2], A2);
    buf b_a1 (addr[1], A1);
    buf b_a0 (addr[0], A0);

    buf b_q_int (q_int, data[addr]);
    buf b_q (Q, q_int);

    initial
    begin
    while (CLK === 1'bx)
        #2;
    for (count = 0; count < 16; count = count + 1)
        data[count] <= INIT[count];
    end

    always @(posedge CLK)
    begin
    if (CE == 1'b1) begin
        {data[15:0]} <= {data[14:0], D};
    end
    end

    specify
    if (CE)
        (CLK => Q) = (1, 1);
    endspecify

endmodule

`endcelldefine


HDLMaker Generated Files
SRL16E.job Synopsys script file