Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / design / sys / iop / niu / rtl / pcs_encoder.v
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: pcs_encoder.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// @(#)pcs_encoder.v 1.1G
36/**********************************************************************/
37/* Project Name : CASSINI */
38/* Module Name : PCS Encoder Block */
39/* Description : The encoder block does the 8b10b encoding of data */
40/* and control characters. The encoder_sel signal */
41/* specifies the special characters to be outputted */
42/* for the transmit stream. */
43/* */
44/* Assumptions : none. */
45/* */
46/* Parent module : pcs_tx_dpath.v */
47/* Child modules : none. */
48/* Author Name : Linda Chen */
49/* Date Created : 10/24/96 */
50/* */
51/* Copyright (c) 1994, Sun Microsystems, Inc. */
52/* Sun Proprietary and Confidential */
53/* */
54/* Modifications : none yet */
55/* Synthesis Notes : none yet */
56/**********************************************************************/
57
58`include "pcs_define.h"
59
60module pcs_encoder (tx_8b_enc_in, // inputs
61 encoder_sel,special_enc_in,pos_disp,
62
63 tx_10b_enc_out); // outputs
64
65input [7:0] tx_8b_enc_in; // incoming byte
66input [3:0] encoder_sel; // used for special characters
67input special_enc_in; // marks special characters
68input pos_disp; // running disparity of last data
69
70output [9:0] tx_10b_enc_out; // outgoing 10 bits encoded
71
72/*
73** Call of function for encoder
74*/
75assign tx_10b_enc_out = encoder_fn(special_enc_in,
76 encoder_sel,tx_8b_enc_in, pos_disp);
77
78/*
79** Function to encode 8b to 10b data
80*/
81function [9:0] encoder_fn;
82 input special_char;
83 input [3:0] encoder_sel;
84 input [7:0] tx_8b_enc_in;
85 input RDreg;
86
87 if (~special_char)
88 case (tx_8b_enc_in[7:0]) //synopsys parallel_case full_case infer_mux
89 //if RD-, choose 1st, if RD+ choose 2nd
90 8'h00: encoder_fn = !RDreg ? 10'b1001110100 : 10'b0110001011;
91 8'h01: encoder_fn = !RDreg ? 10'b0111010100 : 10'b1000101011;
92 8'h02: encoder_fn = !RDreg ? 10'b1011010100 : 10'b0100101011;
93 8'h03: encoder_fn = !RDreg ? 10'b1100011011 : 10'b1100010100;
94
95 8'h04: encoder_fn = !RDreg ? 10'b1101010100 : 10'b0010101011;
96 8'h05: encoder_fn = !RDreg ? 10'b1010011011 : 10'b1010010100;
97 8'h06: encoder_fn = !RDreg ? 10'b0110011011 : 10'b0110010100;
98 8'h07: encoder_fn = !RDreg ? 10'b1110001011 : 10'b0001110100;
99
100 8'h08: encoder_fn = !RDreg ? 10'b1110010100 : 10'b0001101011;
101 8'h09: encoder_fn = !RDreg ? 10'b1001011011 : 10'b1001010100;
102 8'h0a: encoder_fn = !RDreg ? 10'b0101011011 : 10'b0101010100;
103 8'h0b: encoder_fn = !RDreg ? 10'b1101001011 : 10'b1101000100;
104
105 8'h0c: encoder_fn = !RDreg ? 10'b0011011011 : 10'b0011010100;
106 8'h0d: encoder_fn = !RDreg ? 10'b1011001011 : 10'b1011000100;
107 8'h0e: encoder_fn = !RDreg ? 10'b0111001011 : 10'b0111000100;
108 8'h0f: encoder_fn = !RDreg ? 10'b0101110100 : 10'b1010001011;
109
110 8'h10: encoder_fn = !RDreg ? 10'b0110110100 : 10'b1001001011;
111 8'h11: encoder_fn = !RDreg ? 10'b1000111011 : 10'b1000110100;
112 8'h12: encoder_fn = !RDreg ? 10'b0100111011 : 10'b0100110100;
113 8'h13: encoder_fn = !RDreg ? 10'b1100101011 : 10'b1100100100;
114
115 8'h14: encoder_fn = !RDreg ? 10'b0010111011 : 10'b0010110100;
116 8'h15: encoder_fn = !RDreg ? 10'b1010101011 : 10'b1010100100;
117 8'h16: encoder_fn = !RDreg ? 10'b0110101011 : 10'b0110100100;
118 8'h17: encoder_fn = !RDreg ? 10'b1110100100 : 10'b0001011011;
119
120 8'h18: encoder_fn = !RDreg ? 10'b1100110100 : 10'b0011001011;
121 8'h19: encoder_fn = !RDreg ? 10'b1001101011 : 10'b1001100100;
122 8'h1a: encoder_fn = !RDreg ? 10'b0101101011 : 10'b0101100100;
123 8'h1b: encoder_fn = !RDreg ? 10'b1101100100 : 10'b0010011011;
124
125 8'h1c: encoder_fn = !RDreg ? 10'b0011101011 : 10'b0011100100;
126 8'h1d: encoder_fn = !RDreg ? 10'b1011100100 : 10'b0100011011;
127 8'h1e: encoder_fn = !RDreg ? 10'b0111100100 : 10'b1000011011;
128 8'h1f: encoder_fn = !RDreg ? 10'b1010110100 : 10'b0101001011;
129
130 8'h20: encoder_fn = !RDreg ? 10'b1001111001 : 10'b0110001001;
131 8'h21: encoder_fn = !RDreg ? 10'b0111011001 : 10'b1000101001;
132 8'h22: encoder_fn = !RDreg ? 10'b1011011001 : 10'b0100101001;
133 8'h23: encoder_fn = 10'b1100011001;
134
135 8'h24: encoder_fn = !RDreg ? 10'b1101011001 : 10'b0010101001;
136 8'h25: encoder_fn = 10'b1010011001;
137 8'h26: encoder_fn = 10'b0110011001;
138 8'h27: encoder_fn = !RDreg ? 10'b1110001001 : 10'b0001111001;
139
140 8'h28: encoder_fn = !RDreg ? 10'b1110011001 : 10'b0001101001;
141 8'h29: encoder_fn = 10'b1001011001;
142 8'h2a: encoder_fn = 10'b0101011001;
143 8'h2b: encoder_fn = 10'b1101001001;
144
145 8'h2c: encoder_fn = 10'b0011011001;
146 8'h2d: encoder_fn = 10'b1011001001;
147 8'h2e: encoder_fn = 10'b0111001001;
148 8'h2f: encoder_fn = !RDreg ? 10'b0101111001 : 10'b1010001001;
149
150 8'h30: encoder_fn = !RDreg ? 10'b0110111001 : 10'b1001001001;
151 8'h31: encoder_fn = 10'b1000111001;
152 8'h32: encoder_fn = 10'b0100111001;
153 8'h33: encoder_fn = 10'b1100101001;
154
155 8'h34: encoder_fn = 10'b0010111001;
156 8'h35: encoder_fn = 10'b1010101001;
157 8'h36: encoder_fn = 10'b0110101001;
158 8'h37: encoder_fn = !RDreg ? 10'b1110101001 : 10'b0001011001;
159
160 8'h38: encoder_fn = !RDreg ? 10'b1100111001 : 10'b0011001001;
161 8'h39: encoder_fn = 10'b1001101001;
162 8'h3a: encoder_fn = 10'b0101101001;
163 8'h3b: encoder_fn = !RDreg ? 10'b1101101001 : 10'b0010011001;
164
165 8'h3c: encoder_fn = 10'b0011101001;
166 8'h3d: encoder_fn = !RDreg ? 10'b1011101001 : 10'b0100011001;
167 8'h3e: encoder_fn = !RDreg ? 10'b0111101001 : 10'b1000011001;
168 8'h3f: encoder_fn = !RDreg ? 10'b1010111001 : 10'b0101001001;
169
170 8'h40: encoder_fn = !RDreg ? 10'b1001110101 : 10'b0110000101;
171 8'h41: encoder_fn = !RDreg ? 10'b0111010101 : 10'b1000100101;
172 8'h42: encoder_fn = !RDreg ? 10'b1011010101 : 10'b0100100101;
173 8'h43: encoder_fn = !RDreg ? 10'b1100010101 : 10'b1100010101;
174
175 8'h44: encoder_fn = !RDreg ? 10'b1101010101 : 10'b0010100101;
176 8'h45: encoder_fn = 10'b1010010101;
177 8'h46: encoder_fn = 10'b0110010101;
178 8'h47: encoder_fn = !RDreg ? 10'b1110000101 : 10'b0001110101;
179
180 8'h48: encoder_fn = !RDreg ? 10'b1110010101 : 10'b0001100101;
181 8'h49: encoder_fn = 10'b1001010101;
182 8'h4a: encoder_fn = 10'b0101010101;
183 8'h4b: encoder_fn = 10'b1101000101;
184
185 8'h4c: encoder_fn = 10'b0011010101;
186 8'h4d: encoder_fn = 10'b1011000101;
187 8'h4e: encoder_fn = 10'b0111000101;
188 8'h4f: encoder_fn = !RDreg ? 10'b0101110101 : 10'b1010000101;
189
190 8'h50: encoder_fn = !RDreg ? 10'b0110110101 : 10'b1001000101;
191 8'h51: encoder_fn = 10'b1000110101;
192 8'h52: encoder_fn = 10'b0100110101;
193 8'h53: encoder_fn = 10'b1100100101;
194
195 8'h54: encoder_fn = 10'b0010110101;
196 8'h55: encoder_fn = 10'b1010100101;
197 8'h56: encoder_fn = 10'b0110100101;
198 8'h57: encoder_fn = !RDreg ? 10'b1110100101 : 10'b0001010101;
199
200 8'h58: encoder_fn = !RDreg ? 10'b1100110101 : 10'b0011000101;
201 8'h59: encoder_fn = 10'b1001100101;
202 8'h5a: encoder_fn = 10'b0101100101;
203 8'h5b: encoder_fn = !RDreg ? 10'b1101100101 : 10'b0010010101;
204
205 8'h5c: encoder_fn = 10'b0011100101;
206 8'h5d: encoder_fn = !RDreg ? 10'b1011100101 : 10'b0100010101;
207 8'h5e: encoder_fn = !RDreg ? 10'b0111100101 : 10'b1000010101;
208 8'h5f: encoder_fn = !RDreg ? 10'b1010110101 : 10'b0101000101;
209
210 8'h60: encoder_fn = !RDreg ? 10'b1001110011 : 10'b0110001100;
211 8'h61: encoder_fn = !RDreg ? 10'b0111010011 : 10'b1000101100;
212 8'h62: encoder_fn = !RDreg ? 10'b1011010011 : 10'b0100101100;
213 8'h63: encoder_fn = !RDreg ? 10'b1100011100 : 10'b1100010011;
214
215 8'h64: encoder_fn = !RDreg ? 10'b1101010011 : 10'b0010101100;
216 8'h65: encoder_fn = !RDreg ? 10'b1010011100 : 10'b1010010011;
217 8'h66: encoder_fn = !RDreg ? 10'b0110011100 : 10'b0110010011;
218 8'h67: encoder_fn = !RDreg ? 10'b1110001100 : 10'b0001110011;
219
220 8'h68: encoder_fn = !RDreg ? 10'b1110010011 : 10'b0001101100;
221 8'h69: encoder_fn = !RDreg ? 10'b1001011100 : 10'b1001010011;
222 8'h6a: encoder_fn = !RDreg ? 10'b0101011100 : 10'b0101010011;
223 8'h6b: encoder_fn = !RDreg ? 10'b1101001100 : 10'b1101000011;
224
225 8'h6c: encoder_fn = !RDreg ? 10'b0011011100 : 10'b0011010011;
226 8'h6d: encoder_fn = !RDreg ? 10'b1011001100 : 10'b1011000011;
227 8'h6e: encoder_fn = !RDreg ? 10'b0111001100 : 10'b0111000011;
228 8'h6f: encoder_fn = !RDreg ? 10'b0101110011 : 10'b1010001100;
229
230 8'h70: encoder_fn = !RDreg ? 10'b0110110011 : 10'b1001001100;
231 8'h71: encoder_fn = !RDreg ? 10'b1000111100 : 10'b1000110011;
232 8'h72: encoder_fn = !RDreg ? 10'b0100111100 : 10'b0100110011;
233 8'h73: encoder_fn = !RDreg ? 10'b1100101100 : 10'b1100100011;
234
235 8'h74: encoder_fn = !RDreg ? 10'b0010111100 : 10'b0010110011;
236 8'h75: encoder_fn = !RDreg ? 10'b1010101100 : 10'b1010100011;
237 8'h76: encoder_fn = !RDreg ? 10'b0110101100 : 10'b0110100011;
238 8'h77: encoder_fn = !RDreg ? 10'b1110100011 : 10'b0001011100;
239
240 8'h78: encoder_fn = !RDreg ? 10'b1100110011 : 10'b0011001100;
241 8'h79: encoder_fn = !RDreg ? 10'b1001101100 : 10'b1001100011;
242 8'h7a: encoder_fn = !RDreg ? 10'b0101101100 : 10'b0101100011;
243 8'h7b: encoder_fn = !RDreg ? 10'b1101100011 : 10'b0010011100;
244
245 8'h7c: encoder_fn = !RDreg ? 10'b0011101100 : 10'b0011100011;
246 8'h7d: encoder_fn = !RDreg ? 10'b1011100011 : 10'b0100011100;
247 8'h7e: encoder_fn = !RDreg ? 10'b0111100011 : 10'b1000011100;
248 8'h7f: encoder_fn = !RDreg ? 10'b1010110011 : 10'b0101001100;
249
250 8'h80: encoder_fn = !RDreg ? 10'b1001110010 : 10'b0110001101;
251 8'h81: encoder_fn = !RDreg ? 10'b0111010010 : 10'b1000101101;
252 8'h82: encoder_fn = !RDreg ? 10'b1011010010 : 10'b0100101101;
253 8'h83: encoder_fn = !RDreg ? 10'b1100011101 : 10'b1100010010;
254
255 8'h84: encoder_fn = !RDreg ? 10'b1101010010 : 10'b0010101101;
256 8'h85: encoder_fn = !RDreg ? 10'b1010011101 : 10'b1010010010;
257 8'h86: encoder_fn = !RDreg ? 10'b0110011101 : 10'b0110010010;
258 8'h87: encoder_fn = !RDreg ? 10'b1110001101 : 10'b0001110010;
259
260 8'h88: encoder_fn = !RDreg ? 10'b1110010010 : 10'b0001101101;
261 8'h89: encoder_fn = !RDreg ? 10'b1001011101 : 10'b1001010010;
262 8'h8a: encoder_fn = !RDreg ? 10'b0101011101 : 10'b0101010010;
263 8'h8b: encoder_fn = !RDreg ? 10'b1101001101 : 10'b1101000010;
264
265 8'h8c: encoder_fn = !RDreg ? 10'b0011011101 : 10'b0011010010;
266 8'h8d: encoder_fn = !RDreg ? 10'b1011001101 : 10'b1011000010;
267 8'h8e: encoder_fn = !RDreg ? 10'b0111001101 : 10'b0111000010;
268 8'h8f: encoder_fn = !RDreg ? 10'b0101110010 : 10'b1010001101;
269
270 8'h90: encoder_fn = !RDreg ? 10'b0110110010 : 10'b1001001101;
271 8'h91: encoder_fn = !RDreg ? 10'b1000111101 : 10'b1000110010;
272 8'h92: encoder_fn = !RDreg ? 10'b0100111101 : 10'b0100110010;
273 8'h93: encoder_fn = !RDreg ? 10'b1100101101 : 10'b1100100010;
274
275 8'h94: encoder_fn = !RDreg ? 10'b0010111101 : 10'b0010110010;
276 8'h95: encoder_fn = !RDreg ? 10'b1010101101 : 10'b1010100010;
277 8'h96: encoder_fn = !RDreg ? 10'b0110101101 : 10'b0110100010;
278 8'h97: encoder_fn = !RDreg ? 10'b1110100010 : 10'b0001011101;
279
280 8'h98: encoder_fn = !RDreg ? 10'b1100110010 : 10'b0011001101;
281 8'h99: encoder_fn = !RDreg ? 10'b1001101101 : 10'b1001100010;
282 8'h9a: encoder_fn = !RDreg ? 10'b0101101101 : 10'b0101100010;
283 8'h9b: encoder_fn = !RDreg ? 10'b1101100010 : 10'b0010011101;
284
285 8'h9c: encoder_fn = !RDreg ? 10'b0011101101 : 10'b0011100010;
286 8'h9d: encoder_fn = !RDreg ? 10'b1011100010 : 10'b0100011101;
287 8'h9e: encoder_fn = !RDreg ? 10'b0111100010 : 10'b1000011101;
288 8'h9f: encoder_fn = !RDreg ? 10'b1010110010 : 10'b0101001101;
289
290 8'ha0: encoder_fn = !RDreg ? 10'b1001111010 : 10'b0110001010;
291 8'ha1: encoder_fn = !RDreg ? 10'b0111011010 : 10'b1000101010;
292 8'ha2: encoder_fn = !RDreg ? 10'b1011011010 : 10'b0100101010;
293 8'ha3: encoder_fn = !RDreg ? 10'b1100011010 : 10'b1100011010;
294
295 8'ha4: encoder_fn = !RDreg ? 10'b1101011010 : 10'b0010101010;
296 8'ha5: encoder_fn = 10'b1010011010;
297 8'ha6: encoder_fn = 10'b0110011010;
298 8'ha7: encoder_fn = !RDreg ? 10'b1110001010 : 10'b0001111010;
299
300 8'ha8: encoder_fn = !RDreg ? 10'b1110011010 : 10'b0001101010;
301 8'ha9: encoder_fn = 10'b1001011010;
302 8'haa: encoder_fn = 10'b0101011010;
303 8'hab: encoder_fn = 10'b1101001010;
304
305 8'hac: encoder_fn = 10'b0011011010;
306 8'had: encoder_fn = 10'b1011001010;
307 8'hae: encoder_fn = 10'b0111001010;
308 8'haf: encoder_fn = !RDreg ? 10'b0101111010 : 10'b1010001010;
309
310 8'hb0: encoder_fn = !RDreg ? 10'b0110111010 : 10'b1001001010;
311 8'hb1: encoder_fn = 10'b1000111010;
312 8'hb2: encoder_fn = 10'b0100111010;
313 8'hb3: encoder_fn = 10'b1100101010;
314
315 8'hb4: encoder_fn = 10'b0010111010;
316 8'hb5: encoder_fn = 10'b1010101010;
317 8'hb6: encoder_fn = 10'b0110101010;
318 8'hb7: encoder_fn = !RDreg ? 10'b1110101010 : 10'b0001011010;
319
320 8'hb8: encoder_fn = !RDreg ? 10'b1100111010 : 10'b0011001010;
321 8'hb9: encoder_fn = 10'b1001101010;
322 8'hba: encoder_fn = 10'b0101101010;
323 8'hbb: encoder_fn = !RDreg ? 10'b1101101010 : 10'b0010011010;
324
325 8'hbc: encoder_fn = 10'b0011101010;
326 8'hbd: encoder_fn = !RDreg ? 10'b1011101010 : 10'b0100011010;
327 8'hbe: encoder_fn = !RDreg ? 10'b0111101010 : 10'b1000011010;
328 8'hbf: encoder_fn = !RDreg ? 10'b1010111010 : 10'b0101001010;
329
330 8'hc0: encoder_fn = !RDreg ? 10'b1001110110 : 10'b0110000110;
331 8'hc1: encoder_fn = !RDreg ? 10'b0111010110 : 10'b1000100110;
332 8'hc2: encoder_fn = !RDreg ? 10'b1011010110 : 10'b0100100110;
333 8'hc3: encoder_fn = 10'b1100010110;
334
335 8'hc4: encoder_fn = !RDreg ? 10'b1101010110 : 10'b0010100110;
336 8'hc5: encoder_fn = 10'b1010010110;
337 8'hc6: encoder_fn = 10'b0110010110;
338 8'hc7: encoder_fn = !RDreg ? 10'b1110000110 : 10'b0001110110;
339
340 8'hc8: encoder_fn = !RDreg ? 10'b1110010110 : 10'b0001100110;
341 8'hc9: encoder_fn = 10'b1001010110;
342 8'hca: encoder_fn = 10'b0101010110;
343 8'hcb: encoder_fn = 10'b1101000110;
344
345 8'hcc: encoder_fn = 10'b0011010110;
346 8'hcd: encoder_fn = 10'b1011000110;
347 8'hce: encoder_fn = 10'b0111000110;
348 8'hcf: encoder_fn = !RDreg ? 10'b0101110110 : 10'b1010000110;
349
350 8'hd0: encoder_fn = !RDreg ? 10'b0110110110 : 10'b1001000110;
351 8'hd1: encoder_fn = 10'b1000110110;
352 8'hd2: encoder_fn = 10'b0100110110;
353 8'hd3: encoder_fn = 10'b1100100110;
354
355 8'hd4: encoder_fn = 10'b0010110110;
356 8'hd5: encoder_fn = 10'b1010100110;
357 8'hd6: encoder_fn = 10'b0110100110;
358 8'hd7: encoder_fn = !RDreg ? 10'b1110100110 : 10'b0001010110;
359
360 8'hd8: encoder_fn = !RDreg ? 10'b1100110110 : 10'b0011000110;
361 8'hd9: encoder_fn = 10'b1001100110;
362 8'hda: encoder_fn = 10'b0101100110;
363 8'hdb: encoder_fn = !RDreg ? 10'b1101100110 : 10'b0010010110;
364
365 8'hdc: encoder_fn = 10'b0011100110;
366 8'hdd: encoder_fn = !RDreg ? 10'b1011100110 : 10'b0100010110;
367 8'hde: encoder_fn = !RDreg ? 10'b0111100110 : 10'b1000010110;
368 8'hdf: encoder_fn = !RDreg ? 10'b1010110110 : 10'b0101000110;
369
370 8'he0: encoder_fn = !RDreg ? 10'b1001110001 : 10'b0110001110;
371 8'he1: encoder_fn = !RDreg ? 10'b0111010001 : 10'b1000101110;
372 8'he2: encoder_fn = !RDreg ? 10'b1011010001 : 10'b0100101110;
373 8'he3: encoder_fn = !RDreg ? 10'b1100011110 : 10'b1100010001;
374
375 8'he4: encoder_fn = !RDreg ? 10'b1101010001 : 10'b0010101110;
376 8'he5: encoder_fn = !RDreg ? 10'b1010011110 : 10'b1010010001;
377 8'he6: encoder_fn = !RDreg ? 10'b0110011110 : 10'b0110010001;
378 8'he7: encoder_fn = !RDreg ? 10'b1110001110 : 10'b0001110001;
379
380 8'he8: encoder_fn = !RDreg ? 10'b1110010001 : 10'b0001101110;
381 8'he9: encoder_fn = !RDreg ? 10'b1001011110 : 10'b1001010001;
382 8'hea: encoder_fn = !RDreg ? 10'b0101011110 : 10'b0101010001;
383 8'heb: encoder_fn = !RDreg ? 10'b1101001110 : 10'b1101001000;
384
385 8'hec: encoder_fn = !RDreg ? 10'b0011011110 : 10'b0011010001;
386 8'hed: encoder_fn = !RDreg ? 10'b1011001110 : 10'b1011001000;
387 8'hee: encoder_fn = !RDreg ? 10'b0111001110 : 10'b0111001000;
388 8'hef: encoder_fn = !RDreg ? 10'b0101110001 : 10'b1010001110;
389
390 8'hf0: encoder_fn = !RDreg ? 10'b0110110001 : 10'b1001001110;
391 8'hf1: encoder_fn = !RDreg ? 10'b1000110111 : 10'b1000110001;
392 8'hf2: encoder_fn = !RDreg ? 10'b0100110111 : 10'b0100110001;
393 8'hf3: encoder_fn = !RDreg ? 10'b1100101110 : 10'b1100100001;
394
395 8'hf4: encoder_fn = !RDreg ? 10'b0010110111 : 10'b0010110001;
396 8'hf5: encoder_fn = !RDreg ? 10'b1010101110 : 10'b1010100001;
397 8'hf6: encoder_fn = !RDreg ? 10'b0110101110 : 10'b0110100001;
398 8'hf7: encoder_fn = !RDreg ? 10'b1110100001 : 10'b0001011110;
399
400 8'hf8: encoder_fn = !RDreg ? 10'b1100110001 : 10'b0011001110;
401 8'hf9: encoder_fn = !RDreg ? 10'b1001101110 : 10'b1001100001;
402 8'hfa: encoder_fn = !RDreg ? 10'b0101101110 : 10'b0101100001;
403 8'hfb: encoder_fn = !RDreg ? 10'b1101100001 : 10'b0010011110;
404
405 8'hfc: encoder_fn = !RDreg ? 10'b0011101110 : 10'b0011100001;
406 8'hfd: encoder_fn = !RDreg ? 10'b1011100001 : 10'b0100011110;
407 8'hfe: encoder_fn = !RDreg ? 10'b0111100001 : 10'b1000011110;
408 8'hff: encoder_fn = !RDreg ? 10'b1010110001 : 10'b0101001110;
409
410 endcase
411 else
412 case (encoder_sel) // synopsys full_case parallel_case infer_mux
413 `PCS_ENC_K285 : // 4'h0 - K28.5
414 encoder_fn = !RDreg ? 10'b0011111010 : 10'b1100000101;
415 `PCS_ENC_IDLE2 : // 4'h1 - D16.2
416 encoder_fn = !RDreg ? 10'b0110110101 : 10'b1001000101;
417 `PCS_ENC_SOP : // 4'h2 - K27.7
418 encoder_fn = !RDreg ? 10'b1101101000 : 10'b0010010111;
419 `PCS_ENC_T_CHAR : // 4'h4 - K29.7
420 encoder_fn = !RDreg ? 10'b1011101000 : 10'b0100010111;
421 `PCS_ENC_R_CHAR : // 4'h5 - K23.7
422 encoder_fn = !RDreg ? 10'b1110101000 : 10'b0001010111;
423 `PCS_ENC_IDLE1 : // 4'h6 - D5.6
424 encoder_fn = 10'b1010010110;
425 `PCS_ENC_H_CHAR : // 4'h7 - K30.7
426 encoder_fn = !RDreg ? 10'b0111101000 : 10'b1000010111;
427 `PCS_ENC_LINK_CONFA : // 4'h8 - D21.5
428 encoder_fn = 10'b1010101010;
429 `PCS_ENC_LINK_CONFB : // 4'h9 - D2.2
430 encoder_fn = !RDreg ? 10'b1011010101 : 10'b0100100101;
431 endcase
432 endfunction
433
434endmodule
435
436
437