source: XOpenSparcT1/trunk/T1-CPU/exu/sparc_exu_aluor32.v @ 6

Revision 6, 3.3 KB checked in by pntsvt00, 13 years ago (diff)

versione iniziale opensparc

Line 
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T1 Processor File: sparc_exu_aluor32.v
4// Copyright (c) 2006 Sun Microsystems, Inc.  All Rights Reserved.
5// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES.
6//
7// The above named program is free software; you can redistribute it and/or
8// modify it under the terms of the GNU General Public
9// License version 2 as published by the Free Software Foundation.
10//
11// The above named program is distributed in the hope that it will be
12// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14// General Public License for more details.
15//
16// You should have received a copy of the GNU General Public
17// License along with this work; if not, write to the Free Software
18// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
19//
20// ========== Copyright Header End ============================================
21////////////////////////////////////////////////////////////////////////
22/*
23//  Module Name: sparc_exu_aluor32
24//      Description: This block performs a 32 bit OR of the input source.
25//                      The result is the output nonzero.
26*/
27
28
29module sparc_exu_aluor32
30  (/*AUTOARG*/
31   // Outputs
32   out, 
33   // Inputs
34   in
35   );
36
37   input [31:0] in;         // input to be compared to zero
38
39   output       out;       // or of input bits
40
41   wire         nor1_1;
42   wire         nor1_2;
43   wire         nor1_3;
44   wire         nor1_4;
45   wire         nor1_5;
46   wire         nor1_6;
47   wire         nor1_7;
48   wire         nor1_8;
49   wire         nor1_9;
50   wire         nor1_10;
51   wire         nor1_11;
52   wire         nor1_12;
53   wire         nor1_13;
54   wire         nor1_14;
55   wire         nor1_15;
56   wire         nor1_16;
57   wire         nand2_1;
58   wire         nand2_2;
59   wire         nand2_3;
60   wire         nand2_4;
61   wire         inv3_1;
62   wire         inv3_2;
63   wire         inv3_3;
64   wire         inv3_4;
65
66   assign       nor1_1 = ~(in[1] | in[0]);
67   assign       nor1_2 = ~(in[3] | in[2]);
68   assign       nor1_3 = ~(in[5] | in[4]);
69   assign       nor1_4 = ~(in[7] | in[6]);
70   assign       nor1_5 = ~(in[9] | in[8]);
71   assign       nor1_6 = ~(in[11] | in[10]);
72   assign       nor1_7 = ~(in[13] | in[12]);
73   assign       nor1_8 = ~(in[15] | in[14]);
74   assign       nor1_9 = ~(in[17] | in[16]);
75   assign       nor1_10 = ~(in[19] | in[18]);
76   assign       nor1_11 = ~(in[21] | in[20]);
77   assign       nor1_12 = ~(in[23] | in[22]);
78   assign       nor1_13 = ~(in[25] | in[24]);
79   assign       nor1_14 = ~(in[27] | in[26]);
80   assign       nor1_15 = ~(in[29] | in[28]);
81   assign       nor1_16 = ~(in[31] | in[30]);
82
83   assign       nand2_1 = ~(nor1_1 & nor1_2 & nor1_3 & nor1_4);
84   assign       nand2_2 = ~(nor1_5 & nor1_6 & nor1_7 & nor1_8);
85   assign       nand2_3 = ~(nor1_9 & nor1_10 & nor1_11 & nor1_12);
86   assign       nand2_4 = ~(nor1_13 & nor1_14 & nor1_15 & nor1_16);
87
88   assign       inv3_1 = ~nand2_1;
89   assign       inv3_2 = ~nand2_2;
90   assign       inv3_3 = ~nand2_3;
91   assign       inv3_4 = ~nand2_4;
92
93   assign       out = ~(inv3_1 & inv3_2 & inv3_3 & inv3_4);
94
95endmodule // sparc_exu_aluor32
96
97   
98
99   
100                           
101
102                           
103                           
104                         
Note: See TracBrowser for help on using the repository browser.