/******************************************************************************/
/* */
/* 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: @(#)array.v
***
****************************************************************************
****************************************************************************/
// @(#)array.v 1.1 4/8/92
//
// **************************************************************
// Multiplier Array Using Wallace Trees
// **************************************************************
module array
(
sum,
carry,
x,
y,
pass,
fbsum,
fbcarry
);
//prop GENERATOR "DataPath"
//prop CELLCLASS "MODULE"
//prop TERMPLACE "ARRAY"
output [79:0] sum
;
//prop TERMPLACE "BOT"
output [79:1] carry
;
//prop TERMPLACE "BOT"
input [52:0] x
;
//prop TERMPLACE "TOP"
input [27:0] y
;
//prop TERMPLACE "LEFT"
input pass
;
//prop TERMPLACE "LEFT"
input [51:0] fbsum
;
//prop TERMPLACE "BOT"
input [51:0] fbcarry
;
//prop TERMPLACE "BOT"
wire [52:0] x;
wire [27:0] y;
wire [51:0] fbsum;
wire [51:0] fbcarry;
// Structural description
// for lhs
wire cout1_77
, cout1_76
, cout2_76
, cout2_75
;
wire [11:10] cout2_73
, cout2_74
;
wire [11:9] cout2_71
, cout2_72
;
wire [11:8] cout2_69
, cout2_70
;
wire [11:7] cout2_67
, cout2_68
;
wire [11:6] cout2_65
, cout2_66
;
wire [11:5] cout2_63
, cout2_64
;
wire [11:4] cout2_61
, cout2_62
;
wire [11:3] cout2_59
, cout2_60
;
wire [11:2] cout2_57
, cout2_58
;
wire [11:1] cout2_55
, cout2_56
;
wire [11:0] cout2_53
, cout2_54
;
wire [12:11] cout1_74
, cout1_75
;
wire [12:10] cout1_72
, cout1_73
;
wire [12:9] cout1_70
, cout1_71
;
wire [12:8] cout1_68
, cout1_69
;
wire [12:7] cout1_66
, cout1_67
;
wire [12:6] cout1_64
, cout1_65
;
wire [12:5] cout1_62
, cout1_63
;
wire [12:4] cout1_60
, cout1_61
;
wire [12:3] cout1_58
, cout1_59
;
wire [12:2] cout1_56
, cout1_57
;
wire [12:1] cout1_54
, cout1_55
;
wire [12:0] cout1_53
;
// for middle
wire [12:0] cout1_26
, cout1_27
, cout1_28
, cout1_29
, cout1_30
, cout1_31
,
cout1_32
, cout1_33
, cout1_34
, cout1_35
, cout1_36
, cout1_37
,
cout1_38
, cout1_39
, cout1_40
, cout1_41
, cout1_42
, cout1_43
,
cout1_44
, cout1_45
, cout1_46
, cout1_47
, cout1_48
, cout1_49
,
cout1_50
, cout1_51
, cout1_52
;
wire [11:0] cout2_26
, cout2_27
, cout2_28
, cout2_29
, cout2_30
, cout2_31
,
cout2_32
, cout2_33
, cout2_34
, cout2_35
, cout2_36
, cout2_37
,
cout2_38
, cout2_39
, cout2_40
, cout2_41
, cout2_42
, cout2_43
,
cout2_44
, cout2_45
, cout2_46
, cout2_47
, cout2_48
, cout2_49
,
cout2_50
, cout2_51
, cout2_52
;
// for rhs
wire [12:0] cout1_25
, cout1_24
;
wire [11:0] cout2_25
, cout2_24
;
wire [11:0] cout1_23
, cout1_22
;
wire [10:0] cout2_23
, cout2_22
, cout1_21
, cout1_20
;
wire [9:0] cout2_21
, cout2_20
, cout1_19
, cout1_18
;
wire [8:0] cout2_19
, cout2_18
, cout1_17
, cout1_16
;
wire [7:0] cout2_17
, cout2_16
, cout1_15
, cout1_14
;
wire [6:0] cout2_15
, cout2_14
, cout1_13
, cout1_12
;
wire [5:0] cout2_13
, cout2_12
, cout1_11
, cout1_10
;
wire [4:0] cout2_11
, cout2_10
, cout1_9
, cout1_8
;
wire [3:0] cout2_9
, cout2_8
, cout1_7
, cout1_6
;
wire [2:0] cout2_7
, cout2_6
, cout1_5
, cout1_4
;
wire [1:0] cout2_5
, cout2_4
, cout1_3
, cout1_2
;
wire cout2_3
, cout2_2
, cout1_1
, cout1_0
;
// lhs columns
column79 col79 (
sum[79],
x[52],
y[27]
);
//prop TERMPLACE "XPOS=0;YPOS=0"
column78 col78 (
sum[78],
carry[79],
cout1_77,
x[52:51],
y[27:26]
);
//prop TERMPLACE "XPOS=0;YPOS=1"
column77 col77 (
sum[77],
carry[78],
cout1_77,
cout1_76,
cout2_76,
x[52:50],
y[27:25]
);
//prop TERMPLACE "XPOS=0;YPOS=2"
column76 col76 (
sum[76],
carry[77],
cout1_76,
cout2_76,
cout1_75[12:11],
cout2_75,
x[52:49],
y[27:24]
);
//prop TERMPLACE "XPOS=0;YPOS=3"
column75 col75 (
sum[75],
carry[76],
cout1_75[12:11],
cout2_75,
cout1_74[12:11],
cout2_74[11:10],
x[52:48],
y[27:23]
);
//prop TERMPLACE "XPOS=0;YPOS=4"
column74 col74 (
sum[74],
carry[75],
cout1_74[12:11],
cout2_74[11:10],
cout1_73[12:10],
cout2_73[11:10],
x[52:47],
y[27:22]
);
//prop TERMPLACE "XPOS=0;YPOS=5"
column73 col73 (
sum[73],
carry[74],
cout1_73[12:10],
cout2_73[11:10],
cout1_72[12:10],
cout2_72[11:9],
x[52:46],
y[27:21]
);
//prop TERMPLACE "XPOS=0;YPOS=6"
column72 col72 (
sum[72],
carry[73],
cout1_72[12:10],
cout2_72[11:9],
cout1_71[12:9],
cout2_71[11:9],
x[52:45],
y[27:20]
);
//prop TERMPLACE "XPOS=0;YPOS=7"
column71 col71 (
sum[71],
carry[72],
cout1_71[12:9],
cout2_71[11:9],
cout1_70[12:9],
cout2_70[11:8],
x[52:44],
y[27:19]
);
//prop TERMPLACE "XPOS=0;YPOS=8"
column70 col70 (
sum[70],
carry[71],
cout1_70[12:9],
cout2_70[11:8],
cout1_69[12:8],
cout2_69[11:8],
x[52:43],
y[27:18]
);
//prop TERMPLACE "XPOS=0;YPOS=9"
column69 col69 (
sum[69],
carry[70],
cout1_69[12:8],
cout2_69[11:8],
cout1_68[12:8],
cout2_68[11:7],
x[52:42],
y[27:17]
);
//prop TERMPLACE "XPOS=0;YPOS=10"
column68 col68 (
sum[68],
carry[69],
cout1_68[12:8],
cout2_68[11:7],
cout1_67[12:7],
cout2_67[11:7],
x[52:41],
y[27:16]
);
//prop TERMPLACE "XPOS=0;YPOS=11"
column67 col67 (
sum[67],
carry[68],
cout1_67[12:7],
cout2_67[11:7],
cout1_66[12:7],
cout2_66[11:6],
x[52:40],
y[27:15]
);
//prop TERMPLACE "XPOS=0;YPOS=12"
column66 col66 (
sum[66],
carry[67],
cout1_66[12:7],
cout2_66[11:6],
cout1_65[12:6],
cout2_65[11:6],
x[52:39],
y[27:14]
);
//prop TERMPLACE "XPOS=0;YPOS=13"
column65 col65 (
sum[65],
carry[66],
cout1_65[12:6],
cout2_65[11:6],
cout1_64[12:6],
cout2_64[11:5],
x[52:38],
y[27:13]
);
//prop TERMPLACE "XPOS=0;YPOS=14"
column64 col64 (
sum[64],
carry[65],
cout1_64[12:6],
cout2_64[11:5],
cout1_63[12:5],
cout2_63[11:5],
x[52:37],
y[27:12]
);
//prop TERMPLACE "XPOS=0;YPOS=15"
column63 col63 (
sum[63],
carry[64],
cout1_63[12:5],
cout2_63[11:5],
cout1_62[12:5],
cout2_62[11:4],
x[52:36],
y[27:11]
);
//prop TERMPLACE "XPOS=0;YPOS=16"
column62 col62 (
sum[62],
carry[63],
cout1_62[12:5],
cout2_62[11:4],
cout1_61[12:4],
cout2_61[11:4],
x[52:35],
y[27:10]
);
//prop TERMPLACE "XPOS=0;YPOS=17"
column61 col61 (
sum[61],
carry[62],
cout1_61[12:4],
cout2_61[11:4],
cout1_60[12:4],
cout2_60[11:3],
x[52:34],
y[27:9]
);
//prop TERMPLACE "XPOS=0;YPOS=18"
column60 col60 (
sum[60],
carry[61],
cout1_60[12:4],
cout2_60[11:3],
cout1_59[12:3],
cout2_59[11:3],
x[52:33],
y[27:8]
);
//prop TERMPLACE "XPOS=0;YPOS=19"
column59 col59 (
sum[59],
carry[60],
cout1_59[12:3],
cout2_59[11:3],
cout1_58[12:3],
cout2_58[11:2],
x[52:32],
y[27:7]
);
//prop TERMPLACE "XPOS=0;YPOS=20"
column58 col58 (
sum[58],
carry[59],
cout1_58[12:3],
cout2_58[11:2],
cout1_57[12:2],
cout2_57[11:2],
x[52:31],
y[27:6]
);
//prop TERMPLACE "XPOS=0;YPOS=21"
column57 col57 (
sum[57],
carry[58],
cout1_57[12:2],
cout2_57[11:2],
cout1_56[12:2],
cout2_56[11:1],
x[52:30],
y[27:5]
);
//prop TERMPLACE "XPOS=0;YPOS=22"
column56 col56 (
sum[56],
carry[57],
cout1_56[12:2],
cout2_56[11:1],
cout1_55[12:1],
cout2_55[11:1],
x[52:29],
y[27:4]
);
//prop TERMPLACE "XPOS=0;YPOS=23"
column55 col55 (
sum[55],
carry[56],
cout1_55[12:1],
cout2_55[11:1],
cout1_54[12:1],
cout2_54[11:0],
x[52:28],
y[27:3]
);
//prop TERMPLACE "XPOS=0;YPOS=24"
column54 col54 (
sum[54],
carry[55],
cout1_54[12:1],
cout2_54[11:0],
cout1_53[12:0],
cout2_53[11:0],
x[52:27],
y[27:2]
);
//prop TERMPLACE "XPOS=0;YPOS=25"
column53 col53 (
sum[53],
carry[54],
cout1_53[12:0],
cout2_53[11:0],
cout1_52[12:0],
cout2_52[11:0],
x[52:26],
y[27:1]
);
//prop TERMPLACE "XPOS=0;YPOS=26"
// middle columns
column52 col52 (
sum[52],
carry[53],
cout1_52[12:0],
cout2_52[11:0],
cout1_51[12:0],
cout2_51[11:0],
x[52:25],
y[27:0]
);
//prop TERMPLACE "XPOS=0;YPOS=27"
column51_27 col51 (
sum[51],
carry[52],
cout1_51[12:0],
cout2_51[11:0],
cout1_50[12:0],
cout2_50[11:0],
x[51:24],
y[27:0],
pass,
fbsum[51],
fbcarry[51]
);
//prop TERMPLACE "XPOS=0;YPOS=28"
column51_27 col50 (
sum[50],
carry[51],
cout1_50[12:0],
cout2_50[11:0],
cout1_49[12:0],
cout2_49[11:0],
x[50:23],
y[27:0],
pass,
fbsum[50],
fbcarry[50]
);
//prop TERMPLACE "XPOS=0;YPOS=29"
column51_27 col49 (
sum[49],
carry[50],
cout1_49[12:0],
cout2_49[11:0],
cout1_48[12:0],
cout2_48[11:0],
x[49:22],
y[27:0],
pass,
fbsum[49],
fbcarry[49]
);
//prop TERMPLACE "XPOS=0;YPOS=30"
column51_27 col48 (
sum[48],
carry[49],
cout1_48[12:0],
cout2_48[11:0],
cout1_47[12:0],
cout2_47[11:0],
x[48:21],
y[27:0],
pass,
fbsum[48],
fbcarry[48]
);
//prop TERMPLACE "XPOS=0;YPOS=31"
column51_27 col47 (
sum[47],
carry[48],
cout1_47[12:0],
cout2_47[11:0],
cout1_46[12:0],
cout2_46[11:0],
x[47:20],
y[27:0],
pass,
fbsum[47],
fbcarry[47]
);
//prop TERMPLACE "XPOS=0;YPOS=32"
column51_27 col46 (
sum[46],
carry[47],
cout1_46[12:0],
cout2_46[11:0],
cout1_45[12:0],
cout2_45[11:0],
x[46:19],
y[27:0],
pass,
fbsum[46],
fbcarry[46]
);
//prop TERMPLACE "XPOS=0;YPOS=33"
column51_27 col45 (
sum[45],
carry[46],
cout1_45[12:0],
cout2_45[11:0],
cout1_44[12:0],
cout2_44[11:0],
x[45:18],
y[27:0],
pass,
fbsum[45],
fbcarry[45]
);
//prop TERMPLACE "XPOS=0;YPOS=34"
column51_27 col44 (
sum[44],
carry[45],
cout1_44[12:0],
cout2_44[11:0],
cout1_43[12:0],
cout2_43[11:0],
x[44:17],
y[27:0],
pass,
fbsum[44],
fbcarry[44]
);
//prop TERMPLACE "XPOS=0;YPOS=35"
column51_27 col43 (
sum[43],
carry[44],
cout1_43[12:0],
cout2_43[11:0],
cout1_42[12:0],
cout2_42[11:0],
x[43:16],
y[27:0],
pass,
fbsum[43],
fbcarry[43]
);
//prop TERMPLACE "XPOS=0;YPOS=36"
column51_27 col42 (
sum[42],
carry[43],
cout1_42[12:0],
cout2_42[11:0],
cout1_41[12:0],
cout2_41[11:0],
x[42:15],
y[27:0],
pass,
fbsum[42],
fbcarry[42]
);
//prop TERMPLACE "XPOS=0;YPOS=37"
column51_27 col41 (
sum[41],
carry[42],
cout1_41[12:0],
cout2_41[11:0],
cout1_40[12:0],
cout2_40[11:0],
x[41:14],
y[27:0],
pass,
fbsum[41],
fbcarry[41]
);
//prop TERMPLACE "XPOS=0;YPOS=38"
column51_27 col40 (
sum[40],
carry[41],
cout1_40[12:0],
cout2_40[11:0],
cout1_39[12:0],
cout2_39[11:0],
x[40:13],
y[27:0],
pass,
fbsum[40],
fbcarry[40]
);
//prop TERMPLACE "XPOS=0;YPOS=39"
column51_27 col39 (
sum[39],
carry[40],
cout1_39[12:0],
cout2_39[11:0],
cout1_38[12:0],
cout2_38[11:0],
x[39:12],
y[27:0],
pass,
fbsum[39],
fbcarry[39]
);
//prop TERMPLACE "XPOS=0;YPOS=40"
column51_27 col38 (
sum[38],
carry[39],
cout1_38[12:0],
cout2_38[11:0],
cout1_37[12:0],
cout2_37[11:0],
x[38:11],
y[27:0],
pass,
fbsum[38],
fbcarry[38]
);
//prop TERMPLACE "XPOS=0;YPOS=41"
column51_27 col37 (
sum[37],
carry[38],
cout1_37[12:0],
cout2_37[11:0],
cout1_36[12:0],
cout2_36[11:0],
x[37:10],
y[27:0],
pass,
fbsum[37],
fbcarry[37]
);
//prop TERMPLACE "XPOS=0;YPOS=42"
column51_27 col36 (
sum[36],
carry[37],
cout1_36[12:0],
cout2_36[11:0],
cout1_35[12:0],
cout2_35[11:0],
x[36:9],
y[27:0],
pass,
fbsum[36],
fbcarry[36]
);
//prop TERMPLACE "XPOS=0;YPOS=43"
column51_27 col35 (
sum[35],
carry[36],
cout1_35[12:0],
cout2_35[11:0],
cout1_34[12:0],
cout2_34[11:0],
x[35:8],
y[27:0],
pass,
fbsum[35],
fbcarry[35]
);
//prop TERMPLACE "XPOS=0;YPOS=44"
column51_27 col34 (
sum[34],
carry[35],
cout1_34[12:0],
cout2_34[11:0],
cout1_33[12:0],
cout2_33[11:0],
x[34:7],
y[27:0],
pass,
fbsum[34],
fbcarry[34]
);
//prop TERMPLACE "XPOS=0;YPOS=45"
column51_27 col33 (
sum[33],
carry[34],
cout1_33[12:0],
cout2_33[11:0],
cout1_32[12:0],
cout2_32[11:0],
x[33:6],
y[27:0],
pass,
fbsum[33],
fbcarry[33]
);
//prop TERMPLACE "XPOS=0;YPOS=46"
column51_27 col32 (
sum[32],
carry[33],
cout1_32[12:0],
cout2_32[11:0],
cout1_31[12:0],
cout2_31[11:0],
x[32:5],
y[27:0],
pass,
fbsum[32],
fbcarry[32]
);
//prop TERMPLACE "XPOS=0;YPOS=47"
column51_27 col31 (
sum[31],
carry[32],
cout1_31[12:0],
cout2_31[11:0],
cout1_30[12:0],
cout2_30[11:0],
x[31:4],
y[27:0],
pass,
fbsum[31],
fbcarry[31]
);
//prop TERMPLACE "XPOS=0;YPOS=48"
column51_27 col30 (
sum[30],
carry[31],
cout1_30[12:0],
cout2_30[11:0],
cout1_29[12:0],
cout2_29[11:0],
x[30:3],
y[27:0],
pass,
fbsum[30],
fbcarry[30]
);
//prop TERMPLACE "XPOS=0;YPOS=49"
column51_27 col29 (
sum[29],
carry[30],
cout1_29[12:0],
cout2_29[11:0],
cout1_28[12:0],
cout2_28[11:0],
x[29:2],
y[27:0],
pass,
fbsum[29],
fbcarry[29]
);
//prop TERMPLACE "XPOS=0;YPOS=50"
column51_27 col28 (
sum[28],
carry[29],
cout1_28[12:0],
cout2_28[11:0],
cout1_27[12:0],
cout2_27[11:0],
x[28:1],
y[27:0],
pass,
fbsum[28],
fbcarry[28]
);
//prop TERMPLACE "XPOS=0;YPOS=51"
column51_27 col27 (
sum[27],
carry[28],
cout1_27[12:0],
cout2_27[11:0],
cout1_26[12:0],
cout2_26[11:0],
x[27:0],
y[27:0],
pass,
fbsum[27],
fbcarry[27]
);
//prop TERMPLACE "XPOS=0;YPOS=52"
// rhs columns
column26 col26 (
sum[26],
carry[27],
cout1_26[12:0],
cout2_26[11:0],
cout1_25[12:0],
cout2_25[11:0],
x[26:0],
y[26:0],
pass,
fbsum[26],
fbcarry[26]
);
//prop TERMPLACE "XPOS=0;YPOS=53"
column25 col25 (
sum[25],
carry[26],
cout1_25[12:0],
cout2_25[11:0],
cout1_24[12:0],
cout2_24[11:0],
x[25:0],
y[25:0],
pass,
fbsum[25],
fbcarry[25]
);
//prop TERMPLACE "XPOS=0;YPOS=54"
column24 col24 (
sum[24],
carry[25],
cout1_24[12:0],
cout2_24[11:0],
cout1_23[11:0],
cout2_23[10:0],
x[24:0],
y[24:0],
pass,
fbsum[24],
fbcarry[24]
);
//prop TERMPLACE "XPOS=0;YPOS=55"
column23 col23 (
sum[23],
carry[24],
cout1_23[11:0],
cout2_23[10:0],
cout1_22[11:0],
cout2_22[10:0],
x[23:0],
y[23:0],
pass,
fbsum[23],
fbcarry[23]
);
//prop TERMPLACE "XPOS=0;YPOS=56"
column22 col22 (
sum[22],
carry[23],
cout1_22[11:0],
cout2_22[10:0],
cout1_21[10:0],
cout2_21[9:0],
x[22:0],
y[22:0],
pass,
fbsum[22],
fbcarry[22]
);
//prop TERMPLACE "XPOS=0;YPOS=57"
column21 col21 (
sum[21],
carry[22],
cout1_21[10:0],
cout2_21[9:0],
cout1_20[10:0],
cout2_20[9:0],
x[21:0],
y[21:0],
pass,
fbsum[21],
fbcarry[21]
);
//prop TERMPLACE "XPOS=0;YPOS=58"
column20 col20 (
sum[20],
carry[21],
cout1_20[10:0],
cout2_20[9:0],
cout1_19[9:0],
cout2_19[8:0],
x[20:0],
y[20:0],
pass,
fbsum[20],
fbcarry[20]
);
//prop TERMPLACE "XPOS=0;YPOS=59"
column19 col19 (
sum[19],
carry[20],
cout1_19[9:0],
cout2_19[8:0],
cout1_18[9:0],
cout2_18[8:0],
x[19:0],
y[19:0],
pass,
fbsum[19],
fbcarry[19]
);
//prop TERMPLACE "XPOS=0;YPOS=60"
column18 col18 (
sum[18],
carry[19],
cout1_18[9:0],
cout2_18[8:0],
cout1_17[8:0],
cout2_17[7:0],
x[18:0],
y[18:0],
pass,
fbsum[18],
fbcarry[18]
);
//prop TERMPLACE "XPOS=0;YPOS=61"
column17 col17 (
sum[17],
carry[18],
cout1_17[8:0],
cout2_17[7:0],
cout1_16[8:0],
cout2_16[7:0],
x[17:0],
y[17:0],
pass,
fbsum[17],
fbcarry[17]
);
//prop TERMPLACE "XPOS=0;YPOS=62"
column16 col16 (
sum[16],
carry[17],
cout1_16[8:0],
| This page: |
Created: | Thu Aug 19 11:57:22 1999 |
| From: |
../../../sparc_v8/ssparc/fpu/fp_fpm/rtl/array.v
|