blob: 62bd147f6127d97b90e5a689eefe1a1c33db83bb [file] [log] [blame]
// Copyright 2018 ETH Zurich and University of Bologna.
// Copyright and related rights are licensed under the Solderpad Hardware
// License, Version 0.51 (the “License”); you may not use this file except in
// compliance with the License. You may obtain a copy of the License at
// http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
// or agreed to in writing, software, hardware and materials distributed under
// this License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR
// CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.
////////////////////////////////////////////////////////////////////////////////
// Company: IIS @ ETHZ - Federal Institute of Technology //
// //
// Engineers: Lei Li lile@iis.ee.ethz.ch //
// //
// Additional contributions by: //
// //
// //
// //
// Create Date: 10/04/2018 //
// Design Name: FPU //
// Module Name: nrbd_nrsc_mvp.sv //
// Project Name: Private FPU //
// Language: SystemVerilog //
// //
// Description: non restroring binary divisior/ square root //
// //
// Revision Date: 12/04/2018 //
// Lei Li //
// To address some requirements by Stefan and add low power //
// control for special cases //
// //
////////////////////////////////////////////////////////////////////////////////
import defs_div_sqrt_mvp::*;
module nrbd_nrsc_mvp
(//Input
input logic Clk_CI,
input logic Rst_RBI,
input logic Div_start_SI,
input logic Sqrt_start_SI,
input logic Start_SI,
input logic Kill_SI,
input logic Special_case_SBI,
input logic Special_case_dly_SBI,
input logic [C_PC-1:0] Precision_ctl_SI,
input logic [1:0] Format_sel_SI,
input logic [C_MANT_FP64:0] Mant_a_DI,
input logic [C_MANT_FP64:0] Mant_b_DI,
input logic [C_EXP_FP64:0] Exp_a_DI,
input logic [C_EXP_FP64:0] Exp_b_DI,
//output
output logic Div_enable_SO,
output logic Sqrt_enable_SO,
output logic Full_precision_SO,
output logic FP32_SO,
output logic FP64_SO,
output logic FP16_SO,
output logic FP16ALT_SO,
output logic Ready_SO,
output logic Done_SO,
output logic [C_MANT_FP64+4:0] Mant_z_DO,
output logic [C_EXP_FP64+1:0] Exp_z_DO
);
logic Div_start_dly_S,Sqrt_start_dly_S;
control_mvp control_U0
( .Clk_CI (Clk_CI ),
.Rst_RBI (Rst_RBI ),
.Div_start_SI (Div_start_SI ),
.Sqrt_start_SI (Sqrt_start_SI ),
.Start_SI (Start_SI ),
.Kill_SI (Kill_SI ),
.Special_case_SBI (Special_case_SBI ),
.Special_case_dly_SBI (Special_case_dly_SBI ),
.Precision_ctl_SI (Precision_ctl_SI ),
.Format_sel_SI (Format_sel_SI ),
.Numerator_DI (Mant_a_DI ),
.Exp_num_DI (Exp_a_DI ),
.Denominator_DI (Mant_b_DI ),
.Exp_den_DI (Exp_b_DI ),
.Div_start_dly_SO (Div_start_dly_S ),
.Sqrt_start_dly_SO (Sqrt_start_dly_S ),
.Div_enable_SO (Div_enable_SO ),
.Sqrt_enable_SO (Sqrt_enable_SO ),
.Full_precision_SO (Full_precision_SO ),
.FP32_SO (FP32_SO ),
.FP64_SO (FP64_SO ),
.FP16_SO (FP16_SO ),
.FP16ALT_SO (FP16ALT_SO ),
.Ready_SO (Ready_SO ),
.Done_SO (Done_SO ),
.Mant_result_prenorm_DO (Mant_z_DO ),
.Exp_result_prenorm_DO (Exp_z_DO )
);
endmodule