OpenCores
URL https://opencores.org/ocsvn/s1_core/s1_core/trunk

Subversion Repositories s1_core

[/] [s1_core/] [trunk/] [hdl/] [rtl/] [sparc_core/] [sparc_exu_div_yreg.v] - Diff between revs 105 and 113

Show entire file | Details | Blame | View Log

Rev 105 Rev 113
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_exu_div_yreg
//  Module Name: sparc_exu_div_yreg
//      Description: The 4 32 bit y registers.  It can be written to
//      Description: The 4 32 bit y registers.  It can be written to
//              twice each cycle because by definition the writes must come
//              twice each cycle because by definition the writes must come
Line 64... Line 69...
   //////////////////////////////////
   //////////////////////////////////
   // output the LSB of all 4 regs
   // output the LSB of all 4 regs
   assign        div_ecl_yreg_0[3:0] = {yreg_thr3[0],yreg_thr2[0],yreg_thr1[0],yreg_thr0[0]};
   assign        div_ecl_yreg_0[3:0] = {yreg_thr3[0],yreg_thr2[0],yreg_thr1[0],yreg_thr0[0]};
   assign        div_ecl_yreg_0_l[3:0] = ~div_ecl_yreg_0[3:0];
   assign        div_ecl_yreg_0_l[3:0] = ~div_ecl_yreg_0[3:0];
 
 
 
`ifdef FPGA_SYN_1THREAD
 
 
 
   assign        yreg_mdq_y_e[31:0] = yreg_thr0[31:0];
 
 
 
`else
 
 
 
 
 
 
   // mux between the 4 yregs
   // mux between the 4 yregs
   mux4ds #(32) mux_yreg_out(.dout(yreg_mdq_y_e[31:0]), .sel0(ecl_div_thr_e[0]),
   mux4ds #(32) mux_yreg_out(.dout(yreg_mdq_y_e[31:0]), .sel0(ecl_div_thr_e[0]),
                         .sel1(ecl_div_thr_e[1]), .sel2(ecl_div_thr_e[2]),
                         .sel1(ecl_div_thr_e[1]), .sel2(ecl_div_thr_e[2]),
                         .sel3(ecl_div_thr_e[3]), .in0(yreg_thr0[31:0]),
                         .sel3(ecl_div_thr_e[3]), .in0(yreg_thr0[31:0]),
                         .in1(yreg_thr1[31:0]), .in2(yreg_thr2[31:0]),
                         .in1(yreg_thr1[31:0]), .in2(yreg_thr2[31:0]),
                         .in3(yreg_thr3[31:0]));
                         .in3(yreg_thr3[31:0]));
 
`endif
 
 
   //////////////////////////////////////
   //////////////////////////////////////
   //  Storage of yreg
   //  Storage of yreg
   //////////////////////////////////////
   //////////////////////////////////////
   // pass along yreg w to w2 (for control signal timing)
   // pass along yreg w to w2 (for control signal timing)
   dff #(32) yreg_dff_w2w2(.din(byp_div_yreg_data_w[31:0]), .clk(clk), .q(yreg_data_w1[31:0]),
   dff_s #(32) yreg_dff_w2w2(.din(byp_div_yreg_data_w[31:0]), .clk(clk), .q(yreg_data_w1[31:0]),
                           .se(se), .si(), .so());
                           .se(se), `SIMPLY_RISC_SCANIN, .so());
 
 
 
 
   // mux between yreg_w, yreg_g, old value
   // mux between yreg_w, yreg_g, old value
   mux4ds #(32) mux_yregin0(.dout(next_yreg_thr0[31:0]),
   mux4ds #(32) mux_yregin0(.dout(next_yreg_thr0[31:0]),
                          .sel0(ecl_div_yreg_wen_w[0]),
                          .sel0(ecl_div_yreg_wen_w[0]),
