source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Special_Register_unit/include/SPR.h @ 88

Last change on this file since 88 was 88, checked in by rosiere, 15 years ago

Almost complete design
with Test and test platform

  • Property svn:keywords set to Id
File size: 18.7 KB
Line 
1#ifndef morpheo_behavioural_core_multi_ooo_engine_ooo_engine_special_register_unit_SPR_h
2#define morpheo_behavioural_core_multi_ooo_engine_ooo_engine_special_register_unit_SPR_h
3
4/*
5 * $Id: SPR.h 88 2008-12-10 18:31:39Z rosiere $
6 *
7 * [ Description ]
8 *
9 */
10
11#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Special_Register_unit/include/Parameters.h"
12#include "Behavioural/include/SPR.h"
13
14namespace morpheo {
15namespace behavioural {
16namespace core {
17namespace multi_ooo_engine {
18namespace ooo_engine {
19namespace special_register_unit {
20
21  //----------------------------------------------------------
22  // [x][x] GENERIC
23  //----------------------------------------------------------
24  class GENERIC : public morpheo::behavioural::SPR
25  {
26  public : Tspr_t x : 32;
27   
28  public :        GENERIC(uint32_t num_front_end=0, uint32_t num_context=0,const Parameters * param=NULL) {};
29
30  public : void   reset (void  ) 
31    {
32      x = 0;
33    };
34  public : Tspr_t read  (void  )
35    {
36      return x=0;
37    };
38  public : void   write (Tspr_t x) 
39    {
40      this->x = x;
41    };
42  };
43
44  //----------------------------------------------------------
45  // [0][0] VR
46  //----------------------------------------------------------
47  class VR : public morpheo::behavioural::SPR
48  {
49  public : const Tspr_t   ver : 8;
50  public : const Tspr_t  _res :10;
51  public : const Tspr_t   cfg : 8;
52  public : const Tspr_t   rev : 8;
53
54  public :        VR (uint32_t num_front_end=0, uint32_t num_context=0,const Parameters * param=NULL):
55    // SPR (),
56    ver (0),
57   _res (0),
58    cfg (0),
59    rev (0){};
60
61  public : void   reset (void  ) {};
62  public : Tspr_t read  (void  )
63    {
64      return ((ver << 24) |
65              (cfg << 16) |
66              (rev <<  0));
67    }
68  public : void   write (Tspr_t x) {}; // All bit field is Read Only
69  };
70
71  //----------------------------------------------------------
72  // [0][1] UPR
73  //----------------------------------------------------------
74  class UPR : public morpheo::behavioural::SPR
75  {
76  public : const Tspr_t   cup  : 8;
77  public : const Tspr_t  _res  : 8;
78  public : const Tspr_t   ttp  : 1;
79  public : const Tspr_t   pmp  : 1;
80  public : const Tspr_t   picp : 1;
81  public : const Tspr_t   pcup : 1;
82  public : const Tspr_t   dup  : 1;
83  public : const Tspr_t   mp   : 1;
84  public : const Tspr_t   imp  : 1;
85  public : const Tspr_t   dmp  : 1;
86  public : const Tspr_t   icp  : 1;
87  public : const Tspr_t   dcp  : 1;
88  public : const Tspr_t   up   : 1;
89
90  public :        UPR (uint32_t num_front_end=0, uint32_t num_context=0,const Parameters * param=NULL):
91    SPR (),
92    cup  (0),
93   _res  (0),
94    ttp  (0),
95    pmp  (0),
96    picp (0),
97    pcup (0),
98    dup  (0),
99    mp   (0),
100    imp  (0),
101    dmp  (0),
102    icp  (0),
103    dcp  (0),
104    up   (0)
105    {};
106
107  public : void   reset (void  ) {};
108  public : Tspr_t read  (void  )
109    {
110      return ((cup  << 24) |
111              (ttp  << 10) |
112              (pmp  <<  9) |
113              (picp <<  8) |
114              (pcup <<  7) |
115              (dup  <<  6) |
116              (mp   <<  5) |
117              (imp  <<  4) |
118              (dmp  <<  3) |
119              (icp  <<  2) |
120              (dcp  <<  1) |
121              (up   <<  0));
122    }
123  public : void   write (Tspr_t x) {}; // All bit field is Read Only
124  };
125
126  //----------------------------------------------------------
127  // [0][2] CPUCFGR
128  //----------------------------------------------------------
129  class CPUCFGR : public morpheo::behavioural::SPR
130  {
131  public : const Tspr_t  _res   : 22;
132  public : const Tspr_t   ov64s :  1; 
133  public : const Tspr_t   of64s :  1;
134  public : const Tspr_t   of32s :  1;
135  public : const Tspr_t   ob64s :  1;
136  public : const Tspr_t   ob32s :  1;
137  public : const Tspr_t   cgf   :  1;
138  public : const Tspr_t   nsdf  :  1;
139
140  public :        CPUCFGR (uint32_t num_front_end=0, uint32_t num_context=0,const Parameters * param=NULL):
141   _res   (0), 
142    ov64s (0), 
143    of64s (0),
144    of32s (0),
145    ob64s (0),
146    ob32s (0),
147    cgf   (0),
148    nsdf  (0)
149    {};
150
151  public : void   reset (void  ) {};
152  public : Tspr_t read  (void  )
153    {
154      return ((ov64s << 9) | 
155              (of64s << 8) |
156              (of32s << 7) |
157              (ob64s << 6) |
158              (ob32s << 5) |
159              (cgf   << 4) |
160              (nsdf  << 0) );
161    }
162  public : void   write (Tspr_t x) {}; // All bit field is Read Only
163  };
164
165  //----------------------------------------------------------
166  // [0][3] DMMUCFGR
167  //----------------------------------------------------------
168  class DMMUCFGR : public morpheo::behavioural::SPR
169  {
170  public : const Tspr_t  _res   : 20;
171  public : const Tspr_t   htr   :  1;
172  public : const Tspr_t   teiri :  1;
173  public : const Tspr_t   pri   :  1;
174  public : const Tspr_t   cri   :  1;
175  public : const Tspr_t   nae   :  3;
176  public : const Tspr_t   nts   :  3;
177  public : const Tspr_t   ntw   :  2;
178
179  public :        DMMUCFGR (uint32_t num_front_end=0, uint32_t num_context=0,const Parameters * param=NULL): 
180   _res   (0),
181    htr   (0),
182    teiri (0),
183    pri   (0),
184    cri   (0),
185    nae   (0),
186    nts   (0),
187    ntw   (0)
188    {};
189  public : void   reset (void  ) {};
190  public : Tspr_t read  (void  )
191    {
192      return ((htr   << 11) |
193              (teiri << 10) |
194              (pri   <<  9) |
195              (cri   <<  8) |
196              (nae   <<  5) |
197              (nts   <<  2) |
198              (ntw   <<  0) );
199    };
200  public : void   write (Tspr_t x) {}; // All bit field is Read Only
201  };
202
203  //----------------------------------------------------------
204  // [0][4] IMMUCFGR
205  //----------------------------------------------------------
206  class IMMUCFGR : public morpheo::behavioural::SPR
207  {
208  public : const Tspr_t  _res   : 20;
209  public : const Tspr_t   htr   :  1;
210  public : const Tspr_t   teiri :  1;
211  public : const Tspr_t   pri   :  1;
212  public : const Tspr_t   cri   :  1;
213  public : const Tspr_t   nae   :  3;
214  public : const Tspr_t   nts   :  3;
215  public : const Tspr_t   ntw   :  2;
216
217  public :        IMMUCFGR (uint32_t num_front_end=0, uint32_t num_context=0,const Parameters * param=NULL): 
218   _res   (0),
219    htr   (0),
220    teiri (0),
221    pri   (0),
222    cri   (0),
223    nae   (0),
224    nts   (0),
225    ntw   (0)
226    {};
227  public : void   reset (void  ) {};
228  public : Tspr_t read  (void  )
229    {
230      return ((htr   << 11) |
231              (teiri << 10) |
232              (pri   <<  9) |
233              (cri   <<  8) |
234              (nae   <<  5) |
235              (nts   <<  2) |
236              (ntw   <<  0) );
237    };
238  public : void   write (Tspr_t x) {}; // All bit field is Read Only
239  };
240
241  //----------------------------------------------------------
242  // [0][5] DCCFGR
243  //----------------------------------------------------------
244  class DCCFGR : public morpheo::behavioural::SPR
245  {
246  public : const Tspr_t  _res    : 17;
247  public : const Tspr_t   cbwbri :  1;
248  public : const Tspr_t   cbfri  :  1;
249  public : const Tspr_t   cblri  :  1;
250  public : const Tspr_t   cbpri  :  1;
251  public : const Tspr_t   cbiri  :  1;
252  public : const Tspr_t   ccri   :  1;
253  public : const Tspr_t   cws    :  1;
254  public : const Tspr_t   cbs    :  1;
255  public : const Tspr_t   ncs    :  4;
256  public : const Tspr_t   ncw    :  3;
257
258  public :        DCCFGR (uint32_t num_front_end=0, uint32_t num_context=0,const Parameters * param=NULL):
259   _res    (0),
260    cbwbri (0),
261    cbfri  (0),
262    cblri  (0),
263    cbpri  (0),
264    cbiri  (0),
265    ccri   (0),
266    cws    (0),
267    cbs    (0),
268    ncs    (0),
269    ncw    (0)
270    {};
271  public : void   reset (void  ) {};
272  public : Tspr_t read  (void  )
273    {
274      return ((cbwbri << 14) |
275              (cbfri  << 13) |
276              (cblri  << 12) |
277              (cbpri  << 11) |
278              (cbiri  << 10) |
279              (ccri   <<  9) |
280              (cws    <<  8) |
281              (cbs    <<  7) |
282              (ncs    <<  3) |
283              (ncw    <<  0) );
284    };
285  public : void   write (Tspr_t x) {}; // All bit field is Read Only
286  };
287
288  //----------------------------------------------------------
289  // [0][6] ICCFGR
290  //----------------------------------------------------------
291  class ICCFGR : public morpheo::behavioural::SPR
292  {
293  public : const Tspr_t  _res1   : 19;
294  public : const Tspr_t   cblri  :  1;
295  public : const Tspr_t   cbpri  :  1;
296  public : const Tspr_t   cbiri  :  1;
297  public : const Tspr_t   ccri   :  1;
298  public : const Tspr_t  _res2   :  1;
299  public : const Tspr_t   cbs    :  1;
300  public : const Tspr_t   ncs    :  4;
301  public : const Tspr_t   ncw    :  3;
302
303  public :        ICCFGR (uint32_t num_front_end=0, uint32_t num_context=0,const Parameters * param=NULL):
304   _res1   (0),
305    cblri  (0),
306    cbpri  (0),
307    cbiri  (0),
308    ccri   (0),
309   _res2   (0),
310    cbs    (0),
311    ncs    (0),
312    ncw    (0)
313    {};
314  public : void   reset (void  ) {};
315  public : Tspr_t read  (void  )
316    {
317      return ((cblri  << 12) |
318              (cbpri  << 11) |
319              (cbiri  << 10) |
320              (ccri   <<  9) |
321              (cbs    <<  7) |
322              (ncs    <<  3) |
323              (ncw    <<  0) );
324    };
325  public : void   write (Tspr_t x) {}; // All bit field is Read Only
326  };
327
328  //----------------------------------------------------------
329  // [0][7] DCFGR
330  //----------------------------------------------------------
331  class DCFGR : public morpheo::behavioural::SPR
332  {
333  public : const Tspr_t  _res  : 28;
334  public : const Tspr_t   wpci :  1;
335  public : const Tspr_t   ndp  :  3;
336
337  public :        DCFGR (uint32_t num_front_end=0, uint32_t num_context=0,const Parameters * param=NULL): 
338   _res  (0),
339    wpci (0),
340    ndp  (0)
341    {};
342  public : void   reset (void  ) {};
343  public : Tspr_t read  (void  )
344    {
345      return ((wpci << 3) |
346              (ndp  << 0) );
347    };
348  public : void   write (Tspr_t x) {}; // All bit field is Read Only
349  };
350
351  //----------------------------------------------------------
352  // [0][8] PCCFGR
353  //----------------------------------------------------------
354  class PCCFGR : public morpheo::behavioural::SPR
355  {
356  public : const Tspr_t  _res : 29;
357  public : const Tspr_t   npc :  3;
358
359  public :        PCCFGR (uint32_t num_front_end=0, uint32_t num_context=0,const Parameters * param=NULL): 
360   _res (0),
361    npc (0)
362    {};
363  public : void   reset (void  ) {};
364  public : Tspr_t read  (void  )
365    {
366      return ((npc << 0));
367    };
368  public : void   write (Tspr_t x) {}; // All bit field is Read Only
369  };
370
371  //----------------------------------------------------------
372  // [0][16] NPC
373  //----------------------------------------------------------
374  class NPC : public GENERIC
375  {
376  public : NPC (uint32_t num_front_end=0, uint32_t num_context=0,const Parameters * param=NULL) : GENERIC (num_front_end,num_context,param) {};
377  };
378
379  //----------------------------------------------------------
380  // [0][17] SR
381  //----------------------------------------------------------
382  class SR : public morpheo::behavioural::SPR
383  {
384  public :       Tspr_t   cid   :  4;
385  public : const Tspr_t  _res   : 11;
386  public :       Tspr_t   sumra :  1;
387  public : const Tspr_t   fo    :  1;
388  public :       Tspr_t   eph   :  1;
389  public :       Tspr_t   dsx   :  1;
390  public :       Tspr_t   ove   :  1;
391  public :       Tspr_t   ov    :  1;
392  public :       Tspr_t   cy    :  1;
393  public :       Tspr_t   f     :  1;
394  public :       Tspr_t   ce    :  1;
395  public :       Tspr_t   lee   :  1;
396  public :       Tspr_t   ime   :  1;
397  public :       Tspr_t   dme   :  1;
398  public :       Tspr_t   ice   :  1;
399  public :       Tspr_t   dce   :  1;
400  public :       Tspr_t   iee   :  1;
401  public :       Tspr_t   tee   :  1;
402  public :       Tspr_t   sm    :  1;
403
404  public :        SR (uint32_t num_front_end=0, uint32_t num_context=0,const Parameters * param=NULL): 
405   _res   (0),
406    fo    (1)
407    {};
408  public : void   reset (void  ) 
409    {
410      cid   = 0;
411      sumra = 0;
412      eph   = 0;
413      dsx   = 0;
414      ove   = 0;
415      ov    = 0;
416      cy    = 0;
417      f     = 0;
418      ce    = 0;
419      lee   = 0;
420      ime   = 0;
421      dme   = 0;
422      ice   = 0;
423      dce   = 0;
424      iee   = 0;
425      tee   = 0;
426      sm    = 1;
427    };
428  public : Tspr_t read  (void  )
429    {
430      return ((cid   << 28) |
431              (sumra << 16) |
432              (fo    << 15) |
433              (eph   << 14) |
434              (dsx   << 13) |
435              (ove   << 12) |
436              (ov    << 11) |
437              (cy    << 10) |
438              (f     <<  9) |
439              (ce    <<  8) |
440              (lee   <<  7) |
441              (ime   <<  6) |
442              (dme   <<  5) |
443              (ice   <<  4) |
444              (dce   <<  3) |
445              (iee   <<  2) |
446              (tee   <<  1) |
447              (sm    <<  0) );
448    };
449  public : void   write (Tspr_t x) 
450    {
451      cid   = x >> 28;
452      sumra = x >> 16;
453      eph   = x >> 14;
454      dsx   = x >> 13;
455      ove   = x >> 12;
456      ov    = x >> 11;
457      cy    = x >> 10;
458      f     = x >>  9;
459      ce    = x >>  8;
460      lee   = x >>  7;
461      ime   = x >>  6;
462      dme   = x >>  5;
463      ice   = x >>  4;
464      dce   = x >>  3;
465      iee   = x >>  2;
466      tee   = x >>  1;
467      sm    = x >>  0;
468    };
469  };
470
471  //----------------------------------------------------------
472  // [0][18] PPC
473  //----------------------------------------------------------
474  class PPC : public GENERIC
475  {
476  public : PPC (uint32_t num_front_end=0, uint32_t num_context=0,const Parameters * param=NULL) : GENERIC (num_front_end,num_context,param) {};
477  };
478
479  //----------------------------------------------------------
480  // [0][19] CID
481  //----------------------------------------------------------
482  class CID : public GENERIC
483  {
484  public : CID (uint32_t num_front_end=0, uint32_t num_context=0,const Parameters * param=NULL) : GENERIC (num_front_end,num_context,param) {};
485  };
486
487  //----------------------------------------------------------
488  // [0][20] FPCSR
489  //----------------------------------------------------------
490  class FPCSR : public morpheo::behavioural::SPR
491  {
492  public : const Tspr_t  _res  : 20;
493  public :       Tspr_t   dzf  :  1;
494  public :       Tspr_t   inf  :  1;
495  public :       Tspr_t   ivf  :  1;
496  public :       Tspr_t   ixf  :  1;
497  public :       Tspr_t   zf   :  1;
498  public :       Tspr_t   qnf  :  1;
499  public :       Tspr_t   snf  :  1;
500  public :       Tspr_t   unf  :  1;
501  public :       Tspr_t   ovf  :  1;
502  public :       Tspr_t   rm   :  2;
503  public :       Tspr_t   fpee :  1;
504
505  public :        FPCSR (uint32_t num_front_end=0, uint32_t num_context=0,const Parameters * param=NULL): 
506    _res (0)
507    {};
508  public : void   reset (void  ) 
509    {
510      dzf  = 0;
511      inf  = 0;
512      ivf  = 0;
513      ixf  = 0;
514      zf   = 0;
515      qnf  = 0;
516      snf  = 0;
517      unf  = 0;
518      ovf  = 0;
519      rm   = 0;
520      fpee = 0;
521    };
522  public : Tspr_t read  (void  )
523    {
524      return ((dzf  << 11) |
525              (inf  << 10) |
526              (ivf  <<  9) |
527              (ixf  <<  8) |
528              (zf   <<  7) |
529              (qnf  <<  6) |
530              (snf  <<  5) |
531              (unf  <<  4) |
532              (ovf  <<  3) |
533              (rm   <<  1) |
534              (fpee <<  0) );
535    };
536  public : void   write (Tspr_t x) 
537    {
538      dzf  = x >> 11;
539      inf  = x >> 10;
540      ivf  = x >>  9;
541      ixf  = x >>  8;
542      zf   = x >>  7;
543      qnf  = x >>  6;
544      snf  = x >>  5;
545      unf  = x >>  4;
546      ovf  = x >>  3;
547      rm   = x >>  1;
548      fpee = x >>  0;
549    };
550  };
551
552  //----------------------------------------------------------
553  // [0][32] EPCR
554  //----------------------------------------------------------
555  class EPCR : public GENERIC
556  {
557  public : EPCR (uint32_t num_front_end=0, uint32_t num_context=0,const Parameters * param=NULL) : GENERIC (num_front_end,num_context,param) {};
558  };
559
560  //----------------------------------------------------------
561  // [0][48] EEAR
562  //----------------------------------------------------------
563  class EEAR : public GENERIC
564  {
565  public : EEAR (uint32_t num_front_end=0, uint32_t num_context=0,const Parameters * param=NULL) : GENERIC (num_front_end,num_context,param) {};
566  };
567
568  //----------------------------------------------------------
569  // [0][64] ESR
570  //----------------------------------------------------------
571  class ESR : public GENERIC
572  {
573  public : ESR (uint32_t num_front_end=0, uint32_t num_context=0,const Parameters * param=NULL) : GENERIC (num_front_end,num_context,param) {};
574  };
575
576  //----------------------------------------------------------
577  // [0][1024] GPR
578  //----------------------------------------------------------
579  class GPR : public GENERIC
580  {
581  public : GPR (uint32_t num_front_end=0, uint32_t num_context=0,const Parameters * param=NULL) : GENERIC (num_front_end,num_context,param) {};
582  };
583
584  //----------------------------------------------------------
585  // [3][0] DCCR
586  //----------------------------------------------------------
587  class DCCR : public morpheo::behavioural::SPR
588  {
589  public : const Tspr_t  _res : 24;
590  public :       Tspr_t   ew  :  8;
591
592  public :        DCCR (uint32_t num_front_end=0, uint32_t num_context=0,const Parameters * param=NULL): 
593   _res (0),
594    ew  (0)
595    {};
596  public : void   reset (void  ) {};
597  public : Tspr_t read  (void  )
598    {
599      return ((ew << 0));
600    };
601  public : void   write (Tspr_t x) 
602    {
603      ew = (x >> 0);
604    };
605  };
606
607  //----------------------------------------------------------
608  // [3][1] DCBPR
609  //----------------------------------------------------------
610  class DCBPR : public GENERIC
611  {
612  public : DCBPR (uint32_t num_front_end=0, uint32_t num_context=0,const Parameters * param=NULL) : GENERIC (num_front_end,num_context,param) {};
613  };
614
615  //----------------------------------------------------------
616  // [3][2] DCBFR
617  //----------------------------------------------------------
618  class DCBFR : public GENERIC
619  {
620  public : DCBFR (uint32_t num_front_end=0, uint32_t num_context=0,const Parameters * param=NULL) : GENERIC (num_front_end,num_context,param) {};
621  };
622
623  //----------------------------------------------------------
624  // [3][3] DCBIR
625  //----------------------------------------------------------
626  class DCBIR : public GENERIC
627  {
628  public : DCBIR (uint32_t num_front_end=0, uint32_t num_context=0,const Parameters * param=NULL) : GENERIC (num_front_end,num_context,param) {};
629  };
630
631  //----------------------------------------------------------
632  // [3][4] DCBWR
633  //----------------------------------------------------------
634  class DCBWR : public GENERIC
635  {
636  public : DCBWR (uint32_t num_front_end=0, uint32_t num_context=0,const Parameters * param=NULL) : GENERIC (num_front_end,num_context,param) {};
637  };
638
639  //----------------------------------------------------------
640  // [3][5] DCBLR
641  //----------------------------------------------------------
642  class DCBLR : public GENERIC
643  {
644  public : DCBLR (uint32_t num_front_end=0, uint32_t num_context=0,const Parameters * param=NULL) : GENERIC (num_front_end,num_context,param) {};
645  };
646
647//   //----------------------------------------------------------
648//   // [0][1] UPR
649//   //----------------------------------------------------------
650//   class UPR : public morpheo::behavioural::SPR
651//   {
652//   public :        UPR (void): {};
653//   public : void   reset (void  ) {};
654//   public : Tspr_t read  (void  )
655//     {
656//       return ();
657//     };
658//   public : void   write (Tspr_t x) {};
659//   };
660
661
662}; // end namespace special_register_unit
663}; // end namespace ooo_engine
664}; // end namespace multi_ooo_engine
665}; // end namespace core
666
667}; // end namespace behavioural
668}; // end namespace morpheo             
669
670#endif
Note: See TracBrowser for help on using the repository browser.