/******************************************************************************/
/* */
/* 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: @(#)carry51.v
***
****************************************************************************
****************************************************************************/
// @(#)carry51.v 1.3 5/28/92
//
// **************************************************************
// carry51 -- 2-pass generation of carry into bit 51.
// **************************************************************
module carry51
(c51, sum, carry, passX1, fpm_clk);
output c51
;
input [27:0] sum
;
input [27:1] carry
;
input passX1
;
input fpm_clk
;
wire c28
, c28_term
;
wire [27:0] carry_bus
= (carry[27:1] << 1) ;
wire [28:0] result
;
adder29 carryadd (.z(result[28:0]), .x(sum[27:0]), .y(carry_bus[27:0]),
.CarryIn(c28_term) );
assign c28_term = c28 & ~passX1; // clear during passX1
ME_FD1 carry28Reg (.q(c28), // c28 is valid during passX2
.d(result[28]),
.cp(fpm_clk)
);
// we want the carry into bit 23, so use
// the following property:
// c51 = (result[23]) ^ a[23] ^ b[23]
// c51 = (c23 ^ a[23] ^ b[23]) ^ a[23] ^ b[23]
// c51 = c23
wire c51_in
= result[23] ^ sum[23] ^ carry[23] ;
ME_FD1 carry51Reg (.q(c51), // c51 is valid during passX3
.d(c51_in),
.cp(fpm_clk)
);
endmodule
| This page: |
Created: | Thu Aug 19 11:57:35 1999 |
| From: |
../../../sparc_v8/ssparc/fpu/fp_fpm/rtl/carry51.v
|