Line 16... |
Line 16... |
// You should have received a copy of the GNU General Public
|
// You should have received a copy of the GNU General Public
|
// License along with this work; if not, write to the Free Software
|
// License along with this work; if not, write to the Free Software
|
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
|
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
|
//
|
//
|
// ========== Copyright Header End ============================================
|
// ========== Copyright Header End ============================================
|
|
`ifdef SIMPLY_RISC_TWEAKS
|
|
`define SIMPLY_RISC_SCANIN .si(0)
|
|
`else
|
|
`define SIMPLY_RISC_SCANIN .si()
|
|
`endif
|
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
/*
|
/*
|
// Module Name: sparc_ifu_lru4
|
// Module Name: sparc_ifu_lru4
|
// Description:
|
// Description:
|
// LRU scheduler. Least priority to the last granted
|
// LRU scheduler. Least priority to the last granted
|
Line 148... |
Line 153... |
assign used1_nxt = reset ? 4'b0010 : used1_calc;
|
assign used1_nxt = reset ? 4'b0010 : used1_calc;
|
assign used2_nxt = reset ? 4'b0100 : used2_calc;
|
assign used2_nxt = reset ? 4'b0100 : used2_calc;
|
assign used3_nxt = reset ? 4'b1000 : used3_calc;
|
assign used3_nxt = reset ? 4'b1000 : used3_calc;
|
|
|
// use 4X4 matrix to hold lru info
|
// use 4X4 matrix to hold lru info
|
dff #(4) use0_reg(.din (used0_nxt),
|
dff_s #(4) use0_reg(.din (used0_nxt),
|
.q (used0),
|
.q (used0),
|
.clk (clk), .se(se), .si(), .so());
|
.clk (clk), .se(se), `SIMPLY_RISC_SCANIN, .so());
|
|
|
dff #(4) use1_reg(.din (used1_nxt),
|
dff_s #(4) use1_reg(.din (used1_nxt),
|
.q (used1),
|
.q (used1),
|
.clk (clk), .se(se), .si(), .so());
|
.clk (clk), .se(se), `SIMPLY_RISC_SCANIN, .so());
|
|
|
dff #(4) use2_reg(.din (used2_nxt),
|
dff_s #(4) use2_reg(.din (used2_nxt),
|
.q (used2),
|
.q (used2),
|
.clk (clk), .se(se), .si(), .so());
|
.clk (clk), .se(se), `SIMPLY_RISC_SCANIN, .so());
|
|
|
// used3 is lru
|
// used3 is lru
|
dff #(4) use3_reg(.din (used3_nxt),
|
dff_s #(4) use3_reg(.din (used3_nxt),
|
.q (used3),
|
.q (used3),
|
.clk (clk), .se(se), .si(), .so());
|
.clk (clk), .se(se), `SIMPLY_RISC_SCANIN, .so());
|
|
|
assign used23_nxt = used2_nxt | used3_nxt;
|
assign used23_nxt = used2_nxt | used3_nxt;
|
|
|
dff #(4) use23_reg(.din (used23_nxt),
|
dff_s #(4) use23_reg(.din (used23_nxt),
|
.q (used23),
|
.q (used23),
|
.clk (clk), .se(se), .si(), .so());
|
.clk (clk), .se(se), `SIMPLY_RISC_SCANIN, .so());
|
|
|
|
|
// grant request based on lru
|
// grant request based on lru
|
|
|
// save some loading on req_vec by not doing this
|
// save some loading on req_vec by not doing this
|