Changes in / [30:20]


Ignore:
Location:
/trunk
Files:
19 added
85 deleted
92 edited

Legend:

Unmodified
Added
Removed
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/Makefile

    r30 r20  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_COMPONENT                   = .
    11 include                         $(DIR_COMPONENT)/Makefile.defs
     10DIR_MORPHEO                     = ../../..
    1211
    1312#-----[ Library ]------------------------------------------
     
    2019                                @$(MAKE) all_component
    2120
    22 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     21include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2322include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2423include                         $(DIR_MORPHEO)/Behavioural/Makefile.Component
    25 
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest/Makefile

    r30 r20  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_COMPONENT                   = ..
    11 include                         $(DIR_COMPONENT)/Makefile.defs
     10DIR_MORPHEO                     = ../../../..
    1211
    1312LIBRARY                         = $(Counter_LIBRARY)
     
    2524
    2625include                         ../Makefile.deps
    27 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     26include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2827include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2928include                         $(DIR_MORPHEO)/Behavioural/Makefile.Selftest
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Group/Makefile

    r30 r20  
    1818                                @$(MAKE) all_component
    1919
    20 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     20include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2121include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2222include                         $(DIR_MORPHEO)/Behavioural/Makefile.Component
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/Makefile

    r30 r20  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_COMPONENT                   = .
    11 include                         $(DIR_COMPONENT)/Makefile.defs
     10DIR_MORPHEO                     = ../../../..
    1211
    1312#-----[ Library ]------------------------------------------
     
    2019                                @$(MAKE) all_component
    2120
    22 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     21include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2322include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2423include                         $(DIR_MORPHEO)/Behavioural/Makefile.Component
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/Makefile

    r30 r20  
    2424
    2525include                         ../Makefile.deps
    26 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     26include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2727include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2828include                         $(DIR_MORPHEO)/Behavioural/Makefile.Selftest
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/configuration.cfg

    r30 r20  
    11RegisterFile_Monolithic
    2 2       8       *2      # nb_port_read
     21       8       *2      # nb_port_read
    331       4       *2      # nb_port_write
    4 32      256     *2      # nb_word
     464      256     *2      # nb_word
    5532      32      *2      # size_word
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/mkf.info

    r30 r20  
    11
    2 # RegisterFile_Monolithic_0
    3 target_dep      all     RegisterFile_Monolithic_0.ngc
    4 target_dep      RegisterFile_Monolithic_0.ngc   RegisterFile_Monolithic_0.prj
    5 target_dep      RegisterFile_Monolithic_0.prj   RegisterFile_Monolithic_0_Pack.vhdl RegisterFile_Monolithic_0.vhdl
     2# RegisterFile_34
     3target_dep      all     RegisterFile_34.ngc
     4target_dep      RegisterFile_34.ngc     RegisterFile_34.prj
     5target_dep      RegisterFile_34.prj     RegisterFile_34_Pack.vhdl RegisterFile_34.vhdl
    66
    7 # RegisterFile_Monolithic_10
    8 target_dep      all     RegisterFile_Monolithic_10.ngc
    9 target_dep      RegisterFile_Monolithic_10.ngc  RegisterFile_Monolithic_10.prj
    10 target_dep      RegisterFile_Monolithic_10.prj  RegisterFile_Monolithic_10_Pack.vhdl RegisterFile_Monolithic_10.vhdl
     7# RegisterFile_35
     8target_dep      all     RegisterFile_35.ngc
     9target_dep      RegisterFile_35.ngc     RegisterFile_35.prj
     10target_dep      RegisterFile_35.prj     RegisterFile_35_Pack.vhdl RegisterFile_35.vhdl
    1111
    12 # RegisterFile_Monolithic_11
    13 target_dep      all     RegisterFile_Monolithic_11.ngc
    14 target_dep      RegisterFile_Monolithic_11.ngc  RegisterFile_Monolithic_11.prj
    15 target_dep      RegisterFile_Monolithic_11.prj  RegisterFile_Monolithic_11_Pack.vhdl RegisterFile_Monolithic_11.vhdl
    16 
    17 # RegisterFile_Monolithic_12
    18 target_dep      all     RegisterFile_Monolithic_12.ngc
    19 target_dep      RegisterFile_Monolithic_12.ngc  RegisterFile_Monolithic_12.prj
    20 target_dep      RegisterFile_Monolithic_12.prj  RegisterFile_Monolithic_12_Pack.vhdl RegisterFile_Monolithic_12.vhdl
    21 
    22 # RegisterFile_Monolithic_13
    23 target_dep      all     RegisterFile_Monolithic_13.ngc
    24 target_dep      RegisterFile_Monolithic_13.ngc  RegisterFile_Monolithic_13.prj
    25 target_dep      RegisterFile_Monolithic_13.prj  RegisterFile_Monolithic_13_Pack.vhdl RegisterFile_Monolithic_13.vhdl
    26 
    27 # RegisterFile_Monolithic_14
    28 target_dep      all     RegisterFile_Monolithic_14.ngc
    29 target_dep      RegisterFile_Monolithic_14.ngc  RegisterFile_Monolithic_14.prj
    30 target_dep      RegisterFile_Monolithic_14.prj  RegisterFile_Monolithic_14_Pack.vhdl RegisterFile_Monolithic_14.vhdl
    31 
    32 # RegisterFile_Monolithic_15
    33 target_dep      all     RegisterFile_Monolithic_15.ngc
    34 target_dep      RegisterFile_Monolithic_15.ngc  RegisterFile_Monolithic_15.prj
    35 target_dep      RegisterFile_Monolithic_15.prj  RegisterFile_Monolithic_15_Pack.vhdl RegisterFile_Monolithic_15.vhdl
    36 
    37 # RegisterFile_Monolithic_16
    38 target_dep      all     RegisterFile_Monolithic_16.ngc
    39 target_dep      RegisterFile_Monolithic_16.ngc  RegisterFile_Monolithic_16.prj
    40 target_dep      RegisterFile_Monolithic_16.prj  RegisterFile_Monolithic_16_Pack.vhdl RegisterFile_Monolithic_16.vhdl
    41 
    42 # RegisterFile_Monolithic_17
    43 target_dep      all     RegisterFile_Monolithic_17.ngc
    44 target_dep      RegisterFile_Monolithic_17.ngc  RegisterFile_Monolithic_17.prj
    45 target_dep      RegisterFile_Monolithic_17.prj  RegisterFile_Monolithic_17_Pack.vhdl RegisterFile_Monolithic_17.vhdl
    46 
    47 # RegisterFile_Monolithic_18
    48 target_dep      all     RegisterFile_Monolithic_18.ngc
    49 target_dep      RegisterFile_Monolithic_18.ngc  RegisterFile_Monolithic_18.prj
    50 target_dep      RegisterFile_Monolithic_18.prj  RegisterFile_Monolithic_18_Pack.vhdl RegisterFile_Monolithic_18.vhdl
    51 
    52 # RegisterFile_Monolithic_19
    53 target_dep      all     RegisterFile_Monolithic_19.ngc
    54 target_dep      RegisterFile_Monolithic_19.ngc  RegisterFile_Monolithic_19.prj
    55 target_dep      RegisterFile_Monolithic_19.prj  RegisterFile_Monolithic_19_Pack.vhdl RegisterFile_Monolithic_19.vhdl
    56 
    57 # RegisterFile_Monolithic_1
    58 target_dep      all     RegisterFile_Monolithic_1.ngc
    59 target_dep      RegisterFile_Monolithic_1.ngc   RegisterFile_Monolithic_1.prj
    60 target_dep      RegisterFile_Monolithic_1.prj   RegisterFile_Monolithic_10_Pack.vhdl RegisterFile_Monolithic_10.vhdl RegisterFile_Monolithic_11_Pack.vhdl RegisterFile_Monolithic_11.vhdl RegisterFile_Monolithic_12_Pack.vhdl RegisterFile_Monolithic_12.vhdl RegisterFile_Monolithic_13_Pack.vhdl RegisterFile_Monolithic_13.vhdl RegisterFile_Monolithic_14_Pack.vhdl RegisterFile_Monolithic_14.vhdl RegisterFile_Monolithic_15_Pack.vhdl RegisterFile_Monolithic_15.vhdl RegisterFile_Monolithic_16_Pack.vhdl RegisterFile_Monolithic_16.vhdl RegisterFile_Monolithic_17_Pack.vhdl RegisterFile_Monolithic_17.vhdl RegisterFile_Monolithic_18_Pack.vhdl RegisterFile_Monolithic_18.vhdl RegisterFile_Monolithic_19_Pack.vhdl RegisterFile_Monolithic_19.vhdl RegisterFile_Monolithic_1_Pack.vhdl RegisterFile_Monolithic_1.vhdl
    61 
    62 # RegisterFile_Monolithic_20
    63 target_dep      all     RegisterFile_Monolithic_20.ngc
    64 target_dep      RegisterFile_Monolithic_20.ngc  RegisterFile_Monolithic_20.prj
    65 target_dep      RegisterFile_Monolithic_20.prj  RegisterFile_Monolithic_20_Pack.vhdl RegisterFile_Monolithic_20.vhdl
    66 
    67 # RegisterFile_Monolithic_21
    68 target_dep      all     RegisterFile_Monolithic_21.ngc
    69 target_dep      RegisterFile_Monolithic_21.ngc  RegisterFile_Monolithic_21.prj
    70 target_dep      RegisterFile_Monolithic_21.prj  RegisterFile_Monolithic_21_Pack.vhdl RegisterFile_Monolithic_21.vhdl
    71 
    72 # RegisterFile_Monolithic_22
    73 target_dep      all     RegisterFile_Monolithic_22.ngc
    74 target_dep      RegisterFile_Monolithic_22.ngc  RegisterFile_Monolithic_22.prj
    75 target_dep      RegisterFile_Monolithic_22.prj  RegisterFile_Monolithic_22_Pack.vhdl RegisterFile_Monolithic_22.vhdl
    76 
    77 # RegisterFile_Monolithic_23
    78 target_dep      all     RegisterFile_Monolithic_23.ngc
    79 target_dep      RegisterFile_Monolithic_23.ngc  RegisterFile_Monolithic_23.prj
    80 target_dep      RegisterFile_Monolithic_23.prj  RegisterFile_Monolithic_23_Pack.vhdl RegisterFile_Monolithic_23.vhdl
    81 
    82 # RegisterFile_Monolithic_24
    83 target_dep      all     RegisterFile_Monolithic_24.ngc
    84 target_dep      RegisterFile_Monolithic_24.ngc  RegisterFile_Monolithic_24.prj
    85 target_dep      RegisterFile_Monolithic_24.prj  RegisterFile_Monolithic_24_Pack.vhdl RegisterFile_Monolithic_24.vhdl
    86 
    87 # RegisterFile_Monolithic_25
    88 target_dep      all     RegisterFile_Monolithic_25.ngc
    89 target_dep      RegisterFile_Monolithic_25.ngc  RegisterFile_Monolithic_25.prj
    90 target_dep      RegisterFile_Monolithic_25.prj  RegisterFile_Monolithic_25_Pack.vhdl RegisterFile_Monolithic_25.vhdl
    91 
    92 # RegisterFile_Monolithic_26
    93 target_dep      all     RegisterFile_Monolithic_26.ngc
    94 target_dep      RegisterFile_Monolithic_26.ngc  RegisterFile_Monolithic_26.prj
    95 target_dep      RegisterFile_Monolithic_26.prj  RegisterFile_Monolithic_26_Pack.vhdl RegisterFile_Monolithic_26.vhdl
    96 
    97 # RegisterFile_Monolithic_27
    98 target_dep      all     RegisterFile_Monolithic_27.ngc
    99 target_dep      RegisterFile_Monolithic_27.ngc  RegisterFile_Monolithic_27.prj
    100 target_dep      RegisterFile_Monolithic_27.prj  RegisterFile_Monolithic_27_Pack.vhdl RegisterFile_Monolithic_27.vhdl
    101 
    102 # RegisterFile_Monolithic_28
    103 target_dep      all     RegisterFile_Monolithic_28.ngc
    104 target_dep      RegisterFile_Monolithic_28.ngc  RegisterFile_Monolithic_28.prj
    105 target_dep      RegisterFile_Monolithic_28.prj  RegisterFile_Monolithic_28_Pack.vhdl RegisterFile_Monolithic_28.vhdl
    106 
    107 # RegisterFile_Monolithic_29
    108 target_dep      all     RegisterFile_Monolithic_29.ngc
    109 target_dep      RegisterFile_Monolithic_29.ngc  RegisterFile_Monolithic_29.prj
    110 target_dep      RegisterFile_Monolithic_29.prj  RegisterFile_Monolithic_29_Pack.vhdl RegisterFile_Monolithic_29.vhdl
    111 
    112 # RegisterFile_Monolithic_2
    113 target_dep      all     RegisterFile_Monolithic_2.ngc
    114 target_dep      RegisterFile_Monolithic_2.ngc   RegisterFile_Monolithic_2.prj
    115 target_dep      RegisterFile_Monolithic_2.prj   RegisterFile_Monolithic_20_Pack.vhdl RegisterFile_Monolithic_20.vhdl RegisterFile_Monolithic_21_Pack.vhdl RegisterFile_Monolithic_21.vhdl RegisterFile_Monolithic_22_Pack.vhdl RegisterFile_Monolithic_22.vhdl RegisterFile_Monolithic_23_Pack.vhdl RegisterFile_Monolithic_23.vhdl RegisterFile_Monolithic_24_Pack.vhdl RegisterFile_Monolithic_24.vhdl RegisterFile_Monolithic_25_Pack.vhdl RegisterFile_Monolithic_25.vhdl RegisterFile_Monolithic_26_Pack.vhdl RegisterFile_Monolithic_26.vhdl RegisterFile_Monolithic_27_Pack.vhdl RegisterFile_Monolithic_27.vhdl RegisterFile_Monolithic_28_Pack.vhdl RegisterFile_Monolithic_28.vhdl RegisterFile_Monolithic_29_Pack.vhdl RegisterFile_Monolithic_29.vhdl RegisterFile_Monolithic_2_Pack.vhdl RegisterFile_Monolithic_2.vhdl
    116 
    117 # RegisterFile_Monolithic_30
    118 target_dep      all     RegisterFile_Monolithic_30.ngc
    119 target_dep      RegisterFile_Monolithic_30.ngc  RegisterFile_Monolithic_30.prj
    120 target_dep      RegisterFile_Monolithic_30.prj  RegisterFile_Monolithic_30_Pack.vhdl RegisterFile_Monolithic_30.vhdl
    121 
    122 # RegisterFile_Monolithic_31
    123 target_dep      all     RegisterFile_Monolithic_31.ngc
    124 target_dep      RegisterFile_Monolithic_31.ngc  RegisterFile_Monolithic_31.prj
    125 target_dep      RegisterFile_Monolithic_31.prj  RegisterFile_Monolithic_31_Pack.vhdl RegisterFile_Monolithic_31.vhdl
    126 
    127 # RegisterFile_Monolithic_32
    128 target_dep      all     RegisterFile_Monolithic_32.ngc
    129 target_dep      RegisterFile_Monolithic_32.ngc  RegisterFile_Monolithic_32.prj
    130 target_dep      RegisterFile_Monolithic_32.prj  RegisterFile_Monolithic_32_Pack.vhdl RegisterFile_Monolithic_32.vhdl
    131 
    132 # RegisterFile_Monolithic_33
    133 target_dep      all     RegisterFile_Monolithic_33.ngc
    134 target_dep      RegisterFile_Monolithic_33.ngc  RegisterFile_Monolithic_33.prj
    135 target_dep      RegisterFile_Monolithic_33.prj  RegisterFile_Monolithic_33_Pack.vhdl RegisterFile_Monolithic_33.vhdl
    136 
    137 # RegisterFile_Monolithic_34
    138 target_dep      all     RegisterFile_Monolithic_34.ngc
    139 target_dep      RegisterFile_Monolithic_34.ngc  RegisterFile_Monolithic_34.prj
    140 target_dep      RegisterFile_Monolithic_34.prj  RegisterFile_Monolithic_34_Pack.vhdl RegisterFile_Monolithic_34.vhdl
    141 
    142 # RegisterFile_Monolithic_35
    143 target_dep      all     RegisterFile_Monolithic_35.ngc
    144 target_dep      RegisterFile_Monolithic_35.ngc  RegisterFile_Monolithic_35.prj
    145 target_dep      RegisterFile_Monolithic_35.prj  RegisterFile_Monolithic_35_Pack.vhdl RegisterFile_Monolithic_35.vhdl
    146 
    147 # RegisterFile_Monolithic_3
    148 target_dep      all     RegisterFile_Monolithic_3.ngc
    149 target_dep      RegisterFile_Monolithic_3.ngc   RegisterFile_Monolithic_3.prj
    150 target_dep      RegisterFile_Monolithic_3.prj   RegisterFile_Monolithic_30_Pack.vhdl RegisterFile_Monolithic_30.vhdl RegisterFile_Monolithic_31_Pack.vhdl RegisterFile_Monolithic_31.vhdl RegisterFile_Monolithic_32_Pack.vhdl RegisterFile_Monolithic_32.vhdl RegisterFile_Monolithic_33_Pack.vhdl RegisterFile_Monolithic_33.vhdl RegisterFile_Monolithic_34_Pack.vhdl RegisterFile_Monolithic_34.vhdl RegisterFile_Monolithic_35_Pack.vhdl RegisterFile_Monolithic_35.vhdl RegisterFile_Monolithic_3_Pack.vhdl RegisterFile_Monolithic_3.vhdl
    151 
    152 # RegisterFile_Monolithic_4
    153 target_dep      all     RegisterFile_Monolithic_4.ngc
    154 target_dep      RegisterFile_Monolithic_4.ngc   RegisterFile_Monolithic_4.prj
    155 target_dep      RegisterFile_Monolithic_4.prj   RegisterFile_Monolithic_4_Pack.vhdl RegisterFile_Monolithic_4.vhdl
    156 
    157 # RegisterFile_Monolithic_5
    158 target_dep      all     RegisterFile_Monolithic_5.ngc
    159 target_dep      RegisterFile_Monolithic_5.ngc   RegisterFile_Monolithic_5.prj
    160 target_dep      RegisterFile_Monolithic_5.prj   RegisterFile_Monolithic_5_Pack.vhdl RegisterFile_Monolithic_5.vhdl
    161 
    162 # RegisterFile_Monolithic_6
    163 target_dep      all     RegisterFile_Monolithic_6.ngc
    164 target_dep      RegisterFile_Monolithic_6.ngc   RegisterFile_Monolithic_6.prj
    165 target_dep      RegisterFile_Monolithic_6.prj   RegisterFile_Monolithic_6_Pack.vhdl RegisterFile_Monolithic_6.vhdl
    166 
    167 # RegisterFile_Monolithic_7
    168 target_dep      all     RegisterFile_Monolithic_7.ngc
    169 target_dep      RegisterFile_Monolithic_7.ngc   RegisterFile_Monolithic_7.prj
    170 target_dep      RegisterFile_Monolithic_7.prj   RegisterFile_Monolithic_7_Pack.vhdl RegisterFile_Monolithic_7.vhdl
    171 
    172 # RegisterFile_Monolithic_8
    173 target_dep      all     RegisterFile_Monolithic_8.ngc
    174 target_dep      RegisterFile_Monolithic_8.ngc   RegisterFile_Monolithic_8.prj
    175 target_dep      RegisterFile_Monolithic_8.prj   RegisterFile_Monolithic_8_Pack.vhdl RegisterFile_Monolithic_8.vhdl
    176 
    177 # RegisterFile_Monolithic_9
    178 target_dep      all     RegisterFile_Monolithic_9.ngc
    179 target_dep      RegisterFile_Monolithic_9.ngc   RegisterFile_Monolithic_9.prj
    180 target_dep      RegisterFile_Monolithic_9.prj   RegisterFile_Monolithic_9_Pack.vhdl RegisterFile_Monolithic_9.vhdl
    181 
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/Makefile

    r30 r20  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_COMPONENT                   = .
    11 include                         $(DIR_COMPONENT)/Makefile.defs
     10DIR_MORPHEO                     = ../../../..
    1211
    1312#-----[ Library ]------------------------------------------
     
    2019                                @$(MAKE) all_component
    2120
    22 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     21include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2322include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2423include                         $(DIR_MORPHEO)/Behavioural/Makefile.Component
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/Makefile

    r30 r20  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_COMPONENT                   = .
    11 include                         $(DIR_COMPONENT)/Makefile.defs
     10DIR_MORPHEO                     = ../../../../..
    1211
    1312#-----[ Library ]------------------------------------------
     
    2019                                @$(MAKE) all_component
    2120
    22 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     21include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2322include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2423include                         $(DIR_MORPHEO)/Behavioural/Makefile.Component
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/Makefile

    r30 r20  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_COMPONENT                   = ..
    11 include                         $(DIR_COMPONENT)/Makefile.defs
     10DIR_MORPHEO                     = ../../../../../..
    1211
    1312LIBRARY                         = $(RegisterFile_Multi_Banked_Glue_LIBRARY)
     
    2423library_clean                   : RegisterFile_Multi_Banked_Glue_library_clean
    2524
    26 include                         $(DIR_COMPONENT)/Makefile.deps
    27 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     25include                         ../Makefile.deps
     26include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2827include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2928include                         $(DIR_MORPHEO)/Behavioural/Makefile.Selftest
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/configuration.cfg

    r30 r20  
    11RegisterFile_Multi_Banked_Glue
    2 11      11      *2      # nb_port_read
     24       4       *2      # nb_port_read
    334       4       *2      # nb_port_write
    448       8       +1      # size_address
    5532      32      *2      # size_word
    6 4       4       *2      # nb_bank
    7 3       3       *2      # nb_port_read_by_bank
     62       2       *2      # nb_bank
     72       2       *2      # nb_port_read_by_bank
    882       2       *2      # nb_port_write_by_bank
    9 0       0       +1      # crossbar
     90       1       +1      # crossbar
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/src/test.cpp

    r30 r20  
    99#define NB_ITERATION 16
    1010
    11 #define TEXT(str)  do {cout << "<" << name << "> : " << str << endl;} while (0)
    1211#define LABEL(str) do {cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} " << str << endl; _RegisterFile_Multi_Banked_Glue->vhdl_testbench_label(str);} while (0)
    1312
     
    1918           morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::Parameters _param)
    2019{
    21   TEXT("Simulation SystemC");
     20  cout << "<" << name << "> : Simulation SystemC" << endl;
    2221
    2322  RegisterFile_Multi_Banked_Glue * _RegisterFile_Multi_Banked_Glue = new RegisterFile_Multi_Banked_Glue (name.c_str(),
     
    193192   ********************************************************/
    194193 
    195    TEXT("Instanciation of _RegisterFile_Multi_Banked_Glue");
     194  cout << "<" << name << "> Instanciation of _RegisterFile_Multi_Banked_Glue" << endl;
    196195 
    197196  (*(_RegisterFile_Multi_Banked_Glue->in_CLOCK))        (*(CLOCK));
     
    248247
    249248
    250    TEXT("Start Simulation ............");
     249  cout << "<" << name << "> Start Simulation ............" << endl;
    251250 
    252251  /********************************************************
     
    266265
    267266  uint32_t   read_in_num_bank [_param._nb_port_read]; // Number of bank
    268   Tcontrol_t read_is_busy     [_param._nb_port_read];
    269   bool       read_out_find    [_param._nb_bank][_param._nb_port_read_by_bank]; 
    270   uint32_t   read_out_port    [_param._nb_bank][_param._nb_port_read_by_bank]; 
    271 
     267//Tcontrol_t read_in_valid    [_param._nb_port_read];
    272268  Tcontrol_t read_in_ack      [_param._nb_port_read]; // to test
    273269  Tdata_t    read_in_data     [_param._nb_port_read]; // to test
    274270  Tcontrol_t read_out_val     [_param._nb_bank][_param._nb_port_read_by_bank]; 
     271  Tcontrol_t read_out_ack     [_param._nb_bank][_param._nb_port_read_by_bank]; 
    275272  Taddress_t read_out_address [_param._nb_bank][_param._nb_port_read_by_bank]; 
    276   Tcontrol_t read_select_val  [_param._nb_bank][_param._nb_port_read_by_bank][_param._nb_port_read];
     273  Tcontrol_t read_is_busy     [_param._nb_port_read];
     274  Tcontrol_t read_select_val  [_param._nb_bank][_param._nb_port_read        ];
     275  Tcontrol_t read_select_ack  [_param._nb_bank][_param._nb_port_read        ];
    277276
    278277  LABEL("Loop of Test");
     
    282281      LABEL("Iteration "+toString(iteration));
    283282     
    284       //LABEL("Test read_in");
     283      LABEL("Test read_in");
    285284     
    286285      // Write in interface "read_in"
     
    288287        {
    289288          read_in_num_bank  [i] =  rand() % _param._nb_bank;
    290           Tcontrol_t read_in_val = (rand() % 2) != 0;
     289          Tcontrol_t read_in_valid = (rand() % 2) != 0;
    291290
    292291          Taddress_t address    = (read_in_num_bank[i] << _param._shift_address) | (gen_mask<Taddress_t>(_param._size_address-_param._shift_address) & i);
    293292
    294           read_is_busy      [i] = (read_in_val == 0);   // invalid = busy
    295           read_in_ack       [i] = 0;                    // init
    296           read_in_data      [i] = 0;                    // init
    297           READ_IN_VAL       [i]->write(read_in_val);    // write signal
    298           READ_IN_ADDRESS   [i]->write(address);        // write signal
     293          read_is_busy      [i] = (read_in_valid == 0);
     294          read_in_ack       [i] = 0;
     295          read_in_data      [i] = 0;
     296          READ_IN_VAL       [i]->write(read_in_valid);
     297          READ_IN_ADDRESS   [i]->write(address);
     298
     299          for (uint32_t j=0; j<_param._nb_bank; j++)
     300            read_select_ack [j][i] = 0;
    299301        }
    300302
     303      for (uint32_t i=0; i<_param._nb_bank; i++)
     304        for (uint32_t j=0; j<_param._nb_port_read_by_bank; j++)
     305          {
     306            read_out_ack      [i][j] = (rand() % 2) != 0;
     307            READ_OUT_ACK      [i][j]->write(read_out_ack      [i][j]);
     308            READ_OUT_DATA     [i][j]->write((j<<1)|1); // (j<<1)|1 afin de n'avoir jamais 0
     309          }
     310     
    301311      // compute the good read_select
    302312      for (uint32_t i=0; i<_param._nb_bank; i++)
    303313        for (uint32_t j=0; j<_param._nb_port_read_by_bank; j++)
    304314          {
    305             Tcontrol_t read_out_ack = (rand() % 2) != 0;
    306             READ_OUT_ACK     [i][j]->write(read_out_ack);
    307             READ_OUT_DATA    [i][j]->write((j<<1)|1);            // (j<<1)|1 afin de n'avoir jamais 0
    308 
    309             read_out_find    [i][j] = false;
    310             read_out_port    [i][j] = 0;
    311 
    312             read_out_val     [i][j] = 0;
    313             read_out_address [i][j] = 0;
    314 
    315315            bool find = false; // have find a port_in to link with this port_out
    316316            for (uint32_t k=0; k<_param._nb_port_select_by_bank_read_port[j]; k++)
    317317              {
     318
    318319                uint32_t num_port; // number of port
    319320               
     
    322323                  num_port = k;
    323324                else
    324                   num_port = k*_param._nb_port_read_by_bank+j;
    325 
    326                 read_select_val [i][j][k] = read_out_ack and not read_is_busy [num_port] and (read_in_num_bank[num_port] == i); // select val if port is not busy and out accept a data
    327                 Tcontrol_t read_select_ack = 0;
    328 
    329                 // test a previous find
    330                 if (not ((read_out_ack == 0) || find))
     325                  num_port = _param._link_port_read [i];
     326
     327                read_select_val [i][num_port] = read_out_ack [i][j] && not read_is_busy [num_port];
     328               
     329                if ((read_out_ack [i][j] == 0) || find)
     330                  read_select_ack [i][num_port] = 0; // read_out is busy or already find
     331                else
    331332                  {
    332333                    // find a busy port?
    333                     find                      = read_select_val;
    334                     read_is_busy   [num_port]|= find; // port became busy if find
    335                     read_select_ack           = find; // ack if find
     334                    find = not read_is_busy [num_port];
     335                    read_is_busy       [num_port]|= find;
     336                    read_select_ack [i][num_port] = find;
    336337
    337338                    if (find)
    338339                      {
    339                         read_out_find    [i][j] = true;
    340                         read_out_port    [i][j] = num_port;
    341 
    342                         // know the good output
    343340                        read_in_ack      [num_port] = 1;
    344341                        read_in_data     [num_port] = ((j<<1)|1);
    345342                        read_out_val     [i][j]     = 1;
    346                         read_out_address [i][j]     = (i << _param._shift_address) | (gen_mask<Taddress_t>(_param._size_address-_param._shift_address) & num_port);
     343                        read_out_address [i][j]     = (read_in_num_bank[i] << _param._shift_address) | (gen_mask<Taddress_t>(_param._size_address-_param._shift_address) & i);
    347344                      }
    348345                  }
    349346               
    350                 READ_SELECT_ACK [i][j][k]->write(read_select_ack);
     347                READ_SELECT_ACK [i][j][k]->write(read_select_ack [i][num_port]);
    351348              }
    352349          }
     
    355352      sc_start(1);
    356353
    357       // test output
    358 
    359       TEXT ("===== Test Output =====");
    360       for (uint32_t i=0; i<_param._nb_port_read; i++)
    361         {
    362           TEXT ("Read_in         [" << i << "]       : "
    363                 << READ_IN_VAL [i]->read() << ","
    364                 << read_in_ack [i]         << " - "
    365                 << "Reg[" << READ_IN_ADDRESS [i]->read() << "] -> "
    366                 << read_in_data [i] << " "
    367                 << "{bank : " << read_in_num_bank[i] << "}"
    368                 );
    369 
    370           TEST (Tcontrol_t, read_in_ack  [i], READ_IN_ACK  [i]->read());
    371           if (READ_IN_VAL [i]->read() and READ_IN_ACK [i]->read())
    372           TEST (Tdata_t   , read_in_data [i], READ_IN_DATA [i]->read());
    373         }
    374 
    375       cout << endl;
    376       for (uint32_t i=0; i<_param._nb_bank; i++)
    377         for (uint32_t j=0; j<_param._nb_port_read_by_bank; j++)
    378           {
    379             TEXT ("Read_out        [" << i << "][" << j << "]    : "
    380                   << read_out_val [i][j]         << ","
    381                   << READ_OUT_ACK [i][j]->read() << " - "
    382                   << "Reg[" << read_out_address [i][j] << "] -> "
    383                   << READ_OUT_DATA [i][j]->read() << " - "
    384                   << "[" << read_out_find [i][j]<< " , "
    385                   << read_out_port    [i][j] << "]"               
    386                   );
    387 
    388             TEST (Tcontrol_t, read_out_val     [i][j], READ_OUT_VAL     [i][j]->read());
    389             if (READ_OUT_VAL [i][j]->read() and READ_OUT_ACK [i][j]->read())
    390             TEST (Taddress_t, read_out_address [i][j], READ_OUT_ADDRESS [i][j]->read());
    391 
    392             for (uint32_t k=0; k<_param._nb_port_select_by_bank_read_port[j]; k++)
    393               {
    394                 uint32_t num_port; // number of port
    395                
    396                 // compute the good number of port
    397                 if (_param._crossbar == FULL_CROSSBAR)
    398                   num_port = k;
    399                 else
    400                   num_port = k*_param._nb_port_read_by_bank+j;
    401                
    402                 TEXT (" * Read_select  [" << i << "][" << j << "][" << k << "] : "
    403                       << read_select_val [i][j][k]         << ","
    404                       << READ_SELECT_ACK [i][j][k]->read() << " - "
    405                       << "link with read_in[" << num_port << "]"
    406                       );
    407                
    408                 TEST (Tcontrol_t, read_select_val  [i][j][k], READ_SELECT_VAL  [i][j][k]->read());
    409               }
    410            
    411            
    412            
    413           }
    414 
    415     }
    416 
    417   sc_start(0);
     354//       // lot of test
     355//   public    : SC_OUT(Tcontrol_t)           ** out_READ_IN_ACK       ;
     356//   public    : SC_OUT(Tdata_t   )           ** out_READ_IN_DATA      ;
     357
     358//   public    : SC_OUT(Tcontrol_t)         **** out_READ_SELECT_VAL   ;
     359
     360//   public    : SC_OUT(Tcontrol_t)          *** out_READ_OUT_VAL      ;
     361//   public    : SC_OUT(Taddress_t)          *** out_READ_OUT_ADDRESS  ;
     362
     363    }
    418364
    419365  /********************************************************
     
    421367   ********************************************************/
    422368
    423   TEXT("............ Stop Simulation");
     369  cout << "<" << name << "> ............ Stop Simulation" << endl;
    424370
    425371  delete CLOCK;
    426372
    427   TEXT("delete read_in");
    428373  for (uint32_t i=0; i<_param._nb_port_read; i++)
    429374    {
    430 //       TEXT("1, i " << i);
    431375      delete READ_IN_VAL       [i];
    432 //       TEXT("2");
    433376      delete READ_IN_ACK       [i];
    434 //       TEXT("3");
    435377      delete READ_IN_ADDRESS   [i];
    436 //       TEXT("4");
    437378      delete READ_IN_DATA      [i];
    438 //       TEXT("5");
    439379    }
    440380                                                     
     
    444384  delete READ_IN_DATA   ;
    445385
    446   TEXT("delete read_select");
    447386   for (uint32_t i=0; i<_param._nb_bank; i++)
    448387     {
     
    463402   delete READ_SELECT_ACK;
    464403
    465   TEXT("delete read_out");
    466404   for (uint32_t i=0; i<_param._nb_bank; i++)
    467405     {
     
    485423  delete READ_OUT_DATA   ;
    486424
    487   TEXT("delete write_in");
    488425  for (uint32_t i=0; i<_param._nb_port_write; i++)
    489426    {
     
    499436  delete WRITE_IN_DATA   ;
    500437
    501   TEXT("delete write_select");
    502438  for (uint32_t i=0; i<_param._nb_bank; i++)
    503439    {
     
    518454  delete WRITE_SELECT_ACK;
    519455 
    520   TEXT("delete write_out");
    521456  for (uint32_t i=0; i<_param._nb_bank; i++)
    522457    {
     
    542477#endif
    543478
    544 
    545479  delete _RegisterFile_Multi_Banked_Glue;
    546480}
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Parameters.h

    r30 r20  
    6363  public : const uint32_t    _shift_address        ;
    6464
    65     // A lot of table to the partial crossbar
    66   public :       uint32_t  * _link_port_read_in_to_out    ;
    67   public :       uint32_t  * _link_port_read_in_to_select ;
    68   public :       uint32_t  * _link_port_write_in_to_out  ;
    69   public :       uint32_t  * _link_port_write_in_to_select;
     65  public :       uint32_t  * _link_port_read       ;
     66  public :       uint32_t  * _link_port_write      ;
     67
     68  public :       uint32_t  * _nb_port_select_by_bank_read_port ;
     69  public :       uint32_t  * _nb_port_select_by_bank_write_port;
    7070
    7171    //-----[ methods ]-----------------------------------------------------------
     
    8282  public : ~Parameters () ;
    8383
    84   public : string msg_error           (void);
     84  public : string msg_error (void);
    8585
    8686  public :        string   print      (uint32_t depth);
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/RegisterFile_Multi_Banked_Glue.h

    r30 r20  
    119119                                               
    120120#ifdef SYSTEMC                                 
    121     // function pointer
    122   public : uint32_t  (morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::*link_port_read_in_to_out    ) (uint32_t, uint32_t);
    123   public : uint32_t  (morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::*link_port_read_in_to_select ) (uint32_t, uint32_t);
    124   public : uint32_t  (morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::*link_port_write_in_to_out   ) (uint32_t, uint32_t);
    125   public : uint32_t  (morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::*link_port_write_in_to_select) (uint32_t, uint32_t);
    126 
    127   public : uint32_t  full_crossbar_link_port_read_in_to_out        (uint32_t num_port, uint32_t num_bank);
    128   public : uint32_t  full_crossbar_link_port_read_in_to_select     (uint32_t num_port, uint32_t num_bank);
    129   public : uint32_t  full_crossbar_link_port_write_in_to_out       (uint32_t num_port, uint32_t num_bank);
    130   public : uint32_t  full_crossbar_link_port_write_in_to_select    (uint32_t num_port, uint32_t num_bank);
    131   public : uint32_t  partial_crossbar_link_port_read_in_to_out     (uint32_t num_port, uint32_t num_bank);
    132   public : uint32_t  partial_crossbar_link_port_read_in_to_select  (uint32_t num_port, uint32_t num_bank);
    133   public : uint32_t  partial_crossbar_link_port_write_in_to_out    (uint32_t num_port, uint32_t num_bank);
    134   public : uint32_t  partial_crossbar_link_port_write_in_to_select (uint32_t num_port, uint32_t num_bank);
    135 
    136121  private : void     allocation                (void);
    137122  private : void     deallocation              (void);
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/Parameters.cpp

    r30 r20  
    3131    _nb_port_write_by_bank (nb_port_write_by_bank),
    3232    _crossbar              (crossbar             ),
    33     _shift_address         (_size_address-static_cast<uint32_t>(ceil(log2(_nb_bank))))
     33    _shift_address         (static_cast<uint32_t>(ceil(log2(_nb_bank))))
    3434  {
    3535    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters","Begin");
     
    3939        // All port_src is connected with one port_dest on each bank
    4040       
    41         _link_port_read_in_to_out          = new uint32_t [_nb_port_read ];
    42         _link_port_read_in_to_select       = new uint32_t [_nb_port_read ];
    43         _link_port_write_in_to_out         = new uint32_t [_nb_port_write];
    44         _link_port_write_in_to_select      = new uint32_t [_nb_port_write];
    45         uint32_t _nb_port_select_by_bank_read_port  [_nb_port_read_by_bank ];
    46         uint32_t _nb_port_select_by_bank_write_port [_nb_port_write_by_bank];
    47        
    48         // init
    49         for (uint32_t i=0; i<_nb_port_read_by_bank ;i++)
    50           _nb_port_select_by_bank_read_port  [i] = 0;
    51        
    52         for (uint32_t i=0; i<_nb_port_read         ;i++)
    53           {
    54             uint32_t x = i%_nb_port_read_by_bank;
    55             _link_port_read_in_to_out          [i] = x;
    56             _link_port_read_in_to_select       [i] = _nb_port_select_by_bank_read_port [x];
    57             _nb_port_select_by_bank_read_port  [x] ++;
    58           }
     41        _link_port_read  = new uint32_t [_nb_port_read ];
     42        for (uint32_t i=0; i<_nb_port_read ; i++)
     43          _link_port_read  [i] = i%_nb_port_read_by_bank;
    5944
    60         // init
    61         for (uint32_t i=0; i<_nb_port_write_by_bank ;i++)
    62           _nb_port_select_by_bank_write_port [i] = 0;
    63        
    64         for (uint32_t i=0; i<_nb_port_write         ;i++)
    65           {
    66             uint32_t x = i%_nb_port_write_by_bank;
    67             _link_port_write_in_to_out         [i] = x;
    68             _link_port_write_in_to_select      [i] = _nb_port_select_by_bank_write_port [x];
    69             _nb_port_select_by_bank_write_port [x] ++;
    70           }
     45        _link_port_write = new uint32_t [_nb_port_write];
     46        for (uint32_t i=0; i<_nb_port_write; i++)
     47          _link_port_write [i] = i%_nb_port_write_by_bank;
    7148      }
    7249    // else : don't allocate
    7350
     51    _nb_port_select_by_bank_read_port  = new uint32_t [_nb_port_read_by_bank ];
     52   
     53    if (_crossbar == FULL_CROSSBAR)
     54      // All port_src is connected with all port_dest on each bank
     55      for (uint32_t i=0; i<_nb_port_read_by_bank ;i++)
     56        _nb_port_select_by_bank_read_port [i] = _nb_port_read;
     57    else
     58      // All port_src is connected with one port_dest on each bank
     59      {
     60        for (uint32_t i=0; i<_nb_port_read_by_bank ;i++)
     61          _nb_port_select_by_bank_read_port [i] = 0;
     62
     63        for (uint32_t i=0; i<_nb_port_read         ;i++)
     64          _nb_port_select_by_bank_read_port [_link_port_read [i]] ++;
     65      }
     66   
     67    _nb_port_select_by_bank_write_port = new uint32_t [_nb_port_write_by_bank];
     68
     69    if (_crossbar == FULL_CROSSBAR)
     70      // All port_src is connected with all port_dest on each bank
     71      for (uint32_t i=0; i<_nb_port_write_by_bank ;i++)
     72        _nb_port_select_by_bank_write_port [i] = _nb_port_write;
     73    else
     74      // All port_src is connected with one port_dest on each bank
     75      {
     76        for (uint32_t i=0; i<_nb_port_write_by_bank ;i++)
     77          _nb_port_select_by_bank_write_port [i] = 0;
     78
     79        for (uint32_t i=0; i<_nb_port_write         ;i++)
     80          _nb_port_select_by_bank_write_port [_link_port_write[i]] ++;
     81      }
     82   
    7483    test();
    7584    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters","End");
     
    8897   {
    8998    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters (copy)","Begin");
     99
     100    _nb_port_select_by_bank_read_port  = new uint32_t [_nb_port_read_by_bank ];
     101    for (uint32_t i=0; i<_nb_port_read_by_bank; i++)
     102      _nb_port_select_by_bank_read_port [i] = param._nb_port_select_by_bank_read_port [i];
     103   
     104    _nb_port_select_by_bank_write_port = new uint32_t [_nb_port_write_by_bank ];
     105    for (uint32_t i=0; i<_nb_port_write_by_bank; i++)
     106      _nb_port_select_by_bank_write_port[i] = param._nb_port_select_by_bank_write_port [i];
     107   
    90108    test();
    91109    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters (copy)","End");
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue.cpp

    r30 r20  
    3333    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"RegisterFile_Multi_Banked_Glue","Begin");
    3434
    35 #ifdef SYSTEMC
    36     // write function pointer
    37     if (_crossbar == PARTIAL_CROSSBAR)
    38       {
    39         link_port_read_in_to_out     = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::partial_crossbar_link_port_read_in_to_out    ;
    40         link_port_read_in_to_select  = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::partial_crossbar_link_port_read_in_to_select ;
    41         link_port_write_in_to_out    = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::partial_crossbar_link_port_write_in_to_out   ;
    42         link_port_write_in_to_select = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::partial_crossbar_link_port_write_in_to_select;
    43       }
    44     else
    45       {
    46         link_port_read_in_to_out     = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::   full_crossbar_link_port_read_in_to_out    ;
    47         link_port_read_in_to_select  = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::   full_crossbar_link_port_read_in_to_select ;
    48         link_port_write_in_to_out    = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::   full_crossbar_link_port_write_in_to_out   ;
    49         link_port_write_in_to_select = &morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::RegisterFile_Multi_Banked_Glue::   full_crossbar_link_port_write_in_to_select;
    50       }
    51 #endif
    52 
    5335#ifdef STATISTICS
    5436    log_printf(INFO,RegisterFile_Multi_Banked_Glue,"RegisterFile_Multi_Banked_Glue","Allocation of statistics");
     
    8466
    8567    allocation ();
    86    
     68
    8769#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
    8870    log_printf(INFO,RegisterFile_Multi_Banked_Glue,"RegisterFile_Multi_Banked_Glue","Method - transition");
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/RegisterFile_Multi_Banked_Glue_genMealy_read_in.cpp

    r30 r20  
    99#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/RegisterFile_Multi_Banked_Glue.h"
    1010
    11 namespace morpheo {
     11namespace morpheo                    {
    1212namespace behavioural {
    1313namespace generic {
     
    1616namespace registerfile_multi_banked_glue {
    1717
     18 
    1819  void RegisterFile_Multi_Banked_Glue::genMealy_read_in (void)
    1920  {
    2021    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"genMealy_read_in","Begin");
    2122   
    22     for (uint32_t i=0; i<_param._nb_port_read; i++)
     23    for (uint32_t l=0; l<_param._nb_port_read; l++)
    2324      {
    24         log_printf(ALL,RegisterFile_Multi_Banked_Glue,"genMealy_read_in","read_in [%d]",i);
     25        uint32_t num_bank = PORT_READ(in_READ_IN_ADDRESS [l])>>_param._shift_address;
    2526
    26         uint32_t num_bank        = PORT_READ(in_READ_IN_ADDRESS [i])>>_param._shift_address;
    27         uint32_t num_port_out    = *link_port_read_in_to_out    (i,num_bank);
    28         uint32_t num_port_select = *link_port_read_in_to_select (i,num_bank);
    29 
    30         if (_param._crossbar == FULL_CROSSBAR)
    31           {
    32             // scearch in all possible destination the good
    33             // if not found : num_port = 0
    34             for (num_port = _param._nb_port_read_by_bank-1; num_port > 0; num_port --)
    35               {
    36                 log_printf(ALL,RegisterFile_Multi_Banked_Glue,"genMealy_read_in","test read_out_port   %d",num_port);           
    37                
    38                 for (uint32_t j=0; j<_param._nb_port_select_by_bank_read_port [num_port]; j++)
    39                   {
    40                 log_printf(ALL,RegisterFile_Multi_Banked_Glue,"genMealy_read_in","test read_out_select %d",j);
    41                     if (PORT_READ(in_READ_SELECT_ACK [num_bank][num_port][j])==1)
    42                       goto end_FULL_CROSSBAR;
    43                   }
    44               }
    45           }
    46        
    47         end_FULL_CROSSBAR :     
    48          
    49         log_printf(TRACE,RegisterFile_Multi_Banked_Glue,"genMealy_read_in","read_in [%d] address : %.8x - num_bank %d, num_port %d",i,static_cast<uint32_t>(PORT_READ(in_READ_IN_ADDRESS [i])),num_bank,num_port);
    50        
    51         PORT_WRITE(out_READ_IN_ACK  [i],PORT_READ(in_READ_SELECT_ACK [num_bank][num_port]));
    52         PORT_WRITE(out_READ_IN_DATA [i],PORT_READ(in_READ_OUT_DATA   [num_bank][num_port]));
    5327//      (*(out_READ_IN_ACK  [l])) (*(in_READ_IN_ADDRESS [i][j]));
    5428//      (*(out_READ_IN_DATA [l])) (*(in_READ_IN_ADDRESS [i][j]));
     29
     30//      for (uint32_t i=0; i<_param._nb_bank; i++)
     31//        for (uint32_t j=0; j<_param._nb_port_read_by_bank; j++)
     32//          {
     33//            (*(out_READ_IN_ACK  [l])) (*(in_READ_OUT_ACK      [i][j]));
     34//            (*(out_READ_IN_DATA [l])) (*(in_READ_OUT_DATA     [i][j]));
     35//            for (uint32_t k=0; k<_param._nb_port_select_by_bank_read_port[j]; k++)
     36//              {
     37//                (*(out_READ_IN_ACK  [l])) (*(in_READ_SELECT_ACK [i][j][k]));
     38//                (*(out_READ_IN_DATA [l])) (*(in_READ_SELECT_ACK [i][j][k]));
     39//              }
     40//          }
    5541      }
    5642
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/Makefile

    r30 r20  
    2424
    2525include                         ../Makefile.deps
    26 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     26include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2727include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2828include                         $(DIR_MORPHEO)/Behavioural/Makefile.Selftest
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/Makefile

    r30 r20  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_COMPONENT                   = .
    11 include                         $(DIR_COMPONENT)/Makefile.defs
     10DIR_MORPHEO                     = ../../../..
    1211
    1312#-----[ Library ]------------------------------------------
     
    2019                                @$(MAKE) all_component
    2120
    22 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     21include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2322include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2423include                         $(DIR_MORPHEO)/Behavioural/Makefile.Component
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/Makefile

    r30 r20  
    2424
    2525include                         ../Makefile.deps
    26 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     26include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2727include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2828include                         $(DIR_MORPHEO)/Behavioural/Makefile.Selftest
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/configuration.cfg

    r30 r20  
    11Select_Priority_Fixed
    2 16      16      *2      # nb_entity
    3 0       0       +1      # encoding_one_hot
     22       16      *2      # nb_entity
     30       1       +1      # encoding_one_hot
    441       1       +1      # encoding_compact
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h

    r30 r20  
    1919#include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Parameters.h"
    2020#include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Types.h"
    21 #include "Behavioural/include/Interfaces.h"
    22 
    2321#ifdef STATISTICS
    2422#include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Statistics.h"
     
    6159  private   : Vhdl_Testbench                 * _vhdl_testbench;
    6260#endif
    63 
    64   private   : Interfaces                     * interfaces;
    6561
    6662#ifdef SYSTEMC
     
    117113#if VHDL                                       
    118114  public  : void     vhdl                      (void);
    119   private : void     vhdl_port                 (Vhdl * & vhdl);
    120   private : void     vhdl_declaration          (Vhdl * & vhdl);
    121   private : void     vhdl_body                 (Vhdl * & vhdl);
     115  private : void     vhdl_port                 (Vhdl & vhdl);
     116  private : void     vhdl_declaration          (Vhdl & vhdl);
     117  private : void     vhdl_body                 (Vhdl & vhdl);
    122118#endif                                         
    123119                                               
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed.cpp

    r30 r20  
    3232    log_printf(FUNC,Select_Priority_Fixed,"Select_Priority_Fixed","Begin");
    3333
    34 #ifdef SYSTEMC
    35     log_printf(INFO,Select_Priority_Fixed,"Select_Priority_Fixed","Allocation");
    36 
    37     allocation ();
    38 #endif
    39 
    40 #ifdef POSITION
    41     log_printf(INFO,Select_Priority_Fixed,"Select_Priority_Fixed","Position");
    42    
    43    
    44 #endif
    45 
    4634#ifdef STATISTICS
    4735    log_printf(INFO,Select_Priority_Fixed,"Select_Priority_Fixed","Allocation of statistics");
     
    6048    //  -> clock's signals
    6149    _vhdl_testbench = new Vhdl_Testbench (_name);
     50//     _vhdl_testbench->set_clock    ("in_CLOCK",false);
    6251#endif
    6352
     
    6958#endif
    7059
     60#ifdef VHDL_TESTBENCH
     61    _vhdl_testbench->set_clock    ("in_CLOCK",true);
     62#endif
     63
    7164#ifdef SYSTEMC
     65    log_printf(INFO,Select_Priority_Fixed,"Select_Priority_Fixed","Allocation");
     66
     67    allocation ();
     68
    7269#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
    7370    log_printf(INFO,Select_Priority_Fixed,"Select_Priority_Fixed","Method - transition");
     
    10198   
    10299#endif   
     100
    103101#endif
    104102    log_printf(FUNC,Select_Priority_Fixed,"Select_Priority_Fixed","End");
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_allocation.cpp

    r30 r20  
    1515namespace select_priority_fixed {
    1616
     17
    1718  void Select_Priority_Fixed::allocation (void)
    1819  {
     
    2122    log_printf(FUNC,Select_Priority_Fixed,"allocation","Begin");
    2223
    23     interfaces = new Interfaces;
    24 
    25     // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    26     Interface interface_ ("", IN, WEST);
    27    
    28     in_CLOCK        = interface_.set_signal_clk              ("clock" ,1, PORT_VHDL_YES_TESTBENCH_NO);
    29     in_NRESET       = interface_.set_signal_in  <Tcontrol_t> ("nreset",1);
     24     in_CLOCK        = new SC_CLOCK           ("in_CLOCK ");
     25     in_NRESET       = new SC_IN (Tcontrol_t) ("in_NRESET");
    3026
    3127     in_VAL          = new SC_IN (Tcontrol_t)           * [_param._nb_entity];
     
    3531    for (uint32_t i=0; i<_param._nb_entity; i++)
    3632      {
    37          in_VAL [i]    = interface_.set_signal_in  <Tcontrol_t> ("val_"+toString(i),1);
     33        rename = " in_VAL_"+toString(i);
     34         in_VAL [i]      = new SC_IN (Tcontrol_t) (rename.c_str());
     35
    3836        if (_param._encoding_one_hot)
    39         out_ACK [i]    = interface_.set_signal_out <Tcontrol_t> ("ack_"+toString(i),1);
     37          {
     38        rename = "out_ACK_"+toString(i);
     39        out_ACK [i]      = new SC_OUT(Tcontrol_t) (rename.c_str());
     40          }
    4041      }
    4142
    4243    if (_param._encoding_compact)
    4344      {
    44         out_ENTITY     = interface_.set_signal_out <Tentity_t > ("entity"    , _param._size_entity);
    45         out_ENTITY_ACK = interface_.set_signal_out <Tcontrol_t> ("entity_ack", 1);
     45        out_ENTITY_ACK   = new SC_OUT(Tcontrol_t)           ("out_entity_ack");
     46        out_ENTITY       = new SC_OUT(Tentity_t)            ("out_entity");
    4647      }
    47 
    4848    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    4949
     
    5454}; // end namespace select
    5555}; // end namespace generic
     56
    5657}; // end namespace behavioural
    5758}; // end namespace morpheo             
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_deallocation.cpp

    r30 r20  
    4040    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    4141
    42     delete interfaces;
    43 
    4442    log_printf(FUNC,Select_Priority_Fixed,"deallocation","End");
    4543  };
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl.cpp

    r30 r20  
    2020  {
    2121    log_printf(FUNC,Select_Priority_Fixed,"vhdl","Begin");
     22    Vhdl vhdl (_name);
    2223
    23     Vhdl * vhdl = new Vhdl (_name);
    24 
    25     vhdl->set_library_work (_name + "_Pack");
     24    vhdl.set_library_work (_name + "_Pack");
    2625
    2726    vhdl_port        (vhdl);
     
    2928    vhdl_body        (vhdl);
    3029
    31     vhdl->generate_file();
     30    vhdl.generate_file();
    3231    log_printf(FUNC,Select_Priority_Fixed,"vhdl","End");
    3332
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_body.cpp

    r30 r20  
    1616
    1717
    18   void Select_Priority_Fixed::vhdl_body (Vhdl * & vhdl)
     18  void Select_Priority_Fixed::vhdl_body (Vhdl & vhdl)
    1919  {
    2020    log_printf(FUNC,Select_Priority_Fixed,"vhdl_body","Begin");
    21     vhdl->set_body ("");
     21    vhdl.set_body ("");
    2222
    23     vhdl->set_body("internal_entity <=");
     23    vhdl.set_body("internal_entity <=");
    2424    for (uint32_t i=0; i<_param._nb_entity; i++)
    2525      {
    26         vhdl->set_body("\t"+std_logic_conv(_param._size_entity+1,i)+" when in_VAL_"+toString(i)+"='1' else");
     26        vhdl.set_body("\t"+std_logic_conv(_param._size_entity+1,i)+" when in_VAL_"+toString(i)+"='1' else");
    2727      }
    28     vhdl->set_body("\t"+std_logic_conv(_param._size_entity+1,1<<_param._size_entity)+";");
    29     vhdl->set_body ("");
     28    vhdl.set_body("\t"+std_logic_conv(_param._size_entity+1,1<<_param._size_entity)+";");
     29    vhdl.set_body ("");
    3030
    3131    if (_param._encoding_one_hot)
    3232      {
    3333        for (uint32_t i=0; i<_param._nb_entity; i++)
    34           vhdl->set_body("out_ACK_"+toString(i)+" <= '1' when internal_entity"+std_logic_range(_param._size_entity+1)+" = "+std_logic_conv(_param._size_entity+1,i)+" else '0';");
    35         vhdl->set_body ("");
     34          vhdl.set_body("out_ACK_"+toString(i)+" <= '1' when internal_entity"+std_logic_range(_param._size_entity+1)+" = "+std_logic_conv(_param._size_entity+1,i)+" else '0';");
     35        vhdl.set_body ("");
    3636      }
    3737
    3838    if (_param._encoding_compact)
    3939      {
    40         vhdl->set_body ("out_ENTITY     <=     internal_entity"+std_logic_range(_param._size_entity-1,                  0)+";");
    41         vhdl->set_body ("out_ENTITY_ACK <= not internal_entity"+std_logic_range(_param._size_entity  ,_param._size_entity)+";");
     40        vhdl.set_body ("out_ENTITY     <=     internal_entity"+std_logic_range(_param._size_entity-1,                  0)+";");
     41        vhdl.set_body ("out_ENTITY_ACK <= not internal_entity"+std_logic_range(_param._size_entity  ,_param._size_entity)+";");
    4242      }   
    4343   
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_declaration.cpp

    r30 r20  
    1616
    1717
    18   void Select_Priority_Fixed::vhdl_declaration (Vhdl * & vhdl)
     18  void Select_Priority_Fixed::vhdl_declaration (Vhdl & vhdl)
    1919  {
    2020    log_printf(FUNC,Select_Priority_Fixed,"vhdl_declaration","Begin");
    2121
    22     vhdl->set_signal("internal_entity",_param._size_entity+1);
     22    vhdl.set_signal("internal_entity",_param._size_entity+1);
    2323
    2424    log_printf(FUNC,Select_Priority_Fixed,"vhdl_declaration","End");
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_port.cpp

    r30 r20  
    99#include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h"
    1010
    11 namespace morpheo {
     11#ifdef VHDL_TESTBENCH
     12# define VHDL_SET_PORT(name,direction,size) do {vhdl.set_port (name,direction,size); _vhdl_testbench->set_port (name,direction,size);} while (0)
     13#else
     14# define VHDL_SET_PORT(name,direction,size)     vhdl.set_port (name,direction,size)
     15#endif
     16
     17namespace morpheo                    {
    1218namespace behavioural {
    1319namespace generic {
     
    1521namespace select_priority_fixed {
    1622
    17   void Select_Priority_Fixed::vhdl_port (Vhdl * & vhdl)
     23
     24  void Select_Priority_Fixed::vhdl_port (Vhdl & vhdl)
    1825  {
    1926    log_printf(FUNC,Select_Priority_Fixed,"vhdl_port","Begin");
    2027
    21 #ifdef VHDL
    22     interfaces->set_port(vhdl);
    23 #endif
    24 #ifdef VHDL_TESTBENCH
    25     interfaces->set_port(_vhdl_testbench);                     
    26    _vhdl_testbench->set_clock    ("in_CLOCK",true);
    27 #endif   
    28 
    29    log_printf(FUNC,Select_Priority_Fixed,"vhdl_port","End");
     28    vhdl.set_port (" in_CLOCK ", IN, 1);
     29    VHDL_SET_PORT (" in_NRESET", IN, 1);
     30       
     31    for (uint32_t i=0; i<_param._nb_entity; i++)
     32      {
     33        VHDL_SET_PORT (" in_VAL_"+toString(i) , IN, 1);
     34        if (_param._encoding_one_hot)
     35        VHDL_SET_PORT ("out_ACK_"+toString(i) ,OUT, 1);
     36      }
     37    if (_param._encoding_compact)
     38      {
     39    VHDL_SET_PORT ("out_ENTITY    ",OUT,_param._size_entity);
     40    VHDL_SET_PORT ("out_ENTITY_ACK",OUT,1);
     41      }
     42    log_printf(FUNC,Select_Priority_Fixed,"vhdl_port","End");
    3043  };
    3144
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/Makefile

    r30 r20  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_COMPONENT                   = .
    11 include                         $(DIR_COMPONENT)/Makefile.defs
     10DIR_MORPHEO                     = ../../..
    1211
    1312#-----[ Library ]------------------------------------------
     
    2019                                @$(MAKE) all_component
    2120
    22 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     21include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2322include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2423include                         $(DIR_MORPHEO)/Behavioural/Makefile.Component
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/SelfTest/Makefile

    r30 r20  
    2424
    2525include                         ../Makefile.deps
    26 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     26include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2727include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2828include                         $(DIR_MORPHEO)/Behavioural/Makefile.Selftest
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/Makefile

    r30 r20  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_COMPONENT                   = .
    11 include                         $(DIR_COMPONENT)/Makefile.defs
     10DIR_MORPHEO                     = ../../../..
    1211
    1312#-----[ Library ]------------------------------------------
     
    1918                                @$(MAKE) all_component
    2019
    21 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     20include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2221include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2322include                         $(DIR_MORPHEO)/Behavioural/Makefile.Component
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/Makefile

    r30 r20  
    2424
    2525include                         ../Makefile.deps
    26 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     26include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2727include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2828include                         $(DIR_MORPHEO)/Behavioural/Makefile.Selftest
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile

    r30 r20  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_COMPONENT                   = ./
    11 include                         $(DIR_COMPONENT)/Makefile.defs
     10DIR_MORPHEO                     = ../
    1211
    1312#-----[ Library ]------------------------------------------
     
    1918                                @$(MAKE) all_component
    2019
    21 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     20include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2221include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2322include                         $(DIR_MORPHEO)/Behavioural/Makefile.Component
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Component

    r30 r20  
    1 #-----[ Directory ]----------------------------------------
    2 DIR_DOC                         = doc
     1#-----[ Variable ]-----------------------------------------
    32DIR_LIB                         = lib
    43DIR_TEST                        = SelfTest
    54
    6 #-----[ Variable ]-----------------------------------------
    75OBJECTS                         = $(OBJECTS_COMMON)
    86
    9 #-----[ Rules ]--------------------------------------------
     7#-----[ Directory ]----------------------------------------
    108.PRECIOUS                       : $(DIR_LIB)/%.a
    119.NOPARALLEL                     : clean help
     
    2321                                @$(MKDIR) $@
    2422
    25 document                        :
    26                                 @$(MAKE) --directory=$(DIR_DOC) --makefile=Makefile
    27 
    2823component_clean                 :
    2924                                @$(RM) $(DIR_LIB)
     
    3328                                @$(ECHO) ""
    3429                                @$(ECHO) " * all_component        : compile all c++ file and generate library"
    35                                 @$(ECHO) " * document             : Generate documantation"
    3630                                @$(ECHO) " * clean                : Erase all generate files"
    3731                                @$(ECHO) " * help                 : print this text"
     
    4539                                @$(MAKE) common_clean
    4640                                @$(MAKE) component_clean
    47                                 @if $(TEST) -d $(DIR_DOC); then $(MAKE) --directory=$(DIR_DOC) --makefile=Makefile clean; fi
     41
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Selftest

    r30 r20  
    1010DIR_BIN                         = bin
    1111DIR_LIB                         = ../lib
    12 DIR_CFG_GEN                     = configuration_generated
     12DIR_CFG_GEN                             = configuration_generated
    1313DIR_CFG_USER                    = configuration
    1414DIR_LOG                         = log
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.defs

    r30 r20  
    44# [ Description ]
    55#
     6# Makefile
    67
    7 #-----[ Directory ]----------------------------------------
    8 DIR_COMPONENT_MORPHEO           = ..
    9 DIR_MORPHEO                     = $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
     8#-----[ Simulator ]----------------------------------------
     9SIMULATOR                       = systemcass_deps
     10
     11# 3 simulators :
     12# systemc                       - SystemC   
     13# systemcass                    - SystemCASS
     14# systemcass_deps               - SystemCASS, and use port dependency information instead of sensitivity list
     15
     16#-----[ Flags ]--------------------------------------------
     17FLAGS                           =       -DVHDL                  \
     18                                        -DVHDL_TESTBENCH        \
     19                                        -DSYSTEMC               \
     20                                        -DSTATISTICS            \
     21                                        -DCONFIGURATION         \
     22                                        -DDEBUG=DEBUG_ALL   
     23                                       
     24# Flags :
     25# DEBUG={level}                 - Print Debug Message
     26# VHDL                          - To generate a vhdl's    model
     27# SYSTEMC                       - To generate a systemc's model
     28# CONFIGURATION                 - To generate a configuration file (it's input of viewer)
     29# STATISTICS     (need SYSTEMC) - In the simulation, generate a statistics's file
     30# VHDL_TESTBENCH (need SYSTEMC) - In the simulation, generate two testbench's file (input and ouput) to validate the vhdl's model
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.mkf

    r30 r20  
    33#
    44
    5 all: _Generic/RegisterFile/RegisterFile_Monolithic/SelfTest Generic/Select/Priority_Fixed/SelfTest
     5all: _Generic/RegisterFile/SelfTest _Generic/Select/Priority_Fixed/SelfTest
    66
    7 _Generic/RegisterFile/RegisterFile_Monolithic/SelfTest:
    8         gmake all -C Generic/RegisterFile/RegisterFile_Monolithic/SelfTest
     7_Generic/RegisterFile/SelfTest:
     8        gmake all -C Generic/RegisterFile/SelfTest
    99
    10 Generic/Select/Priority_Fixed/SelfTest:
     10_Generic/Select/Priority_Fixed/SelfTest:
     11        gmake all -C Generic/Select/Priority_Fixed/SelfTest
    1112
    1213clean:
    13         gmake clean -C Generic/RegisterFile/RegisterFile_Monolithic/SelfTest
     14        gmake clean -C Generic/RegisterFile/SelfTest
     15        gmake clean -C Generic/Select/Priority_Fixed/SelfTest
    1416
    1517re: clean all
    1618
    1719install:
    18         gmake install -C Generic/RegisterFile/RegisterFile_Monolithic/SelfTest
     20        gmake install -C Generic/RegisterFile/SelfTest
     21        gmake install -C Generic/Select/Priority_Fixed/SelfTest
    1922
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/Makefile

    r30 r20  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_COMPONENT                   = ./
    11 include                         $(DIR_COMPONENT)/Makefile.defs
     10DIR_MORPHEO                     = @DIR_MORPHEO
    1211
    1312#-----[ Library ]------------------------------------------
     
    2019                                @$(MAKE) all_component
    2120
    22 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     21include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2322include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2423include                         $(DIR_MORPHEO)/Behavioural/Makefile.Component
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/Makefile

    r30 r20  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_COMPONENT                   = ../
    11 include                         $(DIR_COMPONENT)/Makefile.defs
     10DIR_MORPHEO                     = ../@DIR_MORPHEO
    1211
    1312LIBRARY                         = $(@COMPONENT_LIBRARY)
     
    2524
    2625include                         ../Makefile.deps
    27 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     26include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2827include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2928include                         $(DIR_MORPHEO)/Behavioural/Makefile.Selftest
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/VERSION

    r30 r20  
    1 v0.6
     1v0.5
    22
    330.5 modif vhdl_port et vhdl_testbench_port -> ajout d'une macro
    4 0.6 ajout de la documentation
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Makefile

    r30 r20  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_COMPONENT                   = .
    11 include                         $(DIR_COMPONENT)/Makefile.defs
     10DIR_MORPHEO                     = ../../../..
    1211
    1312#-----[ Library ]------------------------------------------
     
    2019                                @$(MAKE) all_component
    2120
    22 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     21include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2322include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2423include                         $(DIR_MORPHEO)/Behavioural/Makefile.Component
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/Makefile

    r30 r20  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_COMPONENT                   = .
    11 include                         $(DIR_COMPONENT)/Makefile.defs
     10DIR_MORPHEO                     = ../../../../..
    1211
    1312#-----[ Library ]------------------------------------------
     
    2019                                @$(MAKE) all_component
    2120
    22 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     21include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2322include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2423include                         $(DIR_MORPHEO)/Behavioural/Makefile.Component
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/SelfTest/Makefile

    r30 r20  
    2424
    2525include                         ../Makefile.deps
    26 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     26include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2727include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2828include                         $(DIR_MORPHEO)/Behavioural/Makefile.Selftest
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/SelfTest/Makefile

    r30 r20  
    2424
    2525include                         ../Makefile.deps
    26 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     26include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2727include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2828include                         $(DIR_MORPHEO)/Behavioural/Makefile.Selftest
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/Makefile

    r30 r20  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_COMPONENT                   = .
    11 include                         $(DIR_COMPONENT)/Makefile.defs
     10DIR_MORPHEO                     = ../../../../../..
    1211
    1312#-----[ Library ]------------------------------------------
     
    2019                                @$(MAKE) all_component
    2120
    22 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     21include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2322include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2423include                         $(DIR_MORPHEO)/Behavioural/Makefile.Component
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Branch_History_Table/SelfTest/Makefile

    r30 r20  
    2424
    2525include                         ../Makefile.deps
    26 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     26include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2727include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2828include                         $(DIR_MORPHEO)/Behavioural/Makefile.Selftest
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Makefile

    r30 r20  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_COMPONENT                   = .
    11 include                         $(DIR_COMPONENT)/Makefile.defs
     10DIR_MORPHEO                     = ../../../../..
    1211
    1312#-----[ Library ]------------------------------------------
     
    2019                                @$(MAKE) all_component
    2120
    22 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     21include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2322include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2423include                         $(DIR_MORPHEO)/Behavioural/Makefile.Component
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/Makefile

    r30 r20  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_COMPONENT                   = .
    11 include                         $(DIR_COMPONENT)/Makefile.defs
     10DIR_MORPHEO                     = ../../../../../..
    1211
    1312#-----[ Library ]------------------------------------------
     
    2019                                @$(MAKE) all_component
    2120
    22 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     21include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2322include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2423include                         $(DIR_MORPHEO)/Behavioural/Makefile.Component
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest/Makefile

    r30 r20  
    2424
    2525include                         ../Makefile.deps
    26 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     26include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2727include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2828include                         $(DIR_MORPHEO)/Behavioural/Makefile.Selftest
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/SelfTest/Makefile

    r30 r20  
    2424
    2525include                         ../Makefile.deps
    26 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     26include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2727include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2828include                         $(DIR_MORPHEO)/Behavioural/Makefile.Selftest
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/Makefile

    r30 r20  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_COMPONENT                   = .
    11 include                         $(DIR_COMPONENT)/Makefile.defs
     10DIR_MORPHEO                     = ../../../../../..
    1211
    1312#-----[ Library ]------------------------------------------
     
    2019                                @$(MAKE) all_component
    2120
    22 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     21include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2322include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2423include                         $(DIR_MORPHEO)/Behavioural/Makefile.Component
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Two_Level_Branch_Predictor_Glue/SelfTest/Makefile

    r30 r20  
    2424
    2525include                         ../Makefile.deps
    26 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
     26include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
    2727include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2828include                         $(DIR_MORPHEO)/Behavioural/Makefile.Selftest
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl.h

    r30 r20  
    1414#include <iostream>
    1515#include <list>
    16 #include "Behavioural/include/Direction.h"
    1716#include "Include/ToString.h"
    1817#include "Include/Debug.h"
     
    2221namespace morpheo              {
    2322namespace behavioural          {
     23
     24  typedef enum { IN, OUT, INOUT } direction_t;
    2425
    2526  string std_logic        (uint32_t size);
     
    4445    // -----[ methods ]---------------------------------------------------
    4546  public    :                  Vhdl                        (string name);
    46   public    :                  ~Vhdl                       ();
     47  public    : virtual          ~Vhdl                       ();
    4748                                                           
    4849  public    : void             generate_file               (void);
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/XML.h

    r30 r20  
    4040  public   : bool             singleton_end       (void);
    4141  public   : bool             attribut            (string name, string value);
    42   public   : bool             insert_XML          (XML    xml );
    4342
    4443  public   : void             generate_file       (void);
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/mkf.info

    r30 r20  
    1616# build src directory content
    1717#target_dep             all             Generic/Counter/SelfTest
    18 target_dep              all             Generic/RegisterFile/RegisterFile_Monolithic/SelfTest
     18target_dep              all             Generic/RegisterFile/SelfTest
    1919#target_dep             all             Generic/Shifter/SelfTest
    2020target_dep              all             Generic/Select/Priority_Fixed/SelfTest
  • /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/article-morpheo-share_architectural_ressources_between_hardware_context/common/bibliographie.bib

    r30 r20  
    12141214@article{2000_barroso,
    12151215  title={{Piranha: a scalable architecture based on single-chip multiprocessing}},
    1216   author={Barroso, L.A. and al.},
     1216  author={Barroso, L.A. and Gharachorloo, K. and McNamara, R. and Nowatzyk, A. and Qadeer, S. and Sano, B. and Smith, S. and Stets, R. and Verghese, B.},
    12171217  journal={Proceedings of the 27th annual international symposium on Computer architecture},
    12181218  pages={282--293},
  • /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/article-morpheo-share_architectural_ressources_between_hardware_context/fr/root.tex

    r30 r20  
    1 \begin{abstract}
    2 Dans ce document nous allons étudier l'incidence du partage par les contextes matériels d'un processeur, de ces caches de niveau 1, de sa partie opérative et de sa partie exécutive.
    3 Il s'agit d'une étude de performance, en terme d'exécution, utilisant les benchmarks SPECINT2000.
    4 Nous montrons que le partage de la partie exécutive n'a que peu d'incidence sur les performances, alors que le partage des caches fait perdre 10\% de performances et que le partage de la partie opérative fait tomber les performances d'un facteur de 2,7 entre un CMP de degré 4 et un SMT de même degré.
    5 
    6 \end{abstract}
    7 
    8 %-------------------------------------------------------------------------
    9 \Section{Introduction}
    10 
    11 De nos jours, la capacité d'intégration augmente.
    12 Un concepteur possède un ``tas'' de transistors toujours plus grand à sa disposition.
    13 L'objectif des vingts dernières années était d'avoir un processeur monolithique pouvant extraire des programmes le plus d'ILP (Instruction Level Parallelism) possible.
    14 Les études de David W. Wall \cite{1991_wall} montre que l'ILP moyen dans un programme est de 3-5 instructions.
    15 Les mono-processeurs de la fin du XX ème siècles comme le MipsR10000 \cite{1996_yeager}, l'Alpha 21264 \cite{1998_kessler}, le Pentium 4 \cite{2001_hinton} ou encore l'Itanium 1 et 2 d'Intel (\cite{2000_sharangpani}, \cite{2003_mcnairy}) exploitent tous fortement l'ILP.
    16 
    17 Dans le même laps de temps des systèmes CMP (Chip Multi Processors) firent leur apparition.
    18 De telles puces peuvent exécuter plusieurs tâches simultanément.
    19 Ces CMP exploitent le TLP (Thread Level Parallelism).
    20 Dans cette catégorie nous pouvons citer le piranha de Compaq \cite{2000_barroso}, l'Hydra de Stanford \cite{2000_hammond}.
    21 On peut également citer le Power4 \cite{2002_tendler} ou l'Alpha 21364 \cite{2002_mukherjee} qui sont des processeurs monolithiques mais conçus pour être intégrés dans un environnement multiprocesseur.
    22 
    23 L'exploitation de l'ILP de manière aggressive, (prédiction de branchement, lancement désynchronisé) entraine une sous exploitation des ressources internes des processeurs.
    24 Une technique consiste en l'éxecution de plusieurs contextes par coeur de processeur en exploitant le TLP.
    25 Ceci est la technique du Multi-threading et de sa principale variante le SMT (Simultaneous multi threading).
    26 C'est l'objet des travaux de recherches de l'équipe de Tullsen \cite{1996_tullsen}, \cite{1998_tullsen}.
    27 Pour un ajout minime en surface (une duplication de quelques registres d'état, ajout de multiplexeurs pour sélectionner un contexte... ), nous pouvons avoir des processeurs mono-coeur multi-thread.
    28 Cette technique est exploitée dans le Pentium 4 Hyper-Threading d'Intel \cite{2003_koufaty} (ajout de 5\% en surface pour un gain de performance de 30\%).
    29  
    30 Il y a deux grands axes de recherches :
    31 \begin{enumerate}
    32 \item le CMP où chaque thread s'execute sur un coeur spécifique.
    33  L'intégralité des ressources d'un coeur est mit à la disposition d'un thread.
    34  Les ressources internes du coeur sont dédiées à un thread.
    35 
    36 \item le SMT où tous les threads s'éxecutent dans un unique coeur.
    37  Tous les threads entrent en compétition pour l'obtention des ressources d'un coeur.
    38  Les ressources internes du coeur sont partagées entre plusieurs threads
    39 \end{enumerate}
    40 Entre ces deux axes, il y a une multitude de variation du degré de partage des ressources entre les tâches.
    41 Ceci a pour conséquence l'émergence de CMP de SMT (plusieurs coeurs multi contexte).
    42 Le POWER 5 \cite{2004_kalla} est un bi-coeurs où chaque coeur est SMT de degré 2.
    43 De même pour le montecito d'Intel \cite{2005_mcnairy}.
    44 Alors que le Niagara de Sun intègre 8 coeurs de CMT (Corse Grain Multi Threading) de degré 4 \cite{2005_kongetira}.
    45 
    46 L'objectif de ce papier est d'analyser les performances d'exécution entre plusieurs partages des ressources d'un processeur.
    47 Pour cela, nous allons voir dans la section \ref{experimentations} les expérimentations que nous avons réalisées, ainsi que celles qui ont déjà été effectuées.
    48 Dans la section \ref{methodologie} nous allons montrer nos hypothèses de travail.
    49 Enfin une section où nous allons interpréter les résultats.
    50 
    51 %-------------------------------------------------------------------------
    52 \Section{Expérimentations}\label{experimentations}
    53 Le SMT est une solution faible-coût pour obtenir un processeur MT (multi-thread).
    54 Les ressources sont intégralement partagées, dans le cas où il n'y a qu'un seul thread à exécuter, ce dernier pourra utiliser l'intégralité des ressources du processeur.
    55  
    56 Malheureusement cette solution à deux problèmes importants.
    57  
    58 Le premier est que la rapidité d'exécution d'un thread dépend des autres threads.
    59 Ceci est dut à la compétition entre les threads pour obtenir les ressources.
    60 Par exemple si tous les threads font des accès mémoires fréquents, l'unité mémoire va rapidement saturer.
    61  
    62 Le deuxième problème est la pollution des ressources partagées.
    63 Les meilleurs exemples sont les caches et le Buffer des destinations de branchement (BTB).
    64 La gestion du SMT peut être gérer de manière très simple en concaténant le numéro du thread l'adresse de l'instruction ou de la donnée.
    65 Dans ce cas, le cache peut évincer des lignes très utiles d'un thread au profit de lignes d'autres threads.
    66  %De plus les actions comme le prefetch ou la prédiction de branchement risque de priver des threads de lignes utiles contre une hypothétique ligne utile pour le thread bénéficiaire.
    67 
    68 Nous allons faire varier le degré de partage des ressources.
    69 Des travaux équivalents ont été réalisés.
    70 Dans \cite{2004_dolbeau}, ils étudient l'influence du partage des unités à latence longue (multiplication, division...), du prédicteur de branchement, ainsi que des caches Instructions et Données.
    71 Pour ce faire, ils ont implémentés l'architecture {\bf CASH} (CMP And SMT Hybrid) qui consiste en 4 coeurs ce partageant les ressources cités.
    72 Dans un autre article, \cite{2004_kumar}, il y a une étude en terme de performance d'exécution mais également en terme de surface.
    73 Les blocs concernés sont les unités flottantes, les caches de premiers niveaux, et enfin les ports du crossbar reliant les Caches à la mémoire. 
    74 Ici l'équipe de Tullsen à validée leurs hypothèses sur un système à 8 coeurs.
    75 Le partage des ressources ce fait entre deux coeurs voisins.
    76 
    77 Leurs résultats ainsi que ceux que nous obtenons sont compatibles entre eux.
    78 
    79 Notre approche consiste à tester l'incidence du partage des caches, des Unités d'exécutions et de la partie opérative.
    80 
    81 Nous nommons les partages comme suit :
    82 \begin{description}
    83 \item[Cluster            :] Les clusters ce partage les caches de niveaux 2 et les unités d'exécutions.
    84 \item[Unité de lancement :] Les unités de lancement ce partage les ports des caches de niveaux 1 et les unités d'exécutions.
    85 \item[Contexte           :] Les contextes se partagent l'accès au décodeur, au Icache et au prédicteur de branchement.
    86 \end{description}
    87 
    88 L'expérimentation ce fait avec le générateur de processeur Morpheo (acronyme de ``Multi ORganisation for a Processor HEterogeneous and Open'').
    89 Une vue d'ensemble de l'architecture résultante est donnée dans la figure \ref{MORPHEO_overview}.
    90 
    91 \begin{figure}[h]
    92   \begin{center}
    93     \resizebox{8cm}{!}{
    94       \includegraphics{\dirschema/MORPHEO_overview.eps}}
    95     \caption{\label{MORPHEO_overview}MORPHEO - Vue d'ensemble}
    96   \end{center}
    97 \end{figure}
    98 
    99 Notre allons analyser l'incidence du partage des ressources au niveau Cluster, UL et Contexte dans un système à 4 Threads, pouvant lancer à chaque cycle 8 instructions.
    100 Trois tableaux résument les caractéristiques communes de chaque instance ainsi que les paramètres spécifiques pour les configurations avec 1,2 et 4 coeurs.
    101 (nous définissons un coeur étant équivalent à une UL).
    102 Le troisième tableau résume le système mémoire.
    103 
    104 \begin{table}[h]
    105 \begin{center}
    106 \begin{tabular}{|l|c|}
    107   \hline
    108   Unité d'exécutions                           & 8              \\
    109   Profondeur des Stations de Réservations      & 4              \\
    110   Nombre de branchements spéculés              & 8              \\
    111   Return Address Stack                         & 16             \\
    112   Réseau de by-pass                            & Complet        \\
    113   Nombre de port de lecture                    & 12             \\
    114   Nombre de port d'écriture                    & 8              \\
    115   \hline
    116 \end{tabular}
    117 \end{center}
    118  \caption{Caractéristiques communes}
    119 \end{table}
    120 
    121 \begin{table}[h]
    122 \begin{center}
    123 \begin{tabular}{|l|ccc|}
    124   \hline
    125                                                & 1 coeur        & 2 coeurs      & 4 coeurs      \\
    126   \hline
    127   Largeur du pipeline                          & 8              & 4             & 2             \\
    128   Taille-Ifetch\_queue                         & 8              & 4             & 2             \\
    129   Taille-Issue queue                           & 32             & 16            & 8             \\
    130   Taille-ReOrder Buffer                        & 128            & 64            & 32            \\
    131   Taille-Autres files                          & 16             & 8             & 4             \\
    132   Largeur des fenêtres                         & 16             & 8             & 4             \\
    133   Branch Target Buffer                         & 256            & 128           & 64            \\
    134   Méta prédicteur                              & 16k            & 8k            & 4k            \\
    135   Banc de Registres                            & 256            & 128           & 64            \\
    136   \hline
    137 \end{tabular}
    138 \end{center}
    139     \caption{Caractéristiques spécifiques}
    140 \end{table}
    141 
    142 \begin{table}[h]
    143 
    144 \begin{center}
    145 \begin{tabular}{|l|cc|}
    146   \hline
    147                              & L1          & L2             \\
    148                              & I/D séparé  & unifié         \\
    149         \hline
    150         Taille               & 8 ko \footnote{divisé par le nombre de cluster}  & 2 Mo           \\
    151         Nombre de lignes     & 128  \footnote{divisé par le nombre de cluster}  & 16k            \\
    152         Nombre de mots/ligne & 16          & 32             \\
    153         Associativité        & 4 voies     & 4 voies        \\
    154         Latence - Hit        & 2 cycles    & 6 cycles       \\
    155         Pénalités - Miss     & 4 cycles    & 100 cycles     \\
    156   \hline
    157 \end{tabular}
    158 \end{center}
    159  \caption{Caractéristiques du système mémoire}
    160 \end{table}
    161 
    162 %(Le nombre de lignes du premier niveau de cache est divisé par le nombre de cluster).
    163 
    164 
    165 %-------------------------------------------------------------------------
    166 \Section{Méthodologie}\label{methodologie}
    167 
    168 \subSection{Charge de travails}
    169 
    170 Dans un premier temps, nous avons sélectionné 6 benchmarks parmi les SPECINT2000 (164.gzip, 175.vpr, 181.mcf, 255.vortex, 256.bzip2, 300.twolf).
    171  %Nous ne les avons pas tout sélectionnés afin de ne pas avoir trop de simulations à effectuer et car tous les benchmarks ne fonctionnes pas (problème de compatibilité avec gcc 4 et avec notre modèle).
    172 
    173 Chaque archtecture est soumise à une charge de travails composée de 15 simulations (Le nombre de simulations est décrit par la combinaison $C_{nb\_benchmarks}^{nb\_threads}$).
    174 
    175 Pour les librairies standard (libc et libm) ainsi que les fonctions bas niveaux (read, write, open, close ...) qu'un système d'exploitation se doit d'offrir, nous utilisons la librairie {\it Newlib}.
    176 
    177 \subSection{Simulation}
    178 
    179 Pour les simulations, nous avons pris 14 instances de notre modèle.
    180 Elles sont déterminées par le nombre de cluster (A), le nombre d'ULs de chaque cluster (B) et le nombre de contexte de chaque UL (C).
    181 De plus chaque UL n'a accès qu'a un sous-ensemble distinct d'ALUs.
    182 Ce nombre définit la taille du groupe (D).
    183 Nous nommons une instance X$E$\_$A$\_$B$\_$C$-$D$ avec E=A*B*C.
    184 
    185 %Le tableau suivant récapitules toutes les instances que nous avons sélectionnées.
    186 
    187 %
    188 %\begin{table}[h]
    189 %\begin{center}
    190 %\begin{tabular}{ccccc}
    191 %Nom          & Cluster & UL & Contexte & Taille groupe d'ALUs\\
    192 %X4-1\_1\_4-8 & 1       & 1  & 4        & 8\\
    193 %X4-1\_2\_2-8 & 1       & 2  & 2        & 8\\
    194 %X4-1\_2\_2-4 & 1       & 2  & 2        & 4\\
    195 %X4-1\_4\_1-8 & 1       & 4  & 1        & 8\\
    196 %X4-1\_4\_1-2 & 1       & 4  & 1        & 2\\
    197 %X4-2\_1\_2-8 & 2       & 1  & 2        & 8\\
    198 %X4-2\_1\_2-4 & 2       & 1  & 2        & 4\\
    199 %X4-2\_2\_1-8 & 2       & 2  & 1        & 8\\
    200 %X4-2\_2\_1-4 & 2       & 2  & 1        & 4\\
    201 %X4-2\_2\_1-2 & 2       & 2  & 1        & 2\\
    202 %X4-4\_1\_1-8 & 4       & 1  & 1        & 8\\
    203 %X4-4\_1\_1-4 & 4       & 1  & 1        & 4\\
    204 %X4-4\_1\_1-2 & 4       & 1  & 1        & 2\\
    205 %\end{tabular}
    206 %\end{center}
    207 % \caption{Instances sélectionnées}
    208 %\end{table}
    209 
    210 Chaque simulation ce fait sur 110 millions de cycles.
    211 Les 10 premiers millions sont ignorés afin de chauffer les caches et les unités de prédictions.
    212 Pour chaque instance, nous prenons le nombre d'instructions exécutées des 15 simulations.
    213 Ce résultat est comparé à la moyenne des 6 benchmarks exécutés dans la version Single Thread du processeur (exécution séquentielle des 6 benchmarks avec la même instance).
    214 
    215 Nous pouvons remarquer que les instances ne vont pas être comparées avec une instance de référence, mais seront comparées avec l'accéllération de la version MT par rapport à la version ST.
    216 Ceci à la bonne propriété d'avoir une borne maximale à l'accélération qui est le nombre de thread (ici 4).
    217 
    218 %-------------------------------------------------------------------------
    219 \Section{Résultat}\label{resultat}
    220 
    221 La simulation nous fournit le graphe \ref{simulation_all}
    222 
    223 \begin{figure}[h]
    224   \begin{center}
    225     \resizebox{8cm}{!}{
    226       \includegraphics{\dirschema/simulation_all}}
    227     \label{simulation_all}
    228   \end{center}
    229 \end{figure}
    230 
    231 Première constatation simple : plus on dédit les ressources, plus on approche de l'accélération maximale.
    232 La version du X4\_4\_1\_1-2 ne partage que les caches de niveau L2, et est donc une version CMP pure, atteint une accélération de 3,92.
    233 Alors que la version X4-1\_1\_4-8 qui est un SMT pur à une accélération de 1,46.
    234  
    235 En terme de performance, il y a une accélération de 2,7 entre la version CMP et la version SMT.
    236 Attention dans l'interprétation des résultats, car ici nous ne comparons qu'en terme de performances l'incidence du partage des ressources matérielles.
    237 Pour que l'étude soit complète, nous devons aussi ajouter l'augmentation de la surface entre la version MT et la version ST.
    238 Ensuite il faudrait comparer le rapport entre l'augmentation de la performance sur le coût matériel.
    239 Nous pouvons néanmoins faire une étude abstraite du coût en surface.
    240 Le rapport de surface entre la version MT et ST de l'instance X4-4\_1\_1-2 est de 4.
    241 Ceci donne un rapport performance/surface pour la version CMP de degré 4 de 0,98.
    242 Pour le SMT, nous réutilisons les estimations d'Intel pour le Pentium 4 HT \cite{2003_koufaty}.
    243 Trois contextes de plus nous amène à 15\% de surface en plus.
    244 Ce qui donne un rapport de surface entre la version MT et ST de l'instance X4\_1\_1\_4-8 de 1,15.
    245 Dans ce cas, le rapport performance/surface pour la version SMT de degré 4 nous donne 1,27.
    246 Ce qui donne l'avantage à une implémentation SMT.
    247 
    248 Pour le partage du cache, nous analyserons les 3 instances suivantes :
    249 \begin{itemize}
    250 \item X4-4\_1\_1-2 avec 4 Icaches et Dcaches L1 de 2k chacun et accessible par un seul thread . L'accélération de 3,92.
    251 \item X4-2\_2\_1-2 avec 2 Icaches et Dcaches L1 de 4k chacun et accessible par deux    threads. L'accélération de 3,63.
    252 \item X4-1\_4\_1-2 avec 1 Icache  et Dcache  L1 de 8k chacun et accessible par quatre  threads. L'accélération de 3,27.
    253 \end{itemize}
    254 
    255 Le partage du cache induit des conflits d'accès au port.
    256 Dans le premier cas, il y a 4 ports d'accès au Icache de largeur de deux instructions.
    257 Alors que dans le troisième cas, il n'y a qu'un port de largeur de 8 instructions.
    258 Les paquets de 8 instructions permettent de mieux exploiter l'ILP mais moins le TLP : chaque contexte accède au cache tous les 4 cycles.
    259 Nous notons aussi que le partage du cache entraîne un effet de bord qui est le pourrissement du contenu du cache par les autres threads.
    260 Ainsi qu'un allongement du temps de réponses des échecs d'accès au cache du au plus grand nombre de miss et à la plus grande longueur des lignes.
    261 Le cache, optimisé pour tirer parti de la localité spatiale et temporelle d'un flot d'instructions ou de données se retrouve maintenant confrontés à plusieurs flots.
    262 
    263 Pour le partage de la partie exécutive, nous pouvons observer les instances suivantes :
    264 \begin{itemize}
    265 \item X4-2\_2\_1-2 où il y a 4 groupes de 2 ALUs et chacune est accessible par 1 Threads. L'accélération est de 3,63.
    266 \item X4-2\_2\_1-4 où il y a 2 groupes de 4 ALUs et chacune est accessible par 2 Threads. L'accélération est de 3,41.
    267 \item X4-2\_2\_1-8 où il y a 1 groupe  de 8 ALUs et         est accessible par 4 Threads. L'accélération est de 3,38.
    268 \end{itemize}
    269 
    270 Le partage des unités d'exécutions n'influe que légèrement sur les performances.
    271 Les ressources sont mieux utilisées.
    272 Or il y a une augmentation de la sensibilité du aux erreurs de routages (envoie vers une ALUs surchargés alors que d'autres ALUs sont en famine).
    273 Ceci est également du à notre politique de routage actuel qui est un round robin classique.
    274 Notons que dans le cas où il y aurait plus d'un contexte par coeur, le partage des unités d'exécutions est favorable.
    275 Par exemple X4-1\_2\_2-8 et X4-1\_2\_2-4 qui ont une accélération de 2,37 alors que les instances X4-2\_1\_2-8 et X4-2\_1\_2-4 ont respectivement une accélération de 2,51 et 2,4.
    276 Ceci est la conséquece d'une meilleur exploitation du TLP.
    277 La fenêtre de lancement est mieux utilisé et le réseau de routage à plus d'instructions à sa disposition.
    278 
    279 % Il y a aussi une hétérogénéité des instructions longues.
    280 
    281 Pour le partage opérative, voyons les instances suivantes :
    282 \begin{itemize}
    283 \item X4-1\_1\_4-8, 1 cluster  possédant chacun 1 UL  avec 4 contextes chacun. L'accélération est de 1,46.
    284 \item X4-1\_2\_2-8, 1 cluster  possédant chacun 2 ULs avec 2 contextes chacun. L'accélération est de 2,37.
    285 \item X4-1\_4\_1-8, 1 cluster  possédant chacun 4 ULs avec 1 contexte  chacun. L'accélération est de 2,94.
    286 \item X4-2\_1\_2-8, 2 clusters possédant chacun 1 UL  avec 2 contextes chacun. L'accélération est de 2,51.
    287 \item X4-2\_2\_1-8, 2 clusters possédant chacun 2 ULs avec 1 contexte  chacun. L'accélération est de 3,38.
    288 \item X4-4\_1\_1-8, 4 clusters possédant chacun 1 UL  avec 1 contexte  chacun. L'accélération est de 3,94.
    289 \end{itemize}
    290 
    291 Le partage de la partie opérative donne des résultats très disparates et demande une analyse plus poussée des résultats.
    292 Nous pouvons néanmoins dire qu'il y a une augmentation de la sensibilité des instructions de synchronisation et d'accès aux registres spéciaux (nous imposons qu'avant d'accèder au registre spéciaux, le pipeline doit être vide).
    293 Il y a également une augmentation des miss de spéculations du au partage du prédicteur de branchement.
    294 Ceci implique qu'il y a une augmentation des instructions inutiles dans le pipeline.
    295 Elles représentent 6,12\% des instructions dans X4-1\_1\_4-8, alors qu'elles ne représentent que 2,17\% dans l'instance X4-4\_1\_1-8.
    296 Ceci est aussi du à la largeur du pipeline et donc à la sous exploitation de L'ILP.
    297 Lors du décodage, nous choisissons de manière round robin la fetch queue contenant un paquet.
    298 Dans l'instance X4-4\_1\_1-8, 4 décodeurs décodent chacun en moyenne 1,63 instructions sur des paquets de 2 instructions (soit un total de 6,52 instructions), alors que dans l'instance X4-1\_1\_4-8, 1 décodeur prend un paquet de 8 instructions et décode en moyenne 3,7 instructions.
    299 La cause venant à des paquets d'instructions devant être alignés et à la présence de branchements.
    300 
    301 %-------------------------------------------------------------------------
    302 \Section{Conclusion}
    303 
    304 Cette étude à démontrer un fait déjà acquis, que l'accélération entre la version MT et la version ST d'un processeur diminue avec l'augmentation du partage des ressources.
    305 Notre modèle de processeur étant encore en cours de développement, nous nous destinons à fournir un modèle VHDL synthétisable.
    306 Ainsi la prochaine étude portera sur le coût surfacique du partage des ressources matérielles et ainsi déterminer quel degré de partage apporte le meilleur rapport performance/surface.
    307 
     1\input{\dirroot/01_abstract}
     2\input{\dirroot/02_introduction}
     3\input{\dirroot/03_experimentation.tex}
     4\input{\dirroot/04_methodologie.tex}
     5\input{\dirroot/05_resultat.tex}
     6\input{\dirroot/06_conclusion.tex}
    3087\bibliography{\dircommon/bibliographie}
  • /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/presentation-internal_seminary_overview/fr/root.tex

    r30 r20  
    1 \section{Motivations}
     1\section{Besoins}
    22
    33\ContentsCurrent
    44
    5 \slidetitle{Motivations}
    6            {
    7              Sécurité du hardware :
    8              \begin{description}
    9              \item[Ancienne tendance :] IPs (Intellectual Propritie) fermées labelisés sécuritaires.
    10              \item[Nouvelle tendance :] Ouverture des IPs, intégration de System On Chip (SOC)
    11              \end{description}
    12            }
    13            {
     5\slidetitle{Besoins}
     6           {Besoins pour les processeurs embarquées :
    147             
    15            }
    16 
    17 
    18 
    19 %\section{Besoins}
     8             \begin{itemize}
     9             \item Maîtrise du système
     10             \item Souplesse
     11             \item Performance
     12             \end{itemize}
     13           }
     14           {
     15             Où : téléphone portable, baladeur mp3/vidéo, automobile ...
     16
     17             \begin{description}
     18             \item[Maitrise du système :] Les processeurs généralistes sont utilisés dans un vaste échantillon d'application. Ceci touche également la sécurité.
     19             \item[Souplesse           :] Pour un concepteur de système embarqués : bien dimensionner son système
     20             \item[Performance         :] Application cible de plus en plus gourmande en ressources : beaucoup de threads avec des impératifs de rapidité.
     21             \end{description}
     22           }
     23
     24\subsection{Maîtrise du système}
     25\slidetitle{Besoin de la Maîtrise du système}
     26           {
     27             {\bf Plate-forme de confiance totale}
     28
     29             \begin{itemize}
     30             \item Projet Open
     31             \item ISA Open
     32             \item Instructions customisables
     33             \end{itemize}
     34           }
     35           {
     36             Morpheo s'inscrit dans le cadre du projet plate-forme de confiance totale.
     37
     38             Instructions customisables : possibilité à l'utilisateur de rajouter de nouvelles instructions. Comme par exemple pour le chiffrement ou le déchiffrement ...
     39%            On doit supposer que la mémoire d'instruction et de donnée ce trouve en milieu accéssible par les pirates. Leur chiffrement en devient obligatoire.
    2040%
    21 %\ContentsCurrent
    22 %
    23 %\slidetitle{Besoins}
    24 %          {Besoins pour les processeurs embarquées :
     41%            En hard dans le proc? cache? interconnect? I/O?
     42           }
     43
     44
     45\subsection{Souplesse}
     46\slidetitle{Besoin de Souplesse}
     47           {
     48             {\bf Adapation aux besoins des concepteurs}
     49
     50             \begin{itemize}
     51             \item Processeur hautement paramètrables
     52             \item Ressources internes hétérogènes
     53             \item FPGA
     54             \end{itemize}
     55           }
     56           {
     57             Souplesse : s'adapter aux besoins des concepteur de SoC.
     58
     59             \begin{description}
     60             \item[Paramètrables :] Fournir un grand jeu de paramètres afin de satisfaire les contraintes du concepteur
     61             \item[Hétérogènes :] En découle des paramètres
     62             \item[FPGA :] Cible de + en + utilisé, Si mappage possible sur les ressources limités d'un FPGA, alors possible également sur un ASIC
     63             \end{description}
     64           }
     65
     66\subsection{Performance}
     67\slidetitle{Besoin de Performance (1) - ILP vs TLP}
     68           {
     69             {\bf Exploitation des différentes formes de parallélisme}
     70             
     71             Paquet d'instruction pouvant s'éxecuter en parallèle :
     72             \begin{itemize}
     73             \item {\it Intra flot} : exploitation de l'ILP\newline limitation intrasèque au soft (3-5 instructions)
     74             \item {\it Inter flot} : exploitation du TLP  \newline limitation intrasèque au système cible
     75             \end{itemize}
     76           }
     77           {
     78             \begin{itemize}
     79             \item ILP : superscalaire, OutOfOrder, Spéculation
     80             \item TLP : CMP, SMT
     81             \end{itemize}
     82           }
     83
     84\slidetitle{Besoin de Performance (2) - CMP vs SMT}
     85           {
     86             \printgraph{GENERAL_type_of_multi_thread}{0.5}
     87             
     88%            (schéma)
    2589%           
    26 %            \begin{itemize}
    27 %            \item Maîtrise du système
    28 %            \item Souplesse
    29 %            \item Performance
    30 %            \end{itemize}
    31 %          }
    32 %          {
    33 %            Où : téléphone portable, baladeur mp3/vidéo, automobile ...
    34 %
    35 %            \begin{description}
    36 %            \item[Maitrise du système :] Les processeurs généralistes sont utilisés dans un vaste échantillon d'application. Ceci touche également la sécurité.
    37 %            \item[Souplesse           :] Pour un concepteur de système embarqués : bien dimensionner son système
    38 %            \item[Performance         :] Application cible de plus en plus gourmande en ressources : beaucoup de threads avec des impératifs de rapidité.
    39 %            \end{description}
    40 %          }
    41 %
    42 %\subsection{Maîtrise du système}
    43 %\slidetitle{Besoin de la Maîtrise du système}
    44 %          {
    45 %            {\bf Plate-forme de confiance totale}
    46 %
    47 %            \begin{itemize}
    48 %            \item Projet Open
    49 %            \item ISA Open
    50 %            \item Instructions customisables
    51 %            \end{itemize}
    52 %          }
    53 %          {
    54 %            Morpheo s'inscrit dans le cadre du projet plate-forme de confiance totale.
    55 %
    56 %            Instructions customisables : possibilité à l'utilisateur de rajouter de nouvelles instructions. Comme par exemple pour le chiffrement ou le déchiffrement ...
    57 %%           On doit supposer que la mémoire d'instruction et de donnée ce trouve en milieu accéssible par les pirates. Leur chiffrement en devient obligatoire.
    58 %%
    59 %%           En hard dans le proc? cache? interconnect? I/O?
    60 %          }
    61 %
    62 %
    63 %\subsection{Souplesse}
    64 %\slidetitle{Besoin de Souplesse}
    65 %          {
    66 %            {\bf Adapation aux besoins des concepteurs}
    67 %
    68 %            \begin{itemize}
    69 %            \item Processeur hautement paramètrables
    70 %            \item Ressources internes hétérogènes
    71 %            \item FPGA
    72 %            \end{itemize}
    73 %          }
    74 %          {
    75 %            Souplesse : s'adapter aux besoins des concepteur de SoC.
    76 %
    77 %            \begin{description}
    78 %            \item[Paramètrables :] Fournir un grand jeu de paramètres afin de satisfaire les contraintes du concepteur
    79 %            \item[Hétérogènes :] En découle des paramètres
    80 %            \item[FPGA :] Cible de + en + utilisé, Si mappage possible sur les ressources limités d'un FPGA, alors possible également sur un ASIC
    81 %            \end{description}
    82 %          }
    83 %
    84 %\subsection{Performance}
    85 %\slidetitle{Besoin de Performance (1) - ILP vs TLP}
    86 %          {
    87 %            {\bf Exploitation des différentes formes de parallélisme}
    88 %           
    89 %            Paquet d'instruction pouvant s'éxecuter en parallèle :
    90 %            \begin{itemize}
    91 %            \item {\it Intra flot} : exploitation de l'ILP\newline limitation intrasèque au soft (3-5 instructions)
    92 %            \item {\it Inter flot} : exploitation du TLP  \newline limitation intrasèque au système cible
    93 %            \end{itemize}
    94 %          }
    95 %          {
    96 %            \begin{itemize}
    97 %            \item ILP : superscalaire, OutOfOrder, Spéculation
    98 %            \item TLP : CMP, SMT
    99 %            \end{itemize}
    100 %          }
    101 %
    102 %\slidetitle{Besoin de Performance (2) - CMP vs SMT}
    103 %          {
    104 %            \printgraph{GENERAL_type_of_multi_thread}{0.5}
    105 %           
    106 %%           (schéma)
    107 %%           
    108 %%           Comparaison théorique de 5 types d'architectures :
    109 %%           ||Mono Coeur           ||Mono Contexte           ||Largeur infini||Idéal       ||
    110 %%           ||Mono Coeur           ||Mono Contexte           ||Largeur 4     ||Monolithique||
    111 %%           ||Multi Coeur d'ordre 4||Mono Contexte           ||Largeur 1     ||CMP         ||
    112 %%           ||Mono Coeur           ||Multi Contexte d'ordre 4||Largeur 4     ||SMT         ||
    113 %%           ||Multi coeur d'ordre 2||Multi Contexte d'ordre 2||Largeur 2     ||CMP de SMT  ||
    114 %          }
    115 %          {
    116 %            \begin{itemize}
    117 %            \item A et B : 17 instructions en 7 UT idéale
    118 %            \item (1) : 14 UT
    119 %            \item (2) : 17 UT, 34 slot vide, occupation 50\%
    120 %            \item (3) : 12 UT, 14 slot vide, occupation 70\%
    121 %            \item (4) : 11 UT, 10 slot vide, occupation 77\%
    122 %            \end{itemize}
    123 %          }
    124 %\slidetitle{Besoin de Performance (3) - Entre le CMP et le SMT}
    125 %          {
    126 %            \begin{description}
    127 %            \item[CMP :] L'intégralité des ressources d'un coeur sont dédiées   à un contexte.
    128 %            \item[SMT :] L'intégralité des ressources d'un coeur sont partagées entre tous les contextes.
    129 %            \item[Hybride :] Multitude de possibilité de partage des ressources internes.\\
    130 %              Une ressource est soit dédiée à un contexte soit partagée entre un certain nombre de contextes.
    131 %            \end{description}
    132 %          }
    133 %          {
    134 %            Définir ce qu'est une ressource : ALU, predicteur de branchement, cache ...
    135 %          }
    136 %
    137 %
    138 %\section{Solution}
    139 %\ContentsCurrent
    140 %\subsection{Initiatives actuelles}
    141 %\slidetitle{Initiatives actuelles}
    142 %          {
    143 %            Tous les processeurs sont des RISC scalaires.
    144 %
    145 %            \begin{description}
    146 %            \item[OpenRISC 1200 :] 32 bits, 5 étages. Jusqu'à 8 contextes.
    147 %            \item[Leon 2        :] 32 bits, 5 étages.
    148 %            \item[Leon 3        :] Leon 2 en 7 étages.
    149 %            \item[OpenSparcS1   :] 1 coeur 64bits, 6 étages et CMT 4.
    150 %            \item[OpenSparcT1   :] OpenSparcS1 avec 8 coeurs. Version OpenSource du Niagara.
    151 %            \item[Micro32       :] 32 bits, 6 étages.
    152 %            \item[OpenFire      :] 32 bits, 3 étages. Dérivés du MicroBlaze
    153 %            \item[aeMB          :] 32 bits, 3 étages. Dérivés du MicroBlaze
    154 %            \end{description}
    155 %          }
    156 %          {
    157 %            \begin{description}
    158 %            \item[OpenRISC 1200 :] Présence icache, dcache, immu, dmmu. Taille des caches, des opérandes, du banc de registres. Matériel spécifique : div, rotate, mul, mac.
    159 %            \item[Leon 2 et 3   :] Présence de div, mul, mac, floating point. Taille du banc de registres . Nombre de load delai. Configuration avancé du cache et de la MMU (fetch, decod, execute, memory, write) (fetch, decod, register access, execute, memory, exception, write)
    160 %            \item[OpenSparc     :] Présence de la Stream Processing Unit (cryptographie), 1 seul thread par coeur.
    161 %            \item[Micro32       :] Présence icache, dcache, debug. Taille des caches. Matériel spécifique : div, rotate, mul pipeline, extension de signes.
    162 %            \item[OpenFire      :] 3 étages (Fetch, Decod, Execute). Faiblement configurable (largeur des données, espace d'addressage, presence de mul et de cmp). Aucun support de caches
    163 %            \item[aeMB          :] 3 étages (Fetch, Decod, Execute). Support de caches. Pas configurable (Juste la largeur de l'espace d'addressage)
    164 %            \end{description}
    165 %          }
    166 %
    167 %\slide     {
    168 %            \printgraph{GENERAL_Art_of_State-Comparaison}{0.8}
    169 %          }
    170 %          {
    171 %          }
    172 %\subsection{Solution proposée}
    173 %\slidetitle{Solution proposée}
    174 %          {
    175 %            \begin{itemize}
    176 %            \item Partir d'une micro-architecture HighPerf.
    177 %            \item Ajout de la gestion du multi-thread.
    178 %            \item Rendre paramétrable les ressources internes.
    179 %            \item Mappage des instances de ce générateur de processeur sur les ressources limitées d'un FPGA.
    180 %            \end{itemize}
    181 %          }
    182 %          {
    183 %            Pentium 4, MipsR10000, Power5
    184 %          }
    185 %         
    186 %\subsection{Métrique}
    187 %\slidetitle{Métrique}
    188 %          {
    189 %            \begin{itemize}
    190 %            \item Obtenir le meilleur compromis Performance / Complexité.
    191 %              \begin{itemize}
    192 %              \item Performance : nombre de cycles nécessaire pour éxecuter les Benchmarks.
    193 %              \item Compléxité  : surface occupée du FPGA.
    194 %              \end{itemize}
    195 %            \item Obtenir le meilleur partage des ressources entre les contextes matériels. (Gain Performance / Coût surface).
    196 %              \begin{itemize}
    197 %              \item Gain en performance : rapport entre la performance MT sur la performance ST.
    198 %              \item Coût en surface     : rapport entre la surface     MT sur la surface     ST.
    199 %              \end{itemize}
    200 %            \end{itemize}
    201 %          }
    202 %          {
    203 %            benchmark : SPECINT2k, Dhrystone
    204 %
    205 %            FPGA : virtex5LX 330
    206 %          }
    207 %
    208 %\section{Morpheo}
    209 %\ContentsCurrent
    210 %
    211 %\subsection{Micro Architecture}
    212 %\slidetitle{Micro Architecture : Overview}
    213 %          {
    214 %            \printgraph{MORPHEO_micro_architecture-overview}{0.48}
    215 %          }
    216 %          {
    217 %            3 grandes parties :
    218 %            \begin{description}
    219 %            \item[Front end :] Amène des paquets d'instructions en séquence, et les décodes. Calcules les addresses suivantes (spéculation) et maintiens l'état des threads (idle, wait, run ...)
    220 %            \item[Out Of Order Engine :] Renome les registres (annulations des dépendances RAW, WAW et WAR). Re Order Buffer : mettre à jour l'état du contexte dans l'ordre d'arrivé des threads.
    221 %            \item[Execution Loop :] Boucle ``Read, execute, Write''. Ainsi que les bypass. Instructions peuvent ce lancer dans le désordres.
    222 %            \end{description}
    223 %          }
    224 %
    225 %\slidetitle{Micro Architecture : Front end}
    226 %          {
    227 %            \printgraph{MORPHEO_micro_architecture-front_end}{0.7}
    228 %          }
    229 %          {
    230 %          }
    231 %
    232 %\slidetitle{Micro Architecture : Out Of Order Engine}
    233 %          {
    234 %            \printgraph{MORPHEO_micro_architecture-out_of_order_engine}{0.7}
    235 %          }
    236 %          {
    237 %          }
    238 %
    239 %\slidetitle{Micro Architecture : Execution Loop}
    240 %          {
    241 %            \printgraph{MORPHEO_micro_architecture-execute_loop}{0.7}
    242 %          }
    243 %          {
    244 %          }
    245 %
    246 %\subsection{Méthodologie}
    247 %\slidetitle{Service proposé}
    248 %          {
    249 %            \printgraph{MORPHEO_service}{0.75}
    250 %          }
    251 %          {
    252 %            libMorpheo :
    253 %            \begin{itemize}
    254 %            \item Simulation systemC
    255 %              \begin{itemize}
    256 %              \item TestBench Vhdl
    257 %              \item Statistiques lors de la simulation
    258 %              \end{itemize}
    259 %            \item Vhdl : synthétisable sur FPGA
    260 %            \item Positions: Point d'entrée d'un outil de visualisation architectural (Stage M1)
    261 %            \end{itemize}
    262 %          }
    263 %   
    264 %\slidetitle{Méthodologie - Boucle d'Iteration}
    265 %          {
    266 %            \printgraph{MORPHEO_methodologie}{0.3}
    267 %          }
    268 %          {
    269 %            \begin{enumerate}
    270 %            \item SystemC
    271 %              \begin{enumerate}
    272 %              \item Ecriture du modèle systemC
    273 %              \item Ecriture d'un TestBench pour le systemc - goto 1.1
    274 %              \end{enumerate}
    275 %            \item VHDL
    276 %              \begin{enumerate}
    277 %              \item Ecriture du vhdl
    278 %              \item Validation de la stricte compatibilité entre le systemC et le Vhdl - goto 2.1 ou 1.1
    279 %              \end{enumerate}
    280 %            \item FPGA
    281 %              \begin{enumerate}
    282 %              \item Synthèse sur FPGA - goto 2.1, 1.1
    283 %              \item Mappage sur FPGA
    284 %              \end{enumerate}
    285 %            \end{enumerate}
    286 %          }
    287 %
    288 %\subsection{Perspective}
    289 %\slidetitle{Comment remplir nos journées?}
    290 %          {
    291 %            Il "reste" à faire ...
    292 %          }
    293 %          {
    294 %          }
     90%            Comparaison théorique de 5 types d'architectures :
     91%            ||Mono Coeur           ||Mono Contexte           ||Largeur infini||Idéal       ||
     92%            ||Mono Coeur           ||Mono Contexte           ||Largeur 4     ||Monolithique||
     93%            ||Multi Coeur d'ordre 4||Mono Contexte           ||Largeur 1     ||CMP         ||
     94%            ||Mono Coeur           ||Multi Contexte d'ordre 4||Largeur 4     ||SMT         ||
     95%            ||Multi coeur d'ordre 2||Multi Contexte d'ordre 2||Largeur 2     ||CMP de SMT  ||
     96           }
     97           {
     98             \begin{itemize}
     99             \item A et B : 17 instructions en 7 UT idéale
     100             \item (1) : 14 UT
     101             \item (2) : 17 UT, 34 slot vide, occupation 50\%
     102             \item (3) : 12 UT, 14 slot vide, occupation 70\%
     103             \item (4) : 11 UT, 10 slot vide, occupation 77\%
     104             \end{itemize}
     105           }
     106\slidetitle{Besoin de Performance (3) - Entre le CMP et le SMT}
     107           {
     108             \begin{description}
     109             \item[CMP :] L'intégralité des ressources d'un coeur sont dédiées   à un contexte.
     110             \item[SMT :] L'intégralité des ressources d'un coeur sont partagées entre tous les contextes.
     111             \item[Hybride :] Multitude de possibilité de partage des ressources internes.\\
     112               Une ressource est soit dédiée à un contexte soit partagée entre un certain nombre de contextes.
     113             \end{description}
     114           }
     115           {
     116             Définir ce qu'est une ressource : ALU, predicteur de branchement, cache ...
     117           }
     118
     119
     120\section{Solution}
     121\ContentsCurrent
     122\subsection{Initiatives actuelles}
     123\slidetitle{Initiatives actuelles}
     124           {
     125             Tous les processeurs sont des RISC scalaires.
     126
     127             \begin{description}
     128             \item[OpenRISC 1200 :] 32 bits, 5 étages. Jusqu'à 8 contextes.
     129             \item[Leon 2        :] 32 bits, 5 étages.
     130             \item[Leon 3        :] Leon 2 en 7 étages.
     131             \item[OpenSparcS1   :] 1 coeur 64bits, 6 étages et CMT 4.
     132             \item[OpenSparcT1   :] OpenSparcS1 avec 8 coeurs. Version OpenSource du Niagara.
     133             \item[Micro32       :] 32 bits, 6 étages.
     134             \item[OpenFire      :] 32 bits, 3 étages. Dérivés du MicroBlaze
     135             \item[aeMB          :] 32 bits, 3 étages. Dérivés du MicroBlaze
     136             \end{description}
     137           }
     138           {
     139             \begin{description}
     140             \item[OpenRISC 1200 :] Présence icache, dcache, immu, dmmu. Taille des caches, des opérandes, du banc de registres. Matériel spécifique : div, rotate, mul, mac.
     141             \item[Leon 2 et 3   :] Présence de div, mul, mac, floating point. Taille du banc de registres . Nombre de load delai. Configuration avancé du cache et de la MMU (fetch, decod, execute, memory, write) (fetch, decod, register access, execute, memory, exception, write)
     142             \item[OpenSparc     :] Présence de la Stream Processing Unit (cryptographie), 1 seul thread par coeur.
     143             \item[Micro32       :] Présence icache, dcache, debug. Taille des caches. Matériel spécifique : div, rotate, mul pipeline, extension de signes.
     144             \item[OpenFire      :] 3 étages (Fetch, Decod, Execute). Faiblement configurable (largeur des données, espace d'addressage, presence de mul et de cmp). Aucun support de caches
     145             \item[aeMB          :] 3 étages (Fetch, Decod, Execute). Support de caches. Pas configurable (Juste la largeur de l'espace d'addressage)
     146             \end{description}
     147           }
     148
     149\slide     {
     150             \printgraph{GENERAL_Art_of_State-Comparaison}{0.8}
     151           }
     152           {
     153           }
     154\subsection{Solution proposée}
     155\slidetitle{Solution proposée}
     156           {
     157             \begin{itemize}
     158             \item Partir d'une micro-architecture HighPerf.
     159             \item Ajout de la gestion du multi-thread.
     160             \item Rendre paramétrable les ressources internes.
     161             \item Mappage des instances de ce générateur de processeur sur les ressources limitées d'un FPGA.
     162             \end{itemize}
     163           }
     164           {
     165             Pentium 4, MipsR10000, Power5
     166           }
     167           
     168\subsection{Métrique}
     169\slidetitle{Métrique}
     170           {
     171             \begin{itemize}
     172             \item Obtenir le meilleur compromis Performance / Complexité.
     173               \begin{itemize}
     174               \item Performance : nombre de cycles nécessaire pour éxecuter les Benchmarks.
     175               \item Compléxité  : surface occupée du FPGA.
     176               \end{itemize}
     177             \item Obtenir le meilleur partage des ressources entre les contextes matériels. (Gain Performance / Coût surface).
     178               \begin{itemize}
     179               \item Gain en performance : rapport entre la performance MT sur la performance ST.
     180               \item Coût en surface     : rapport entre la surface     MT sur la surface     ST.
     181               \end{itemize}
     182             \end{itemize}
     183           }
     184           {
     185             benchmark : SPECINT2k, Dhrystone
     186
     187             FPGA : virtex5LX 330
     188           }
     189
     190\section{Morpheo}
     191\ContentsCurrent
     192
     193\subsection{Micro Architecture}
     194\slidetitle{Micro Architecture : Overview}
     195           {
     196             \printgraph{MORPHEO_micro_architecture-overview}{0.48}
     197           }
     198           {
     199             3 grandes parties :
     200             \begin{description}
     201             \item[Front end :] Amène des paquets d'instructions en séquence, et les décodes. Calcules les addresses suivantes (spéculation) et maintiens l'état des threads (idle, wait, run ...)
     202             \item[Out Of Order Engine :] Renome les registres (annulations des dépendances RAW, WAW et WAR). Re Order Buffer : mettre à jour l'état du contexte dans l'ordre d'arrivé des threads.
     203             \item[Execution Loop :] Boucle ``Read, execute, Write''. Ainsi que les bypass. Instructions peuvent ce lancer dans le désordres.
     204             \end{description}
     205           }
     206
     207\slidetitle{Micro Architecture : Front end}
     208           {
     209             \printgraph{MORPHEO_micro_architecture-front_end}{0.7}
     210           }
     211           {
     212           }
     213
     214\slidetitle{Micro Architecture : Out Of Order Engine}
     215           {
     216             \printgraph{MORPHEO_micro_architecture-out_of_order_engine}{0.7}
     217           }
     218           {
     219           }
     220
     221\slidetitle{Micro Architecture : Execution Loop}
     222           {
     223             \printgraph{MORPHEO_micro_architecture-execute_loop}{0.7}
     224           }
     225           {
     226           }
     227
     228\subsection{Méthodologie}
     229\slidetitle{Service proposé}
     230           {
     231             \printgraph{MORPHEO_service}{0.75}
     232           }
     233           {
     234             libMorpheo :
     235             \begin{itemize}
     236             \item Simulation systemC
     237               \begin{itemize}
     238               \item TestBench Vhdl
     239               \item Statistiques lors de la simulation
     240               \end{itemize}
     241             \item Vhdl : synthétisable sur FPGA
     242             \item Positions: Point d'entrée d'un outil de visualisation architectural (Stage M1)
     243             \end{itemize}
     244           }
     245   
     246\slidetitle{Méthodologie - Boucle d'Iteration}
     247           {
     248             \printgraph{MORPHEO_methodologie}{0.3}
     249           }
     250           {
     251             \begin{enumerate}
     252             \item SystemC
     253               \begin{enumerate}
     254               \item Ecriture du modèle systemC
     255               \item Ecriture d'un TestBench pour le systemc - goto 1.1
     256               \end{enumerate}
     257             \item VHDL
     258               \begin{enumerate}
     259               \item Ecriture du vhdl
     260               \item Validation de la stricte compatibilité entre le systemC et le Vhdl - goto 2.1 ou 1.1
     261               \end{enumerate}
     262             \item FPGA
     263               \begin{enumerate}
     264               \item Synthèse sur FPGA - goto 2.1, 1.1
     265               \item Mappage sur FPGA
     266               \end{enumerate}
     267             \end{enumerate}
     268           }
     269
     270\subsection{Perspective}
     271\slidetitle{Comment remplir nos journées?}
     272           {
     273             Il "reste" à faire ...
     274           }
     275           {
     276           }
    295277
    296278\slide{}{}
  • /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Graph/simulation_all.dat

    r30 r20  
    1 1.46 # x04_w08-01_e08-01  X4-1_1_4-8
    2 2.37 # x04_w08-04_e08-01  X4-1_2_2-8
    3 2.37 # x04_w08-04_e08-07  X4-1_2_2-4
    4 2.94 # x04_w08-07_e08-01  X4-1_4_1-8
    5 3.27 # x04_w08-07_e08-15  X4-1_4_1-2
    6 2.51 # x04_w08-08_e08-01  X4-2_1_2-8
    7 2.4  # x04_w08-08_e08-07  X4-2_1_2-4
    8 3.38 # x04_w08-11_e08-01  X4-2_2_1-8
    9 3.41 # x04_w08-11_e08-07b X4-2_2_1-4
    10 3.63 # x04_w08-11_e08-15  X4-2_2_1-2
    11 3.94 # x04_w08-15_e08-01  X4-4_1_1-8
    12 3.88 # x04_w08-15_e08-07  X4-4_1_1-4
    13 3.92 # x04_w08-15_e08-15  X4-4_1_1-2
     11.46 # x04_w08-01_e08-01
     22.37 # x04_w08-04_e08-01
     32.37 # x04_w08-04_e08-07
     42.94 # x04_w08-07_e08-01
     53.27 # x04_w08-07_e08-15
     62.51 # x04_w08-08_e08-01
     72.4  # x04_w08-08_e08-07
     83.38 # x04_w08-11_e08-01
     93.64 # x04_w08-11_e08-07a
     103.41 # x04_w08-11_e08-07b
     113.63 # x04_w08-11_e08-15
     123.94 # x04_w08-15_e08-01
     133.88 # x04_w08-15_e08-07
     143.92 # x04_w08-15_e08-15
  • /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Graph/simulation_all.p

    r30 r20  
    1616set yrange [0:4]
    1717   
    18 set xtics rotate by -25 ('X4-1_1_4-8'  0 , \
    19                          'X4-1_2_2-8'  1 , \
    20                          'X4-1_2_2-4'  2 , \
    21                          'X4-1_4_1-8'  3 , \
    22                          'X4-1_4_1-2'  4 , \
    23                          'X4-2_1_2-8'  5 , \
    24                          'X4-2_1_2-4'  6 , \
    25                          'X4-2_2_1-8'  7 , \
    26                          'X4-2_2_1-4'  8 , \
    27                          'X4-2_2_1-2'  9 , \
    28                          'X4-4_1_1-8'  10, \
    29                          'X4-4_1_1-4'  11, \
    30                          'X4-4_1_1-2'  12  )
     18set xtics rotate by -25 ('x04\_w08-01\_e08-01 '  0 , \
     19                         'x04\_w08-04\_e08-01 '  1 , \
     20                         'x04\_w08-04\_e08-07 '  2 , \
     21                         'x04\_w08-07\_e08-01 '  3 , \
     22                         'x04\_w08-07\_e08-15 '  4 , \
     23                         'x04\_w08-08\_e08-01 '  5 , \
     24                         'x04\_w08-08\_e08-07 '  6 , \
     25                         'x04\_w08-11\_e08-01 '  7 , \
     26                         'x04\_w08-11\_e08-07a'  8 , \
     27                         'x04\_w08-11\_e08-07b'  9 , \
     28                         'x04\_w08-11\_e08-15 '  10, \
     29                         'x04\_w08-15\_e08-01 '  11, \
     30                         'x04\_w08-15\_e08-07 '  12, \
     31                         'x04\_w08-15\_e08-15 '  13  \
     32                         )
    3133
    3234plot "simulation_all.dat" notitle
  • /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Makefile

    r30 r20  
    99#--------------------------------------------------------------------------------
    1010
    11 TYPE_DOC                = ("doc" "ppt" "poster")
     11TYPE_DOC                = ("doc" "ppt")
    1212
    1313DEFAULT_LANG            = fr
     
    3232DIR_SCHEMA_JPG          = Schema_jpg
    3333DIR_TEX                 = Source
    34 
    35 #--------------------------------------------------------------------------------
    36 # Directory
    37 #--------------------------------------------------------------------------------
    38 ENV_LATEX               = $(EXPORT) TEXINPUTS=$(DIR_INCLUDE):$$TEXINPUTS
    39 LATEX_WITH_ENV          = $(ENV_LATEX); $(LATEX)
    4034
    4135#--------------------------------------------------------------------------------
     
    9993                        @$(ECHO) "Génération du fichier $*.dvi"
    10094                        @#touch $(patsubst %.tex,%.ind,$<)
    101                         @$(LATEX_WITH_ENV) $<
    102                         @$(LATEX_WITH_ENV) $< > /dev/null
     95                        @$(LATEX) $<
     96                        @$(LATEX) $< > /dev/null
    10397                        @#$(MAKEINDEX) $(patsubst %.tex,%.idx,$<)
    10498                        @citation=`$(GREP) "citation" $*.aux`; \
     
    106100                          $(BIBTEX) $* ; \
    107101                        fi
    108                         @$(LATEX_WITH_ENV) $< > /dev/null
    109                         @$(LATEX_WITH_ENV) $< > /dev/null
     102                        @$(LATEX) $< > /dev/null
     103                        @$(LATEX) $< > /dev/null
    110104
    111105#--------------------------------------------------------------------------------
  • /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Package/presentation-internal_seminary_overview.sty

    r30 r20  
    22%\def\review{\number\day/\number\month/\number\year\xspace}
    33
    4 \title{Séminaire interne :\newline Processeur libre, haute performance et paramètrable}
     4\title{Séminaire interne :\newline Processeur libre, haute performance et hautement paramètrable}
    55
    6 \institute{Département SOC - Laboratoire d'information de Paris VI - France}
     6\institute{Equipe SOC - Laboratoire d'information de Paris VI - France}
    77 
    88\author{Mathieu Rosière}
  • /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/MORPHEO_micro_architecture-execute_loop.fig

    r30 r20  
    1 #FIG 3.2
     1#FIG 3.2  Produced by xfig version 3.2.5-alpha5
    22Landscape
    33Center
     
    13134 1 0 50 -1 -1 10 0.0000 4 105 510 7920 6030 memory\001
    14144 1 0 50 -1 -1 10 0.0000 4 105 255 7920 5895 read\001
    15 4 1 0 50 -1 -1 10 0.0000 4 105 345 7920 6165 queue\001
     154 1 0 50 -1 -1 10 0.0000 4 120 345 7920 6165 queue\001
    1616-6
    17176 10260 6390 10980 6840
     
    2929         8280 6840 7560 6840 7560 6390 8280 6390 8280 6840
    30304 1 0 50 -1 -1 10 0.0000 4 105 255 7920 6570 read\001
    31 4 1 0 50 -1 -1 10 0.0000 4 105 345 7920 6750 queue\001
     314 1 0 50 -1 -1 10 0.0000 4 120 345 7920 6750 queue\001
    3232-6
    33336 8640 6390 9360 6840
     
    36364 1 0 50 -1 -1 10 0.0000 4 105 690 9000 6570 reservation\001
    37374 1 0 50 -1 -1 10 0.0000 4 105 435 9000 6750 station\001
     38-6
     396 7380 7200 13860 7920
     402 2 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 5
     41         7380 7200 13860 7200 13860 7920 7380 7920 7380 7200
     422 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5
     43         13680 7740 13680 7380 7560 7380 7560 7740 13680 7740
     444 1 0 50 -1 -1 10 0.0000 4 135 480 10620 7605 register\001
    3845-6
    39462 2 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 5
     
    119126        3 0 1.00 60.00 120.00
    120127         10620 5760 10620 5130
    121 2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5
    122          13680 7740 13680 7380 7560 7380 7560 7740 13680 7740
    123 2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5
    124          13680 8280 13680 7920 7560 7920 7560 8280 13680 8280
    125 2 2 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 5
    126          7380 7200 13860 7200 13860 8460 7380 8460 7380 7200
    127 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
    128         3 0 1.00 60.00 120.00
    129          12780 7335 12780 7920
    130 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
    131         3 0 1.00 60.00 120.00
    132          8505 7380 8505 7920
    133 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
    134         3 0 1.00 60.00 120.00
    135          8415 7380 8415 7920
    136 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 1 2
    137         3 0 1.00 60.00 120.00
    138         3 0 1.00 60.00 120.00
    139          7560 8100 7200 8100
    1401284 1 0 50 -1 -1 10 1.5708 4 105 360 9945 6615 select\001
    1411294 1 0 50 -1 -1 10 1.5708 4 105 360 11385 6300 select\001
    142 4 1 0 50 -1 -1 10 0.0000 4 105 345 12240 6435 queue\001
     1304 1 0 50 -1 -1 10 0.0000 4 120 345 12240 6435 queue\001
    1431314 1 0 50 -1 -1 10 0.0000 4 105 345 12240 6255 write\001
    1441324 1 0 50 -1 -1 10 0.0000 4 90 465 13320 6255 execute\001
    145 4 1 0 50 -1 -1 10 0.0000 4 105 345 13320 6435 queue\001
    146 4 0 0 50 -1 -1 10 0.0000 4 135 405 8820 5355 bypass\001
     1334 1 0 50 -1 -1 10 0.0000 4 120 345 13320 6435 queue\001
     1344 0 0 50 -1 -1 10 0.0000 4 150 405 8820 5355 bypass\001
    1471354 1 0 50 -1 -1 10 0.0000 4 105 420 10620 5085 Dcache\001
    1481364 2 0 50 -1 -1 10 0.0000 4 90 465 13995 6660 execute\001
    1491374 0 0 50 -1 -1 10 0.0000 4 75 435 7245 6345 rename\001
    150 4 1 0 50 -1 -1 10 0.0000 4 135 480 10620 7605 register\001
    151 4 1 0 50 -1 -1 10 0.0000 4 105 630 10620 8145 status list\001
    152 4 0 0 50 -1 -1 10 0.0000 4 150 855 7290 8415 register_state\001
  • /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/MORPHEO_micro_architecture-out_of_order_engine.fig

    r30 r20  
    1 #FIG 3.2
     1#FIG 3.2  Produced by xfig version 3.2.5-alpha5
    22Landscape
    33Center
     
    88-2
    991200 2
     106 4590 5400 5310 5850
     112 4 0 1 0 11 50 -1 20 4.000 0 0 7 0 0 5
     12         5310 5850 4590 5850 4590 5400 5310 5400 5310 5850
     134 1 0 50 -1 -1 10 0.0000 4 105 315 4950 5670 RAT\001
     14-6
    10156 7020 3600 7740 4050
    11166 7020 3600 7740 4050
     
    21264 1 0 50 -1 -1 10 0.0000 4 105 315 7380 3150 State\001
    2227-6
    23 6 5130 5400 5850 5850
    24 2 4 0 1 0 11 50 -1 20 4.000 0 0 7 0 0 5
    25          5850 5850 5130 5850 5130 5400 5850 5400 5850 5850
    26 4 1 0 50 -1 -1 10 0.0000 4 105 315 5490 5670 RAT\001
    27 -6
    28 6 6750 5985 7470 6435
     286 6210 5985 6930 6435
    29292 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5
    30          7470 6435 6750 6435 6750 5985 7470 5985 7470 6435
    31 4 1 0 50 -1 -1 10 0.0000 4 105 375 7110 6345 RAW\001
    32 4 1 0 50 -1 -1 10 0.0000 4 105 375 7110 6165 Check\001
     30         6930 6435 6210 6435 6210 5985 6930 5985 6930 6435
     314 1 0 50 -1 -1 10 0.0000 4 105 375 6570 6345 RAW\001
     324 1 0 50 -1 -1 10 0.0000 4 105 375 6570 6165 Check\001
    3333-6
    34341 3 0 1 0 7 50 -1 0 3.000 1 0.0000 7652 5222 30 30 7652 5222 7682 5218
    35 1 3 0 1 0 7 50 -1 0 3.000 1 0.0000 7665 5764 30 30 7665 5764 7695 5760
     352 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
     36        3 0 1.00 60.00 120.00
     37         4230 6210 6210 6210
     382 4 0 1 0 11 50 -1 20 4.000 0 0 7 0 0 5
     39         5310 5040 4590 5040 4590 4590 5310 4590 5310 5040
     402 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5
     41         6390 5850 5670 5850 5670 5400 6390 5400 6390 5850
     422 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5
     43         7470 5850 6750 5850 6750 5400 7470 5400 7470 5850
    36442 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
    3745        3 0 1.00 60.00 120.00
    38          7470 6210 7830 6210
     46         4950 5850 4950 6210
     472 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
     48        3 0 1.00 60.00 120.00
     49         6930 6210 7830 6210
     502 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
     51        3 0 1.00 60.00 120.00
     52         7110 6210 7110 5850
    39532 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5
    4054         8550 6435 7830 6435 7830 5985 8550 5985 8550 6435
     
    44582 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
    4559        3 0 1.00 60.00 120.00
     60         6750 5625 6390 5625
     612 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
     62        3 0 1.00 60.00 120.00
     63         7110 4050 7110 5400
     642 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
     65        3 0 1.00 60.00 120.00
     66         7110 4815 5310 4815
     672 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
     68        3 0 1.00 60.00 120.00
    4669         8910 3825 7740 3825
    47702 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
    4871        3 0 1.00 60.00 120.00
     72         7110 4320 4230 4320
     732 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
     74        3 0 1.00 60.00 120.00
    4975         7650 6210 7650 4050
     762 2 2 1 0 7 50 -1 -1 3.000 0 0 7 0 0 5
     77         8730 6570 4410 6570 4410 4410 8730 4410 8730 6570
    50782 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 1 2
    5179        3 0 1.00 60.00 120.00
     
    56842 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 1 0 3
    5785        3 0 1.00 60.00 120.00
    58          7650 5220 5670 5220 5670 5400
    59 2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
    60         3 0 1.00 60.00 120.00
    61          4770 6210 6750 6210
    62 2 4 0 1 0 11 50 -1 20 4.000 0 0 7 0 0 5
    63          5850 5040 5130 5040 5130 4590 5850 4590 5850 5040
    64 2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5
    65          6930 5850 6210 5850 6210 5400 6930 5400 6930 5850
     86         7650 5220 5130 5220 5130 5400
    66872 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
    6788        3 0 1.00 60.00 120.00
    68          5490 5850 5490 6210
     89         4770 5040 4770 5400
    69902 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
    7091        3 0 1.00 60.00 120.00
    71          7110 4320 4770 4320
    72 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
    73         3 0 1.00 60.00 120.00
    74          5310 5040 5310 5400
    75 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
    76         3 0 1.00 60.00 120.00
    77          6570 5850 6570 6210
    78 2 2 2 1 0 7 50 -1 -1 3.000 0 0 7 0 0 5
    79          8730 6570 4950 6570 4950 4410 8730 4410 8730 6570
    80 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 3
    81         3 0 1.00 60.00 120.00
    82          7110 4050 7110 4815 5850 4815
    83 2 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5
    84          8550 5850 7830 5850 7830 5400 8550 5400 8550 5850
    85 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
    86         3 0 1.00 60.00 120.00
    87          7650 5760 7830 5760
    88 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 3
    89         3 0 1.00 60.00 120.00
    90          7110 4815 7110 5490 7830 5490
    91 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
    92         3 0 1.00 60.00 120.00
    93          7830 5625 6930 5625
    94 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 1 2
    95         3 0 1.00 60.00 120.00
    96         3 0 1.00 60.00 120.00
    97          8550 5625 8910 5625
     92         6030 5850 6030 6210
     934 1 0 50 -1 -1 10 0.0000 4 105 315 4950 4770 RAT\001
     944 1 0 50 -1 -1 10 0.0000 4 150 450 4950 4950 Update\001
     954 1 0 50 -1 -1 10 0.0000 4 105 270 6030 5580 Free\001
     964 1 0 50 -1 -1 10 0.0000 4 105 255 6030 5805 List\001
     974 1 0 50 -1 -1 10 0.0000 4 105 390 7110 5580 Status\001
     984 1 0 50 -1 -1 10 0.0000 4 105 255 7110 5775 List\001
    98994 1 0 50 -1 -1 10 0.0000 4 105 480 8190 6165 Rename\001
    99 4 1 0 50 -1 -1 10 0.0000 4 105 345 8190 6345 queue\001
     1004 1 0 50 -1 -1 10 0.0000 4 120 345 8190 6345 queue\001
    1001014 2 0 50 -1 -1 10 0.0000 4 75 435 8865 5940 rename\001
     1024 0 0 50 -1 -1 10 0.0000 4 150 405 4275 4230 update\001
     1034 0 0 50 -1 -1 10 0.0000 4 105 345 4275 6165 decod\001
    1011044 0 0 50 -1 -1 10 0.0000 4 105 360 7695 4770 insert\001
     1054 2 0 50 -1 -1 10 0.0000 4 105 345 7065 4770 retire\001
    1021064 2 0 50 -1 -1 10 0.0000 4 90 465 8865 3780 execute\001
    103 4 1 0 50 -1 -1 10 0.0000 4 105 315 5490 4770 RAT\001
    104 4 1 0 50 -1 -1 10 0.0000 4 135 450 5490 4950 Update\001
    105 4 1 0 50 -1 -1 10 0.0000 4 105 270 6570 5580 Free\001
    106 4 1 0 50 -1 -1 10 0.0000 4 105 255 6570 5805 List\001
    107 4 0 0 50 -1 -1 10 0.0000 4 135 405 4815 4230 update\001
    108 4 0 0 50 -1 -1 10 0.0000 4 105 345 4815 6165 decod\001
    109 4 2 0 50 -1 -1 10 0.0000 4 105 345 7065 4770 retire\001
    110 4 1 0 50 -1 -1 10 0.0000 4 105 390 8190 5535 Status\001
    111 4 1 0 50 -1 -1 10 0.0000 4 105 255 8190 5670 List\001
    112 4 1 0 50 -1 -1 10 0.0000 4 135 540 8190 5805 Manager\001
    113 4 2 0 50 -1 -1 10 0.0000 4 150 855 8865 5355 register_state\001
  • /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Schema/MORPHEO_service.fig

    r30 r20  
    1 #FIG 3.2
     1#FIG 3.2  Produced by xfig version 3.2.5-alpha5
    22Landscape
    33Center
     
    88-2
    991200 2
    10 5 1 0 1 0 29 50 -1 20 0.000 0 1 0 0 4575.000 2100.000 4350 2400 4575 2475 4800 2400
    11 5 1 0 1 0 2 48 -1 40 0.000 0 0 0 0 5025.000 2700.000 4800 2400 5025 2325 5250 2400
    12106 3675 4050 4725 4650
    13115 1 0 1 0 2 50 -1 20 0.000 0 1 0 0 3975.000 4200.000 3750 4500 3975 4575 4200 4500
     
    33312 1 0 1 0 31 50 -1 20 0.000 0 0 7 0 0 4
    3432         6150 4500 6150 4050 7050 4050 7050 4500
     33-6
     346 4350 1950 5250 2550
     355 1 0 1 0 29 50 -1 20 0.000 0 1 0 0 4575.000 2100.000 4350 2400 4575 2475 4800 2400
     365 1 0 1 0 2 48 -1 40 0.000 0 0 0 0 5025.000 2700.000 4800 2400 5025 2325 5250 2400
     372 1 0 1 0 29 50 -1 20 0.000 0 0 7 0 0 4
     38         4350 2400 4350 1950 5250 1950 5250 2400
     394 1 0 50 -1 -1 10 0.0000 4 105 255 4800 2325 .gen\001
     404 1 0 50 -1 -1 10 0.0000 4 120 675 4800 2100 G\351n\351rateur\001
    3541-6
    36426 5550 1950 6450 2550
     
    81872 4 0 1 0 4 50 -1 20 0.000 0 0 7 0 0 5
    8288         5850 4050 4950 4050 4950 4500 5850 4500 5850 4050
    83 2 1 0 1 0 29 50 -1 20 0.000 0 0 7 0 0 4
    84          4350 2400 4350 1950 5250 1950 5250 2400
    85 4 1 0 50 -1 -1 10 0.0000 4 135 570 5400 3225 Morpheo\001
     894 1 0 50 -1 -1 10 0.0000 4 150 570 5400 3225 Morpheo\001
    86904 1 0 50 -1 -1 10 0.0000 4 105 435 4200 4275 VHDL\001
    87914 1 0 50 -1 -1 10 0.0000 4 105 435 4800 5475 VHDL\001
     
    89934 1 0 50 -1 -1 10 0.0000 4 105 585 6000 5325 Statistics\001
    90944 1 0 50 -1 -1 10 0.0000 4 105 585 6600 4200 Positions\001
    91 4 1 0 50 -1 -1 10 0.0000 4 105 255 6600 4425 .pos\001
     954 1 0 50 -1 -1 10 0.0000 4 120 255 6600 4425 .pos\001
    92964 1 0 50 -1 -1 10 0.0000 4 105 465 7500 3225 Viewer\001
    93974 1 0 50 -1 -1 10 0.0000 4 135 555 5400 4275 SystemC\001
    94 4 1 0 50 -1 -1 10 0.0000 4 105 255 4800 2325 .gen\001
    95 4 1 0 50 -1 -1 10 0.0000 4 105 615 4800 2100 Generator\001
  • /trunk/IPs/systemC/processor/Morpheo/Makefile

    r30 r20  
    1 include $(MORPHEO_TOPLEVEL)/Makefile.tools
     1include $(SOC)/Makefile.tools
    22
    33#-----[ Directory ]----------------------------------------------------
     
    7272                        @$(ECHO) ""
    7373                        @$(ECHO) "Delete     temporary files              "$(PWD)
    74                         @$(RM) *~
    7574#                       @$(MAKE) clean_rec DIR_CLEAN=.
    7675
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/include/BaseP.h

    r30 r20  
    2222      string comment;
    2323      int level;
    24      
    2524    protected:
    2625     
     
    2928      morpheo::tools::viewer::bdd::Entity *getEntity();
    3029      morpheo::tools::viewer::bdd::Architecture *getArchitecture();
    31       QList<morpheo::tools::viewer::bdd::Component> *getComponent();
     30      QList<morpheo::tools::viewer::bdd::Component> *BaseP::getComponent();
    3231
    3332      BaseP();
    34       BaseP(BaseP *p);
    3533      ~BaseP ();
    3634      void setComment(string s);
     
    3937      int getLevel();
    4038      void setLevel (int v);
    41       int getSchema();
    4239    };//end class BaseP
    4340
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/include/BaseV.h

    r30 r20  
    2828      //accesseurs
    2929      morpheo::tools::viewer::bdd::BaseP  get_BasePos(string v);
    30       morpheo::tools::viewer::bdd::Signal *getSignal(morpheo::tools::viewer::bdd::BaseP *top,string c,PortMap *dest);
     30      morpheo::tools::viewer::bdd::Signal *getSignal(string c,PortMap *dest);
    3131      QList<morpheo::tools::viewer::bdd::BaseP>  *getBaseP();
    3232      //morpheo::tools::viewer::bdd::Param get_Param(string v);
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/include/Entity.h

    r30 r20  
    2727     
    2828    public:
    29       Entity(string n,string t,int l);
     29      Entity(string n,int l);
    3030      ~Entity();
    3131      string getComment();
    3232      string getName();
    33       string getType();
    3433      void setComment(string s);
    3534      int getSchema();
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseP_accessors.cpp

    r30 r20  
    1313    comment=s;
    1414  }
    15   void BaseP::setLevel(int s){
    16     level=s;
    17   }
    18  
    1915  void BaseP::setArchitecture(Architecture *a)
    2016  {
     
    3935    return comment;
    4036  }
    41   int BaseP::getLevel()
    42   {
    43     return level;
    44   }
    4537
    4638    QList<morpheo::tools::viewer::bdd::Component> *BaseP::getComponent()
     
    4941  }
    5042
    51   int BaseP::getSchema(){return ent->getSchema();}
    5243};//end bdd
    5344};//end viewer
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseP_alloc.cpp

    r30 r20  
    1515  }
    1616
    17  BaseP::BaseP(BaseP *p){
    18    *this=p;
    19   }
    20  
    2117};//end bdd
    2218};//end viewer
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseV_accessors.cpp

    r30 r20  
    1010namespace bdd{     
    1111
    12   void BaseV::setComment(string s){
     12 void BaseV::setComment(string s){
    1313    comment=s;
    1414  }
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseV_afficheBaseConsole.cpp

    r30 r20  
    1 /*
     1 /*
    22 *
    33 * [desc.]
     
    1313        = pos->begin(); it != pos->end(); ++it)
    1414    {
    15      
    1615      morpheo::tools::viewer::bdd::Entity *test=(it->getEntity());
    1716      string n2=test->getName();
     
    1918      cout << n << endl ;
    2019      cout << "----Entity-----------------------------------------" <<endl;
    21       cout << "Entity name:"<< n2 <<" level:"<< it->getLevel()<< endl;
     20      cout << "Entity name:"<< n2<< endl;
    2221      cout << "------------------ports east-----------------------" <<endl;
    2322     
     
    101100           cout << "port :" << it3->getPort() <<endl;
    102101           cout << "comment :" << it3->getComment() <<endl;
    103 
    104            
     102         
     103         
    105104           
    106105             }
    107106         }
    108107      }//if
    109       cout << endl<< "************    fin BASEP  *******************"<<endl <<endl;
    110        
    111108    }//for
    112      
     109   
    113110  }
    114111 
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseV_getSignal.cpp

    r30 r20  
    99namespace viewer{
    1010namespace bdd{ 
    11   /*
    12    * search and find the signal
    13    * top : actual component is viewed on screen
    14    * c: the component (source) which is connected to the dest
    15    * dest : the port destination informations
    16    */
    17   morpheo::tools::viewer::bdd::Signal *BaseV::getSignal(BaseP *top,string c,morpheo::tools::viewer::bdd::PortMap *dest)
     11
     12  morpheo::tools::viewer::bdd::Signal *BaseV::getSignal(string c,morpheo::tools::viewer::bdd::PortMap *dest)
    1813  {
    1914    int srcX,srcY,destX,destY;
    20     Architecture *aa=top->getArchitecture();
     15    Architecture *aa=((pos->operator[](0)).getArchitecture());
    2116    morpheo::tools::viewer::bdd::Component x=aa->getComponent(c);
    2217    // cout << dest->getName() <<endl; 
     
    2419    srcX=p->get_x();
    2520    srcY=p->get_y();
    26     //cout << dest->getComponent() <<endl; 
     21    // cout << dest->getComponent() <<endl; 
    2722    morpheo::tools::viewer::bdd::BaseP res=get_BasePos(dest->getComponent());
    2823    morpheo::tools::viewer::bdd::Port *pm=(res.getEntity())->searchPort(dest->getPort());
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseV_searchComponent.cpp

    r30 r20  
    1 
    21 /*
    32 *
     
    1211
    1312  morpheo::tools::viewer::bdd::BaseP BaseV::get_BasePos(string v){
    14     int tmp=listcomp->indexOf(v,0);
    15     if(tmp==-1){
    16       cout << "not found\n";
    17       return NULL;
    18     }
    19     else
    20       return pos->operator[](tmp);
     13    return pos->operator[](listcomp->indexOf(v,0));
    2114  }
    2215
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/Component_accessors.cpp

    r30 r20  
    1616  string Component::getComment(){ return comment;}
    1717  string Component::getName(){ return name;}
    18   string Component::getType(){ return type;}
     18    string Component::getType(){ return type;}
    1919  int Component::get_x(){return pos_x+size_x;}
    2020  int Component::get_y(){return pos_y+size_y;}
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/Entity_accessors.cpp

    r30 r20  
    1818 
    1919  string Entity::getName(){ return name;}
    20   string Entity::getType(){ return type;}
    2120 
    2221  int Entity::getSchema(){return schema;}
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/Entity_alloc.cpp

    r30 r20  
    1111
    1212
    13   Entity::Entity(string n,string t,int l)
     13  Entity::Entity(string n,int l)
    1414    :ListePorts()
    1515  {
    1616    name=n;
    1717    schema=l;
    18     type=t;
     18
    1919  }
    2020 
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/include/window.h

    r30 r20  
    1414
    1515#include <iostream>
    16 #include <cmath>
    17 #include <sstream>
    1816#include <qstring.h>
    1917#include <qapplication.h>
     
    3836#include <qtreeview.h>
    3937#include <qdirmodel.h>
    40 #include <qevent.h>
    41 #include <qfiledialog.h>
    42 
    4338
    4439#include "Tools/Viewer/Parser/include/parser.h"
     
    4944#define EAST 2
    5045#define WEST 3
    51 
    52 #define MARGEX 50
    53 #define MARGEY 70
    5446
    5547using namespace morpheo::tools::viewer::parser;
     
    7062
    7163  Window(QString name);
    72   void _setParse(Parse *p);  //parse the base
    73   void _init_file();    //search component and port before drawing
     64  void _setParse(Parse *p); 
     65  void _init_file();   
    7466 private slots:
    7567   
    76   void _open(); //open a file
    77  void _open_error();
     68  void _open();
     69  void _open_end();
     70  void _open_error();
    7871
    79   void _save(); //save a file
     72  void _save();
    8073  void _saveAs();
    8174  void _saveAsOk();
    82 
    83   void _close(); //close a file
    84 
    85   void _quit(); //quit a file
     75  void _close();
     76  void _quit();
    8677  void _quit2();
    87 
    88   void _zoomIn(); //zoom for the architecture view
     78  void _zoomIn();
    8979  void _zoomOut();
    9080  void _defautZoom();
     81  void _level();
     82  void _informations();
     83  void _parameters();
     84  void _about();
    9185
    92   void _level(); 
    93   void _informations(); //show or hide informations window
    94   void _parameters(); //show or hide parameters window
    95   void _about(); //about the programm
    96   void _component_name(); //show or hide the components name
    97   void _signal_name(); //show or hide the signals name
     86 private:
    9887
    99   void _back();//return to the previous view
    100   void _cancel_selection();
    101   void _apply();
     88  void wparameters();
     89  void winformations();
     90  void paintEvent( QPaintEvent * );
     91  void repaint();
     92  void drawPort(int x,int y,int pos,string dir);
    10293
    103  protected :
    104   void mousePressEvent (QMouseEvent *); //mouse handler when mouse pressed
    105   void mouseMoveEvent (QMouseEvent *); //mouse handler in other case
    106  private :
    107   void wparameters(); // parameters window builder
    108   void winformations(); //informations window builder
    109   void paintEvent( QPaintEvent * ); //drawing panel
    110   void repaint(); //repaint the panel with current parameters
    111   void drawPort(int x,int y,int pos,string dir); //draw the components ports
    112   void write_name(string name); //write the name of the component clicked name in the informations window
    113   void write_comment(string comment);
    114   void write_type(string t);
    115 
    116   QList <Port> port_east; //ports lists
     94  QList <Port> port_east;
    11795  QList <Port> port_west;
    11896  QList <Port> port_north;
     
    12098  QList <Component> *compo;
    12199
    122   QWidget *wparam;//windows widget (informations, parameters, open, save ...)
     100  QWidget *wparam;
    123101  QWidget *winfo;
    124102  QWidget *ws;
    125103  QWidget *wq;
     104  QWidget *wo;
    126105  QWidget *wa;
    127106
    128   QWidget *mess_charg;
    129   QWidget *mess;
    130   QBoxLayout *informations; //informations box
    131   QBoxLayout *parameters; //parameters box
    132 
    133   Parse *parse; //the parser
    134   BaseV *base; //the current BaseV
    135   BaseP p; //the current BaseP
    136   Entity *entity; //entity of current base
    137   Coord *c;
     107  Parse *parse;
     108  BaseV *base;
     109  BaseP p;
     110  Entity *entity;
     111  Coord *c;
    138112 
    139113  QPainter painter;
     
    141115  QStatusBar *status;
    142116
    143   QLineEdit *file_name; //retrieve the name user wants to open from the open window
    144   QString current_name; //name of the current file opened
     117  QLineEdit *file_name;
     118  QString current_name;
    145119
    146   /*items of the informations window*/
    147   QLabel *lname;//name of the component clicked
    148   QLabel *ln;
    149   QLineEdit *comment;//comment associated with the component clicked
    150   QLabel *lt;
    151   QLabel *ltype;//type of the component
    152  
    153   int level; //level of architecture
    154   int mouseX; //mouse position
    155   int mouseY;
    156 
    157   int window_height; //main window size
     120  int window_height;
    158121  int window_width;
    159   int margeX;//size of the marge
     122  int panel_heigth;
     123  int panel_width;
     124  int margeX;
    160125  int margeY;
    161   int portX;//port size, position and size of components, used when drawing the architecture
     126  int portX;
    162127  int portY;
    163128  int posX;
     
    166131  int tailleY;
    167132
    168   int cpt_level;
    169   QString tab[50];
    170 
    171   QString father;//father name
    172   QString current;//name of the current architecture visible
    173 
    174   bool save_as;
     133  bool save_as;
    175134  bool first_save;
    176   bool info_open; //know if the informations window opened or not
    177   bool param_open; //know if the parameters window opened or not
    178   bool is_save; //know if the file has been saved
    179   bool paint; //(re)paint or not
    180   bool wq_open; //know if Quit/Open ( 2 windows possible)/Save window is open
     135  bool info_open;
     136  bool param_open;
     137  bool is_save;
     138  bool paint;
     139  bool wq_open;
     140  bool wo_open;
     141  bool ws_open;
    181142  bool wa_open;
    182   bool quit_demand;//know if user clicked on "quit" (used for saving file before quit)
    183   bool file_open;//know if a file is still open (used if user wants to open another file)
    184   bool signalName;//show or hide signals name
    185   bool componentName;//show or hide components name
    186   bool charg_open;//back chargement message box opened or not
    187   bool mess_open;//chargment message box opened or not
    188   bool component_clicked;//if user clicked on a component to modify its parameters
    189 
    190 
     143  bool quit_demand;
     144  bool file_open;
     145  bool is_parse;
    191146};
    192147      };
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_drawAll.cpp

    r30 r20  
    77void Window::paintEvent( QPaintEvent * )
    88{
     9   
    910  /*draw window size*/
    1011  setMinimumSize(600,600);
    11    
    12   int schema;
    13   QString t;
    14  
     12   
    1513  if(paint){
     14
    1615    painter.begin(this);
    1716    painter.setPen(Qt::blue);
    18     painter.drawRect(MARGEX,MARGEY,MARGEX+450,MARGEY+450);
    19 
     17    painter.drawRect(margeX,margeY,margeX+450,margeY+450);
    2018   
    2119    for(QList<Port>::iterator it=port_east.begin(); it!=port_east.end(); ++it){
    2220      portX = it->get_x();
    2321      portY = it->get_y();
    24       drawPort(portX + MARGEX,portY + MARGEY ,EAST,it->getDirection());
    25 
     22      drawPort(portX + margeX,portY + margeY ,EAST,it->getDirection());
    2623    }
    2724   
     
    2926      portX = it->get_x() ;
    3027      portY = it->get_y() ;
    31       drawPort(portX + MARGEX,portY + MARGEY, WEST, it->getDirection());
    32 
     28      drawPort(portX + margeX,portY + margeY, WEST, it->getDirection());
    3329    }
    3430
     
    3632      portX = it->get_x() ;
    3733      portY = it->get_y() ;
    38       drawPort(portX + MARGEX ,portY+MARGEY,NORTH,it->getDirection());
    39 
     34      drawPort(portX + margeX ,portY+margeY,NORTH,it->getDirection());
    4035    }
    4136
     
    4338      portX = it->get_x() ;
    4439      portY = it->get_y() ;
    45       drawPort(portX + MARGEX,portY+MARGEY,SOUTH,it->getDirection());
     40      drawPort(portX + margeX,portY+margeY,SOUTH,it->getDirection());
     41    }
    4642
    47     }
    48    
     43
    4944    if(p.getArchitecture()!=NULL){
    5045      compo = p.getComponent();
    5146      for(QList<Component>::iterator it=compo->begin();it!=compo->end();++it){
    5247        Coord *co = it->get_Position();
    53         posX = co->get_hg_x()+MARGEX;
    54         posY = co->get_hg_y()+MARGEY;
     48        posX = co->get_hg_x()+margeX;
     49        posY = co->get_hg_y()+margeY;
    5550        tailleX = co->get_size_x();
    5651        tailleY = co->get_size_y();
    57        
    58         t=QString::fromStdString(it->getType()).toLower();
    59         BaseP tp = base->get_BasePos(t.toStdString());
    60         if(&tp != NULL){
    61           schema=tp.getSchema();
    62           switch(schema){
    63           case 0:
    64             painter.drawRect(posX,posY,tailleX,tailleY);
    65             break;
    66           case 1:
    67             painter.drawEllipse(posX,posY,tailleX,tailleY);
    68             break; 
    69           case 2:
    70             painter.drawRect(posX,posY,tailleX,tailleY);
    71             painter.drawLine(posX+tailleX/4,posY+tailleY,posX+tailleX/4,posY);
    72             painter.drawLine(posX+tailleX/2,posY+tailleY,posX+tailleX/2,posY);
    73             painter.drawLine(posX+3*tailleX/4,posY+tailleY,posX+3*tailleX/4,posY);
    74             break;
    75           case 3:
    76             painter.drawRect(posX,posY,tailleX,tailleY);
    77             painter.drawLine(posX,posY+tailleY,posX+tailleX/2,posY+tailleY/2);
    78             painter.drawLine(posX+tailleX,posY+tailleY,posX+tailleX/2,posY+tailleY/2);
    79             break;
    80           }
    81         }
    82 
    83         if (componentName){
    84           QString compo_name = QString::fromStdString(it->getName());
    85           painter.drawText(posX , posY + tailleY/2,compo_name);
    86         }
     52        painter.drawRect(posX,posY,tailleX,tailleY);
    8753        Coord *co2=new Coord( co->get_hg_x() + tailleX/2, co->get_hg_y() + tailleY/2,tailleX/2,tailleY/2);
    88 
    8954        QList<Port> ports2=(it->getPortEast(co2));
    9055        for (QList<Port>::iterator it2=ports2.begin();it2!=ports2.end();++it2)
     
    9358            portX =it2->get_x();
    9459            portY =it2->get_y();
    95             drawPort(portX + MARGEX,portY+MARGEY , EAST,it2->getDirection());
     60            drawPort(portX + margeX,portY+margeY , EAST,it2->getDirection());
    9661          }
    9762        ports2=(it->getPortWest(co));
     
    10166            portX =it2->get_x();
    10267            portY =it2->get_y();
    103             drawPort(portX + MARGEX ,portY+MARGEY ,WEST,it2->getDirection());
     68            drawPort(portX + margeX ,portY+margeY ,WEST,it2->getDirection());
    10469          }
    10570        ports2=(it->getPortNorth(co));
     
    10974            portX =it2->get_x();
    11075            portY =it2->get_y();
    111             drawPort(portX + MARGEX ,portY+MARGEY,NORTH,it2->getDirection());
     76            drawPort(portX + margeX ,portY+margeY,NORTH,it2->getDirection());
    11277           
    11378          }
     
    11883            portX =it2->get_x();
    11984            portY =it2->get_y();
    120             drawPort(portX + MARGEX ,portY+MARGEY,SOUTH,it2->getDirection());
     85            drawPort(portX + margeX ,portY+margeY,SOUTH,it2->getDirection());
    12186
    12287          }
    12388        painter.setPen(Qt::red);
    12489        QList<PortMap> *pm=it->getPortMap();
    125        
     90        //init_grid();
    12691        for (QList<PortMap>::iterator it3=pm->begin();it3!=pm->end();++it3)
    12792          {
    128             Signal *s=base->getSignal(&p,it->getName(),new PortMap(*it3));
    129             painter.drawLine(s->get_src_x()+MARGEX,s->get_src_y()+MARGEY,s->get_dest_x()+MARGEX,s->get_dest_y()+MARGEY);
    130 
    131             if(signalName){
    132               QString signal_name = QString::fromStdString(it3->getName());
    133               if(s->get_src_x() > s->get_dest_x())
    134                 painter.drawText(s->get_dest_x() + MARGEX - 40 ,s->get_dest_y() + MARGEY-10, signal_name);
    135               if(s->get_src_x() < s->get_dest_x())
    136                 painter.drawText(s->get_dest_x() + MARGEX - 40 ,s->get_dest_y() + MARGEY-10, signal_name);
    137             }
    138 
     93            Signal *s=base->getSignal(it->getType(),new PortMap(*it3));
     94            painter.drawLine(s->get_src_x()+margeX,s->get_src_y()+margeY,s->get_dest_x()+margeX,s->get_dest_y()+margeY);
     95            //p1 = new Point(s->get_src_x()+2*margeX,s->get_src_y()+2*margeY,NULL,FREE,0);
     96            //p2 = new Point(s->get_dest_x()+margeX,s->get_dest_y()+margeY,NULL,FREE,0);
     97           // grid[p1->getX()][p1->getY()] = p1;
     98            //grid[p2->getX()][p2->getY()] = p2;
     99           
     100           
     101            //drawSignal(p1,p2);
     102            //p1 = NULL;p2 = NULL;
    139103          }
    140         if(charg_open){
    141           charg_open = false;
    142           mess_charg->close();
    143         }
    144104        painter.setPen(Qt::blue);
    145105      }
    146106    }
    147107    painter.end();
     108   
     109   
    148110  }
    149    if(mess_open){
    150     mess_open = false;
    151     mess->close();
    152    }
    153111}
    154112
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_informations_window.cpp

    r30 r20  
    1010{
    1111  winfo = new QWidget();
    12   informations = new QBoxLayout(QBoxLayout::TopToBottom,0);
     12  QBoxLayout *informations = new QBoxLayout(QBoxLayout::LeftToRight,0);
     13  winfo->resize(200,450);
    1314  winfo->setWindowTitle("informations");
    14   winfo->setFixedSize(350,292);
    15   winfo->move(628,50);
    16 
    17   QBoxLayout *bname = new QBoxLayout(QBoxLayout::LeftToRight,0);
    18   ln = new QLabel();
    19   ln->setText("");
    20   lname = new QLabel();
    21   lname->setText("");
    22   bname->addWidget(ln);
    23   bname->addWidget(lname);
    24 
    25   QBoxLayout *btype = new QBoxLayout(QBoxLayout::LeftToRight,0);
    26   lt = new QLabel();
    27   lt->setText("");
    28   ltype = new QLabel();
    29   ltype->setText("");
    30   btype->addWidget(lt);
    31   btype->addWidget(ltype);
    32 
    33   comment = new QLineEdit();
    34   comment->setText("");
    35   comment->setReadOnly(true);
    36 
    37   QPushButton *noselect = new QPushButton("cancel selection",wparam);
    38   QPushButton *back = new QPushButton("back",wparam);
    39   connect(back,SIGNAL(clicked()),this,SLOT(_back()));
    40   connect(noselect,SIGNAL(clicked()),this,SLOT(_cancel_selection()));
    41 
    42   informations->addLayout(bname);
    43   informations->addLayout(btype);
    44   informations->addWidget(comment);
    45   informations->addWidget(noselect);
    46   informations->addWidget(back);
    47 
     15  winfo->setFixedSize(200,620);
     16  winfo->move(608,0);
    4817  winfo->setLayout(informations);
    4918  winfo->show();
    5019}
    5120
    52 void Window::write_comment(string cm){
    53   QString c = QString::fromStdString(cm);
    54   comment->setText(c);
    55   comment->show();
    56 }
    5721
    58 void Window::write_name(string name){
    59   QString n = QString::fromStdString(name);
    60   lname->setText(n);
    61 }
    62 
    63 void Window::write_type(string type){
    64   lt->setText("type");
    65   QString n = QString::fromStdString(type);
    66   ltype->setText(n);
    67 }
    68 
    69 void Window::_cancel_selection(){
    70   component_clicked = false;
    71 }
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_main.cpp

    r30 r20  
    1818  if(argc>2){
    1919    cout << "error : argument must be a file name or nothing" << endl;
    20     cout << "usage : Viewer [file]" << endl;
    2120    return 0;
    2221  }
    2322
    2423  Parse *par = new Parse();
    25  
     24
    2625 
    2726   QApplication *a=new QApplication (argc,argv); 
    2827   
    29   if(argc == 2){
    30      if(par->open_file(argv[1],0)==-1){
     28   if(argc == 2){
     29     if(par->open_file(argv[1])==-1){
    3130        cout << "file doesn't exist or is not a valid format" << endl; 
    3231        exit(1);
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_main_window.cpp

    r30 r20  
    1010{
    1111  paint = false;
     12  is_parse = false;
    1213  window_height = 620;
    13   window_width = 620;
    14   charg_open = false;
    15   mess_open = false;
    16   component_clicked = false;
    17   cpt_level=0;
     14  window_width = 600;
     15  margeX = 50;
     16  margeY = 70;
    1817 
    1918  /*menu bar*/
     
    7978  connect(paramAct,SIGNAL(triggered()),this,SLOT(_parameters()));
    8079
    81 
    82   QAction *compoNameAct;
    83   compoNameAct = new QAction(tr("&components name"),this);
    84   connect(compoNameAct,SIGNAL(triggered()),this,SLOT(_component_name()));
    85 
    86   QAction *signalNameAct;
    87   signalNameAct = new QAction(tr("&signals name"),this);
    88   connect(signalNameAct,SIGNAL(triggered()),this,SLOT(_signal_name()));
    89 
    9080  /*add the menu "tools" to the menu bar*/
    9181  tools = menu_bar->addMenu(tr("&Tools"));
    92   //tools->addAction(zoomInAct);
    93   //tools->addAction(zoomOutAct);
    94   //tools->addAction(defautZoomAct);
    95   tools->addAction(compoNameAct);
    96   tools->addAction(signalNameAct);
    97   //tools->addAction(levelAct);
     82  tools->addAction(zoomInAct);
     83  tools->addAction(zoomOutAct);
     84  tools->addAction(defautZoomAct);
     85  tools->addAction(levelAct);
    9886  tools->addAction(infoAct);
    9987  tools->addAction(paramAct);
     
    10896  help->addAction(aboutAct);
    10997 
     98
    11099  /*add the menu bar to the main window*/
    111100  this->setMenuWidget(menu_bar);
     
    119108
    120109  /*defaut position*/
    121   this->move(0,50);   
     110  this->move(0,0);   
    122111
    123112  /*main window title*/
     
    136125
    137126  /*little windows (open, save...), closed at init*/
     127  wo_open = false;
    138128  wq_open = false;
     129  ws_open = false;
    139130  wa_open = false;
    140 
    141   /*signals and components name hidden*/
    142   signalName = false;
    143   componentName = false;
    144131
    145132  /*file unsaved at init*/
     
    147134  first_save = false; //first_save = true for a new file
    148135 
     136
    149137  current_name = name;
    150138  if(current_name != NULL){
     
    154142    file_open = false;
    155143    paint = false;
    156     is_save = true;
     144    is_save = false;
    157145  }
    158146}
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_parameters_window.cpp

    r30 r20  
    1010{
    1111  wparam = new QWidget();
    12   parameters = new QBoxLayout(QBoxLayout::TopToBottom,0);
     12  QBoxLayout *parameters = new QBoxLayout(QBoxLayout::LeftToRight,0);
     13  wparam->resize(200,450);
    1314  wparam->setWindowTitle("parameters");
    14   wparam->setFixedSize(350,300);
    15   wparam->move(628,370);
    16 
    17  
    18   QPushButton *apply = new QPushButton("apply",wparam);
    19   connect(apply,SIGNAL(clicked()),this,SLOT(_apply()));
    20  
    21   parameters->addWidget(apply);
    22 
     15  wparam->setFixedSize(200,620);
     16  wparam->move(816,0);
    2317  wparam->setLayout(parameters);
    2418  wparam->show();
     
    2620
    2721
    28 void Window::_apply(){
    29   cout << "apply\n";
    30 }
     22
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_setParse.cpp

    r30 r20  
    1111  if(p)
    1212    parse=p;
    13 
     13  else
     14    cout<<"eee";
    1415}
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Makefile

    r30 r20  
    11#############################################################################
    22# Makefile for building: bin/Viewer
    3 # Generated by qmake (2.01a) (Qt 4.2.2) on: Sun May 20 18:09:08 2007
     3# Generated by qmake (2.01a) (Qt 4.2.2) on: Wed May 2 14:27:25 2007
    44# Project:  Viewer.pro
    55# Template: app app
     
    9393                Bdd/src/ListePorts_searchPort.cpp \
    9494                Parser/src/Parse_alloc.cpp \
    95                 Parser/src/Parse_closeBaseV.cpp \
    96                 Parser/src/Parse_accessors.cpp \
    9795                Parser/src/Parse_parser_pos.cpp \
    9896                Parser/src/Parse_getBaseV.cpp \
     
    10098                Parser/src/Parse_open_file.cpp \
    10199                Graphics/src/Graphics_main.cpp \
    102                 Graphics/src/Graphics_file_actions.cpp \
    103                 Graphics/src/Graphics_tools_actions.cpp \
    104                 Graphics/src/Graphics_about_actions.cpp \
     100                Graphics/src/Graphics_window_actions.cpp \
    105101                Graphics/src/Graphics_main_window.cpp \
    106102                Graphics/src/Graphics_informations_window.cpp \
     
    108104                Graphics/src/Graphics_parameters_window.cpp \
    109105                Graphics/src/Graphics_setParse.cpp \
    110                 Graphics/src/Graphics_drawAll.cpp \
    111                 Graphics/src/Graphics_mouseEvent.cpp moc_window.cpp
     106                Graphics/src/Graphics_drawAll.cpp moc_window.cpp
    112107OBJECTS       = obj/Architecture_accessors.o \
    113108                obj/BaseP_accessors.o \
     
    157152                obj/ListePorts_searchPort.o \
    158153                obj/Parse_alloc.o \
    159                 obj/Parse_closeBaseV.o \
    160                 obj/Parse_accessors.o \
    161154                obj/Parse_parser_pos.o \
    162155                obj/Parse_getBaseV.o \
     
    164157                obj/Parse_open_file.o \
    165158                obj/Graphics_main.o \
    166                 obj/Graphics_file_actions.o \
    167                 obj/Graphics_tools_actions.o \
    168                 obj/Graphics_about_actions.o \
     159                obj/Graphics_window_actions.o \
    169160                obj/Graphics_main_window.o \
    170161                obj/Graphics_informations_window.o \
     
    173164                obj/Graphics_setParse.o \
    174165                obj/Graphics_drawAll.o \
    175                 obj/Graphics_mouseEvent.o \
    176166                obj/moc_window.o
    177167DIST          = /dsk/l1/misc/kane/qt-x11-opensource-4.2.2/mkspecs/common/unix.conf \
     
    268258dist:
    269259        @$(CHK_DIR_EXISTS) obj/Viewer1.0.0 || $(MKDIR) obj/Viewer1.0.0
    270         $(COPY_FILE) --parents $(SOURCES) $(DIST) obj/Viewer1.0.0/ && $(COPY_FILE) --parents Bdd/include/Architecture.h Bdd/include/BaseP.h Bdd/include/BaseV.h Bdd/include/Component.h Bdd/include/Coord.h Bdd/include/Entity.h Bdd/include/ListePorts.h Bdd/include/Port.h Bdd/include/PortMap.h Bdd/include/Signal.h Graphics/include/window.h Parser/include/parser.h obj/Viewer1.0.0/ && $(COPY_FILE) --parents Bdd/src/Architecture_accessors.cpp Bdd/src/BaseP_accessors.cpp Bdd/src/Architecture_addComponent.cpp Bdd/src/Architecture_alloc.cpp Bdd/src/Architecture_searchComponent.cpp Bdd/src/Architecture_unalloc.cpp Bdd/src/BaseP_alloc.cpp Bdd/src/BaseP_unalloc.cpp Bdd/src/BaseV_accessors.cpp Bdd/src/BaseV_addBaseP.cpp Bdd/src/BaseV_addParam.cpp Bdd/src/BaseV_afficheBaseConsole.cpp Bdd/src/BaseV_alloc.cpp Bdd/src/BaseV_searchComponent.cpp Bdd/src/BaseV_unalloc.cpp Bdd/src/Component_accessors.cpp Bdd/src/Component_addPortMap.cpp Bdd/src/Component_alloc.cpp Bdd/src/Component_getPosition.cpp Bdd/src/Component_unalloc.cpp Bdd/src/Coord_alloc.cpp Bdd/src/Coord_unalloc.cpp Bdd/src/Signal_unalloc.cpp Bdd/src/ListePorts_getPortSouth.cpp Bdd/src/Port_accessors.cpp Bdd/src/Signal_alloc.cpp Bdd/src/Port_alloc.cpp Bdd/src/Signal_accessors.cpp Bdd/src/Coord_accessors.cpp Bdd/src/Port_unalloc.cpp Bdd/src/ListePorts_getPortEast.cpp Bdd/src/BaseV_getSignal.cpp Bdd/src/PortMap_alloc.cpp Bdd/src/Entity_alloc.cpp Bdd/src/PortMap_unalloc.cpp Bdd/src/ListePorts_alloc.cpp Bdd/src/PortMap_accessors.cpp Bdd/src/ListePorts_unalloc.cpp Bdd/src/ListePorts_countPort.cpp Bdd/src/ListePorts_getPortWest.cpp Bdd/src/Entity_unalloc.cpp Bdd/src/ListePorts_getPortNorth.cpp Bdd/src/Entity_accessors.cpp Bdd/src/ListePorts_addPort.cpp Bdd/src/ListePorts_accessors.cpp Bdd/src/ListePorts_searchPort.cpp Parser/src/Parse_alloc.cpp Parser/src/Parse_closeBaseV.cpp Parser/src/Parse_accessors.cpp Parser/src/Parse_parser_pos.cpp Parser/src/Parse_getBaseV.cpp Parser/src/Parse_unalloc.cpp Parser/src/Parse_open_file.cpp Graphics/src/Graphics_main.cpp Graphics/src/Graphics_file_actions.cpp Graphics/src/Graphics_tools_actions.cpp Graphics/src/Graphics_about_actions.cpp Graphics/src/Graphics_main_window.cpp Graphics/src/Graphics_informations_window.cpp Graphics/src/Graphics_drawPort.cpp Graphics/src/Graphics_parameters_window.cpp Graphics/src/Graphics_setParse.cpp Graphics/src/Graphics_drawAll.cpp Graphics/src/Graphics_mouseEvent.cpp obj/Viewer1.0.0/ && (cd `dirname obj/Viewer1.0.0` && $(TAR) Viewer1.0.0.tar Viewer1.0.0 && $(COMPRESS) Viewer1.0.0.tar) && $(MOVE) `dirname obj/Viewer1.0.0`/Viewer1.0.0.tar.gz . && $(DEL_FILE) -r obj/Viewer1.0.0
     260        $(COPY_FILE) --parents $(SOURCES) $(DIST) obj/Viewer1.0.0/ && $(COPY_FILE) --parents Bdd/include/Architecture.h Bdd/include/BaseP.h Bdd/include/BaseV.h Bdd/include/Component.h Bdd/include/Coord.h Bdd/include/Entity.h Bdd/include/ListePorts.h Bdd/include/Port.h Bdd/include/PortMap.h Bdd/include/Signal.h Graphics/include/window.h Parser/include/parser.h obj/Viewer1.0.0/ && $(COPY_FILE) --parents Bdd/src/Architecture_accessors.cpp Bdd/src/BaseP_accessors.cpp Bdd/src/Architecture_addComponent.cpp Bdd/src/Architecture_alloc.cpp Bdd/src/Architecture_searchComponent.cpp Bdd/src/Architecture_unalloc.cpp Bdd/src/BaseP_alloc.cpp Bdd/src/BaseP_unalloc.cpp Bdd/src/BaseV_accessors.cpp Bdd/src/BaseV_addBaseP.cpp Bdd/src/BaseV_addParam.cpp Bdd/src/BaseV_afficheBaseConsole.cpp Bdd/src/BaseV_alloc.cpp Bdd/src/BaseV_searchComponent.cpp Bdd/src/BaseV_unalloc.cpp Bdd/src/Component_accessors.cpp Bdd/src/Component_addPortMap.cpp Bdd/src/Component_alloc.cpp Bdd/src/Component_getPosition.cpp Bdd/src/Component_unalloc.cpp Bdd/src/Coord_alloc.cpp Bdd/src/Coord_unalloc.cpp Bdd/src/Signal_unalloc.cpp Bdd/src/ListePorts_getPortSouth.cpp Bdd/src/Port_accessors.cpp Bdd/src/Signal_alloc.cpp Bdd/src/Port_alloc.cpp Bdd/src/Signal_accessors.cpp Bdd/src/Coord_accessors.cpp Bdd/src/Port_unalloc.cpp Bdd/src/ListePorts_getPortEast.cpp Bdd/src/BaseV_getSignal.cpp Bdd/src/PortMap_alloc.cpp Bdd/src/Entity_alloc.cpp Bdd/src/PortMap_unalloc.cpp Bdd/src/ListePorts_alloc.cpp Bdd/src/PortMap_accessors.cpp Bdd/src/ListePorts_unalloc.cpp Bdd/src/ListePorts_countPort.cpp Bdd/src/ListePorts_getPortWest.cpp Bdd/src/Entity_unalloc.cpp Bdd/src/ListePorts_getPortNorth.cpp Bdd/src/Entity_accessors.cpp Bdd/src/ListePorts_addPort.cpp Bdd/src/ListePorts_accessors.cpp Bdd/src/ListePorts_searchPort.cpp Parser/src/Parse_alloc.cpp Parser/src/Parse_parser_pos.cpp Parser/src/Parse_getBaseV.cpp Parser/src/Parse_unalloc.cpp Parser/src/Parse_open_file.cpp Graphics/src/Graphics_main.cpp Graphics/src/Graphics_window_actions.cpp Graphics/src/Graphics_main_window.cpp Graphics/src/Graphics_informations_window.cpp Graphics/src/Graphics_drawPort.cpp Graphics/src/Graphics_parameters_window.cpp Graphics/src/Graphics_setParse.cpp Graphics/src/Graphics_drawAll.cpp obj/Viewer1.0.0/ && (cd `dirname obj/Viewer1.0.0` && $(TAR) Viewer1.0.0.tar Viewer1.0.0 && $(COMPRESS) Viewer1.0.0.tar) && $(MOVE) `dirname obj/Viewer1.0.0`/Viewer1.0.0.tar.gz . && $(DEL_FILE) -r obj/Viewer1.0.0
    271261
    272262
     
    453443        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Parse_alloc.o Parser/src/Parse_alloc.cpp
    454444
    455 obj/Parse_closeBaseV.o: Parser/src/Parse_closeBaseV.cpp
    456         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Parse_closeBaseV.o Parser/src/Parse_closeBaseV.cpp
    457 
    458 obj/Parse_accessors.o: Parser/src/Parse_accessors.cpp
    459         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Parse_accessors.o Parser/src/Parse_accessors.cpp
    460 
    461445obj/Parse_parser_pos.o: Parser/src/Parse_parser_pos.cpp
    462446        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Parse_parser_pos.o Parser/src/Parse_parser_pos.cpp
     
    474458        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Graphics_main.o Graphics/src/Graphics_main.cpp
    475459
    476 obj/Graphics_file_actions.o: Graphics/src/Graphics_file_actions.cpp Graphics/include/window.h
    477         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Graphics_file_actions.o Graphics/src/Graphics_file_actions.cpp
    478 
    479 obj/Graphics_tools_actions.o: Graphics/src/Graphics_tools_actions.cpp Graphics/include/window.h
    480         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Graphics_tools_actions.o Graphics/src/Graphics_tools_actions.cpp
    481 
    482 obj/Graphics_about_actions.o: Graphics/src/Graphics_about_actions.cpp Graphics/include/window.h
    483         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Graphics_about_actions.o Graphics/src/Graphics_about_actions.cpp
     460obj/Graphics_window_actions.o: Graphics/src/Graphics_window_actions.cpp Graphics/include/window.h
     461        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Graphics_window_actions.o Graphics/src/Graphics_window_actions.cpp
    484462
    485463obj/Graphics_main_window.o: Graphics/src/Graphics_main_window.cpp Graphics/include/window.h
     
    501479        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Graphics_drawAll.o Graphics/src/Graphics_drawAll.cpp
    502480
    503 obj/Graphics_mouseEvent.o: Graphics/src/Graphics_mouseEvent.cpp Graphics/include/window.h
    504         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Graphics_mouseEvent.o Graphics/src/Graphics_mouseEvent.cpp
    505 
    506481obj/moc_window.o: moc_window.cpp
    507482        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/moc_window.o moc_window.cpp
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Parser/include/parser.h

    r30 r20  
    1717#include "Tools/Viewer/Bdd/include/PortMap.h"
    1818
    19 #define LEVEL_MAX 8
     19
    2020
    2121using namespace std;
     
    3232  string s;
    3333  string absolutePath;
    34   string toplevel;
    3534
     35protected:
    3636  morpheo::tools::viewer::bdd::BaseV *base;
    3737  morpheo::tools::viewer::bdd::BaseP *pos;
    38   morpheo::tools::viewer::bdd::Entity *ent[LEVEL_MAX];
    39   morpheo::tools::viewer::bdd::Architecture *arch[LEVEL_MAX];
    40   morpheo::tools::viewer::bdd::Component *ctemp[LEVEL_MAX];
    41  
    42 protected:
     38  morpheo::tools::viewer::bdd::Entity *ent;
     39  morpheo::tools::viewer::bdd::Architecture *arch;
     40  morpheo::tools::viewer::bdd::Component *ctemp;
     41  //  morpheo::tools::viewer::bdd::Param *param;
     42
     43
    4344
    4445public:
     
    4647  Parse(void);
    4748  ~Parse(void);
    48   void parser_pos(QDomNode n,int level);
    49 
    50   int open_file(string name,int level);
     49  void parser_pos(QDomNode n);
     50  //void ParseParam(void);
     51  int open_file(string name);
    5152  //void saveFile(string name);
    5253  morpheo::tools::viewer::bdd::BaseV *getBaseV();
    53   string getTopLevelName();
    54   string getAbsolutePath();
    55   /*Close and erase baseV*/
    56   void closeBaseV();
     54
     55 
    5756 //void refresh();
    5857 
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Parser/src/Parse_open_file.cpp

    r30 r20  
    1010namespace parser{
    1111
    12    int Parse::open_file(string name,int level){
     12   int Parse::open_file(string name){
     13    QFile file(QString::fromStdString(name));
     14    QString tmppath=QString::fromStdString(name);
    1315
    14     QFile file(QString::fromStdString(name));
    15     QString testname,testname2;
    16     QString tmppath=QString::fromStdString(name);
    1716    QString path=tmppath.left(tmppath.lastIndexOf('/',-1,Qt::CaseSensitive)+1);
     17
    1818    absolutePath=path.toStdString();
    19     testname=tmppath.right(tmppath.lastIndexOf('.',-1,Qt::CaseSensitive)-1);
    20     testname2=testname.left(testname.lastIndexOf('.',-1,Qt::CaseSensitive));
    21    
    22     if(tmppath.contains('-') && level==0) //file not top level (first open file)
    23       {
    24         testname2=testname2.left(testname2.lastIndexOf('-',-1,Qt::CaseSensitive));
    25       }
    26    
    27    
     19
    2820     if( !file.open( QIODevice::ReadOnly ) )
    2921       {
     
    5244         #endif
    5345         //BaseP
    54          if(!base){
    55            base=new morpheo::tools::viewer::bdd::BaseV();
    56            toplevel=testname2.toStdString();
    57          }
     46         if(!base)
     47           base=new morpheo::tools::viewer::bdd::BaseV();
    5848         pos=new morpheo::tools::viewer::bdd::BaseP();
    5949         //base->addBaseP(pos);
    60          parser_pos(root.firstChild(),level);   
     50         parser_pos(root.firstChild());   
    6151         
    6252       }
     53     return 0;
    6354
    64      //     delete pos;
    65      //delete ctemp;
    66      return 0;
     55
    6756   }
    6857
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Parser/src/Parse_parser_pos.cpp

    r30 r20  
    1010namespace parser{     
    1111
    12   void Parse::parser_pos(QDomNode n,int level){
    13     string fichier;
     12  void Parse::parser_pos(QDomNode n){
    1413       while( !n.isNull() )
    1514      {
     
    2625                //BaseP
    2726                pos->setComment(e.text().toStdString());
    28                 pos->setLevel(level);
    29                
    3027              }
    3128            if (e.tagName() == "entity" )
    3229              {
    33                 #ifdef DBUG_PARSE
     30                #ifdef DBUG_PARSE
    3431                cout << "entity" <<endl;
    3532                cout << e.attribute("name","").toStdString() <<endl;
    3633                #endif
    37 
    38                 ent[level]=new morpheo::tools::viewer::bdd::Entity\
     34                ent=new morpheo::tools::viewer::bdd::Entity\
    3935                  (e.attribute("name","").toStdString(),\
    40                    e.attribute("type","").toStdString(),\
    4136                   e.attribute("schema","").toInt(0,10));
    42                 s=e.attribute("name","").toStdString();
    43                 pos->setEntity(ent[level]);
    44 
    45                 parser_pos(n.firstChild(),level);
     37                s=e.attribute("type","").toStdString();
     38                pos->setEntity(ent);
     39                parser_pos(n.firstChild());
    4640               
    4741                if((n.nextSiblingElement()).tagName() !="architecture")
     
    6559                       e.attribute("localisation","").toStdString());
    6660                p->setComment(e.text().toStdString());
    67                 ent[level]->addport(p);
     61                ent->addport(p);
    6862              }
    6963            if (e.tagName() == "architecture" )
     
    7266                cout << "architecture" <<endl;
    7367                #endif
    74                 arch[level]=new morpheo::tools::viewer::bdd::Architecture();
    75                 pos->setArchitecture(arch[level]);
     68                arch=new morpheo::tools::viewer::bdd::Architecture();
     69                pos->setArchitecture(arch);
    7670               
    7771                base->addBaseP(pos,s);
    7872
    79                 parser_pos(n.firstChild(),level);   
     73                parser_pos(n.firstChild());   
    8074              }
    8175            if (e.tagName() == "component" )
     
    9286                            e.attribute("size_x","").toInt(0,10),\
    9387                            e.attribute("size_y","").toInt(0,10));
    94                 ctemp[level]=comp;
    95                 arch[level]->addComponent(ctemp[level], e.attribute("name","").toStdString());
     88                arch->addComponent(comp, e.attribute("type","").toStdString());
     89                ctemp=comp;
    9690               
    97                 fichier=absolutePath;
    98                 fichier.append(ent[level]->getName());
    99                 fichier.append("-");
    100                 fichier.append((e.attribute("type","").toLower()).toStdString());
     91                string fichier=absolutePath;
     92                fichier.append(e.attribute("type","").toStdString());
    10193                fichier.append(".pos");
    102           #ifdef DBUG_PARSE
    103                 cout << fichier <<endl;
    104           #endif
    105                 if(open_file(fichier,level+1)==-1)
    106                   exit(1);
    107                
    108                 parser_pos(n.firstChild(),level);   
    109                
     94                #ifdef DBUG_PARSE
     95                cout << fichier <<endl;
     96                #endif
     97                open_file(fichier);
     98                parser_pos(n.firstChild());   
    11099                //ajout ptr Port du sous composant
    111                 BaseP pt=base->get_BasePos((e.attribute("type","").toLower()).toStdString());
     100                BaseP pt=base->get_BasePos(e.attribute("type","").toStdString());
    112101                QList<Port> *sspor= (pt.getEntity())->getPort();
    113102                for(QList<Port>::iterator it=sspor->begin();it!=sspor->end();++it)
    114                   ctemp[level]->addport(new Port(*it));
     103                  ctemp->addport(new Port(*it));
    115104               
    116105              }
     
    126115                          e.attribute("port","").toStdString());
    127116               
    128                 ctemp[level]->addPortMap(p);
     117                ctemp->addPortMap(p);
    129118               
    130119              }
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Viewer.pro

    r30 r20  
    4040                        Bdd/include/Entity.h                                            \
    4141                        Bdd/include/ListePorts.h                                        \
     42#                       Bdd/include/ListV.h                                             \
    4243                        Bdd/include/Port.h                                              \
    4344                        Bdd/include/PortMap.h                                           \
    4445                        Bdd/include/Signal.h                                            \
     46#                       Graphics/include/point.h                                        \
    4547                        Graphics/include/window.h                                       \
    4648                        Parser/include/parser.h
     
    9294                        Bdd/src/ListePorts_accessors.cpp                                \
    9395                        Bdd/src/ListePorts_searchPort.cpp                               \
    94                         Parser/src/Parse_alloc.cpp                                      \               
    95                         Parser/src/Parse_closeBaseV.cpp                                 \
    96                         Parser/src/Parse_accessors.cpp                                  \
     96                        Parser/src/Parse_alloc.cpp                                      \
    9797                        Parser/src/Parse_parser_pos.cpp                                 \
    9898                        Parser/src/Parse_getBaseV.cpp                                   \
     
    100100                        Parser/src/Parse_open_file.cpp                                  \
    101101                        Graphics/src/Graphics_main.cpp                                  \
    102                         Graphics/src/Graphics_file_actions.cpp                          \
    103                         Graphics/src/Graphics_tools_actions.cpp                         \
    104                         Graphics/src/Graphics_about_actions.cpp                         \
     102                        Graphics/src/Graphics_window_actions.cpp                        \
    105103                        Graphics/src/Graphics_main_window.cpp                           \
    106104                        Graphics/src/Graphics_informations_window.cpp                   \
     
    108106                        Graphics/src/Graphics_parameters_window.cpp                     \
    109107                        Graphics/src/Graphics_setParse.cpp                              \
    110                         Graphics/src/Graphics_drawAll.cpp                               \
    111                         Graphics/src/Graphics_mouseEvent.cpp   
    112                        
     108                        Graphics/src/Graphics_drawAll.cpp                               
  • /trunk/Makefile.tools

    r30 r20  
    1 #----------------------------------------------------------
    21#-----[ Unix Commands ]------------------------------------
    3 #----------------------------------------------------------
    4 
    52ECHO                                    = echo
    63EXPORT                                  = export
     
    4239VIEWPDF_FS                              = acroread
    4340
    44 #----------------------------------------------------------
    4541#-----[ tools ]--------------------------------------------
    46 #----------------------------------------------------------
    47 
    48 include $(MORPHEO_TOPLEVEL)/Makefile.tools_path
     42SOCLIB                                  =  /users/outil/soc/soclib/
     43SYSTEMC_systemc                         = /users/outil/systemc/systemc-2.1.v1/
     44SYSTEMC_systemcass                      = /users/outil/systemc/systemcass/systemcass/latest/i686-Linux.SLA4x/
     45SYSTEMC_systemcass_deps                 = $(SYSTEMC_systemcass)
     46XILINX                                  = /dsk/l1/misc/Xilinx91i/
     47MODELTECH                               = /users/outil/m1archi/modeltech/
     48OR1K                                    = ../../Tools/or32-elf/
     49NEWLIB                                  = ../../Tools/newlib-1.14.0
    4950
    5051#-----[ soclib ]-------------------------------------------
     
    8182
    8283#-----[ Modeltech ]----------------------------------------
    83 MODELTECH_ENV                           = export LM_LICENSE_FILE=$(MODELTECH_LICENCE)/license.anacad
     84MODELTECH_ENV                           = export LM_LICENSE_FILE=/users/soft/mentor/licence/etc/license.anacad
    8485MODELTECH_BIN                           = $(MODELTECH)/bin
    8586MODELTECH_VLIB                          = $(MODELTECH_ENV); $(MODELTECH_BIN)/vlib
Note: See TracChangeset for help on using the changeset viewer.