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.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
//  Module Name: sparc_exu_div
*/
*/
module sparc_exu_div (/*AUTOARG*/
module sparc_exu_div (/*AUTOARG*/
Line 218... Line 223...
                     .sel1(ecl_div_sel_adder),
                     .sel1(ecl_div_sel_adder),
                     .sel2(ecl_div_ld_inputs));
                     .sel2(ecl_div_ld_inputs));
   assign        div_ecl_d_62 = d[62];
   assign        div_ecl_d_62 = d[62];
 
 
   // FF for d
   // FF for d
   dff #(128) d_dff(.din(dnext[127:0]), .clk(clk), .q(d[127:0]), .se(se), .si(), .so());
   dff_s #(128) d_dff(.din(dnext[127:0]), .clk(clk), .q(d[127:0]), .se(se), `SIMPLY_RISC_SCANIN, .so());
 
 
   ////////////////////////////
   ////////////////////////////
   // Logic for X (divisor)
   // Logic for X (divisor)
   ////////////////////////////
   ////////////////////////////
   // if signed div and 32 bits sign extend to upper 32 bits
   // if signed div and 32 bits sign extend to upper 32 bits
Line 237... Line 242...
                    .sel0(ecl_div_keepx),
                    .sel0(ecl_div_keepx),
                    .sel1(ecl_div_ld_inputs),
                    .sel1(ecl_div_ld_inputs),
                    .sel2(ecl_div_almostlast_cycle));
                    .sel2(ecl_div_almostlast_cycle));
 
 
   // FF for x
   // FF for x
   dff #(64) x_dff(.din(xnext[63:0]), .clk(clk), .q(x[63:0]), .se(se), .si(), .so());
   dff_s #(64) x_dff(.din(xnext[63:0]), .clk(clk), .q(x[63:0]), .se(se), `SIMPLY_RISC_SCANIN, .so());
 
 
 
 
   ///////////////////////////
   ///////////////////////////
   // Logic for inputs to adder
   // Logic for inputs to adder
   //////////////////////////
   //////////////////////////
Line 310... Line 315...
                              .in1(mul32_input_data_e[127:0]),
                              .in1(mul32_input_data_e[127:0]),
                              .in2(mul_data_out[127:0]),
                              .in2(mul_data_out[127:0]),
                              .sel0(ecl_div_mul_get_new_data),
                              .sel0(ecl_div_mul_get_new_data),
                              .sel1(ecl_div_mul_get_32bit_data),
                              .sel1(ecl_div_mul_get_32bit_data),
                              .sel2(ecl_div_mul_keep_data));
                              .sel2(ecl_div_mul_keep_data));
   dff #(128) mul_data_dff(.din(next_mul_data[127:0]), .clk(clk), .q(mul_data_out[127:0]),
   dff_s #(128) mul_data_dff(.din(next_mul_data[127:0]), .clk(clk), .q(mul_data_out[127:0]),
                           .se(se), .si(), .so());
                           .se(se), `SIMPLY_RISC_SCANIN, .so());
   assign        exu_mul_rs1_data = mul_data_out[63:0];
   assign        exu_mul_rs1_data = mul_data_out[63:0];
   assign        exu_mul_rs2_data = mul_data_out[127:64];
   assign        exu_mul_rs2_data = mul_data_out[127:64];
 
 
   ///////////////////////////////////
   ///////////////////////////////////
   // Store output from mul
   // Store output from mul
   //////////////////////////////////
   //////////////////////////////////
   dp_mux2es #(64) mul_result_mux(.dout(mul_result_next[63:0]), .in0(mul_result[63:0]),
   dp_mux2es #(64) mul_result_mux(.dout(mul_result_next[63:0]), .in0(mul_result[63:0]),
                           .in1(mul_exu_data_g[63:0]),
                           .in1(mul_exu_data_g[63:0]),
                           .sel(ecl_div_mul_wen));
                           .sel(ecl_div_mul_wen));
   dff #(64) mul_result_dff(.din(mul_result_next[63:0]), .clk(clk), .q(mul_result[63:0]),
   dff_s #(64) mul_result_dff(.din(mul_result_next[63:0]), .clk(clk), .q(mul_result[63:0]),
                        .se(se), .si(), .so());
                        .se(se), `SIMPLY_RISC_SCANIN, .so());
 
 
 
 
endmodule // sparc_exu_div
endmodule // sparc_exu_div
 
 
 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.