Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / libs / analog / n2_revid_cust_l / n2_revid_cust / rtl / n2_revid_cust.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: n2_revid_cust.v
4// Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved
5// 4150 Network Circle, Santa Clara, California 95054, U.S.A.
6//
7// * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
8//
9// This program is free software; you can redistribute it and/or modify
10// it under the terms of the GNU General Public License as published by
11// the Free Software Foundation; version 2 of the License.
12//
13// This program is distributed in the hope that it will be useful,
14// but WITHOUT ANY WARRANTY; without even the implied warranty of
15// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16// GNU General Public License for more details.
17//
18// You should have received a copy of the GNU General Public License
19// along with this program; if not, write to the Free Software
20// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21//
22// For the avoidance of doubt, and except that if any non-GPL license
23// choice is available it will apply instead, Sun elects to use only
24// the General Public License version 2 (GPLv2) at this time for any
25// software where a choice of GPL license versions is made
26// available with the language indicating that GPLv2 or any later version
27// may be used, or where a choice of which version of the GPL is applied is
28// otherwise unspecified.
29//
30// Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
31// CA 95054 USA or visit www.sun.com if you need additional information or
32// have any questions.
33//
34// ========== Copyright Header End ============================================
35
36module n2_revid_cust ( jtag_revid_in, mask_minor, jtag_revid_out, spc_revid_out);
37
38 input [3:0] jtag_revid_in;
39 input [3:0] mask_minor;
40
41 output [3:0] jtag_revid_out;
42 output [3:0] spc_revid_out;
43
44
45 wire [3:0] jtag_vector_metal_01;
46 wire [3:0] jtag_vector_metal_02;
47 wire [3:0] jtag_vector_metal_03;
48 wire [3:0] jtag_vector_metal_04;
49 wire [3:0] jtag_vector_metal_05;
50 wire [3:0] jtag_vector_metal_06;
51 wire [3:0] jtag_vector_metal_07;
52 wire [3:0] jtag_vector_metal_08;
53 wire [3:0] jtag_vector_metal_09;
54 wire [3:0] jtag_vector_metal_10;
55 wire [3:0] jtag_vector_metal_11;
56
57
58 wire [3:0] mask_vector_metal_01;
59 wire [3:0] mask_vector_metal_02;
60 wire [3:0] mask_vector_metal_03;
61 wire [3:0] mask_vector_metal_04;
62 wire [3:0] mask_vector_metal_05;
63 wire [3:0] mask_vector_metal_06;
64 wire [3:0] mask_vector_metal_07;
65 wire [3:0] mask_vector_metal_08;
66 wire [3:0] mask_vector_metal_09;
67 wire [3:0] mask_vector_metal_10;
68 wire [3:0] mask_vector_metal_11;
69
70
71 //synopsys translate_off
72
73
74// How to set the versions:
75//
76// This custom controls the minor revision field of the HVER register
77// (via spc_revid_out[3:0]) and the JTAG version number
78// (via jtag_revid_out[3:0]).
79//
80// The minor revision field indicates the metal mask revision number
81// (the "y" in TO x.y).
82//
83// The JTAG version number is a unique value for each tapeout.
84//
85// If a tapeout affects all metal layers, then
86// - the inputs (spec_revid_in[3:0], jtag_revid_in[3:0]) can be set
87// to the values required of the version registers
88// and
89// - the "metal_nn" masks in this custom can be set to all zeroes
90//
91// If a tapeout does not affect all metal layers, then
92// - the inputs should not be changed from the previous tapeout
93// and
94// - the "metal_nn" masks corresponding to the layer being changed
95// should be set to flip the bits (via XOR) in the input
96// vectors (and other metal masks) to generate the new
97// revision numbers.
98//
99// Paul Jordan 01/25/2007
100
101
102// The following comments were made by Hunter Donahue, but they
103// make little sense.
104////////////////////////////////////////////////////////////////////////
105// For the following JTAG_VECTOR and MASK_VECTOR the user
106// must assign the vector to either of two values: (4'b0000, 4'b1111) (only one of these two values)
107
108// We start the initial programming to all be 4'0000 for (TO 1.0) Hunter Donahue July 11, 2005
109////////////////////////////////////////////////////////////////////////
110// The preceeding comments were made by Hunter Donahue, but they
111// make little sense.
112
113 assign jtag_vector_metal_01 = 4'b0000;
114 assign jtag_vector_metal_02 = 4'b0000;
115 assign jtag_vector_metal_03 = 4'b0111; // set for TO 2.2 to change input 4'b0011 to output 4'b0100
116 assign jtag_vector_metal_04 = 4'b0000;
117 assign jtag_vector_metal_05 = 4'b0000;
118 assign jtag_vector_metal_06 = 4'b0000;
119 assign jtag_vector_metal_07 = 4'b0000;
120 assign jtag_vector_metal_08 = 4'b0000;
121 assign jtag_vector_metal_09 = 4'b0000;
122 assign jtag_vector_metal_10 = 4'b0000;
123 assign jtag_vector_metal_11 = 4'b0000;
124
125
126 assign mask_vector_metal_01 = 4'b0000;
127 assign mask_vector_metal_02 = 4'b0000;
128 assign mask_vector_metal_03 = 4'b0011; // set for TO 2.2 to change input 4'b0001 to output 4'b0010
129 assign mask_vector_metal_04 = 4'b0000;
130 assign mask_vector_metal_05 = 4'b0000;
131 assign mask_vector_metal_06 = 4'b0000;
132 assign mask_vector_metal_07 = 4'b0000;
133 assign mask_vector_metal_08 = 4'b0000;
134 assign mask_vector_metal_09 = 4'b0000;
135 assign mask_vector_metal_10 = 4'b0000;
136 assign mask_vector_metal_11 = 4'b0000;
137
138
139 assign jtag_revid_out = jtag_revid_in ^
140 jtag_vector_metal_01 ^ jtag_vector_metal_02 ^ jtag_vector_metal_03 ^ jtag_vector_metal_04 ^
141 jtag_vector_metal_05 ^ jtag_vector_metal_06 ^ jtag_vector_metal_07 ^ jtag_vector_metal_08 ^
142 jtag_vector_metal_09 ^ jtag_vector_metal_10 ^ jtag_vector_metal_11;
143
144 assign spc_revid_out = mask_minor ^
145 mask_vector_metal_01 ^ mask_vector_metal_02 ^ mask_vector_metal_03 ^ mask_vector_metal_04 ^
146 mask_vector_metal_05 ^ mask_vector_metal_06 ^ mask_vector_metal_07 ^ mask_vector_metal_08 ^
147 mask_vector_metal_09 ^ mask_vector_metal_10 ^ mask_vector_metal_11;
148
149
150 //synopsys translate_on
151
152endmodule
153