RAM_FIFO.v


/*
 Produced by NSL Core, IP ARCH, Inc. Fri Jun 04 17:54:48 2010

 Licensed to :EVALUATION USER:
*/

module RAM_FIFO ( p_reset , m_clock , DB_i , DB_o , WEN_i , REN_i , FULL , EMPTY );
  input p_reset, m_clock;
  input [7:0] DB_i;
  output [7:0] DB_o;
  input WEN_i;
  input REN_i;
  output FULL;
  output EMPTY;
  reg [7:0] mem_array [0:15];
  reg [7:0] reg_DB_o;
  reg [3:0] wr_ptr;
  reg [3:0] rd_ptr;
  wire [3:0] next_wr_ptr;
  wire [3:0] next_rd_ptr;
  wire internal_FULL;
  wire internal_EMPTY;
  wire Check_FULL_flag;
  wire Check_EMPTY_flag;
  wire _net_0;
  wire _net_1;
  wire _net_2;
  wire _net_3;

   assign  next_wr_ptr = (wr_ptr)+(4'b0001);
   assign  next_rd_ptr = (rd_ptr)+(4'b0001);

//synthesis translate_off
always @(posedge m_clock or posedge p_reset)
  begin
if ((Check_FULL_flag&(~_net_2))&Check_FULL_flag&_net_2)
 begin $display("Warning: assign collision(RAM_FIFO:internal_FULL) at %d",$time);
if (Check_FULL_flag&(~_net_2)) $display("assert (Check_FULL_flag&(~_net_2)) at 71\n");
if (Check_FULL_flag&_net_2) $display("assert (Check_FULL_flag&_net_2) at 70\n");

  end
  end
//synthesis translate_on
   assign  internal_FULL =
//synthesis translate_off
((Check_FULL_flag&(~_net_2))&Check_FULL_flag&_net_2)? 1'bx :((Check_FULL_flag&(~_net_2))|(Check_FULL_flag&_net_2))?
//synthesis translate_on
((Check_FULL_flag&(~_net_2))?1'b0:1'b0)|
    ((Check_FULL_flag&_net_2)?1'b1:1'b0)
//synthesis translate_off
:1'bx
//synthesis translate_on
;

//synthesis translate_off
always @(posedge m_clock or posedge p_reset)
  begin
if ((Check_EMPTY_flag&(~_net_3))&Check_EMPTY_flag&_net_3)
 begin $display("Warning: assign collision(RAM_FIFO:internal_EMPTY) at %d",$time);
if (Check_EMPTY_flag&(~_net_3)) $display("assert (Check_EMPTY_flag&(~_net_3)) at 78\n");
if (Check_EMPTY_flag&_net_3) $display("assert (Check_EMPTY_flag&_net_3) at 77\n");

  end
  end
//synthesis translate_on
   assign  internal_EMPTY =
//synthesis translate_off
((Check_EMPTY_flag&(~_net_3))&Check_EMPTY_flag&_net_3)? 1'bx :((Check_EMPTY_flag&(~_net_3))|(Check_EMPTY_flag&_net_3))?
//synthesis translate_on
((Check_EMPTY_flag&(~_net_3))?1'b0:1'b0)|
    ((Check_EMPTY_flag&_net_3)?1'b1:1'b0)
//synthesis translate_off
:1'bx
//synthesis translate_on
;
   assign  Check_FULL_flag = 1'b1;
   assign  Check_EMPTY_flag = 1'b1;
   assign  _net_0 = WEN_i&(~internal_FULL);
   assign  _net_1 = REN_i&(~internal_EMPTY);
   assign  _net_2 = (next_wr_ptr)==(rd_ptr);
   assign  _net_3 = (rd_ptr)==(wr_ptr);
   assign  DB_o = reg_DB_o;
   assign  FULL = internal_FULL;
   assign  EMPTY = internal_EMPTY;
initial begin
    mem_array[0] <= 8'b00000000;
    mem_array[1] <= 8'b00000000;
    mem_array[2] <= 8'b00000000;
    mem_array[3] <= 8'b00000000;
    mem_array[4] <= 8'b00000000;
    mem_array[5] <= 8'b00000000;
    mem_array[6] <= 8'b00000000;
    mem_array[7] <= 8'b00000000;
    mem_array[8] <= 8'b00000000;
    mem_array[9] <= 8'b00000000;
    mem_array[10] <= 8'b00000000;
    mem_array[11] <= 8'b00000000;
    mem_array[12] <= 8'b00000000;
    mem_array[13] <= 8'b00000000;
    mem_array[14] <= 8'b00000000;
    mem_array[15] <= 8'b00000000;
end
always @(posedge m_clock)
  begin
   if (_net_0 )
     mem_array[wr_ptr] <= DB_i;
end
always @(posedge m_clock)
  begin
if (_net_1)
      reg_DB_o <= mem_array[rd_ptr];
end
always @(posedge m_clock or posedge p_reset)
  begin
if (p_reset)
     wr_ptr <= 4'b0000;
else if (_net_0)
      wr_ptr <= next_wr_ptr;
end
always @(posedge m_clock or posedge p_reset)
  begin
if (p_reset)
     rd_ptr <= 4'b0000;
else if (_net_1)
      rd_ptr <= next_rd_ptr;
end
endmodule
/*
 Produced by NSL Core, IP ARCH, Inc. Fri Jun 04 17:54:49 2010

 Licensed to
*/
PAGE TOP