Line 66... |
Line 66... |
|
|
// Write i/f
|
// Write i/f
|
addrw, dataw, we,
|
addrw, dataw, we,
|
|
|
// Read i/f
|
// Read i/f
|
pipeline_freeze, addra, addrb, dataa, datab,
|
id_freeze, addra, addrb, dataa, datab,
|
|
|
// Debug
|
// Debug
|
rfa_tqa, rfb_tqa, rfa_tmuxed, rfb_tmuxed, tp1w
|
rfa_tqa, rfb_tqa, rfa_tmuxed, rfb_tmuxed, tp1w
|
);
|
);
|
|
|
Line 95... |
Line 95... |
input we;
|
input we;
|
|
|
//
|
//
|
// Read i/f
|
// Read i/f
|
//
|
//
|
input pipeline_freeze;
|
input id_freeze;
|
input [aw-1:0] addra;
|
input [aw-1:0] addra;
|
input [aw-1:0] addrb;
|
input [aw-1:0] addrb;
|
output [dw-1:0] dataa;
|
output [dw-1:0] dataa;
|
output [dw-1:0] datab;
|
output [dw-1:0] datab;
|
|
|
Line 147... |
Line 147... |
//
|
//
|
always @(posedge clk or posedge rst)
|
always @(posedge clk or posedge rst)
|
if (rst) begin
|
if (rst) begin
|
dataa_saved <= #1 33'b0;
|
dataa_saved <= #1 33'b0;
|
end
|
end
|
else if (pipeline_freeze & !dataa_saved[32]) begin
|
else if (id_freeze & !dataa_saved[32]) begin
|
dataa_saved <= #1 {1'b1, from_rfa};
|
dataa_saved <= #1 {1'b1, from_rfa};
|
end
|
end
|
else if (!pipeline_freeze)
|
else if (!id_freeze)
|
dataa_saved[32] <= #1 1'b0;
|
dataa_saved <= #1 33'b0;
|
|
|
//
|
//
|
// Stores operand from RF_B into temp reg when pipeline is frozen
|
// Stores operand from RF_B into temp reg when pipeline is frozen
|
//
|
//
|
always @(posedge clk or posedge rst)
|
always @(posedge clk or posedge rst)
|
if (rst) begin
|
if (rst) begin
|
datab_saved <= #1 33'b0;
|
datab_saved <= #1 33'b0;
|
end
|
end
|
else if (pipeline_freeze & !datab_saved[32]) begin
|
else if (id_freeze & !datab_saved[32]) begin
|
datab_saved <= #1 {1'b1, from_rfb};
|
datab_saved <= #1 {1'b1, from_rfb};
|
end
|
end
|
else if (!pipeline_freeze)
|
else if (!id_freeze)
|
datab_saved[32] <= #1 1'b0;
|
datab_saved <= #1 33'b0;
|
|
|
//
|
//
|
// Instantiation of register file two-port RAM A
|
// Instantiation of register file two-port RAM A
|
//
|
//
|
generic_tpram_32x32 rf_a(
|
generic_tpram_32x32 rf_a(
|