source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Priority/src/Priority_allocation.cpp @ 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: 2.9 KB
Line 
1/*
2 * $Id: Priority_allocation.cpp 88 2008-12-10 18:31:39Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Generic/Priority/include/Priority.h"
9
10namespace morpheo                    {
11namespace behavioural {
12namespace generic {
13namespace priority {
14 
15#undef  FUNCTION
16#define FUNCTION "Priority::allocation"
17  void Priority::allocation (void)
18  {
19    log_begin(Priority,FUNCTION);
20   
21    if (_nb_grp == 1)
22      {
23        reset_priority      = &morpheo::behavioural::generic::priority::Priority::reset_priority_none     ;
24        transition_priority = &morpheo::behavioural::generic::priority::Priority::transition_priority_none;
25      }
26    else
27      switch (_priority)
28        {
29        case PRIORITY_STATIC      : {reset_priority      = &morpheo::behavioural::generic::priority::Priority::reset_priority_static          ;
30                                     transition_priority = &morpheo::behavioural::generic::priority::Priority::transition_priority_static     ;
31                                     break;}
32        case PRIORITY_ROUND_ROBIN : {reset_priority      = &morpheo::behavioural::generic::priority::Priority::reset_priority_round_robin     ;
33                                     transition_priority = &morpheo::behavioural::generic::priority::Priority::transition_priority_round_robin;
34                                     break;}
35        default: {throw ERRORMORPHEO(FUNCTION,_("Unknow Priority scheme.\n"));}
36        }
37
38    if ((_max_nb_elt == 1) and (_nb_grp_select == 1))
39      {
40        reset_load_balancing      = &morpheo::behavioural::generic::priority::Priority::reset_load_balancing_none;
41        transition_load_balancing = &morpheo::behavioural::generic::priority::Priority::transition_load_balancing_none;
42      }
43    else
44      {
45        if (_max_nb_elt == 1)
46          {
47            reset_load_balancing      = &morpheo::behavioural::generic::priority::Priority::reset_load_balancing_priority_only;
48            transition_load_balancing = &morpheo::behavioural::generic::priority::Priority::transition_load_balancing_priority_only;
49          }
50        else
51          switch (_load_balancing)
52            {
53            case LOAD_BALANCING_BALANCE              : {reset_load_balancing      = &morpheo::behavioural::generic::priority::Priority::reset_load_balancing_balance                  ;
54                                                        transition_load_balancing = &morpheo::behavioural::generic::priority::Priority::transition_load_balancing_balance             ;
55                                                        break;}
56            case LOAD_BALANCING_MAXIMUM_FOR_PRIORITY : {reset_load_balancing      = &morpheo::behavioural::generic::priority::Priority::reset_load_balancing_maximum_for_priority     ;
57                                                        transition_load_balancing = &morpheo::behavioural::generic::priority::Priority::transition_load_balancing_maximum_for_priority;
58                                                        break;}
59            default: {throw ERRORMORPHEO(FUNCTION,_("Unknow Load Balancing scheme.\n"));}
60            }
61      }
62   
63
64    log_end(Priority,FUNCTION);
65  };
66
67}; // end namespace priority
68}; // end namespace generic
69}; // end namespace behavioural
70}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.