Line 96... Line 101...
                          .sel3(ecl_div_yreg_shift_g[0]),
                          .sel3(ecl_div_yreg_shift_g[0]),
                          .in0(yreg_data_w1[31:0]),
                          .in0(yreg_data_w1[31:0]),
                          .in1(mul_div_yreg_data_g[31:0]),
                          .in1(mul_div_yreg_data_g[31:0]),
                          .in2(yreg_thr0[31:0]),
                          .in2(yreg_thr0[31:0]),
                          .in3({ecl_div_yreg_data_31_g, yreg_thr0[31:1]}));
                          .in3({ecl_div_yreg_data_31_g, yreg_thr0[31:1]}));
 
`ifdef FPGA_SYN_1THREAD
 
   assign        next_yreg_thr1[31:0] = yreg_data_w1[31:0];
 
   assign        next_yreg_thr2[31:0] = yreg_data_w1[31:0];
 
   assign        next_yreg_thr3[31:0] = yreg_data_w1[31:0];
 
 
 
`else
 
 
 
 
 
 
 
 
 
 
   mux4ds #(32) mux_yregin1(.dout(next_yreg_thr1[31:0]),
   mux4ds #(32) mux_yregin1(.dout(next_yreg_thr1[31:0]),
                          .sel0(ecl_div_yreg_wen_w[1]),
                          .sel0(ecl_div_yreg_wen_w[1]),
                          .sel1(ecl_div_yreg_wen_g[1]),
                          .sel1(ecl_div_yreg_wen_g[1]),
                          .sel2(ecl_div_yreg_wen_l[1]),
                          .sel2(ecl_div_yreg_wen_l[1]),
Line 130... Line 135...
                          .sel3(ecl_div_yreg_shift_g[3]),
                          .sel3(ecl_div_yreg_shift_g[3]),
                          .in0(yreg_data_w1[31:0]),
                          .in0(yreg_data_w1[31:0]),
                          .in1(mul_div_yreg_data_g[31:0]),
                          .in1(mul_div_yreg_data_g[31:0]),
                          .in2(yreg_thr3[31:0]),
                          .in2(yreg_thr3[31:0]),
                          .in3({ecl_div_yreg_data_31_g, yreg_thr3[31:1]}));
                          .in3({ecl_div_yreg_data_31_g, yreg_thr3[31:1]}));
 // !`ifdef FPGA_SYN_1THREAD
`endif // !`ifdef FPGA_SYN_1THREAD
 
 
   // store new value
   // store new value
   dff #(32) dff_yreg_thr0(.din(next_yreg_thr0[31:0]), .clk(clk), .q(yreg_thr0[31:0]),
   dff_s #(32) dff_yreg_thr0(.din(next_yreg_thr0[31:0]), .clk(clk), .q(yreg_thr0[31:0]),
                       .se(se), .si(), .so());
                       .se(se), `SIMPLY_RISC_SCANIN, .so());
   dff #(32) dff_yreg_thr1(.din(next_yreg_thr1[31:0]), .clk(clk), .q(yreg_thr1[31:0]),
   dff_s #(32) dff_yreg_thr1(.din(next_yreg_thr1[31:0]), .clk(clk), .q(yreg_thr1[31:0]),
                       .se(se), .si(), .so());
                       .se(se), `SIMPLY_RISC_SCANIN, .so());
   dff #(32) dff_yreg_thr2(.din(next_yreg_thr2[31:0]), .clk(clk), .q(yreg_thr2[31:0]),
   dff_s #(32) dff_yreg_thr2(.din(next_yreg_thr2[31:0]), .clk(clk), .q(yreg_thr2[31:0]),
                       .se(se), .si(), .so());
                       .se(se), `SIMPLY_RISC_SCANIN, .so());
   dff #(32) dff_yreg_thr3(.din(next_yreg_thr3[31:0]), .clk(clk), .q(yreg_thr3[31:0]),
   dff_s #(32) dff_yreg_thr3(.din(next_yreg_thr3[31:0]), .clk(clk), .q(yreg_thr3[31:0]),
                       .se(se), .si(), .so());
                       .se(se), `SIMPLY_RISC_SCANIN, .so());
 
 
 
 
endmodule // sparc_exu_div_yreg
endmodule // sparc_exu_div_yreg
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.