HierarchyFilesModulesSignalsTasksFunctionsHelp

/******************************************************************************/ 
/*                                                                            */ 
/* Copyright (c) 1999 Sun Microsystems, Inc. All rights reserved.             */ 
/*                                                                            */ 
/* The contents of this file are subject to the current version of the Sun    */ 
/* Community Source License, microSPARCII ("the License"). You may not use    */ 
/* this file except in compliance with the License.  You may obtain a copy    */ 
/* of the License by searching for "Sun Community Source License" on the      */ 
/* World Wide Web at http://www.sun.com. See the License for the rights,      */ 
/* obligations, and limitations governing use of the contents of this file.   */ 
/*                                                                            */ 
/* Sun Microsystems, Inc. has intellectual property rights relating to the    */ 
/* technology embodied in these files. In particular, and without limitation, */ 
/* these intellectual property rights may include one or more U.S. patents,   */ 
/* foreign patents, or pending applications.                                  */ 
/*                                                                            */ 
/* Sun, Sun Microsystems, the Sun logo, all Sun-based trademarks and logos,   */ 
/* Solaris, Java and all Java-based trademarks and logos are trademarks or    */ 
/* registered trademarks of Sun Microsystems, Inc. in the United States and   */ 
/* other countries. microSPARC is a trademark or registered trademark of      */ 
/* SPARC International, Inc. All SPARC trademarks are used under license and  */ 
/* are trademarks or registered trademarks of SPARC International, Inc. in    */ 
/* the United States and other countries. Products bearing SPARC trademarks   */ 
/* are based upon an architecture developed by Sun Microsystems, Inc.         */ 
/*                                                                            */ 
/******************************************************************************/ 
/***************************************************************************
****************************************************************************
***
***  Program File:  @(#)fp_fpm.v
***
****************************************************************************
****************************************************************************/

//  @(#)fp_fpm.v	1.5  10/23/92
//
// **************************************************************
//  fp_fpm -- top-level interconnect for the IEEE multiplier
// **************************************************************

[Up: fpufpc fpfpm]
module fp_fpm (
	    fprf_din,
	    fpm_inx,
	    fpm_unfin,
	    fprf_dout1,
	    fprf_dout2,
	    ld_fpu_w,
	    FracResult,
	    ExpResult,
	    SignResult,
	    fpm_inst,
	    rnd_mode,
	    res_select,
	    rfin_select,
	    fpm_start,
	    ss_clock,
	    ss_scan_mode,
	    fp_fpm_scan_in,
	    fp_fpm_scan_out
	    );

    //prop CELLCLASS "MODULE"

    output [63:0] fprf_din;	// fp_fpm output bus to reg file write port
    output fpm_inx;		// Inexact flag.
				// 52-bit add + 4 gate delays into X3 stage
    output fpm_unfin;		// Multiplier unfinished signal (special
				// case detected).  Registered output.
    input  [63:0] fprf_dout1;	// 64-bit operand X (multiplicand)
				// Registered in X1 stage
    input  [63:0] fprf_dout2;	// 64-bit operand Y (multiplier)
				// Registered in X1 stage
    input  [63:0] ld_fpu_w;	// 64-bit D-cache output bus
    input  [54:3] FracResult;	// Meiko FPU fp_frac result bus
    input  [10:0] ExpResult;	// Meiko FPU fp_exp result bus
    input	  SignResult;	// Meiko FPU result sign bit
    input  [1:0] fpm_inst;	// FMULs=00, FMULd=01, FsMULd=10
				// Expected valid same time as fpm_start
    input  [1:0]  rnd_mode;	// rounding mode (same as FSR[31:30])
				// Expected valid in X3 stage
    input  [1:0] res_select;	// control for fpu result select mux
    input  rfin_select;		// selects fpu result or d-cache bus
    input  fpm_start;		// go-ahead signal
				// Should be active for 1 cycle only.
    input  ss_clock;		// single phase master clock
    input  ss_scan_mode;
    input  fp_fpm_scan_in;
    output fp_fpm_scan_out;

    wire [51:0] fpm_frac;	// 52-bit fraction (no sign, no implicit).
    wire [10:0] fpm_exp;	// 11-bit exponent (single is right justified)
    wire fpm_sign;		// Product sign bit.
    wire fpm_inx;		// Inexact flag.
    wire fpm_unfin;		// Multiplier unfinished signal (special
				// case detected)
    wire [63:0] fprf_dout1;	// 63-bit operand X (multiplicand)
    wire [63:0] fprf_dout2;	// 63-bit operand Y (multiplier)
    wire [1:0]  rnd_mode;
    wire fpm_start;
    wire ss_clock;

    wire frac_ovf ;
    wire fpm_exp_scan_out;

				// multiplier fraction (and sign) datapath
    fpm_frac fpmfrac(
                    .ss_scan_mode(ss_scan_mode),
                    .fpm_frac_scan_in(fpm_exp_scan_out),
                    .fpm_frac_scan_out(fp_fpm_scan_out),
		    .fpm_frac(fpm_frac[51:0]),
		    .fpm_sign(fpm_sign),
		    .fpm_inx(fpm_inx),
		    .frac_ovf(frac_ovf),
		    .rs1_s(fprf_dout1[63]),		// rs1_s
		    .rs1_m(fprf_dout1[54:0]),		// rs1_m[54:0]
		    .rs2_s(fprf_dout2[63]),		// rs2_s
		    .rs2_m(fprf_dout2[54:0]),		// rs2_m[54:0]
		    .fpm_inst(fpm_inst[1:0]),
		    .rnd_mode(rnd_mode[1:0]),
		    .fpm_start(fpm_start),
		    .fpm_clk(ss_clock)
		    );

				// multiplier exponent datapath
    fpm_exp fpmexp (
                   fp_fpm_scan_in,
                   fpm_exp_scan_out,
                   ss_scan_mode,
		   fpm_exp[10:0],
		   fpm_unfin,
		   frac_ovf,
		   fprf_dout1[62:52],		// rs1_e[10:0]
		   fprf_dout2[62:52],		// rs2_e[10:0]
		   fpm_inst[1:0],
		   fpm_start,
		   ss_clock
		   );


				// reg file Read Write datapath
    fp_rw fprw (
		.ld_fpu_w(ld_fpu_w), .FracResult(FracResult),
		.ExpResult(ExpResult), .SignResult(SignResult),
		.fpm_frac(fpm_frac), .fpm_exp(fpm_exp),
		.fpm_sign(fpm_sign),
		.res_select(res_select), .rfin_select(rfin_select),
		.fprf_din(fprf_din)
		);

endmodule
HierarchyFilesModulesSignalsTasksFunctionsHelp

This page: Created:Thu Aug 19 12:03:13 1999
From: ../../../sparc_v8/ssparc/fpu/fp_fpm/rtl/fp_fpm.v

Verilog converted to html by v2html 5.0 (written by Costas Calamvokis).Help