OpenCores
URL https://opencores.org/ocsvn/mips_enhanced/mips_enhanced/trunk

Subversion Repositories mips_enhanced

[/] [mips_enhanced/] [trunk/] [grlib-gpl-1.0.19-b3188/] [lib/] [tech/] [ec/] [orca/] [orcacomp.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dimamali
-- --------------------------------------------------------------------
2
-- >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
3
-- --------------------------------------------------------------------
4
-- Copyright (c) 2005 by Lattice Semiconductor Corporation
5
-- --------------------------------------------------------------------
6
--
7
--
8
--                     Lattice Semiconductor Corporation
9
--                     5555 NE Moore Court
10
--                     Hillsboro, OR 97214
11
--                     U.S.A.
12
--
13
--                     TEL: 1-800-Lattice  (USA and Canada)
14
--                          1-408-826-6000 (other locations)
15
--
16
--                     web: http://www.latticesemi.com/
17
--                     email: techsupport@latticesemi.com
18
--
19
-- --------------------------------------------------------------------
20
--
21
-- Simulation Library File for EC/XP
22
--
23
-- $Header: G:\\CVS_REPOSITORY\\CVS_MACROS/LEON3SDE/ALTERA/grlib-eval-1.0.4/lib/tech/ec/ec/ORCACOMP.vhd,v 1.1 2005/12/06 13:00:22 tame Exp $ 
24
--
25
 
26
 
27
--- 
28
LIBRARY ieee;
29
USE ieee.std_logic_1164.all;
30
PACKAGE components IS
31
   function str2std(L: string) return std_logic_vector;
32
   function Str2int( L : string) return integer;
33
   function Str2real( L : string) return REAL;
34
 
35
-----functions for Multipliers (for ECP)----------
36
function INT2VEC(INT: INTEGER; BWIDTH: INTEGER) RETURN STD_LOGIC_VECTOR;
37
function VEC2INT(v: std_logic_vector) return integer;
38
function ADDVECT(A, B: STD_LOGIC_VECTOR ) RETURN STD_LOGIC_VECTOR;
39
function SUBVECT(A, B: STD_LOGIC_VECTOR ) RETURN STD_LOGIC_VECTOR;
40
function TSCOMP(VECT: STD_LOGIC_VECTOR ) RETURN STD_LOGIC_VECTOR;
41
function BITX              (VECT: std_logic) return boolean;
42
function VECX              (VECT: std_logic_vector) return boolean;
43
 
44
-- 
45
COMPONENT ageb2
46
PORT(
47
        a0, a1: IN std_logic := 'X';
48
        b0, b1: IN std_logic := 'X';
49
        ci: IN std_logic := 'X';
50
        ge: OUT std_logic := 'X'
51
  );
52
END COMPONENT;
53
-- 
54
COMPONENT aleb2
55
PORT(
56
        a0, a1: IN std_logic := 'X';
57
        b0, b1: IN std_logic := 'X';
58
        ci: IN std_logic := 'X';
59
        le: OUT std_logic := 'X'
60
  );
61
END COMPONENT;
62
--
63
COMPONENT aneb2
64
PORT(
65
        a0, a1: IN std_logic := 'X';
66
        b0, b1: IN std_logic := 'X';
67
        ci: IN std_logic := 'X';
68
        ne: OUT std_logic := 'X'
69
  );
70
END COMPONENT;
71
--
72
COMPONENT and2
73
PORT(
74
        a: IN std_logic := 'X';
75
        b: IN std_logic := 'X';
76
        z: OUT std_logic := 'X'
77
  );
78
END COMPONENT;
79
-- 
80
COMPONENT and3
81
PORT(
82
        a: IN std_logic := 'X';
83
        b: IN std_logic := 'X';
84
        c: IN std_logic := 'X';
85
        z: OUT std_logic := 'X'
86
  );
87
END COMPONENT;
88
-- 
89
COMPONENT and4
90
PORT(
91
        a: IN std_logic := 'X';
92
        b: IN std_logic := 'X';
93
        c: IN std_logic := 'X';
94
        d: IN std_logic := 'X';
95
        z: OUT std_logic := 'X'
96
  );
97
END COMPONENT;
98
-- 
99
COMPONENT and5
100
PORT(
101
        a: IN std_logic := 'X';
102
        b: IN std_logic := 'X';
103
        c: IN std_logic := 'X';
104
        d: IN std_logic := 'X';
105
        e: IN std_logic := 'X';
106
        z: OUT std_logic := 'X'
107
  );
108
END COMPONENT;
109
-- 
110
COMPONENT cd2
111
PORT(
112
        ci : IN std_logic := 'X';
113
        pc0, pc1 : IN std_logic := 'X';
114
        co : OUT std_logic := 'X';
115
        nc0, nc1 : OUT std_logic := 'X'
116
  );
117
END COMPONENT;
118
--
119
COMPONENT cu2
120
PORT(
121
        ci : IN std_logic := 'X';
122
        pc0, pc1 : IN std_logic := 'X';
123
        co : OUT std_logic := 'X';
124
        nc0, nc1 : OUT std_logic := 'X'
125
  );
126
END COMPONENT;
127
--
128
COMPONENT cb2
129
PORT(
130
        ci : IN std_logic := 'X';
131
        pc0, pc1 : IN std_logic := 'X';
132
        con: IN std_logic := 'X';
133
        co : OUT std_logic := 'X';
134
        nc0, nc1 : OUT std_logic := 'X'
135
  );
136
END COMPONENT;
137
--
138
COMPONENT lb2p3ax
139
    GENERIC (gsr : String := "ENABLED");
140
PORT(
141
        d0, d1 : IN std_logic := 'X';
142
        ci: IN std_logic := 'X';
143
        sp: IN std_logic := 'X';
144
        ck: IN std_logic := 'X';
145
        sd: IN std_logic := 'X';
146
        con: IN std_logic := 'X';
147
        co: OUT std_logic := 'X';
148
        q0, q1 : OUT std_logic := 'X'
149
  );
150
END COMPONENT;
151
--
152
COMPONENT lb2p3ay
153
    GENERIC (gsr : String := "ENABLED");
154
PORT(
155
        d0, d1 : IN std_logic := 'X';
156
        ci: IN std_logic := 'X';
157
        sp: IN std_logic := 'X';
158
        ck: IN std_logic := 'X';
159
        sd: IN std_logic := 'X';
160
        con: IN std_logic := 'X';
161
        co: OUT std_logic := 'X';
162
        q0, q1 : OUT std_logic := 'X'
163
  );
164
END COMPONENT;
165
--
166
COMPONENT lb2p3bx
167
    GENERIC (gsr : String := "ENABLED");
168
PORT(
169
        d0, d1 : IN std_logic := 'X';
170
        ci: IN std_logic := 'X';
171
        sp: IN std_logic := 'X';
172
        ck: IN std_logic := 'X';
173
        sd: IN std_logic := 'X';
174
        pd: IN std_logic := 'X';
175
        con: IN std_logic := 'X';
176
        co: OUT std_logic := 'X';
177
        q0, q1 : OUT std_logic := 'X'
178
  );
179
END COMPONENT;
180
--
181
COMPONENT lb2p3dx
182
    GENERIC (gsr : String := "ENABLED");
183
PORT(
184
        d0, d1 : IN std_logic := 'X';
185
        ci: IN std_logic := 'X';
186
        sp: IN std_logic := 'X';
187
        ck: IN std_logic := 'X';
188
        sd: IN std_logic := 'X';
189
        cd: IN std_logic := 'X';
190
        con: IN std_logic := 'X';
191
        co: OUT std_logic := 'X';
192
        q0, q1 : OUT std_logic := 'X'
193
  );
194
END COMPONENT;
195
--
196
COMPONENT lb2p3ix
197
    GENERIC (gsr : String := "ENABLED");
198
PORT(
199
        d0, d1 : IN std_logic := 'X';
200
        ci: IN std_logic := 'X';
201
        sp: IN std_logic := 'X';
202
        ck: IN std_logic := 'X';
203
        sd: IN std_logic := 'X';
204
        cd: IN std_logic := 'X';
205
        con: IN std_logic := 'X';
206
        co: OUT std_logic := 'X';
207
        q0, q1 : OUT std_logic := 'X'
208
  );
209
END COMPONENT;
210
--
211
COMPONENT lb2p3jx
212
    GENERIC (gsr : String := "ENABLED");
213
PORT(
214
        d0, d1 : IN std_logic := 'X';
215
        ci: IN std_logic := 'X';
216
        sp: IN std_logic := 'X';
217
        ck: IN std_logic := 'X';
218
        sd: IN std_logic := 'X';
219
        pd: IN std_logic := 'X';
220
        con: IN std_logic := 'X';
221
        co: OUT std_logic := 'X';
222
        q0, q1 : OUT std_logic := 'X'
223
  );
224
END COMPONENT;
225
--
226
COMPONENT lb4p3ax
227
    GENERIC (gsr : String := "ENABLED");
228
PORT(
229
        d0, d1, d2, d3 : IN std_logic := 'X';
230
        ci: IN std_logic := 'X';
231
        sp: IN std_logic := 'X';
232
        ck: IN std_logic := 'X';
233
        sd: IN std_logic := 'X';
234
        con: IN std_logic := 'X';
235
        co: OUT std_logic := 'X';
236
        q0, q1, q2, q3 : OUT std_logic := 'X'
237
  );
238
END COMPONENT;
239
--
240
COMPONENT lb4p3ay
241
    GENERIC (gsr : String := "ENABLED");
242
PORT(
243
        d0, d1, d2, d3 : IN std_logic := 'X';
244
        ci: IN std_logic := 'X';
245
        sp: IN std_logic := 'X';
246
        ck: IN std_logic := 'X';
247
        sd: IN std_logic := 'X';
248
        con: IN std_logic := 'X';
249
        co: OUT std_logic := 'X';
250
        q0, q1, q2, q3 : OUT std_logic := 'X'
251
  );
252
END COMPONENT;
253
--
254
COMPONENT lb4p3bx
255
    GENERIC (gsr : String := "ENABLED");
256
PORT(
257
        d0, d1, d2, d3 : IN std_logic := 'X';
258
        ci: IN std_logic := 'X';
259
        sp: IN std_logic := 'X';
260
        ck: IN std_logic := 'X';
261
        sd: IN std_logic := 'X';
262
        pd: IN std_logic := 'X';
263
        con: IN std_logic := 'X';
264
        co: OUT std_logic := 'X';
265
        q0, q1, q2, q3 : OUT std_logic := 'X'
266
  );
267
END COMPONENT;
268
--
269
COMPONENT lb4p3dx
270
    GENERIC (gsr : String := "ENABLED");
271
PORT(
272
        d0, d1, d2, d3 : IN std_logic := 'X';
273
        ci: IN std_logic := 'X';
274
        sp: IN std_logic := 'X';
275
        ck: IN std_logic := 'X';
276
        sd: IN std_logic := 'X';
277
        cd: IN std_logic := 'X';
278
        con: IN std_logic := 'X';
279
        co: OUT std_logic := 'X';
280
        q0, q1, q2, q3 : OUT std_logic := 'X'
281
  );
282
END COMPONENT;
283
--
284
COMPONENT lb4p3ix
285
    GENERIC (gsr : String := "ENABLED");
286
PORT(
287
        d0, d1, d2, d3 : IN std_logic := 'X';
288
        ci: IN std_logic := 'X';
289
        sp: IN std_logic := 'X';
290
        ck: IN std_logic := 'X';
291
        sd: IN std_logic := 'X';
292
        cd: IN std_logic := 'X';
293
        con: IN std_logic := 'X';
294
        co: OUT std_logic := 'X';
295
        q0, q1, q2, q3 : OUT std_logic := 'X'
296
  );
297
END COMPONENT;
298
--
299
COMPONENT lb4p3jx
300
    GENERIC (gsr : String := "ENABLED");
301
PORT(
302
        d0, d1, d2, d3 : IN std_logic := 'X';
303
        ci: IN std_logic := 'X';
304
        sp: IN std_logic := 'X';
305
        ck: IN std_logic := 'X';
306
        sd: IN std_logic := 'X';
307
        pd: IN std_logic := 'X';
308
        con: IN std_logic := 'X';
309
        co: OUT std_logic := 'X';
310
        q0, q1, q2, q3 : OUT std_logic := 'X'
311
  );
312
END COMPONENT;
313
--
314
COMPONENT ld2p3ax
315
    GENERIC (gsr : String := "ENABLED");
316
PORT(
317
        d0, d1 : IN std_logic := 'X';
318
        ci: IN std_logic := 'X';
319
        sp: IN std_logic := 'X';
320
        ck: IN std_logic := 'X';
321
        sd: IN std_logic := 'X';
322
        co: OUT std_logic := 'X';
323
        q0, q1 : OUT std_logic := 'X'
324
  );
325
END COMPONENT;
326
--
327
COMPONENT ld2p3ay
328
    GENERIC (gsr : String := "ENABLED");
329
PORT(
330
        d0, d1 : IN std_logic := 'X';
331
        ci: IN std_logic := 'X';
332
        sp: IN std_logic := 'X';
333
        ck: IN std_logic := 'X';
334
        sd: IN std_logic := 'X';
335
        co: OUT std_logic := 'X';
336
        q0, q1 : OUT std_logic := 'X'
337
  );
338
END COMPONENT;
339
--
340
COMPONENT ld2p3bx
341
    GENERIC (gsr : String := "ENABLED");
342
PORT(
343
        d0, d1 : IN std_logic := 'X';
344
        ci: IN std_logic := 'X';
345
        sp: IN std_logic := 'X';
346
        ck: IN std_logic := 'X';
347
        sd: IN std_logic := 'X';
348
        pd: IN std_logic := 'X';
349
        co: OUT std_logic := 'X';
350
        q0, q1 : OUT std_logic := 'X'
351
  );
352
END COMPONENT;
353
--
354
COMPONENT ld2p3dx
355
    GENERIC (gsr : String := "ENABLED");
356
PORT(
357
        d0, d1 : IN std_logic := 'X';
358
        ci: IN std_logic := 'X';
359
        sp: IN std_logic := 'X';
360
        ck: IN std_logic := 'X';
361
        sd: IN std_logic := 'X';
362
        cd: IN std_logic := 'X';
363
        co: OUT std_logic := 'X';
364
        q0, q1 : OUT std_logic := 'X'
365
  );
366
END COMPONENT;
367
--
368
COMPONENT ld2p3ix
369
    GENERIC (gsr : String := "ENABLED");
370
PORT(
371
        d0, d1 : IN std_logic := 'X';
372
        ci: IN std_logic := 'X';
373
        sp: IN std_logic := 'X';
374
        ck: IN std_logic := 'X';
375
        sd: IN std_logic := 'X';
376
        cd: IN std_logic := 'X';
377
        co: OUT std_logic := 'X';
378
        q0, q1 : OUT std_logic := 'X'
379
  );
380
END COMPONENT;
381
--
382
COMPONENT ld2p3jx
383
    GENERIC (gsr : String := "ENABLED");
384
PORT(
385
        d0, d1 : IN std_logic := 'X';
386
        ci: IN std_logic := 'X';
387
        sp: IN std_logic := 'X';
388
        ck: IN std_logic := 'X';
389
        sd: IN std_logic := 'X';
390
        pd: IN std_logic := 'X';
391
        co: OUT std_logic := 'X';
392
        q0, q1 : OUT std_logic := 'X'
393
  );
394
END COMPONENT;
395
--
396
COMPONENT lu2p3ax
397
    GENERIC (gsr : String := "ENABLED");
398
PORT(
399
        d0, d1 : IN std_logic := 'X';
400
        ci: IN std_logic := 'X';
401
        sp: IN std_logic := 'X';
402
        ck: IN std_logic := 'X';
403
        sd: IN std_logic := 'X';
404
        co: OUT std_logic := 'X';
405
        q0, q1 : OUT std_logic := 'X'
406
  );
407
END COMPONENT;
408
--
409
COMPONENT lu2p3ay
410
    GENERIC (gsr : String := "ENABLED");
411
PORT(
412
        d0, d1 : IN std_logic := 'X';
413
        ci: IN std_logic := 'X';
414
        sp: IN std_logic := 'X';
415
        ck: IN std_logic := 'X';
416
        sd: IN std_logic := 'X';
417
        co: OUT std_logic := 'X';
418
        q0, q1 : OUT std_logic := 'X'
419
  );
420
END COMPONENT;
421
--
422
COMPONENT lu2p3bx
423
    GENERIC (gsr : String := "ENABLED");
424
PORT(
425
        d0, d1 : IN std_logic := 'X';
426
        ci: IN std_logic := 'X';
427
        sp: IN std_logic := 'X';
428
        ck: IN std_logic := 'X';
429
        sd: IN std_logic := 'X';
430
        pd: IN std_logic := 'X';
431
        co: OUT std_logic := 'X';
432
        q0, q1 : OUT std_logic := 'X'
433
  );
434
END COMPONENT;
435
--
436
COMPONENT lu2p3dx
437
    GENERIC (gsr : String := "ENABLED");
438
PORT(
439
        d0, d1 : IN std_logic := 'X';
440
        ci: IN std_logic := 'X';
441
        sp: IN std_logic := 'X';
442
        ck: IN std_logic := 'X';
443
        sd: IN std_logic := 'X';
444
        cd: IN std_logic := 'X';
445
        co: OUT std_logic := 'X';
446
        q0, q1 : OUT std_logic := 'X'
447
  );
448
END COMPONENT;
449
--
450
COMPONENT lu2p3ix
451
    GENERIC (gsr : String := "ENABLED");
452
PORT(
453
        d0, d1 : IN std_logic := 'X';
454
        ci: IN std_logic := 'X';
455
        sp: IN std_logic := 'X';
456
        ck: IN std_logic := 'X';
457
        sd: IN std_logic := 'X';
458
        cd: IN std_logic := 'X';
459
        co: OUT std_logic := 'X';
460
        q0, q1 : OUT std_logic := 'X'
461
  );
462
END COMPONENT;
463
--
464
COMPONENT lu2p3jx
465
    GENERIC (gsr : String := "ENABLED");
466
PORT(
467
        d0, d1 : IN std_logic := 'X';
468
        ci: IN std_logic := 'X';
469
        sp: IN std_logic := 'X';
470
        ck: IN std_logic := 'X';
471
        sd: IN std_logic := 'X';
472
        pd: IN std_logic := 'X';
473
        co: OUT std_logic := 'X';
474
        q0, q1 : OUT std_logic := 'X'
475
  );
476
END COMPONENT;
477
--
478
COMPONENT ld4p3ax
479
    GENERIC (gsr : String := "ENABLED");
480
PORT(
481
        d0, d1, d2, d3 : IN std_logic := 'X';
482
        ci: IN std_logic := 'X';
483
        sp: IN std_logic := 'X';
484
        ck: IN std_logic := 'X';
485
        sd: IN std_logic := 'X';
486
        co: OUT std_logic := 'X';
487
        q0, q1, q2, q3 : OUT std_logic := 'X'
488
  );
489
END COMPONENT;
490
--
491
COMPONENT ld4p3ay
492
    GENERIC (gsr : String := "ENABLED");
493
PORT(
494
        d0, d1, d2, d3 : IN std_logic := 'X';
495
        ci: IN std_logic := 'X';
496
        sp: IN std_logic := 'X';
497
        ck: IN std_logic := 'X';
498
        sd: IN std_logic := 'X';
499
        co: OUT std_logic := 'X';
500
        q0, q1, q2, q3 : OUT std_logic := 'X'
501
  );
502
END COMPONENT;
503
--
504
COMPONENT ld4p3bx
505
    GENERIC (gsr : String := "ENABLED");
506
PORT(
507
        d0, d1, d2, d3 : IN std_logic := 'X';
508
        ci: IN std_logic := 'X';
509
        sp: IN std_logic := 'X';
510
        ck: IN std_logic := 'X';
511
        sd: IN std_logic := 'X';
512
        pd: IN std_logic := 'X';
513
        co: OUT std_logic := 'X';
514
        q0, q1, q2, q3 : OUT std_logic := 'X'
515
  );
516
END COMPONENT;
517
--
518
COMPONENT ld4p3dx
519
    GENERIC (gsr : String := "ENABLED");
520
PORT(
521
        d0, d1, d2, d3 : IN std_logic := 'X';
522
        ci: IN std_logic := 'X';
523
        sp: IN std_logic := 'X';
524
        ck: IN std_logic := 'X';
525
        sd: IN std_logic := 'X';
526
        cd: IN std_logic := 'X';
527
        co: OUT std_logic := 'X';
528
        q0, q1, q2, q3 : OUT std_logic := 'X'
529
  );
530
END COMPONENT;
531
--
532
COMPONENT ld4p3ix
533
    GENERIC (gsr : String := "ENABLED");
534
PORT(
535
        d0, d1, d2, d3 : IN std_logic := 'X';
536
        ci: IN std_logic := 'X';
537
        sp: IN std_logic := 'X';
538
        ck: IN std_logic := 'X';
539
        sd: IN std_logic := 'X';
540
        cd: IN std_logic := 'X';
541
        co: OUT std_logic := 'X';
542
        q0, q1, q2, q3 : OUT std_logic := 'X'
543
  );
544
END COMPONENT;
545
--
546
COMPONENT ld4p3jx
547
    GENERIC (gsr : String := "ENABLED");
548
PORT(
549
        d0, d1, d2, d3 : IN std_logic := 'X';
550
        ci: IN std_logic := 'X';
551
        sp: IN std_logic := 'X';
552
        ck: IN std_logic := 'X';
553
        sd: IN std_logic := 'X';
554
        pd: IN std_logic := 'X';
555
        co: OUT std_logic := 'X';
556
        q0, q1, q2, q3 : OUT std_logic := 'X'
557
  );
558
END COMPONENT;
559
--
560
COMPONENT lu4p3ax
561
    GENERIC (gsr : String := "ENABLED");
562
PORT(
563
        d0, d1, d2, d3 : IN std_logic := 'X';
564
        ci: IN std_logic := 'X';
565
        sp: IN std_logic := 'X';
566
        ck: IN std_logic := 'X';
567
        sd: IN std_logic := 'X';
568
        co: OUT std_logic := 'X';
569
        q0, q1, q2, q3 : OUT std_logic := 'X'
570
  );
571
END COMPONENT;
572
--
573
COMPONENT lu4p3ay
574
    GENERIC (gsr : String := "ENABLED");
575
PORT(
576
        d0, d1, d2, d3 : IN std_logic := 'X';
577
        ci: IN std_logic := 'X';
578
        sp: IN std_logic := 'X';
579
        ck: IN std_logic := 'X';
580
        sd: IN std_logic := 'X';
581
        co: OUT std_logic := 'X';
582
        q0, q1, q2, q3 : OUT std_logic := 'X'
583
  );
584
END COMPONENT;
585
--
586
COMPONENT lu4p3bx
587
    GENERIC (gsr : String := "ENABLED");
588
PORT(
589
        d0, d1, d2, d3 : IN std_logic := 'X';
590
        ci: IN std_logic := 'X';
591
        sp: IN std_logic := 'X';
592
        ck: IN std_logic := 'X';
593
        sd: IN std_logic := 'X';
594
        pd: IN std_logic := 'X';
595
        co: OUT std_logic := 'X';
596
        q0, q1, q2, q3 : OUT std_logic := 'X'
597
  );
598
END COMPONENT;
599
--
600
COMPONENT lu4p3dx
601
    GENERIC (gsr : String := "ENABLED");
602
PORT(
603
        d0, d1, d2, d3 : IN std_logic := 'X';
604
        ci: IN std_logic := 'X';
605
        sp: IN std_logic := 'X';
606
        ck: IN std_logic := 'X';
607
        sd: IN std_logic := 'X';
608
        cd: IN std_logic := 'X';
609
        co: OUT std_logic := 'X';
610
        q0, q1, q2, q3 : OUT std_logic := 'X'
611
  );
612
END COMPONENT;
613
--
614
COMPONENT lu4p3ix
615
    GENERIC (gsr : String := "ENABLED");
616
PORT(
617
        d0, d1, d2, d3 : IN std_logic := 'X';
618
        ci: IN std_logic := 'X';
619
        sp: IN std_logic := 'X';
620
        ck: IN std_logic := 'X';
621
        sd: IN std_logic := 'X';
622
        cd: IN std_logic := 'X';
623
        co: OUT std_logic := 'X';
624
        q0, q1, q2, q3 : OUT std_logic := 'X'
625
  );
626
END COMPONENT;
627
--
628
COMPONENT lu4p3jx
629
    GENERIC (gsr : String := "ENABLED");
630
PORT(
631
        d0, d1, d2, d3 : IN std_logic := 'X';
632
        ci: IN std_logic := 'X';
633
        sp: IN std_logic := 'X';
634
        ck: IN std_logic := 'X';
635
        sd: IN std_logic := 'X';
636
        pd: IN std_logic := 'X';
637
        co: OUT std_logic := 'X';
638
        q0, q1, q2, q3 : OUT std_logic := 'X'
639
  );
640
END COMPONENT;
641
--
642
COMPONENT fadd2
643
PORT(
644
        a0, a1 : IN std_logic := 'X';
645
        b0, b1 : IN std_logic := 'X';
646
        ci: IN std_logic := 'X';
647
        cout0, cout1 : OUT std_logic := 'X';
648
        s0, s1 : OUT std_logic := 'X'
649
  );
650
END COMPONENT;
651
--
652
COMPONENT fsub2
653
PORT(
654
        a0, a1 : IN std_logic := 'X';
655
        b0, b1 : IN std_logic := 'X';
656
        bi: IN std_logic := 'X';
657
        bout0, bout1 : OUT std_logic := 'X';
658
        s0, s1 : OUT std_logic := 'X'
659
  );
660
END COMPONENT;
661
--
662
COMPONENT fadsu2
663
PORT(
664
        a0, a1 : IN std_logic := 'X';
665
        b0, b1 : IN std_logic := 'X';
666
        bci: IN std_logic := 'X';
667
        con: IN std_logic := 'X';
668
        bco: OUT std_logic := 'X';
669
        s0, s1 : OUT std_logic := 'X'
670
  );
671
END COMPONENT;
672
--
673
COMPONENT fd1s1a
674
    GENERIC (gsr : String := "ENABLED");
675
PORT(
676
        d : IN std_logic := 'X';
677
        ck: IN std_logic := 'X';
678
        q : OUT std_logic := 'X'
679
  );
680
END COMPONENT;
681
-- 
682
COMPONENT fd1s1ay
683
    GENERIC (gsr : String := "ENABLED");
684
PORT(
685
        d : IN std_logic := 'X';
686
        ck: IN std_logic := 'X';
687
        q : OUT std_logic := 'X'
688
  );
689
END COMPONENT;
690
-- 
691
COMPONENT fd1s1b
692
    GENERIC (gsr : String := "ENABLED");
693
PORT(
694
        d : IN std_logic := 'X';
695
        ck: IN std_logic := 'X';
696
        pd: IN std_logic := 'X';
697
        q : OUT std_logic := 'X'
698
  );
699
END COMPONENT;
700
-- 
701
COMPONENT fd1s1d
702
    GENERIC (gsr : String := "ENABLED");
703
PORT(
704
        d : IN std_logic := 'X';
705
        ck: IN std_logic := 'X';
706
        cd: IN std_logic := 'X';
707
        q : OUT std_logic := 'X'
708
  );
709
END COMPONENT;
710
-- 
711
COMPONENT fd1s1i
712
    GENERIC (gsr : String := "ENABLED");
713
PORT(
714
        d : IN std_logic := 'X';
715
        ck: IN std_logic := 'X';
716
        cd: IN std_logic := 'X';
717
        q : OUT std_logic := 'X'
718
  );
719
END COMPONENT;
720
-- 
721
COMPONENT fd1s1j
722
    GENERIC (gsr : String := "ENABLED");
723
PORT(
724
        d : IN std_logic := 'X';
725
        ck: IN std_logic := 'X';
726
        pd: IN std_logic := 'X';
727
        q : OUT std_logic := 'X'
728
  );
729
END COMPONENT;
730
-- 
731
COMPONENT fd1p3ax
732
    GENERIC (gsr : String := "ENABLED");
733
PORT(
734
        d : IN std_logic := 'X';
735
        sp: IN std_logic := 'X';
736
        ck: IN std_logic := 'X';
737
        q : OUT std_logic := 'X'
738
  );
739
END COMPONENT;
740
-- 
741
COMPONENT fd1p3ay
742
    GENERIC (gsr : String := "ENABLED");
743
PORT(
744
        d : IN std_logic := 'X';
745
        sp: IN std_logic := 'X';
746
        ck: IN std_logic := 'X';
747
        q : OUT std_logic := 'X'
748
  );
749
END COMPONENT;
750
-- 
751
COMPONENT fd1p3bx
752
    GENERIC (gsr : String := "ENABLED");
753
PORT(
754
        d : IN std_logic := 'X';
755
        sp: IN std_logic := 'X';
756
        ck: IN std_logic := 'X';
757
        pd: IN std_logic := 'X';
758
        q : OUT std_logic := 'X'
759
  );
760
END COMPONENT;
761
-- 
762
COMPONENT fd1p3dx
763
    GENERIC (gsr : String := "ENABLED");
764
PORT(
765
        d : IN std_logic := 'X';
766
        sp: IN std_logic := 'X';
767
        ck: IN std_logic := 'X';
768
        cd: IN std_logic := 'X';
769
        q : OUT std_logic := 'X'
770
  );
771
END COMPONENT;
772
-- 
773
COMPONENT fd1p3ix
774
    GENERIC (gsr : String := "ENABLED");
775
PORT(
776
        d : IN std_logic := 'X';
777
        sp: IN std_logic := 'X';
778
        ck: IN std_logic := 'X';
779
        cd: IN std_logic := 'X';
780
        q : OUT std_logic := 'X'
781
  );
782
END COMPONENT;
783
-- 
784
COMPONENT fd1p3jx
785
    GENERIC (gsr : String := "ENABLED");
786
PORT(
787
        d : IN std_logic := 'X';
788
        sp: IN std_logic := 'X';
789
        ck: IN std_logic := 'X';
790
        pd: IN std_logic := 'X';
791
        q : OUT std_logic := 'X'
792
  );
793
END COMPONENT;
794
-- 
795
COMPONENT fd1s3ax
796
    GENERIC (gsr : String := "ENABLED");
797
PORT(
798
        d : IN std_logic := 'X';
799
        ck: IN std_logic := 'X';
800
        q : OUT std_logic := 'X'
801
  );
802
END COMPONENT;
803
-- 
804
COMPONENT fd1s3ay
805
    GENERIC (gsr : String := "ENABLED");
806
PORT(
807
        d : IN std_logic := 'X';
808
        ck: IN std_logic := 'X';
809
        q : OUT std_logic := 'X'
810
  );
811
END COMPONENT;
812
-- 
813
COMPONENT fd1s3bx
814
    GENERIC (gsr : String := "ENABLED");
815
PORT(
816
        d : IN std_logic := 'X';
817
        ck: IN std_logic := 'X';
818
        pd: IN std_logic := 'X';
819
        q : OUT std_logic := 'X'
820
  );
821
END COMPONENT;
822
-- 
823
COMPONENT fd1s3dx
824
    GENERIC (gsr : String := "ENABLED");
825
PORT(
826
        d: IN std_logic := 'X';
827
        ck: IN std_logic := 'X';
828
        cd: IN std_logic := 'X';
829
        q : OUT std_logic := 'X'
830
  );
831
END COMPONENT;
832
-- 
833
COMPONENT fd1s3ix
834
    GENERIC (gsr : String := "ENABLED");
835
PORT(
836
        d : IN std_logic := 'X';
837
        ck: IN std_logic := 'X';
838
        cd: IN std_logic := 'X';
839
        q : OUT std_logic := 'X'
840
  );
841
END COMPONENT;
842
-- 
843
COMPONENT fd1s3jx
844
    GENERIC (gsr : String := "ENABLED");
845
PORT(
846
        d : IN std_logic := 'X';
847
        ck: IN std_logic := 'X';
848
        pd: IN std_logic := 'X';
849
        q : OUT std_logic := 'X'
850
  );
851
END COMPONENT;
852
-- 
853
COMPONENT fl1p3az
854
    GENERIC (gsr : String := "ENABLED");
855
PORT(
856
        d0: IN std_logic := 'X';
857
        d1: IN std_logic := 'X';
858
        sp: IN std_logic := 'X';
859
        ck: IN std_logic := 'X';
860
        sd: IN std_logic := 'X';
861
        q : OUT std_logic := 'X'
862
  );
863
END COMPONENT;
864
-- 
865
COMPONENT fl1p3ay
866
    GENERIC (gsr : String := "ENABLED");
867
PORT(
868
        d0: IN std_logic := 'X';
869
        d1: IN std_logic := 'X';
870
        sp: IN std_logic := 'X';
871
        ck: IN std_logic := 'X';
872
        sd: IN std_logic := 'X';
873
        q : OUT std_logic := 'X'
874
  );
875
END COMPONENT;
876
-- 
877
COMPONENT fl1p3bx
878
    GENERIC (gsr : String := "ENABLED");
879
PORT(
880
        d0: IN std_logic := 'X';
881
        d1: IN std_logic := 'X';
882
        sp: IN std_logic := 'X';
883
        ck: IN std_logic := 'X';
884
        sd: IN std_logic := 'X';
885
        pd: IN std_logic := 'X';
886
        q : OUT std_logic := 'X'
887
  );
888
END COMPONENT;
889
-- 
890
COMPONENT fl1p3dx
891
    GENERIC (gsr : String := "ENABLED");
892
PORT(
893
        d0: IN std_logic := 'X';
894
        d1: IN std_logic := 'X';
895
        sp: IN std_logic := 'X';
896
        ck: IN std_logic := 'X';
897
        sd: IN std_logic := 'X';
898
        cd: IN std_logic := 'X';
899
        q : OUT std_logic := 'X'
900
  );
901
END COMPONENT;
902
-- 
903
COMPONENT fl1p3iy
904
    GENERIC (gsr : String := "ENABLED");
905
PORT(
906
        d0: IN std_logic := 'X';
907
        d1: IN std_logic := 'X';
908
        sp: IN std_logic := 'X';
909
        ck: IN std_logic := 'X';
910
        sd: IN std_logic := 'X';
911
        cd: IN std_logic := 'X';
912
        q : OUT std_logic := 'X'
913
  );
914
END COMPONENT;
915
-- 
916
COMPONENT fl1p3jy
917
    GENERIC (gsr : String := "ENABLED");
918
PORT(
919
        d0: IN std_logic := 'X';
920
        d1: IN std_logic := 'X';
921
        sp: IN std_logic := 'X';
922
        ck: IN std_logic := 'X';
923
        sd: IN std_logic := 'X';
924
        pd: IN std_logic := 'X';
925
        q : OUT std_logic := 'X'
926
  );
927
END COMPONENT;
928
-- 
929
COMPONENT fl1s1a
930
    GENERIC (gsr : String := "ENABLED");
931
PORT(
932
        d0: IN std_logic := 'X';
933
        d1: IN std_logic := 'X';
934
        ck: IN std_logic := 'X';
935
        sd: IN std_logic := 'X';
936
        q : OUT std_logic := 'X'
937
  );
938
END COMPONENT;
939
-- 
940
COMPONENT fl1s1ay
941
    GENERIC (gsr : String := "ENABLED");
942
PORT(
943
        d0: IN std_logic := 'X';
944
        d1: IN std_logic := 'X';
945
        ck: IN std_logic := 'X';
946
        sd: IN std_logic := 'X';
947
        q : OUT std_logic := 'X'
948
  );
949
END COMPONENT;
950
-- 
951
COMPONENT fl1s1b
952
    GENERIC (gsr : String := "ENABLED");
953
PORT(
954
        d0: IN std_logic := 'X';
955
        d1: IN std_logic := 'X';
956
        ck: IN std_logic := 'X';
957
        sd: IN std_logic := 'X';
958
        pd: IN std_logic := 'X';
959
        q : OUT std_logic := 'X'
960
  );
961
END COMPONENT;
962
-- 
963
COMPONENT fl1s1d
964
    GENERIC (gsr : String := "ENABLED");
965
PORT(
966
        d0: IN std_logic := 'X';
967
        d1: IN std_logic := 'X';
968
        ck: IN std_logic := 'X';
969
        sd: IN std_logic := 'X';
970
        cd: IN std_logic := 'X';
971
        q : OUT std_logic := 'X'
972
  );
973
END COMPONENT;
974
-- 
975
COMPONENT fl1s1i
976
    GENERIC (gsr : String := "ENABLED");
977
PORT(
978
        d0: IN std_logic := 'X';
979
        d1: IN std_logic := 'X';
980
        ck: IN std_logic := 'X';
981
        sd: IN std_logic := 'X';
982
        cd: IN std_logic := 'X';
983
        q : OUT std_logic := 'X'
984
  );
985
END COMPONENT;
986
-- 
987
COMPONENT fl1s1j
988
    GENERIC (gsr : String := "ENABLED");
989
PORT(
990
        d0: IN std_logic := 'X';
991
        d1: IN std_logic := 'X';
992
        ck: IN std_logic := 'X';
993
        sd: IN std_logic := 'X';
994
        pd: IN std_logic := 'X';
995
        q : OUT std_logic := 'X'
996
  );
997
END COMPONENT;
998
-- 
999
COMPONENT fl1s3ax
1000
    GENERIC (gsr : String := "ENABLED");
1001
PORT(
1002
        d0: IN std_logic := 'X';
1003
        d1: IN std_logic := 'X';
1004
        ck: IN std_logic := 'X';
1005
        sd: IN std_logic := 'X';
1006
        q : OUT std_logic := 'X'
1007
  );
1008
END COMPONENT;
1009
-- 
1010
COMPONENT fl1s3ay
1011
    GENERIC (gsr : String := "ENABLED");
1012
PORT(
1013
        d0: IN std_logic := 'X';
1014
        d1: IN std_logic := 'X';
1015
        ck: IN std_logic := 'X';
1016
        sd: IN std_logic := 'X';
1017
        q : OUT std_logic := 'X'
1018
  );
1019
END COMPONENT;
1020
-- 
1021
COMPONENT gsr
1022
PORT(
1023
      gsr: IN std_logic := 'X'
1024
  );
1025
END COMPONENT;
1026
--
1027
COMPONENT inv
1028
PORT(
1029
        a: IN std_logic := 'X';
1030
        z: OUT std_logic := 'X'
1031
  );
1032
END COMPONENT;
1033
-- 
1034
COMPONENT ifs1p3bx
1035
    GENERIC (gsr : String := "ENABLED");
1036
PORT(
1037
        d   : IN std_logic := 'X';
1038
        sp  : IN std_logic := 'X';
1039
        sclk: IN std_logic := 'X';
1040
        pd  : IN std_logic := 'X';
1041
        q   : OUT std_logic := 'X'
1042
  );
1043
END COMPONENT;
1044
-- 
1045
COMPONENT ifs1p3dx
1046
    GENERIC (gsr : String := "ENABLED");
1047
PORT(
1048
        d   : IN std_logic := 'X';
1049
        sp  : IN std_logic := 'X';
1050
        sclk: IN std_logic := 'X';
1051
        cd  : IN std_logic := 'X';
1052
        q   : OUT std_logic := 'X'
1053
  );
1054
END COMPONENT;
1055
-- 
1056
COMPONENT ifs1p3ix
1057
    GENERIC (gsr : String := "ENABLED");
1058
PORT(
1059
        d   : IN std_logic := 'X';
1060
        sp  : IN std_logic := 'X';
1061
        sclk: IN std_logic := 'X';
1062
        cd  : IN std_logic := 'X';
1063
        q   : OUT std_logic := 'X'
1064
  );
1065
END COMPONENT;
1066
-- 
1067
COMPONENT ifs1p3jx
1068
    GENERIC (gsr : String := "ENABLED");
1069
PORT(
1070
        d   : IN std_logic := 'X';
1071
        sp  : IN std_logic := 'X';
1072
        sclk: IN std_logic := 'X';
1073
        pd  : IN std_logic := 'X';
1074
        q   : OUT std_logic := 'X'
1075
  );
1076
END COMPONENT;
1077
-- 
1078
COMPONENT ifs1s1b
1079
    GENERIC (gsr : String := "ENABLED");
1080
PORT(
1081
        d   : IN std_logic := 'X';
1082
        sclk: IN std_logic := 'X';
1083
        pd  : IN std_logic := 'X';
1084
        q   : OUT std_logic := 'X'
1085
  );
1086
END COMPONENT;
1087
-- 
1088
COMPONENT ifs1s1d
1089
    GENERIC (gsr : String := "ENABLED");
1090
PORT(
1091
        d   : IN std_logic := 'X';
1092
        sclk: IN std_logic := 'X';
1093
        cd  : IN std_logic := 'X';
1094
        q   : OUT std_logic := 'X'
1095
  );
1096
END COMPONENT;
1097
-- 
1098
COMPONENT ifs1s1i
1099
    GENERIC (gsr : String := "ENABLED");
1100
PORT(
1101
        d   : IN std_logic := 'X';
1102
        sclk: IN std_logic := 'X';
1103
        cd  : IN std_logic := 'X';
1104
        q   : OUT std_logic := 'X'
1105
  );
1106
END COMPONENT;
1107
-- 
1108
COMPONENT ifs1s1j
1109
    GENERIC (gsr : String := "ENABLED");
1110
PORT(
1111
        d   : IN std_logic := 'X';
1112
        sclk: IN std_logic := 'X';
1113
        pd  : IN std_logic := 'X';
1114
        q   : OUT std_logic := 'X'
1115
  );
1116
END COMPONENT;
1117
-- 
1118
COMPONENT mux21
1119
PORT(
1120
        d0: IN std_logic := 'X';
1121
        d1: IN std_logic := 'X';
1122
        sd: IN std_logic := 'X';
1123
        z : OUT std_logic := 'X'
1124
  );
1125
END COMPONENT;
1126
--
1127
COMPONENT l6mux21
1128
PORT(
1129
        d0: IN std_logic := 'X';
1130
        d1: IN std_logic := 'X';
1131
        sd: IN std_logic := 'X';
1132
        z : OUT std_logic := 'X'
1133
  );
1134
END COMPONENT;
1135
-- 
1136
COMPONENT mux41
1137
PORT(
1138
        d0: IN std_logic := 'X';
1139
        d1: IN std_logic := 'X';
1140
        d2: IN std_logic := 'X';
1141
        d3: IN std_logic := 'X';
1142
        sd1: IN std_logic := 'X';
1143
        sd2: IN std_logic := 'X';
1144
        z : OUT std_logic := 'X'
1145
  );
1146
END COMPONENT;
1147
-- 
1148
COMPONENT mux81
1149
PORT(
1150
        d0: IN std_logic := 'X';
1151
        d1: IN std_logic := 'X';
1152
        d2: IN std_logic := 'X';
1153
        d3: IN std_logic := 'X';
1154
        d4: IN std_logic := 'X';
1155
        d5: IN std_logic := 'X';
1156
        d6: IN std_logic := 'X';
1157
        d7: IN std_logic := 'X';
1158
        sd1: IN std_logic := 'X';
1159
        sd2: IN std_logic := 'X';
1160
        sd3: IN std_logic := 'X';
1161
        z : OUT std_logic := 'X'
1162
  );
1163
END COMPONENT;
1164
-- 
1165
COMPONENT mux161
1166
PORT(
1167
        d0: IN std_logic := 'X';
1168
        d1: IN std_logic := 'X';
1169
        d2: IN std_logic := 'X';
1170
        d3: IN std_logic := 'X';
1171
        d4: IN std_logic := 'X';
1172
        d5: IN std_logic := 'X';
1173
        d6: IN std_logic := 'X';
1174
        d7: IN std_logic := 'X';
1175
        d8: IN std_logic := 'X';
1176
        d9: IN std_logic := 'X';
1177
        d10: IN std_logic := 'X';
1178
        d11: IN std_logic := 'X';
1179
        d12: IN std_logic := 'X';
1180
        d13: IN std_logic := 'X';
1181
        d14: IN std_logic := 'X';
1182
        d15: IN std_logic := 'X';
1183
        sd1: IN std_logic := 'X';
1184
        sd2: IN std_logic := 'X';
1185
        sd3: IN std_logic := 'X';
1186
        sd4: IN std_logic := 'X';
1187
        z : OUT std_logic := 'X'
1188
  );
1189
END COMPONENT;
1190
--
1191
COMPONENT mux321
1192
PORT(
1193
        d0: IN std_logic := 'X';
1194
        d1: IN std_logic := 'X';
1195
        d2: IN std_logic := 'X';
1196
        d3: IN std_logic := 'X';
1197
        d4: IN std_logic := 'X';
1198
        d5: IN std_logic := 'X';
1199
        d6: IN std_logic := 'X';
1200
        d7: IN std_logic := 'X';
1201
        d8: IN std_logic := 'X';
1202
        d9: IN std_logic := 'X';
1203
        d10: IN std_logic := 'X';
1204
        d11: IN std_logic := 'X';
1205
        d12: IN std_logic := 'X';
1206
        d13: IN std_logic := 'X';
1207
        d14: IN std_logic := 'X';
1208
        d15: IN std_logic := 'X';
1209
        d16: IN std_logic := 'X';
1210
        d17: IN std_logic := 'X';
1211
        d18: IN std_logic := 'X';
1212
        d19: IN std_logic := 'X';
1213
        d20: IN std_logic := 'X';
1214
        d21: IN std_logic := 'X';
1215
        d22: IN std_logic := 'X';
1216
        d23: IN std_logic := 'X';
1217
        d24: IN std_logic := 'X';
1218
        d25: IN std_logic := 'X';
1219
        d26: IN std_logic := 'X';
1220
        d27: IN std_logic := 'X';
1221
        d28: IN std_logic := 'X';
1222
        d29: IN std_logic := 'X';
1223
        d30: IN std_logic := 'X';
1224
        d31: IN std_logic := 'X';
1225
        sd1: IN std_logic := 'X';
1226
        sd2: IN std_logic := 'X';
1227
        sd3: IN std_logic := 'X';
1228
        sd4: IN std_logic := 'X';
1229
        sd5: IN std_logic := 'X';
1230
        z : OUT std_logic := 'X'
1231
  );
1232
END COMPONENT;
1233
--
1234
COMPONENT nd2
1235
PORT(
1236
        a: IN std_logic := 'X';
1237
        b: IN std_logic := 'X';
1238
        z: OUT std_logic := 'X'
1239
  );
1240
END COMPONENT;
1241
-- 
1242
COMPONENT nd3
1243
PORT(
1244
        a: IN std_logic := 'X';
1245
        b: IN std_logic := 'X';
1246
        c: IN std_logic := 'X';
1247
        z: OUT std_logic := 'X'
1248
  );
1249
END COMPONENT;
1250
-- 
1251
COMPONENT nd4
1252
PORT(
1253
        a: IN std_logic := 'X';
1254
        b: IN std_logic := 'X';
1255
        c: IN std_logic := 'X';
1256
        d: IN std_logic := 'X';
1257
        z: OUT std_logic := 'X'
1258
  );
1259
END COMPONENT;
1260
-- 
1261
COMPONENT nd5
1262
PORT(
1263
        a: IN std_logic := 'X';
1264
        b: IN std_logic := 'X';
1265
        c: IN std_logic := 'X';
1266
        d: IN std_logic := 'X';
1267
        e: IN std_logic := 'X';
1268
        z: OUT std_logic := 'X'
1269
  );
1270
END COMPONENT;
1271
-- 
1272
COMPONENT nr2
1273
PORT(
1274
        a: IN std_logic := 'X';
1275
        b: IN std_logic := 'X';
1276
        z: OUT std_logic := 'X'
1277
  );
1278
END COMPONENT;
1279
-- 
1280
COMPONENT nr3
1281
PORT(
1282
        a: IN std_logic := 'X';
1283
        b: IN std_logic := 'X';
1284
        c: IN std_logic := 'X';
1285
        z: OUT std_logic := 'X'
1286
  );
1287
END COMPONENT;
1288
-- 
1289
COMPONENT nr4
1290
PORT(
1291
        a: IN std_logic := 'X';
1292
        b: IN std_logic := 'X';
1293
        c: IN std_logic := 'X';
1294
        d: IN std_logic := 'X';
1295
        z: OUT std_logic := 'X'
1296
  );
1297
END COMPONENT;
1298
-- 
1299
COMPONENT nr5
1300
PORT(
1301
        a: IN std_logic := 'X';
1302
        b: IN std_logic := 'X';
1303
        c: IN std_logic := 'X';
1304
        d: IN std_logic := 'X';
1305
        e: IN std_logic := 'X';
1306
        z: OUT std_logic := 'X'
1307
  );
1308
END COMPONENT;
1309
-- 
1310
COMPONENT ofe1p3bx
1311
    GENERIC (gsr : String := "ENABLED");
1312
PORT(
1313
        d : IN std_logic := 'X';
1314
        sp: IN std_logic := 'X';
1315
        eclk: IN std_logic := 'X';
1316
        pd: IN std_logic := 'X';
1317
        q : OUT std_logic := 'X'
1318
  );
1319
END COMPONENT;
1320
--
1321
COMPONENT ofe1p3dx
1322
    GENERIC (gsr : String := "ENABLED");
1323
PORT(
1324
        d : IN std_logic := 'X';
1325
        sp: IN std_logic := 'X';
1326
        eclk: IN std_logic := 'X';
1327
        cd: IN std_logic := 'X';
1328
        q : OUT std_logic := 'X'
1329
  );
1330
END COMPONENT;
1331
--
1332
COMPONENT ofe1p3ix
1333
    GENERIC (gsr : String := "ENABLED");
1334
PORT(
1335
        d : IN std_logic := 'X';
1336
        sp: IN std_logic := 'X';
1337
        eclk: IN std_logic := 'X';
1338
        cd: IN std_logic := 'X';
1339
        q : OUT std_logic := 'X'
1340
  );
1341
END COMPONENT;
1342
--
1343
COMPONENT ofe1p3jx
1344
    GENERIC (gsr : String := "ENABLED");
1345
PORT(
1346
        d : IN std_logic := 'X';
1347
        sp: IN std_logic := 'X';
1348
        eclk: IN std_logic := 'X';
1349
        pd: IN std_logic := 'X';
1350
        q : OUT std_logic := 'X'
1351
  );
1352
END COMPONENT;
1353
--
1354
COMPONENT ofs1p3bx
1355
    GENERIC (gsr : String := "ENABLED");
1356
PORT(
1357
        d : IN std_logic := 'X';
1358
        sp: IN std_logic := 'X';
1359
        sclk: IN std_logic := 'X';
1360
        pd: IN std_logic := 'X';
1361
        q : OUT std_logic := 'X'
1362
  );
1363
END COMPONENT;
1364
--
1365
COMPONENT ofs1p3dx
1366
    GENERIC (gsr : String := "ENABLED");
1367
PORT(
1368
        d : IN std_logic := 'X';
1369
        sp: IN std_logic := 'X';
1370
        sclk: IN std_logic := 'X';
1371
        cd: IN std_logic := 'X';
1372
        q : OUT std_logic := 'X'
1373
  );
1374
END COMPONENT;
1375
--
1376
COMPONENT ofs1p3ix
1377
    GENERIC (gsr : String := "ENABLED");
1378
PORT(
1379
        d : IN std_logic := 'X';
1380
        sp: IN std_logic := 'X';
1381
        sclk: IN std_logic := 'X';
1382
        cd: IN std_logic := 'X';
1383
        q : OUT std_logic := 'X'
1384
  );
1385
END COMPONENT;
1386
--
1387
COMPONENT ofs1p3jx
1388
    GENERIC (gsr : String := "ENABLED");
1389
PORT(
1390
        d : IN std_logic := 'X';
1391
        sp: IN std_logic := 'X';
1392
        sclk: IN std_logic := 'X';
1393
        pd: IN std_logic := 'X';
1394
        q : OUT std_logic := 'X'
1395
  );
1396
END COMPONENT;
1397
--
1398
COMPONENT or2
1399
PORT(
1400
        a: IN std_logic := 'X';
1401
        b: IN std_logic := 'X';
1402
        z: OUT std_logic := 'X'
1403
  );
1404
END COMPONENT;
1405
-- 
1406
COMPONENT or3
1407
PORT(
1408
        a: IN std_logic := 'X';
1409
        b: IN std_logic := 'X';
1410
        c: IN std_logic := 'X';
1411
        z: OUT std_logic := 'X'
1412
  );
1413
END COMPONENT;
1414
-- 
1415
COMPONENT or4
1416
PORT(
1417
        a: IN std_logic := 'X';
1418
        b: IN std_logic := 'X';
1419
        c: IN std_logic := 'X';
1420
        d: IN std_logic := 'X';
1421
        z: OUT std_logic := 'X'
1422
  );
1423
END COMPONENT;
1424
-- 
1425
COMPONENT or5
1426
PORT(
1427
        a: IN std_logic := 'X';
1428
        b: IN std_logic := 'X';
1429
        c: IN std_logic := 'X';
1430
        d: IN std_logic := 'X';
1431
        e: IN std_logic := 'X';
1432
        z: OUT std_logic := 'X'
1433
  );
1434
END COMPONENT;
1435
-- 
1436
COMPONENT pfumx
1437
PORT(
1438
        alut: IN std_logic := 'X';
1439
        blut: IN std_logic := 'X';
1440
        c0  : IN std_logic := 'X';
1441
        z   : OUT std_logic := 'X'
1442
  );
1443
END COMPONENT;
1444
--
1445
COMPONENT pur
1446
PORT(
1447
      pur: IN std_logic := 'X'
1448
  );
1449
END COMPONENT;
1450
--
1451
COMPONENT rom32x1
1452
GENERIC(
1453
        initval : string := "0x00000000"
1454
  );
1455
PORT(
1456
        ad0, ad1, ad2, ad3, ad4: IN std_logic := 'X';
1457
        do0: OUT std_logic := 'X'
1458
  );
1459
END COMPONENT;
1460
-- 
1461
COMPONENT rom16x1
1462
GENERIC(
1463
        initval : string := "0x0000"
1464
  );
1465
PORT(
1466
        ad0, ad1, ad2, ad3: IN std_logic := 'X';
1467
        do0: OUT std_logic := 'X'
1468
  );
1469
END COMPONENT;
1470
-- 
1471
COMPONENT rom64x1
1472
GENERIC(
1473
        initval : string := "0x0000000000000000"
1474
  );
1475
PORT(
1476
        ad0, ad1, ad2, ad3, ad4, ad5 : IN std_logic := 'X';
1477
        do0: OUT std_logic := 'X'
1478
  );
1479
END COMPONENT;
1480
--
1481
COMPONENT rom128x1
1482
GENERIC(
1483
        initval : string := "0x00000000000000000000000000000000"
1484
  );
1485
PORT(
1486
        ad0, ad1, ad2, ad3, ad4, ad5, ad6 : IN std_logic := 'X';
1487
        do0: OUT std_logic := 'X'
1488
  );
1489
END COMPONENT;
1490
--
1491
COMPONENT rom256x1
1492
GENERIC(
1493
        initval : string := "0x0000000000000000000000000000000000000000000000000000000000000000"
1494
  );
1495
PORT(
1496
        ad0, ad1, ad2, ad3, ad4, ad5, ad6, ad7 : IN std_logic := 'X';
1497
        do0: OUT std_logic := 'X'
1498
  );
1499
END COMPONENT;
1500
--
1501
COMPONENT strtup
1502
PORT(
1503
        uclk : IN std_logic := 'X'
1504
  );
1505
END COMPONENT;
1506
-- 
1507
COMPONENT tsall
1508
PORT(
1509
       tsall: IN std_logic := 'X'
1510
  );
1511
END COMPONENT;
1512
-- 
1513
COMPONENT vhi
1514
PORT(
1515
         z: OUT std_logic := 'X'
1516
  );
1517
END COMPONENT;
1518
-- 
1519
COMPONENT vlo
1520
PORT(
1521
         z: OUT std_logic := 'X'
1522
  );
1523
END COMPONENT;
1524
-- 
1525
COMPONENT xor2
1526
PORT(
1527
        a: IN std_logic := 'X';
1528
        b: IN std_logic := 'X';
1529
        z: OUT std_logic := 'X'
1530
  );
1531
END COMPONENT;
1532
-- 
1533
COMPONENT xor3
1534
PORT(
1535
        a: IN std_logic := 'X';
1536
        b: IN std_logic := 'X';
1537
        c: IN std_logic := 'X';
1538
        z: OUT std_logic := 'X'
1539
  );
1540
END COMPONENT;
1541
-- 
1542
COMPONENT xor4
1543
PORT(
1544
        a: IN std_logic := 'X';
1545
        b: IN std_logic := 'X';
1546
        c: IN std_logic := 'X';
1547
        d: IN std_logic := 'X';
1548
        z: OUT std_logic := 'X'
1549
  );
1550
END COMPONENT;
1551
-- 
1552
COMPONENT xor5
1553
PORT(
1554
        a: IN std_logic := 'X';
1555
        b: IN std_logic := 'X';
1556
        c: IN std_logic := 'X';
1557
        d: IN std_logic := 'X';
1558
        e: IN std_logic := 'X';
1559
        z: OUT std_logic := 'X'
1560
  );
1561
END COMPONENT;
1562
-- 
1563
COMPONENT xor11
1564
PORT(
1565
        a, b, c, d, e, f, g, h, i, j, k: IN std_logic := 'X';
1566
        z: OUT std_logic := 'X'
1567
  );
1568
END COMPONENT;
1569
-- 
1570
COMPONENT xor21
1571
PORT(
1572
        a, b, c, d, e, f, g, h, i, j, k: IN std_logic := 'X';
1573
        l, m, n, o, p, q, r, s, t, u: IN std_logic := 'X';
1574
        z: OUT std_logic := 'X'
1575
  );
1576
END COMPONENT;
1577
-- 
1578
COMPONENT xnor2
1579
PORT(
1580
        a: IN std_logic := 'X';
1581
        b: IN std_logic := 'X';
1582
        z: OUT std_logic := 'X'
1583
  );
1584
END COMPONENT;
1585
-- 
1586
COMPONENT xnor3
1587
PORT(
1588
        a: IN std_logic := 'X';
1589
        b: IN std_logic := 'X';
1590
        c: IN std_logic := 'X';
1591
        z: OUT std_logic := 'X'
1592
  );
1593
END COMPONENT;
1594
-- 
1595
COMPONENT xnor4
1596
PORT(
1597
        a: IN std_logic := 'X';
1598
        b: IN std_logic := 'X';
1599
        c: IN std_logic := 'X';
1600
        d: IN std_logic := 'X';
1601
        z: OUT std_logic := 'X'
1602
  );
1603
END COMPONENT;
1604
-- 
1605
COMPONENT xnor5
1606
PORT(
1607
        a: IN std_logic := 'X';
1608
        b: IN std_logic := 'X';
1609
        c: IN std_logic := 'X';
1610
        d: IN std_logic := 'X';
1611
        e: IN std_logic := 'X';
1612
        z: OUT std_logic := 'X'
1613
  );
1614
END COMPONENT;
1615
-- 
1616
COMPONENT bufba
1617
PORT(
1618
        a: IN std_logic := 'X';
1619
        z: OUT std_logic := 'X'
1620
  );
1621
END COMPONENT;
1622
--
1623
COMPONENT dp8ka
1624
GENERIC(
1625
        DATA_WIDTH_A : in Integer := 18;
1626
        DATA_WIDTH_B : in Integer := 18;
1627
        REGMODE_A    : String  := "NOREG";
1628
        REGMODE_B    : String  := "NOREG";
1629
        RESETMODE    : String  := "ASYNC";
1630
        CSDECODE_A   : String  := "000";
1631
        CSDECODE_B   : String  := "000";
1632
        WRITEMODE_A  : String  := "NORMAL";
1633
        WRITEMODE_B  : String  := "NORMAL";
1634
        GSR : String  := "ENABLED";
1635
        initval_00 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1636
        initval_01 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1637
        initval_02 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1638
        initval_03 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1639
        initval_04 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1640
        initval_05 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1641
        initval_06 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1642
        initval_07 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1643
        initval_08 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1644
        initval_09 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1645
        initval_0a : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1646
        initval_0b : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1647
        initval_0c : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1648
        initval_0d : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1649
        initval_0e : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1650
        initval_0f : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1651
        initval_10 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1652
        initval_11 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1653
        initval_12 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1654
        initval_13 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1655
        initval_14 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1656
        initval_15 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1657
        initval_16 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1658
        initval_17 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1659
        initval_18 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1660
        initval_19 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1661
        initval_1a : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1662
        initval_1b : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1663
        initval_1c : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1664
        initval_1d : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1665
        initval_1e : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1666
        initval_1f : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"
1667
  );
1668
PORT(
1669
        dia0, dia1, dia2, dia3, dia4, dia5, dia6, dia7, dia8            : in std_logic := 'X';
1670
        dia9, dia10, dia11, dia12, dia13, dia14, dia15, dia16, dia17    : in std_logic := 'X';
1671
        ada0, ada1, ada2, ada3, ada4, ada5, ada6, ada7, ada8            : in std_logic := 'X';
1672
        ada9, ada10, ada11, ada12                                       : in std_logic := 'X';
1673
        cea, clka, wea, csa0, csa1, csa2, rsta                         : in std_logic := 'X';
1674
        dib0, dib1, dib2, dib3, dib4, dib5, dib6, dib7, dib8            : in std_logic := 'X';
1675
        dib9, dib10, dib11, dib12, dib13, dib14, dib15, dib16, dib17    : in std_logic := 'X';
1676
        adb0, adb1, adb2, adb3, adb4, adb5, adb6, adb7, adb8            : in std_logic := 'X';
1677
        adb9, adb10, adb11, adb12                                       : in std_logic := 'X';
1678
        ceb, clkb, web, csb0, csb1, csb2, rstb                         : in std_logic := 'X';
1679
 
1680
        doa0, doa1, doa2, doa3, doa4, doa5, doa6, doa7, doa8            : out std_logic := 'X';
1681
        doa9, doa10, doa11, doa12, doa13, doa14, doa15, doa16, doa17    : out std_logic := 'X';
1682
        dob0, dob1, dob2, dob3, dob4, dob5, dob6, dob7, dob8            : out std_logic := 'X';
1683
        dob9, dob10, dob11, dob12, dob13, dob14, dob15, dob16, dob17    : out std_logic := 'X'
1684
  );
1685
END COMPONENT;
1686
--
1687
COMPONENT pdp8ka
1688
GENERIC(
1689
        DATA_WIDTH_W : in Integer := 18;
1690
        DATA_WIDTH_R : in Integer := 18;
1691
        REGMODE      : String  := "NOREG";
1692
        RESETMODE    : String  := "ASYNC";
1693
        CSDECODE_W   : String  := "000";
1694
        CSDECODE_R   : String  := "000";
1695
        GSR : String  := "ENABLED";
1696
        initval_00 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1697
        initval_01 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1698
        initval_02 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1699
        initval_03 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1700
        initval_04 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1701
        initval_05 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1702
        initval_06 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1703
        initval_07 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1704
        initval_08 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1705
        initval_09 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1706
        initval_0a : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1707
        initval_0b : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1708
        initval_0c : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1709
        initval_0d : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1710
        initval_0e : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1711
        initval_0f : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1712
        initval_10 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1713
        initval_11 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1714
        initval_12 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1715
        initval_13 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1716
        initval_14 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1717
        initval_15 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1718
        initval_16 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1719
        initval_17 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1720
        initval_18 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1721
        initval_19 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1722
        initval_1a : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1723
        initval_1b : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1724
        initval_1c : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1725
        initval_1d : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1726
        initval_1e : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1727
        initval_1f : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"
1728
  );
1729
PORT(
1730
        di0, di1, di2, di3, di4, di5, di6, di7, di8            : in std_logic := 'X';
1731
        di9, di10, di11, di12, di13, di14, di15, di16, di17    : in std_logic := 'X';
1732
        di18, di19, di20, di21, di22, di23, di24, di25, di26   : in std_logic := 'X';
1733
        di27, di28, di29, di30, di31, di32, di33, di34, di35   : in std_logic := 'X';
1734
        adw0, adw1, adw2, adw3, adw4, adw5, adw6, adw7, adw8   : in std_logic := 'X';
1735
        adw9, adw10, adw11, adw12                              : in std_logic := 'X';
1736
        cew, clkw, we, csw0, csw1, csw2                        : in std_logic := 'X';
1737
        adr0, adr1, adr2, adr3, adr4, adr5, adr6, adr7, adr8   : in std_logic := 'X';
1738
        adr9, adr10, adr11, adr12                              : in std_logic := 'X';
1739
        cer, clkr, csr0, csr1, csr2, rst                       : in std_logic := 'X';
1740
 
1741
        do0, do1, do2, do3, do4, do5, do6, do7, do8            : out std_logic := 'X';
1742
        do9, do10, do11, do12, do13, do14, do15, do16, do17    : out std_logic := 'X';
1743
        do18, do19, do20, do21, do22, do23, do24, do25, do26   : out std_logic := 'X';
1744
        do27, do28, do29, do30, do31, do32, do33, do34, do35   : out std_logic := 'X'
1745
  );
1746
END COMPONENT;
1747
--
1748
COMPONENT sp8ka
1749
GENERIC(
1750
        DATA_WIDTH   : in Integer := 18;
1751
        REGMODE      : String  := "NOREG";
1752
        RESETMODE    : String  := "ASYNC";
1753
        CSDECODE     : String  := "000";
1754
        WRITEMODE    : String  := "NORMAL";
1755
        GSR : String  := "ENABLED";
1756
        initval_00 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1757
        initval_01 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1758
        initval_02 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1759
        initval_03 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1760
        initval_04 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1761
        initval_05 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1762
        initval_06 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1763
        initval_07 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1764
        initval_08 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1765
        initval_09 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1766
        initval_0a : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1767
        initval_0b : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1768
        initval_0c : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1769
        initval_0d : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1770
        initval_0e : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1771
        initval_0f : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1772
        initval_10 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1773
        initval_11 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1774
        initval_12 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1775
        initval_13 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1776
        initval_14 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1777
        initval_15 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1778
        initval_16 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1779
        initval_17 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1780
        initval_18 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1781
        initval_19 : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1782
        initval_1a : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1783
        initval_1b : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1784
        initval_1c : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1785
        initval_1d : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1786
        initval_1e : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000";
1787
        initval_1f : string := "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"
1788
  );
1789
PORT(
1790
        di0, di1, di2, di3, di4, di5, di6, di7, di8            : in std_logic := 'X';
1791
        di9, di10, di11, di12, di13, di14, di15, di16, di17    : in std_logic := 'X';
1792
        ad0, ad1, ad2, ad3, ad4, ad5, ad6, ad7, ad8            : in std_logic := 'X';
1793
        ad9, ad10, ad11, ad12                                  : in std_logic := 'X';
1794
        ce, clk, we, cs0, cs1, cs2, rst                        : in std_logic := 'X';
1795
 
1796
        do0, do1, do2, do3, do4, do5, do6, do7, do8            : out std_logic := 'X';
1797
        do9, do10, do11, do12, do13, do14, do15, do16, do17    : out std_logic := 'X'
1798
  );
1799
END COMPONENT;
1800
--
1801
 
1802
COMPONENT bbw
1803
PORT(
1804
        b:  INOUT std_logic := 'X';
1805
        i:  IN std_logic := 'X';
1806
        t:  IN std_logic := 'X';
1807
        o:  OUT std_logic);
1808
END COMPONENT;
1809
--
1810
COMPONENT obw
1811
PORT(
1812
        i:  IN std_logic := 'X';
1813
        t:  IN std_logic := 'X';
1814
        o:  OUT std_logic);
1815
END COMPONENT;
1816
--
1817
COMPONENT ilvds
1818
PORT(
1819
        a : IN std_logic := 'X';
1820
        an: IN std_logic := 'X';
1821
        z : OUT std_logic
1822
 );
1823
END COMPONENT;
1824
--
1825
COMPONENT olvds
1826
PORT(
1827
        a  : IN std_logic := 'X';
1828
        z  : OUT std_logic ;
1829
        zn : OUT std_logic
1830
 );
1831
END COMPONENT;
1832
--
1833
COMPONENT bb
1834
PORT(
1835
        b:  INOUT std_logic := 'X';
1836
        i:  IN std_logic := 'X';
1837
        t:  IN std_logic := 'X';
1838
        o:  OUT std_logic);
1839
END COMPONENT;
1840
--
1841
COMPONENT bbpd
1842
PORT(
1843
        b:  INOUT std_logic := 'X';
1844
        i:  IN std_logic := 'X';
1845
        t:  IN std_logic := 'X';
1846
        o:  OUT std_logic);
1847
END COMPONENT;
1848
--
1849
COMPONENT bbpu
1850
PORT(
1851
        b:  INOUT std_logic := 'X';
1852
        i:  IN std_logic := 'X';
1853
        t:  IN std_logic := 'X';
1854
        o:  OUT std_logic);
1855
END COMPONENT;
1856
--
1857
COMPONENT ib
1858
PORT(
1859
        i:  IN std_logic := 'X';
1860
        o:  OUT std_logic);
1861
END COMPONENT;
1862
--
1863
COMPONENT ibpd
1864
PORT(
1865
        i:  IN std_logic := 'X';
1866
        o:  OUT std_logic);
1867
END COMPONENT;
1868
--
1869
COMPONENT ibpu
1870
PORT(
1871
        i:  IN std_logic := 'X';
1872
        o:  OUT std_logic);
1873
END COMPONENT;
1874
--
1875
COMPONENT ob
1876
PORT(
1877
        i:  IN std_logic := 'X';
1878
        o:  OUT std_logic);
1879
END COMPONENT;
1880
--
1881
COMPONENT obz
1882
PORT(
1883
        i:  IN std_logic := 'X';
1884
        t:  IN std_logic := 'X';
1885
        o:  OUT std_logic);
1886
END COMPONENT;
1887
--
1888
COMPONENT obzpd
1889
PORT(
1890
        i:  IN std_logic := 'X';
1891
        t:  IN std_logic := 'X';
1892
        o:  OUT std_logic);
1893
END COMPONENT;
1894
--
1895
COMPONENT obzpu
1896
PORT(
1897
        i:  IN std_logic := 'X';
1898
        t:  IN std_logic := 'X';
1899
        o:  OUT std_logic);
1900
END COMPONENT;
1901
--
1902
COMPONENT dcs
1903
GENERIC(
1904
      DCSMODE         : String  := "POS");
1905
PORT(
1906
        clk0              : IN std_logic;
1907
        clk1              : IN std_logic;
1908
        sel               : IN std_logic;
1909
        dcsout            : OUT std_logic);
1910
END COMPONENT;
1911
--
1912
component EPLLB
1913
   generic(
1914
      FIN           : string  := "100.0";
1915
      CLKI_DIV      : string  := "1";
1916
      CLKOP_DIV     : string  := "8";
1917
      CLKFB_DIV     : string  := "1";
1918
      FDEL          : string  := "1";
1919
      FB_MODE       : string  := "CLOCKTREE";
1920
      WAKE_ON_LOCK  : string  := "off");
1921
    port(
1922
          CLKI          :       in      STD_ULOGIC;
1923
          RST           :       in      STD_ULOGIC;
1924
          CLKFB         :       in      STD_ULOGIC;
1925
          CLKOP         :       out     STD_ULOGIC;
1926
          LOCK          :       out     STD_ULOGIC
1927
        );
1928
end component;
1929
--
1930
component EHXPLLB
1931
   generic(
1932
      FIN             : string  := "100.0";
1933
      CLKI_DIV        : string  := "1";
1934
      CLKOP_DIV       : string  := "1";
1935
      CLKFB_DIV       : string  := "1";
1936
      FDEL            : string  := "1";
1937
      FB_MODE         : string  := "CLOCKTREE";
1938
      CLKOK_DIV       : string  := "2";
1939
      WAKE_ON_LOCK    : string  := "off";
1940
      DELAY_CNTL      : string  := "STATIC";
1941
      PHASEADJ        : string  := "0";
1942
      DUTY            : string  := "4");
1943
 
1944
   port(
1945
      CLKI            : in    STD_ULOGIC;
1946
      CLKFB           : in    STD_ULOGIC;
1947
      RST             : in    STD_ULOGIC := '0';
1948
 
1949
      DDAMODE           : in    STD_ULOGIC;
1950
      DDAIZR            : in    STD_ULOGIC;
1951
      DDAILAG           : in    STD_ULOGIC;
1952
      DDAIDEL0          : in    STD_ULOGIC;
1953
      DDAIDEL1          : in    STD_ULOGIC;
1954
      DDAIDEL2          : in    STD_ULOGIC;
1955
 
1956
      CLKOP             : out   STD_ULOGIC;
1957
      CLKOS             : out   STD_ULOGIC;
1958
      CLKOK             : out   STD_ULOGIC;
1959
      LOCK              : out   STD_ULOGIC;
1960
 
1961
      DDAOZR            : out   STD_ULOGIC;
1962
      DDAOLAG           : out   STD_ULOGIC;
1963
      DDAODEL0          : out    STD_ULOGIC;
1964
      DDAODEL1          : out    STD_ULOGIC;
1965
      DDAODEL2          : out    STD_ULOGIC
1966
);
1967
end component;
1968
--
1969
------Component ORCALUT4------
1970
component ORCALUT4
1971
    generic(  INIT      :       bit_vector);
1972
    port(
1973
          A             :       in      STD_ULOGIC;
1974
          B             :       in      STD_ULOGIC;
1975
          C             :       in      STD_ULOGIC;
1976
          D             :       in      STD_ULOGIC;
1977
          Z             :       out     STD_ULOGIC
1978
        );
1979
end component;
1980
 
1981
------Component ORCALUT5------
1982
component ORCALUT5
1983
    generic(  INIT      :       bit_vector);
1984
    port(
1985
          A             :       in      STD_ULOGIC;
1986
          B             :       in      STD_ULOGIC;
1987
          C             :       in      STD_ULOGIC;
1988
          D             :       in      STD_ULOGIC;
1989
          E             :       in      STD_ULOGIC;
1990
          Z             :       out     STD_ULOGIC
1991
        );
1992
end component;
1993
 
1994
------Component ORCALUT6------
1995
component ORCALUT6
1996
    generic(  INIT      :       bit_vector);
1997
    port(
1998
          A             :       in      STD_ULOGIC;
1999
          B             :       in      STD_ULOGIC;
2000
          C             :       in      STD_ULOGIC;
2001
          D             :       in      STD_ULOGIC;
2002
          E             :       in      STD_ULOGIC;
2003
          F             :       in      STD_ULOGIC;
2004
          Z             :       out     STD_ULOGIC
2005
        );
2006
end component;
2007
 
2008
------Component ORCALUT7------
2009
component ORCALUT7
2010
    generic(  INIT      :       bit_vector);
2011
    port(
2012
          A             :       in      STD_ULOGIC;
2013
          B             :       in      STD_ULOGIC;
2014
          C             :       in      STD_ULOGIC;
2015
          D             :       in      STD_ULOGIC;
2016
          E             :       in      STD_ULOGIC;
2017
          F             :       in      STD_ULOGIC;
2018
          G             :       in      STD_ULOGIC;
2019
          Z             :       out     STD_ULOGIC
2020
        );
2021
end component;
2022
 
2023
------Component ORCALUT8------
2024
component ORCALUT8
2025
    generic(  INIT      :       bit_vector);
2026
    port(
2027
          A             :       in      STD_ULOGIC;
2028
          B             :       in      STD_ULOGIC;
2029
          C             :       in      STD_ULOGIC;
2030
          D             :       in      STD_ULOGIC;
2031
          E             :       in      STD_ULOGIC;
2032
          F             :       in      STD_ULOGIC;
2033
          G             :       in      STD_ULOGIC;
2034
          H             :       in      STD_ULOGIC;
2035
          Z             :       out     STD_ULOGIC
2036
        );
2037
end component;
2038
--
2039
component MULT2
2040
   port(
2041
      A0                             :  in    STD_ULOGIC;
2042
      A1                             :  in    STD_ULOGIC;
2043
      A2                             :  in    STD_ULOGIC;
2044
      A3                             :  in    STD_ULOGIC;
2045
      B0                             :  in    STD_ULOGIC;
2046
      B1                             :  in    STD_ULOGIC;
2047
      B2                             :  in    STD_ULOGIC;
2048
      B3                             :  in    STD_ULOGIC;
2049
      CI                             :  in    STD_ULOGIC;
2050
      P0                             :  out   STD_ULOGIC;
2051
      P1                             :  out   STD_ULOGIC;
2052
      CO                             :  out   STD_ULOGIC);
2053
end component;
2054
--
2055
component IDDRXB
2056
   generic( REGSET  : string  := "RESET");
2057
    port(
2058
          D             :       in      STD_LOGIC;
2059
          ECLK          :       in      STD_LOGIC;
2060
          SCLK          :       in      STD_LOGIC;
2061
          LSR           :       in      STD_LOGIC;
2062
          CE            :       in      STD_LOGIC;
2063
          DDRCLKPOL     :       in      STD_LOGIC;
2064
          QA            :       out     STD_LOGIC;
2065
          QB            :       out     STD_LOGIC
2066
        );
2067
end component;
2068
--
2069
component ODDRXB
2070
   generic( REGSET  : string  := "RESET");
2071
    port(
2072
          DA            :       in      STD_LOGIC;
2073
          DB            :       in      STD_LOGIC;
2074
          CLK           :       in      STD_LOGIC;
2075
          LSR           :       in      STD_LOGIC;
2076
          Q             :       out     STD_LOGIC
2077
        );
2078
end component;
2079
--
2080
component CCU2
2081
   generic (
2082
      inject1_0 : string := "YES";
2083
      inject1_1 : string := "YES";
2084
      init0: string := "0x0000";
2085
      init1: string := "0x0000"
2086
   );
2087
   port (
2088
      A0,A1 : in std_ulogic;
2089
      B0,B1 : in std_ulogic;
2090
      C0,C1 : in std_ulogic;
2091
      D0,D1 : in std_ulogic;
2092
      CIN : in std_ulogic;
2093
      S0,S1 : out std_ulogic;
2094
      COUT0,COUT1 : out std_ulogic
2095
   );
2096
end component;
2097
--
2098
component DQSBUFB
2099
    generic(DEL_ADJ          : string  := "PLUS";
2100
            DEL_VAL          : string  := "0");
2101
    port(
2102
          DQSI          :       in      STD_LOGIC;
2103
          CLK           :       in      STD_LOGIC;
2104
          READ          :       in      STD_LOGIC;
2105
          DQSDEL        :       in      STD_LOGIC;
2106
          DQSO          :       out     STD_LOGIC;
2107
          DDRCLKPOL     :       out     STD_LOGIC;
2108
          DQSC          :       out     STD_LOGIC;
2109
          PRMBDET       :       out     STD_LOGIC
2110
        );
2111
end component;
2112
--
2113
component DQSDLL
2114
    generic(DEL_ADJ          : string  := "PLUS";
2115
            DEL_VAL          : string  := "0";
2116
            LOCK_SENSITIVITY : string  := "LOW");
2117
    port(
2118
          CLK           :       in      STD_ULOGIC;
2119
          RST           :       in      STD_ULOGIC;
2120
          UDDCNTL       :       in      STD_ULOGIC;
2121
          LOCK          :       out     STD_ULOGIC;
2122
          DQSDEL        :       out     STD_ULOGIC
2123
        );
2124
end component;
2125
--
2126
-- 18x18 MULT for ECP
2127
component MULT18X18
2128
  generic(
2129
         REG_INPUTA_CLK       : string     := "NONE";
2130
         REG_INPUTA_CE        : string     := "CE0";
2131
         REG_INPUTA_RST       : string     := "RST0";
2132
         REG_INPUTB_CLK       : string     := "NONE";
2133
         REG_INPUTB_CE        : string     := "CE0";
2134
         REG_INPUTB_RST       : string     := "RST0";
2135
         REG_PIPELINE_CLK     : string     := "NONE";
2136
         REG_PIPELINE_CE      : string     := "CE0";
2137
         REG_PIPELINE_RST     : string     := "RST0";
2138
         REG_OUTPUT_CLK       : string     := "NONE";
2139
         REG_OUTPUT_CE        : string     := "CE0";
2140
         REG_OUTPUT_RST       : string     := "RST0";
2141
         REG_SIGNEDAB_0_CLK   : string     := "NONE";
2142
         REG_SIGNEDAB_0_CE    : string     := "CE0";
2143
         REG_SIGNEDAB_0_RST   : string     := "RST0";
2144
         REG_SIGNEDAB_1_CLK   : string     := "NONE";
2145
         REG_SIGNEDAB_1_CE    : string     := "CE0";
2146
         REG_SIGNEDAB_1_RST   : string     := "RST0";
2147
         SHIFT_IN_A           : string     := "FALSE";
2148
         SHIFT_IN_B           : string     := "FALSE";
2149
         GSR                  : string     := "ENABLED");
2150
  port (
2151
        A0 : in STD_ULOGIC;
2152
        A1 : in STD_ULOGIC;
2153
        A2 : in STD_ULOGIC;
2154
        A3 : in STD_ULOGIC;
2155
        A4 : in STD_ULOGIC;
2156
        A5 : in STD_ULOGIC;
2157
        A6 : in STD_ULOGIC;
2158
        A7 : in STD_ULOGIC;
2159
        A8 : in STD_ULOGIC;
2160
        A9 : in STD_ULOGIC;
2161
        A10 : in STD_ULOGIC;
2162
        A11 : in STD_ULOGIC;
2163
        A12 : in STD_ULOGIC;
2164
        A13 : in STD_ULOGIC;
2165
        A14 : in STD_ULOGIC;
2166
        A15 : in STD_ULOGIC;
2167
        A16 : in STD_ULOGIC;
2168
        A17 : in STD_ULOGIC;
2169
 
2170
        SRIA0 : in STD_ULOGIC;
2171
        SRIA1 : in STD_ULOGIC;
2172
        SRIA2 : in STD_ULOGIC;
2173
        SRIA3 : in STD_ULOGIC;
2174
        SRIA4 : in STD_ULOGIC;
2175
        SRIA5 : in STD_ULOGIC;
2176
        SRIA6 : in STD_ULOGIC;
2177
        SRIA7 : in STD_ULOGIC;
2178
        SRIA8 : in STD_ULOGIC;
2179
        SRIA9 : in STD_ULOGIC;
2180
        SRIA10 : in STD_ULOGIC;
2181
        SRIA11 : in STD_ULOGIC;
2182
        SRIA12 : in STD_ULOGIC;
2183
        SRIA13 : in STD_ULOGIC;
2184
        SRIA14 : in STD_ULOGIC;
2185
        SRIA15 : in STD_ULOGIC;
2186
        SRIA16 : in STD_ULOGIC;
2187
        SRIA17 : in STD_ULOGIC;
2188
 
2189
        B0 : in STD_ULOGIC;
2190
        B1 : in STD_ULOGIC;
2191
        B2 : in STD_ULOGIC;
2192
        B3 : in STD_ULOGIC;
2193
        B4 : in STD_ULOGIC;
2194
        B5 : in STD_ULOGIC;
2195
        B6 : in STD_ULOGIC;
2196
        B7 : in STD_ULOGIC;
2197
        B8 : in STD_ULOGIC;
2198
        B9 : in STD_ULOGIC;
2199
        B10 : in STD_ULOGIC;
2200
        B11 : in STD_ULOGIC;
2201
        B12 : in STD_ULOGIC;
2202
        B13 : in STD_ULOGIC;
2203
        B14 : in STD_ULOGIC;
2204
        B15 : in STD_ULOGIC;
2205
        B16 : in STD_ULOGIC;
2206
        B17 : in STD_ULOGIC;
2207
 
2208
        SRIB0 : in STD_ULOGIC;
2209
        SRIB1 : in STD_ULOGIC;
2210
        SRIB2 : in STD_ULOGIC;
2211
        SRIB3 : in STD_ULOGIC;
2212
        SRIB4 : in STD_ULOGIC;
2213
        SRIB5 : in STD_ULOGIC;
2214
        SRIB6 : in STD_ULOGIC;
2215
        SRIB7 : in STD_ULOGIC;
2216
        SRIB8 : in STD_ULOGIC;
2217
        SRIB9 : in STD_ULOGIC;
2218
        SRIB10 : in STD_ULOGIC;
2219
        SRIB11 : in STD_ULOGIC;
2220
        SRIB12 : in STD_ULOGIC;
2221
        SRIB13 : in STD_ULOGIC;
2222
        SRIB14 : in STD_ULOGIC;
2223
        SRIB15 : in STD_ULOGIC;
2224
        SRIB16 : in STD_ULOGIC;
2225
        SRIB17 : in STD_ULOGIC;
2226
 
2227
        SIGNEDAB : in STD_ULOGIC;
2228
 
2229
        CE0 : in STD_ULOGIC;
2230
        CE1 : in STD_ULOGIC;
2231
        CE2 : in STD_ULOGIC;
2232
        CE3 : in STD_ULOGIC;
2233
 
2234
        CLK0 : in STD_ULOGIC;
2235
        CLK1 : in STD_ULOGIC;
2236
        CLK2 : in STD_ULOGIC;
2237
        CLK3 : in STD_ULOGIC;
2238
 
2239
        RST0 : in STD_ULOGIC;
2240
        RST1 : in STD_ULOGIC;
2241
        RST2 : in STD_ULOGIC;
2242
        RST3 : in STD_ULOGIC;
2243
 
2244
        SROA0 : out STD_ULOGIC;
2245
        SROA1 : out STD_ULOGIC;
2246
        SROA2 : out STD_ULOGIC;
2247
        SROA3 : out STD_ULOGIC;
2248
        SROA4 : out STD_ULOGIC;
2249
        SROA5 : out STD_ULOGIC;
2250
        SROA6 : out STD_ULOGIC;
2251
        SROA7 : out STD_ULOGIC;
2252
        SROA8 : out STD_ULOGIC;
2253
        SROA9 : out STD_ULOGIC;
2254
        SROA10 : out STD_ULOGIC;
2255
        SROA11 : out STD_ULOGIC;
2256
        SROA12 : out STD_ULOGIC;
2257
        SROA13 : out STD_ULOGIC;
2258
        SROA14 : out STD_ULOGIC;
2259
        SROA15 : out STD_ULOGIC;
2260
        SROA16 : out STD_ULOGIC;
2261
        SROA17 : out STD_ULOGIC;
2262
 
2263
        SROB0 : out STD_ULOGIC;
2264
        SROB1 : out STD_ULOGIC;
2265
        SROB2 : out STD_ULOGIC;
2266
        SROB3 : out STD_ULOGIC;
2267
        SROB4 : out STD_ULOGIC;
2268
        SROB5 : out STD_ULOGIC;
2269
        SROB6 : out STD_ULOGIC;
2270
        SROB7 : out STD_ULOGIC;
2271
        SROB8 : out STD_ULOGIC;
2272
        SROB9 : out STD_ULOGIC;
2273
        SROB10 : out STD_ULOGIC;
2274
        SROB11 : out STD_ULOGIC;
2275
        SROB12 : out STD_ULOGIC;
2276
        SROB13 : out STD_ULOGIC;
2277
        SROB14 : out STD_ULOGIC;
2278
        SROB15 : out STD_ULOGIC;
2279
        SROB16 : out STD_ULOGIC;
2280
        SROB17 : out STD_ULOGIC;
2281
 
2282
        P0 : out STD_ULOGIC;
2283
        P1 : out STD_ULOGIC;
2284
        P2 : out STD_ULOGIC;
2285
        P3 : out STD_ULOGIC;
2286
        P4 : out STD_ULOGIC;
2287
        P5 : out STD_ULOGIC;
2288
        P6 : out STD_ULOGIC;
2289
        P7 : out STD_ULOGIC;
2290
        P8 : out STD_ULOGIC;
2291
        P9 : out STD_ULOGIC;
2292
        P10 : out STD_ULOGIC;
2293
        P11 : out STD_ULOGIC;
2294
        P12 : out STD_ULOGIC;
2295
        P13 : out STD_ULOGIC;
2296
        P14 : out STD_ULOGIC;
2297
        P15 : out STD_ULOGIC;
2298
        P16 : out STD_ULOGIC;
2299
        P17 : out STD_ULOGIC;
2300
        P18 : out STD_ULOGIC;
2301
        P19 : out STD_ULOGIC;
2302
        P20 : out STD_ULOGIC;
2303
        P21 : out STD_ULOGIC;
2304
        P22 : out STD_ULOGIC;
2305
        P23 : out STD_ULOGIC;
2306
        P24 : out STD_ULOGIC;
2307
        P25 : out STD_ULOGIC;
2308
        P26 : out STD_ULOGIC;
2309
        P27 : out STD_ULOGIC;
2310
        P28 : out STD_ULOGIC;
2311
        P29 : out STD_ULOGIC;
2312
        P30 : out STD_ULOGIC;
2313
        P31 : out STD_ULOGIC;
2314
        P32 : out STD_ULOGIC;
2315
        P33 : out STD_ULOGIC;
2316
        P34 : out STD_ULOGIC;
2317
        P35 : out STD_ULOGIC
2318
       );
2319
  end component;
2320
 
2321
end Components;
2322
 
2323
package body Components is
2324
    function str2std(L: string) return std_logic_vector is
2325
        variable vpos : integer := 0;   -- Index of last valid bit in val.
2326
        variable lpos : integer;        -- Index of next unused char in L.
2327
        variable val  : std_logic_vector(1 to L'right); -- lenth of the vector.
2328
    begin
2329
            lpos := L'left;
2330
            while lpos <= L'right and vpos < VAL'length loop
2331
                if L(lpos) = '0' then
2332
                    vpos := vpos + 1;
2333
                    val(vpos) := '0';
2334
                elsif L(lpos) = '1' then
2335
                    vpos := vpos + 1;
2336
                    val(vpos) := '1';
2337
                else
2338
                    exit;       -- Bit values must be '0' or '1'.
2339
                end if;
2340
                lpos := lpos + 1;
2341
            end loop;
2342
        return val;
2343
    end str2std;
2344
 
2345
 function str2int( L : string) return integer is
2346
        variable ok:         boolean;
2347
        variable pos:        integer:=1;
2348
        variable sign: integer := 1;
2349
        variable rval: integer := 0;
2350
        variable value: integer := 0;
2351
    begin
2352
        ok := FALSE;
2353
        if pos < L'right and (L(pos) = '-' or L(pos) = '+') then
2354
            if L(pos) = '-' then
2355
                sign := -1;
2356
            end if;
2357
            pos := pos + 1;
2358
        end if;
2359
 
2360
        -- Once the optional leading sign is removed, an integer can
2361
        --   contain only the digits '0' through '9' and the '_'
2362
        --   (underscore) character.  VHDL disallows two successive
2363
        --   underscores, and leading or trailing underscores.
2364
 
2365
        if pos <= L'right and L(pos) >= '0' and L(pos) <= '9' then
2366
            while pos <= L'right loop
2367
                if L(pos) >= '0' and L(pos) <= '9' then
2368
                    rval := rval * 10
2369
                            + character'pos(L(pos)) - character'pos('0');
2370
                    ok := TRUE;
2371
                elsif L(pos) = '_' then
2372
                    if pos = L'right
2373
                    or L(pos + 1) < '0'
2374
                    or L(pos + 1) > '9' then
2375
                        ok := FALSE;
2376
                        exit;
2377
                    end if;
2378
                else
2379
                    exit;
2380
                end if;
2381
                pos := pos + 1;
2382
            end loop;
2383
        end if;
2384
 
2385
        value := sign * rval;
2386
        RETURN(value);
2387
    end str2int;
2388
 
2389
    function str2real( L: string) return real is
2390
        variable pos:        integer;
2391
        variable value:      real;
2392
        variable ok:         boolean;
2393
        variable sign:       real := 1.0;
2394
        variable rval:       real := 0.0;
2395
        variable powerten:   real := 0.1;
2396
 
2397
        begin
2398
 
2399
        pos := L'left;
2400
        if (pos <= L'right) and (L(pos) = '-') then
2401
            sign := -1.0;
2402
            pos := pos + 1;
2403
        end if;
2404
 
2405
            ok := FALSE;
2406
            rval := 0.0;
2407
            if pos <= L'right and L(pos) >= '0' and L(pos) <= '9' then
2408
                while pos <= L'right and L(pos) /= '.' and L(pos) /= ' ' and L(pos) /= HT
2409
  loop
2410
                    if L(pos) >= '0' and L(pos) <= '9' then
2411
                        rval := rval*10.0 + real(character'pos(L(pos)) - character'pos('0'));
2412
                        pos := pos+1;
2413
                        ok := true;
2414
                    else
2415
                        ok := false;
2416
                        exit;
2417
                    end if;
2418
                end loop;
2419
            end if;
2420
 
2421
            if ok and pos <= L'right and L(pos) = '.' then
2422
            pos := pos + 1;
2423
            end if;
2424
 
2425
            if pos <= L'right then
2426
               while pos <= L'right and ((L(pos) >= '0' and L(pos) <= '9') or L(pos) = '_') loop
2427
                       rval := rval + (real(character'pos(L(pos))-character'pos('0'))*powerten);
2428
                       powerten := powerten*0.1;
2429
                      pos := pos+1;
2430
                     ok := true;
2431
            end loop;
2432
        end if;
2433
 
2434
        if ok then
2435
            value := rval * sign;
2436
        end if;
2437
        return (value);
2438
      end str2real;
2439
 
2440
  function INT2VEC(INT: INTEGER; BWIDTH: INTEGER) RETURN STD_LOGIC_VECTOR is
2441
 
2442
     variable result : STD_LOGIC_VECTOR (BWIDTH-1 downto 0);
2443
     variable tmp : integer := INT;
2444
  begin
2445
     tmp := INT;
2446
     for i in 0 to BWIDTH-1 loop
2447
         if (tmp mod 2) = 1 then
2448
              result(i) := '1';
2449
         else
2450
              result(i) := '0';
2451
         end if;
2452
         if tmp > 0 then
2453
             tmp := tmp /2 ;
2454
         elsif (tmp > integer'low) then
2455
             tmp := (tmp-1) / 2;
2456
         else
2457
             tmp := tmp / 2;
2458
         end if;
2459
     end loop;
2460
     return result;
2461
  end;
2462
 
2463
  function VEC2INT(v: std_logic_vector) return integer is
2464
      variable result: integer := 0;
2465
      variable addition: integer := 1;
2466
  begin
2467
      for b in v'reverse_range loop
2468
         if v(b) = '1' then
2469
            result := result + addition;
2470
         end if;
2471
         addition := addition * 2;
2472
      end loop;
2473
      return result;
2474
  end VEC2INT;
2475
 
2476
  function VECX              (VECT: std_logic_vector) return boolean is
2477
   begin
2478
      for b in VECT'range loop
2479
         if bitX (VECT (b)) then
2480
            return true;
2481
         end if;
2482
      end loop;
2483
      return false;
2484
   end VECX;
2485
 
2486
  function TSCOMP(VECT: STD_LOGIC_VECTOR ) RETURN STD_LOGIC_VECTOR is
2487
    variable result : STD_LOGIC_VECTOR (VECT'left downto 0);
2488
    variable is1 : std_ulogic := '0';
2489
  begin
2490
    for i in 0 to VECT'left loop
2491
      if (is1 = '0') then
2492
        result(i) := VECT(i);
2493
        if (VECT(i) = '1' ) then
2494
           is1 := '1';
2495
        end if;
2496
      else
2497
        result(i) := NOT VECT(i);
2498
      end if;
2499
    end loop;
2500
    return result;
2501
  end;
2502
 
2503
  function ADDVECT(A, B: STD_LOGIC_VECTOR ) RETURN STD_LOGIC_VECTOR is
2504
 
2505
    variable cout: STD_ULOGIC;
2506
    variable BVect, result: STD_LOGIC_VECTOR(A'left downto 0);
2507
 
2508
  begin
2509
    for i in 0 to A'left loop
2510
    if (A(i) = 'X') then
2511
       result := (others => 'X');
2512
       return(result);
2513
    end if;
2514
    end loop;
2515
    for i in 0 to B'left loop
2516
    if (B(i) = 'X') then
2517
       result := (others => 'X');
2518
       return(result);
2519
    end if;
2520
    end loop;
2521
 
2522
    cout := '0';
2523
    BVEct := B;
2524
 
2525
    for i in 0 to A'left loop
2526
      result(i) := A(i) xor BVect(i) xor cout;
2527
      cout := (A(i) and BVect(i)) or
2528
              (A(i) and cout) or
2529
              (cout and BVect(i));
2530
    end loop;
2531
    return result;
2532
  end;
2533
 
2534
  function SUBVECT(A, B: STD_LOGIC_VECTOR ) RETURN STD_LOGIC_VECTOR is
2535
 
2536
    variable cout: STD_ULOGIC;
2537
    variable result: STD_LOGIC_VECTOR(A'left downto 0);
2538
 
2539
  begin
2540
    for i in 0 to A'left loop
2541
    if (A(i) = 'X') then
2542
       result := (others => 'X');
2543
       return(result);
2544
    end if;
2545
    end loop;
2546
    for i in 0 to B'left loop
2547
    if (B(i) = 'X') then
2548
       result := (others => 'X');
2549
       return(result);
2550
    end if;
2551
    end loop;
2552
 
2553
    cout := '1';
2554
 
2555
    for i in 0 to A'left loop
2556
      result(i) := A(i) xor not B(i) xor cout;
2557
      cout := (A(i) and not B(i)) or
2558
              (A(i) and cout) or
2559
              (cout and not B(i));
2560
    end loop;
2561
    return result;
2562
  end;
2563
 
2564
  function BITX              (VECT: std_logic) return boolean is
2565
   begin
2566
      case VECT is
2567
         when 'X'    => return true;
2568
         when others => return false;
2569
      end case;
2570
   end BITX;
2571
 
2572
END components;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.