/*
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
*/