Line 41... |
Line 41... |
//// ////
|
//// ////
|
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
//
|
//
|
// CVS Revision History
|
// CVS Revision History
|
// $Log: not supported by cvs2svn $
|
// $Log: not supported by cvs2svn $
|
|
// Revision 1.1 2002/06/08 16:23:30 lampret
|
|
// Generic flip-flop based memory macro for register file.
|
|
//
|
//
|
//
|
|
|
// synopsys translate_off
|
// synopsys translate_off
|
`include "timescale.v"
|
`include "timescale.v"
|
// synopsys translate_on
|
// synopsys translate_on
|
Line 114... |
Line 117... |
always @(posedge clk or posedge rst)
|
always @(posedge clk or posedge rst)
|
if (rst) begin
|
if (rst) begin
|
mem <= #1 1024'h0;
|
mem <= #1 1024'h0;
|
end
|
end
|
else if (ce_w & we_w)
|
else if (ce_w & we_w)
|
case (addr_w) // synopsys parallel_case full_case
|
case (addr_w) // synopsys parallel_case
|
5'd00: mem[32*0+31:32*0] <= #1 di_w;
|
5'd00: mem[32*0+31:32*0] <= #1 di_w;
|
5'd01: mem[32*1+31:32*1] <= #1 di_w;
|
5'd01: mem[32*1+31:32*1] <= #1 di_w;
|
5'd02: mem[32*2+31:32*2] <= #1 di_w;
|
5'd02: mem[32*2+31:32*2] <= #1 di_w;
|
5'd03: mem[32*3+31:32*3] <= #1 di_w;
|
5'd03: mem[32*3+31:32*3] <= #1 di_w;
|
5'd04: mem[32*4+31:32*4] <= #1 di_w;
|
5'd04: mem[32*4+31:32*4] <= #1 di_w;
|
Line 146... |
Line 149... |
5'd26: mem[32*26+31:32*26] <= #1 di_w;
|
5'd26: mem[32*26+31:32*26] <= #1 di_w;
|
5'd27: mem[32*27+31:32*27] <= #1 di_w;
|
5'd27: mem[32*27+31:32*27] <= #1 di_w;
|
5'd28: mem[32*28+31:32*28] <= #1 di_w;
|
5'd28: mem[32*28+31:32*28] <= #1 di_w;
|
5'd29: mem[32*29+31:32*29] <= #1 di_w;
|
5'd29: mem[32*29+31:32*29] <= #1 di_w;
|
5'd30: mem[32*30+31:32*30] <= #1 di_w;
|
5'd30: mem[32*30+31:32*30] <= #1 di_w;
|
5'd31: mem[32*31+31:32*31] <= #1 di_w;
|
default: mem[32*31+31:32*31] <= #1 di_w;
|
endcase
|
endcase
|
|
|
//
|
//
|
// Read port A
|
// Read port A
|
//
|
//
|
Line 160... |
Line 163... |
end
|
end
|
else if (ce_a)
|
else if (ce_a)
|
intaddr_a <= #1 addr_a;
|
intaddr_a <= #1 addr_a;
|
|
|
always @(mem or intaddr_a)
|
always @(mem or intaddr_a)
|
case (intaddr_a) // synopsys parallel_case full_case
|
case (intaddr_a) // synopsys parallel_case
|
5'd00: do_a = mem[32*0+31:32*0];
|
5'd00: do_a = mem[32*0+31:32*0];
|
5'd01: do_a = mem[32*1+31:32*1];
|
5'd01: do_a = mem[32*1+31:32*1];
|
5'd02: do_a = mem[32*2+31:32*2];
|
5'd02: do_a = mem[32*2+31:32*2];
|
5'd03: do_a = mem[32*3+31:32*3];
|
5'd03: do_a = mem[32*3+31:32*3];
|
5'd04: do_a = mem[32*4+31:32*4];
|
5'd04: do_a = mem[32*4+31:32*4];
|
Line 192... |
Line 195... |
5'd26: do_a = mem[32*26+31:32*26];
|
5'd26: do_a = mem[32*26+31:32*26];
|
5'd27: do_a = mem[32*27+31:32*27];
|
5'd27: do_a = mem[32*27+31:32*27];
|
5'd28: do_a = mem[32*28+31:32*28];
|
5'd28: do_a = mem[32*28+31:32*28];
|
5'd29: do_a = mem[32*29+31:32*29];
|
5'd29: do_a = mem[32*29+31:32*29];
|
5'd30: do_a = mem[32*30+31:32*30];
|
5'd30: do_a = mem[32*30+31:32*30];
|
5'd31: do_a = mem[32*31+31:32*31];
|
default: do_a = mem[32*31+31:32*31];
|
endcase
|
endcase
|
|
|
//
|
//
|
// Read port B
|
// Read port B
|
//
|
//
|
Line 206... |
Line 209... |
end
|
end
|
else if (ce_b)
|
else if (ce_b)
|
intaddr_b <= #1 addr_b;
|
intaddr_b <= #1 addr_b;
|
|
|
always @(mem or intaddr_b)
|
always @(mem or intaddr_b)
|
case (intaddr_b) // synopsys parallel_case full_case
|
case (intaddr_b) // synopsys parallel_case
|
5'd00: do_b = mem[32*0+31:32*0];
|
5'd00: do_b = mem[32*0+31:32*0];
|
5'd01: do_b = mem[32*1+31:32*1];
|
5'd01: do_b = mem[32*1+31:32*1];
|
5'd02: do_b = mem[32*2+31:32*2];
|
5'd02: do_b = mem[32*2+31:32*2];
|
5'd03: do_b = mem[32*3+31:32*3];
|
5'd03: do_b = mem[32*3+31:32*3];
|
5'd04: do_b = mem[32*4+31:32*4];
|
5'd04: do_b = mem[32*4+31:32*4];
|
Line 238... |
Line 241... |
5'd26: do_b = mem[32*26+31:32*26];
|
5'd26: do_b = mem[32*26+31:32*26];
|
5'd27: do_b = mem[32*27+31:32*27];
|
5'd27: do_b = mem[32*27+31:32*27];
|
5'd28: do_b = mem[32*28+31:32*28];
|
5'd28: do_b = mem[32*28+31:32*28];
|
5'd29: do_b = mem[32*29+31:32*29];
|
5'd29: do_b = mem[32*29+31:32*29];
|
5'd30: do_b = mem[32*30+31:32*30];
|
5'd30: do_b = mem[32*30+31:32*30];
|
5'd31: do_b = mem[32*31+31:32*31];
|
default: do_b = mem[32*31+31:32*31];
|
endcase
|
endcase
|
|
|
endmodule
|
endmodule
|
|
|
No newline at end of file
|
No newline at end of file
|