Changes in / [20:30]


Ignore:
Location:
/trunk
Files:
319 added
12 deleted
92 edited

Legend:

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

    r20 r30  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_MORPHEO                     = ../../..
     10DIR_COMPONENT                   = .
     11include                         $(DIR_COMPONENT)/Makefile.defs
    1112
    1213#-----[ Library ]------------------------------------------
     
    1920                                @$(MAKE) all_component
    2021
    21 include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
     22include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
    2223include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2324include                         $(DIR_MORPHEO)/Behavioural/Makefile.Component
     25
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest/Makefile

    r20 r30  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_MORPHEO                     = ../../../..
     10DIR_COMPONENT                   = ..
     11include                         $(DIR_COMPONENT)/Makefile.defs
    1112
    1213LIBRARY                         = $(Counter_LIBRARY)
     
    2425
    2526include                         ../Makefile.deps
    26 include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
     27include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
    2728include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2829include                         $(DIR_MORPHEO)/Behavioural/Makefile.Selftest
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Group/Makefile

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

    r20 r30  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_MORPHEO                     = ../../../..
     10DIR_COMPONENT                   = .
     11include                         $(DIR_COMPONENT)/Makefile.defs
    1112
    1213#-----[ Library ]------------------------------------------
     
    1920                                @$(MAKE) all_component
    2021
    21 include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
     22include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
    2223include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2324include                         $(DIR_MORPHEO)/Behavioural/Makefile.Component
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/Makefile

    r20 r30  
    2424
    2525include                         ../Makefile.deps
    26 include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
     26include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
    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

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

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

    r20 r30  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_MORPHEO                     = ../../../..
     10DIR_COMPONENT                   = .
     11include                         $(DIR_COMPONENT)/Makefile.defs
    1112
    1213#-----[ Library ]------------------------------------------
     
    1920                                @$(MAKE) all_component
    2021
    21 include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
     22include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
    2223include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2324include                         $(DIR_MORPHEO)/Behavioural/Makefile.Component
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/Makefile

    r20 r30  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_MORPHEO                     = ../../../../..
     10DIR_COMPONENT                   = .
     11include                         $(DIR_COMPONENT)/Makefile.defs
    1112
    1213#-----[ Library ]------------------------------------------
     
    1920                                @$(MAKE) all_component
    2021
    21 include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
     22include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
    2223include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2324include                         $(DIR_MORPHEO)/Behavioural/Makefile.Component
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/SelfTest/Makefile

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

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

    r20 r30  
    99#define NB_ITERATION 16
    1010
     11#define TEXT(str)  do {cout << "<" << name << "> : " << str << endl;} while (0)
    1112#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)
    1213
     
    1819           morpheo::behavioural::generic::registerfile::registerfile_multi_banked::registerfile_multi_banked_glue::Parameters _param)
    1920{
    20   cout << "<" << name << "> : Simulation SystemC" << endl;
     21  TEXT("Simulation SystemC");
    2122
    2223  RegisterFile_Multi_Banked_Glue * _RegisterFile_Multi_Banked_Glue = new RegisterFile_Multi_Banked_Glue (name.c_str(),
     
    192193   ********************************************************/
    193194 
    194   cout << "<" << name << "> Instanciation of _RegisterFile_Multi_Banked_Glue" << endl;
     195   TEXT("Instanciation of _RegisterFile_Multi_Banked_Glue");
    195196 
    196197  (*(_RegisterFile_Multi_Banked_Glue->in_CLOCK))        (*(CLOCK));
     
    247248
    248249
    249   cout << "<" << name << "> Start Simulation ............" << endl;
     250   TEXT("Start Simulation ............");
    250251 
    251252  /********************************************************
     
    265266
    266267  uint32_t   read_in_num_bank [_param._nb_port_read]; // Number of bank
    267 //Tcontrol_t read_in_valid    [_param._nb_port_read];
     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
    268272  Tcontrol_t read_in_ack      [_param._nb_port_read]; // to test
    269273  Tdata_t    read_in_data     [_param._nb_port_read]; // to test
    270274  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]; 
    272275  Taddress_t read_out_address [_param._nb_bank][_param._nb_port_read_by_bank]; 
    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        ];
     276  Tcontrol_t read_select_val  [_param._nb_bank][_param._nb_port_read_by_bank][_param._nb_port_read];
    276277
    277278  LABEL("Loop of Test");
     
    281282      LABEL("Iteration "+toString(iteration));
    282283     
    283       LABEL("Test read_in");
     284      //LABEL("Test read_in");
    284285     
    285286      // Write in interface "read_in"
     
    287288        {
    288289          read_in_num_bank  [i] =  rand() % _param._nb_bank;
    289           Tcontrol_t read_in_valid = (rand() % 2) != 0;
     290          Tcontrol_t read_in_val = (rand() % 2) != 0;
    290291
    291292          Taddress_t address    = (read_in_num_bank[i] << _param._shift_address) | (gen_mask<Taddress_t>(_param._size_address-_param._shift_address) & i);
    292293
    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;
     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
    301299        }
    302300
    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      
    311301      // compute the good read_select
    312302      for (uint32_t i=0; i<_param._nb_bank; i++)
    313303        for (uint32_t j=0; j<_param._nb_port_read_by_bank; j++)
    314304          {
     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 
    319318                uint32_t num_port; // number of port
    320319               
     
    323322                  num_port = k;
    324323                else
    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
     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))
    332331                  {
    333332                    // find a busy port?
    334                     find = not read_is_busy [num_port];
    335                     read_is_busy       [num_port]|= find;
    336                     read_select_ack [i][num_port] = find;
     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
    337336
    338337                    if (find)
    339338                      {
     339                        read_out_find    [i][j] = true;
     340                        read_out_port    [i][j] = num_port;
     341
     342                        // know the good output
    340343                        read_in_ack      [num_port] = 1;
    341344                        read_in_data     [num_port] = ((j<<1)|1);
    342345                        read_out_val     [i][j]     = 1;
    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);
     346                        read_out_address [i][j]     = (i << _param._shift_address) | (gen_mask<Taddress_t>(_param._size_address-_param._shift_address) & num_port);
    344347                      }
    345348                  }
    346349               
    347                 READ_SELECT_ACK [i][j][k]->write(read_select_ack [i][num_port]);
     350                READ_SELECT_ACK [i][j][k]->write(read_select_ack);
    348351              }
    349352          }
     
    352355      sc_start(1);
    353356
    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  ;
     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          }
    362414
    363415    }
     416
     417  sc_start(0);
    364418
    365419  /********************************************************
     
    367421   ********************************************************/
    368422
    369   cout << "<" << name << "> ............ Stop Simulation" << endl;
     423  TEXT("............ Stop Simulation");
    370424
    371425  delete CLOCK;
    372426
     427  TEXT("delete read_in");
    373428  for (uint32_t i=0; i<_param._nb_port_read; i++)
    374429    {
     430//       TEXT("1, i " << i);
    375431      delete READ_IN_VAL       [i];
     432//       TEXT("2");
    376433      delete READ_IN_ACK       [i];
     434//       TEXT("3");
    377435      delete READ_IN_ADDRESS   [i];
     436//       TEXT("4");
    378437      delete READ_IN_DATA      [i];
     438//       TEXT("5");
    379439    }
    380440                                                     
     
    384444  delete READ_IN_DATA   ;
    385445
     446  TEXT("delete read_select");
    386447   for (uint32_t i=0; i<_param._nb_bank; i++)
    387448     {
     
    402463   delete READ_SELECT_ACK;
    403464
     465  TEXT("delete read_out");
    404466   for (uint32_t i=0; i<_param._nb_bank; i++)
    405467     {
     
    423485  delete READ_OUT_DATA   ;
    424486
     487  TEXT("delete write_in");
    425488  for (uint32_t i=0; i<_param._nb_port_write; i++)
    426489    {
     
    436499  delete WRITE_IN_DATA   ;
    437500
     501  TEXT("delete write_select");
    438502  for (uint32_t i=0; i<_param._nb_bank; i++)
    439503    {
     
    454518  delete WRITE_SELECT_ACK;
    455519 
     520  TEXT("delete write_out");
    456521  for (uint32_t i=0; i<_param._nb_bank; i++)
    457522    {
     
    477542#endif
    478543
     544
    479545  delete _RegisterFile_Multi_Banked_Glue;
    480546}
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/include/Parameters.h

    r20 r30  
    6363  public : const uint32_t    _shift_address        ;
    6464
    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;
     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;
    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

    r20 r30  
    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
    121136  private : void     allocation                (void);
    122137  private : void     deallocation              (void);
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/RegisterFile_Multi_Banked_Glue/src/Parameters.cpp

    r20 r30  
    3131    _nb_port_write_by_bank (nb_port_write_by_bank),
    3232    _crossbar              (crossbar             ),
    33     _shift_address         (static_cast<uint32_t>(ceil(log2(_nb_bank))))
     33    _shift_address         (_size_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  = 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;
     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          }
    4459
    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;
     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          }
    4871      }
    4972    // else : don't allocate
    5073
    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    
    8374    test();
    8475    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"Parameters","End");
     
    9788   {
    9889    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    
    10890    test();
    10991    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

    r20 r30  
    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
    3553#ifdef STATISTICS
    3654    log_printf(INFO,RegisterFile_Multi_Banked_Glue,"RegisterFile_Multi_Banked_Glue","Allocation of statistics");
     
    6684
    6785    allocation ();
    68 
     86   
    6987#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
    7088    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

    r20 r30  
    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  
    1918  void RegisterFile_Multi_Banked_Glue::genMealy_read_in (void)
    2019  {
    2120    log_printf(FUNC,RegisterFile_Multi_Banked_Glue,"genMealy_read_in","Begin");
    2221   
    23     for (uint32_t l=0; l<_param._nb_port_read; l++)
     22    for (uint32_t i=0; i<_param._nb_port_read; i++)
    2423      {
    25         uint32_t num_bank = PORT_READ(in_READ_IN_ADDRESS [l])>>_param._shift_address;
     24        log_printf(ALL,RegisterFile_Multi_Banked_Glue,"genMealy_read_in","read_in [%d]",i);
    2625
     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]));
    2753//      (*(out_READ_IN_ACK  [l])) (*(in_READ_IN_ADDRESS [i][j]));
    2854//      (*(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 //          }
    4155      }
    4256
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/Makefile

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

    r20 r30  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_MORPHEO                     = ../../../..
     10DIR_COMPONENT                   = .
     11include                         $(DIR_COMPONENT)/Makefile.defs
    1112
    1213#-----[ Library ]------------------------------------------
     
    1920                                @$(MAKE) all_component
    2021
    21 include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
     22include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
    2223include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2324include                         $(DIR_MORPHEO)/Behavioural/Makefile.Component
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/Makefile

    r20 r30  
    2424
    2525include                         ../Makefile.deps
    26 include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
     26include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
    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

    r20 r30  
    11Select_Priority_Fixed
    2 2       16      *2      # nb_entity
    3 0       1       +1      # encoding_one_hot
     216      16      *2      # nb_entity
     30       0       +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

    r20 r30  
    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
    2123#ifdef STATISTICS
    2224#include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Statistics.h"
     
    5961  private   : Vhdl_Testbench                 * _vhdl_testbench;
    6062#endif
     63
     64  private   : Interfaces                     * interfaces;
    6165
    6266#ifdef SYSTEMC
     
    113117#if VHDL                                       
    114118  public  : void     vhdl                      (void);
    115   private : void     vhdl_port                 (Vhdl & vhdl);
    116   private : void     vhdl_declaration          (Vhdl & vhdl);
    117   private : void     vhdl_body                 (Vhdl & vhdl);
     119  private : void     vhdl_port                 (Vhdl * & vhdl);
     120  private : void     vhdl_declaration          (Vhdl * & vhdl);
     121  private : void     vhdl_body                 (Vhdl * & vhdl);
    118122#endif                                         
    119123                                               
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed.cpp

    r20 r30  
    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
    3446#ifdef STATISTICS
    3547    log_printf(INFO,Select_Priority_Fixed,"Select_Priority_Fixed","Allocation of statistics");
     
    4860    //  -> clock's signals
    4961    _vhdl_testbench = new Vhdl_Testbench (_name);
    50 //     _vhdl_testbench->set_clock    ("in_CLOCK",false);
    5162#endif
    5263
     
    5869#endif
    5970
    60 #ifdef VHDL_TESTBENCH
    61     _vhdl_testbench->set_clock    ("in_CLOCK",true);
    62 #endif
    63 
    6471#ifdef SYSTEMC
    65     log_printf(INFO,Select_Priority_Fixed,"Select_Priority_Fixed","Allocation");
    66 
    67     allocation ();
    68 
    6972#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
    7073    log_printf(INFO,Select_Priority_Fixed,"Select_Priority_Fixed","Method - transition");
     
    98101   
    99102#endif   
    100 
    101103#endif
    102104    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

    r20 r30  
    1515namespace select_priority_fixed {
    1616
    17 
    1817  void Select_Priority_Fixed::allocation (void)
    1918  {
     
    2221    log_printf(FUNC,Select_Priority_Fixed,"allocation","Begin");
    2322
    24      in_CLOCK        = new SC_CLOCK           ("in_CLOCK ");
    25      in_NRESET       = new SC_IN (Tcontrol_t) ("in_NRESET");
     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);
    2630
    2731     in_VAL          = new SC_IN (Tcontrol_t)           * [_param._nb_entity];
     
    3135    for (uint32_t i=0; i<_param._nb_entity; i++)
    3236      {
    33         rename = " in_VAL_"+toString(i);
    34          in_VAL [i]      = new SC_IN (Tcontrol_t) (rename.c_str());
    35 
     37         in_VAL [i]    = interface_.set_signal_in  <Tcontrol_t> ("val_"+toString(i),1);
    3638        if (_param._encoding_one_hot)
    37           {
    38         rename = "out_ACK_"+toString(i);
    39         out_ACK [i]      = new SC_OUT(Tcontrol_t) (rename.c_str());
    40           }
     39        out_ACK [i]    = interface_.set_signal_out <Tcontrol_t> ("ack_"+toString(i),1);
    4140      }
    4241
    4342    if (_param._encoding_compact)
    4443      {
    45         out_ENTITY_ACK   = new SC_OUT(Tcontrol_t)           ("out_entity_ack");
    46         out_ENTITY       = new SC_OUT(Tentity_t)            ("out_entity");
     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);
    4746      }
     47
    4848    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    4949
     
    5454}; // end namespace select
    5555}; // end namespace generic
    56 
    5756}; // end namespace behavioural
    5857}; // end namespace morpheo             
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_deallocation.cpp

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

    r20 r30  
    2020  {
    2121    log_printf(FUNC,Select_Priority_Fixed,"vhdl","Begin");
    22     Vhdl vhdl (_name);
    2322
    24     vhdl.set_library_work (_name + "_Pack");
     23    Vhdl * vhdl = new Vhdl (_name);
     24
     25    vhdl->set_library_work (_name + "_Pack");
    2526
    2627    vhdl_port        (vhdl);
     
    2829    vhdl_body        (vhdl);
    2930
    30     vhdl.generate_file();
     31    vhdl->generate_file();
    3132    log_printf(FUNC,Select_Priority_Fixed,"vhdl","End");
    3233
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_body.cpp

    r20 r30  
    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

    r20 r30  
    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

    r20 r30  
    99#include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h"
    1010
    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 
    17 namespace morpheo                    {
     11namespace morpheo {
    1812namespace behavioural {
    1913namespace generic {
     
    2115namespace select_priority_fixed {
    2216
    23 
    24   void Select_Priority_Fixed::vhdl_port (Vhdl & vhdl)
     17  void Select_Priority_Fixed::vhdl_port (Vhdl * & vhdl)
    2518  {
    2619    log_printf(FUNC,Select_Priority_Fixed,"vhdl_port","Begin");
    2720
    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");
     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");
    4330  };
    4431
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/Makefile

    r20 r30  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_MORPHEO                     = ../../..
     10DIR_COMPONENT                   = .
     11include                         $(DIR_COMPONENT)/Makefile.defs
    1112
    1213#-----[ Library ]------------------------------------------
     
    1920                                @$(MAKE) all_component
    2021
    21 include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
     22include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
    2223include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2324include                         $(DIR_MORPHEO)/Behavioural/Makefile.Component
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/SelfTest/Makefile

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

    r20 r30  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_MORPHEO                     = ../../../..
     10DIR_COMPONENT                   = .
     11include                         $(DIR_COMPONENT)/Makefile.defs
    1112
    1213#-----[ Library ]------------------------------------------
     
    1819                                @$(MAKE) all_component
    1920
    20 include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
     21include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
    2122include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2223include                         $(DIR_MORPHEO)/Behavioural/Makefile.Component
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/SelfTest/Makefile

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

    r20 r30  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_MORPHEO                     = ../
     10DIR_COMPONENT                   = ./
     11include                         $(DIR_COMPONENT)/Makefile.defs
    1112
    1213#-----[ Library ]------------------------------------------
     
    1819                                @$(MAKE) all_component
    1920
    20 include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
     21include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
    2122include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2223include                         $(DIR_MORPHEO)/Behavioural/Makefile.Component
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Component

    r20 r30  
    1 #-----[ Variable ]-----------------------------------------
     1#-----[ Directory ]----------------------------------------
     2DIR_DOC                         = doc
    23DIR_LIB                         = lib
    34DIR_TEST                        = SelfTest
    45
     6#-----[ Variable ]-----------------------------------------
    57OBJECTS                         = $(OBJECTS_COMMON)
    68
    7 #-----[ Directory ]----------------------------------------
     9#-----[ Rules ]--------------------------------------------
    810.PRECIOUS                       : $(DIR_LIB)/%.a
    911.NOPARALLEL                     : clean help
     
    2123                                @$(MKDIR) $@
    2224
     25document                        :
     26                                @$(MAKE) --directory=$(DIR_DOC) --makefile=Makefile
     27
    2328component_clean                 :
    2429                                @$(RM) $(DIR_LIB)
     
    2833                                @$(ECHO) ""
    2934                                @$(ECHO) " * all_component        : compile all c++ file and generate library"
     35                                @$(ECHO) " * document             : Generate documantation"
    3036                                @$(ECHO) " * clean                : Erase all generate files"
    3137                                @$(ECHO) " * help                 : print this text"
     
    3945                                @$(MAKE) common_clean
    4046                                @$(MAKE) component_clean
    41 
     47                                @if $(TEST) -d $(DIR_DOC); then $(MAKE) --directory=$(DIR_DOC) --makefile=Makefile clean; fi
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Selftest

    r20 r30  
    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

    r20 r30  
    44# [ Description ]
    55#
    6 # Makefile
    76
    8 #-----[ Simulator ]----------------------------------------
    9 SIMULATOR                       = 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 ]--------------------------------------------
    17 FLAGS                           =       -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
     7#-----[ Directory ]----------------------------------------
     8DIR_COMPONENT_MORPHEO           = ..
     9DIR_MORPHEO                     = $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.mkf

    r20 r30  
    33#
    44
    5 all: _Generic/RegisterFile/SelfTest _Generic/Select/Priority_Fixed/SelfTest
     5all: _Generic/RegisterFile/RegisterFile_Monolithic/SelfTest Generic/Select/Priority_Fixed/SelfTest
    66
    7 _Generic/RegisterFile/SelfTest:
    8         gmake all -C Generic/RegisterFile/SelfTest
     7_Generic/RegisterFile/RegisterFile_Monolithic/SelfTest:
     8        gmake all -C Generic/RegisterFile/RegisterFile_Monolithic/SelfTest
    99
    10 _Generic/Select/Priority_Fixed/SelfTest:
    11         gmake all -C Generic/Select/Priority_Fixed/SelfTest
     10Generic/Select/Priority_Fixed/SelfTest:
    1211
    1312clean:
    14         gmake clean -C Generic/RegisterFile/SelfTest
    15         gmake clean -C Generic/Select/Priority_Fixed/SelfTest
     13        gmake clean -C Generic/RegisterFile/RegisterFile_Monolithic/SelfTest
    1614
    1715re: clean all
    1816
    1917install:
    20         gmake install -C Generic/RegisterFile/SelfTest
    21         gmake install -C Generic/Select/Priority_Fixed/SelfTest
     18        gmake install -C Generic/RegisterFile/RegisterFile_Monolithic/SelfTest
    2219
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/Makefile

    r20 r30  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_MORPHEO                     = @DIR_MORPHEO
     10DIR_COMPONENT                   = ./
     11include                         $(DIR_COMPONENT)/Makefile.defs
    1112
    1213#-----[ Library ]------------------------------------------
     
    1920                                @$(MAKE) all_component
    2021
    21 include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
     22include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
    2223include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2324include                         $(DIR_MORPHEO)/Behavioural/Makefile.Component
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/Makefile

    r20 r30  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_MORPHEO                     = ../@DIR_MORPHEO
     10DIR_COMPONENT                   = ../
     11include                         $(DIR_COMPONENT)/Makefile.defs
    1112
    1213LIBRARY                         = $(@COMPONENT_LIBRARY)
     
    2425
    2526include                         ../Makefile.deps
    26 include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
     27include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
    2728include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2829include                         $(DIR_MORPHEO)/Behavioural/Makefile.Selftest
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/VERSION

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

    r20 r30  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_MORPHEO                     = ../../../..
     10DIR_COMPONENT                   = .
     11include                         $(DIR_COMPONENT)/Makefile.defs
    1112
    1213#-----[ Library ]------------------------------------------
     
    1920                                @$(MAKE) all_component
    2021
    21 include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
     22include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
    2223include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2324include                         $(DIR_MORPHEO)/Behavioural/Makefile.Component
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/Makefile

    r20 r30  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_MORPHEO                     = ../../../../..
     10DIR_COMPONENT                   = .
     11include                         $(DIR_COMPONENT)/Makefile.defs
    1112
    1213#-----[ Library ]------------------------------------------
     
    1920                                @$(MAKE) all_component
    2021
    21 include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
     22include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
    2223include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2324include                         $(DIR_MORPHEO)/Behavioural/Makefile.Component
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Meta_Predictor_Glue/SelfTest/Makefile

    r20 r30  
    2424
    2525include                         ../Makefile.deps
    26 include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
     26include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
    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

    r20 r30  
    2424
    2525include                         ../Makefile.deps
    26 include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
     26include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
    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

    r20 r30  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_MORPHEO                     = ../../../../../..
     10DIR_COMPONENT                   = .
     11include                         $(DIR_COMPONENT)/Makefile.defs
    1112
    1213#-----[ Library ]------------------------------------------
     
    1920                                @$(MAKE) all_component
    2021
    21 include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
     22include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
    2223include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2324include                         $(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

    r20 r30  
    2424
    2525include                         ../Makefile.deps
    26 include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
     26include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
    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

    r20 r30  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_MORPHEO                     = ../../../../..
     10DIR_COMPONENT                   = .
     11include                         $(DIR_COMPONENT)/Makefile.defs
    1112
    1213#-----[ Library ]------------------------------------------
     
    1920                                @$(MAKE) all_component
    2021
    21 include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
     22include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
    2223include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2324include                         $(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

    r20 r30  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_MORPHEO                     = ../../../../../..
     10DIR_COMPONENT                   = .
     11include                         $(DIR_COMPONENT)/Makefile.defs
    1112
    1213#-----[ Library ]------------------------------------------
     
    1920                                @$(MAKE) all_component
    2021
    21 include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
     22include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
    2223include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2324include                         $(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

    r20 r30  
    2424
    2525include                         ../Makefile.deps
    26 include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
     26include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
    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

    r20 r30  
    2424
    2525include                         ../Makefile.deps
    26 include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
     26include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
    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

    r20 r30  
    88
    99#-----[ Directory ]----------------------------------------
    10 DIR_MORPHEO                     = ../../../../../..
     10DIR_COMPONENT                   = .
     11include                         $(DIR_COMPONENT)/Makefile.defs
    1112
    1213#-----[ Library ]------------------------------------------
     
    1920                                @$(MAKE) all_component
    2021
    21 include                         $(DIR_MORPHEO)/Behavioural/Makefile.defs
     22include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
    2223include                         $(DIR_MORPHEO)/Behavioural/Makefile.Common
    2324include                         $(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

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

    r20 r30  
    1414#include <iostream>
    1515#include <list>
     16#include "Behavioural/include/Direction.h"
    1617#include "Include/ToString.h"
    1718#include "Include/Debug.h"
     
    2122namespace morpheo              {
    2223namespace behavioural          {
    23 
    24   typedef enum { IN, OUT, INOUT } direction_t;
    2524
    2625  string std_logic        (uint32_t size);
     
    4544    // -----[ methods ]---------------------------------------------------
    4645  public    :                  Vhdl                        (string name);
    47   public    : virtual          ~Vhdl                       ();
     46  public    :                  ~Vhdl                       ();
    4847                                                           
    4948  public    : void             generate_file               (void);
  • /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/XML.h

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

    r20 r30  
    1616# build src directory content
    1717#target_dep             all             Generic/Counter/SelfTest
    18 target_dep              all             Generic/RegisterFile/SelfTest
     18target_dep              all             Generic/RegisterFile/RegisterFile_Monolithic/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

    r20 r30  
    12141214@article{2000_barroso,
    12151215  title={{Piranha: a scalable architecture based on single-chip multiprocessing}},
    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.},
     1216  author={Barroso, L.A. and al.},
    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

    r20 r30  
    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}
     1\begin{abstract}
     2Dans 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.
     3Il s'agit d'une étude de performance, en terme d'exécution, utilisant les benchmarks SPECINT2000.
     4Nous 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
     11De nos jours, la capacité d'intégration augmente.
     12Un concepteur possède un ``tas'' de transistors toujours plus grand à sa disposition.
     13L'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.
     14Les études de David W. Wall \cite{1991_wall} montre que l'ILP moyen dans un programme est de 3-5 instructions.
     15Les 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
     17Dans le même laps de temps des systèmes CMP (Chip Multi Processors) firent leur apparition.
     18De telles puces peuvent exécuter plusieurs tâches simultanément.
     19Ces CMP exploitent le TLP (Thread Level Parallelism).
     20Dans cette catégorie nous pouvons citer le piranha de Compaq \cite{2000_barroso}, l'Hydra de Stanford \cite{2000_hammond}.
     21On 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
     23L'exploitation de l'ILP de manière aggressive, (prédiction de branchement, lancement désynchronisé) entraine une sous exploitation des ressources internes des processeurs.
     24Une technique consiste en l'éxecution de plusieurs contextes par coeur de processeur en exploitant le TLP.
     25Ceci est la technique du Multi-threading et de sa principale variante le SMT (Simultaneous multi threading).
     26C'est l'objet des travaux de recherches de l'équipe de Tullsen \cite{1996_tullsen}, \cite{1998_tullsen}.
     27Pour 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.
     28Cette 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 
     30Il 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}
     40Entre ces deux axes, il y a une multitude de variation du degré de partage des ressources entre les tâches.
     41Ceci a pour conséquence l'émergence de CMP de SMT (plusieurs coeurs multi contexte).
     42Le POWER 5 \cite{2004_kalla} est un bi-coeurs où chaque coeur est SMT de degré 2.
     43De même pour le montecito d'Intel \cite{2005_mcnairy}.
     44Alors que le Niagara de Sun intègre 8 coeurs de CMT (Corse Grain Multi Threading) de degré 4 \cite{2005_kongetira}.
     45
     46L'objectif de ce papier est d'analyser les performances d'exécution entre plusieurs partages des ressources d'un processeur.
     47Pour 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.
     48Dans la section \ref{methodologie} nous allons montrer nos hypothèses de travail.
     49Enfin une section où nous allons interpréter les résultats.
     50
     51%-------------------------------------------------------------------------
     52\Section{Expérimentations}\label{experimentations}
     53Le SMT est une solution faible-coût pour obtenir un processeur MT (multi-thread).
     54Les 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 
     56Malheureusement cette solution à deux problèmes importants.
     57 
     58Le premier est que la rapidité d'exécution d'un thread dépend des autres threads.
     59Ceci est dut à la compétition entre les threads pour obtenir les ressources.
     60Par exemple si tous les threads font des accès mémoires fréquents, l'unité mémoire va rapidement saturer.
     61 
     62Le deuxième problème est la pollution des ressources partagées.
     63Les meilleurs exemples sont les caches et le Buffer des destinations de branchement (BTB).
     64La 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.
     65Dans 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
     68Nous allons faire varier le degré de partage des ressources.
     69Des travaux équivalents ont été réalisés.
     70Dans \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.
     71Pour 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.
     72Dans un autre article, \cite{2004_kumar}, il y a une étude en terme de performance d'exécution mais également en terme de surface.
     73Les 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. 
     74Ici l'équipe de Tullsen à validée leurs hypothèses sur un système à 8 coeurs.
     75Le partage des ressources ce fait entre deux coeurs voisins.
     76
     77Leurs résultats ainsi que ceux que nous obtenons sont compatibles entre eux.
     78
     79Notre approche consiste à tester l'incidence du partage des caches, des Unités d'exécutions et de la partie opérative.
     80
     81Nous 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
     88L'expérimentation ce fait avec le générateur de processeur Morpheo (acronyme de ``Multi ORganisation for a Processor HEterogeneous and Open'').
     89Une 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
     99Notre 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.
     100Trois 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).
     102Le 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
     170Dans 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
     173Chaque 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
     175Pour 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
     179Pour les simulations, nous avons pris 14 instances de notre modèle.
     180Elles 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).
     181De plus chaque UL n'a accès qu'a un sous-ensemble distinct d'ALUs.
     182Ce nombre définit la taille du groupe (D).
     183Nous 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
     210Chaque simulation ce fait sur 110 millions de cycles.
     211Les 10 premiers millions sont ignorés afin de chauffer les caches et les unités de prédictions.
     212Pour chaque instance, nous prenons le nombre d'instructions exécutées des 15 simulations.
     213Ce 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
     215Nous 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.
     216Ceci à 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
     221La 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
     231Première constatation simple : plus on dédit les ressources, plus on approche de l'accélération maximale.
     232La 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.
     233Alors que la version X4-1\_1\_4-8 qui est un SMT pur à une accélération de 1,46.
     234 
     235En terme de performance, il y a une accélération de 2,7 entre la version CMP et la version SMT.
     236Attention 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.
     237Pour que l'étude soit complète, nous devons aussi ajouter l'augmentation de la surface entre la version MT et la version ST.
     238Ensuite il faudrait comparer le rapport entre l'augmentation de la performance sur le coût matériel.
     239Nous pouvons néanmoins faire une étude abstraite du coût en surface.
     240Le rapport de surface entre la version MT et ST de l'instance X4-4\_1\_1-2 est de 4.
     241Ceci donne un rapport performance/surface pour la version CMP de degré 4 de 0,98.
     242Pour le SMT, nous réutilisons les estimations d'Intel pour le Pentium 4 HT \cite{2003_koufaty}.
     243Trois contextes de plus nous amène à 15\% de surface en plus.
     244Ce qui donne un rapport de surface entre la version MT et ST de l'instance X4\_1\_1\_4-8 de 1,15.
     245Dans ce cas, le rapport performance/surface pour la version SMT de degré 4 nous donne 1,27.
     246Ce qui donne l'avantage à une implémentation SMT.
     247
     248Pour 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
     255Le partage du cache induit des conflits d'accès au port.
     256Dans le premier cas, il y a 4 ports d'accès au Icache de largeur de deux instructions.
     257Alors que dans le troisième cas, il n'y a qu'un port de largeur de 8 instructions.
     258Les paquets de 8 instructions permettent de mieux exploiter l'ILP mais moins le TLP : chaque contexte accède au cache tous les 4 cycles.
     259Nous 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.
     260Ainsi 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.
     261Le 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
     263Pour 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
     270Le partage des unités d'exécutions n'influe que légèrement sur les performances.
     271Les ressources sont mieux utilisées.
     272Or 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).
     273Ceci est également du à notre politique de routage actuel qui est un round robin classique.
     274Notons que dans le cas où il y aurait plus d'un contexte par coeur, le partage des unités d'exécutions est favorable.
     275Par 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.
     276Ceci est la conséquece d'une meilleur exploitation du TLP.
     277La 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
     281Pour 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
     291Le partage de la partie opérative donne des résultats très disparates et demande une analyse plus poussée des résultats.
     292Nous 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).
     293Il y a également une augmentation des miss de spéculations du au partage du prédicteur de branchement.
     294Ceci implique qu'il y a une augmentation des instructions inutiles dans le pipeline.
     295Elles 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.
     296Ceci est aussi du à la largeur du pipeline et donc à la sous exploitation de L'ILP.
     297Lors du décodage, nous choisissons de manière round robin la fetch queue contenant un paquet.
     298Dans 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.
     299La cause venant à des paquets d'instructions devant être alignés et à la présence de branchements.
     300
     301%-------------------------------------------------------------------------
     302\Section{Conclusion}
     303
     304Cette é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.
     305Notre modèle de processeur étant encore en cours de développement, nous nous destinons à fournir un modèle VHDL synthétisable.
     306Ainsi 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
    7308\bibliography{\dircommon/bibliographie}
  • /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Documents/presentation-internal_seminary_overview/fr/root.tex

    r20 r30  
    1 \section{Besoins}
     1\section{Motivations}
    22
    33\ContentsCurrent
    44
    5 \slidetitle{Besoins}
    6            {Besoins pour les processeurs embarquées :
    7              
    8              \begin{itemize}
    9              \item Maîtrise du système
    10              \item Souplesse
    11              \item Performance
    12              \end{itemize}
    13            }
     5\slidetitle{Motivations}
    146           {
    15              Où : téléphone portable, baladeur mp3/vidéo, automobile ...
    16 
     7             Sécurité du hardware :
    178             \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.
    40 %
    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)
    89 %           
    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.
     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)
    11311             \end{description}
    11412           }
    11513           {
    116              Définir ce qu'est une ressource : ALU, predicteur de branchement, cache ...
     14             
    11715           }
    11816
    11917
    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            }
     18
     19%\section{Besoins}
     20%
     21%\ContentsCurrent
     22%
     23%\slidetitle{Besoins}
     24%          {Besoins pour les processeurs embarquées :
     25%           
     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%          }
    277295
    278296\slide{}{}
  • /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Graph/simulation_all.dat

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

    r20 r30  
    1616set yrange [0:4]
    1717   
    18 set 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                          )
     18set 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  )
    3331
    3432plot "simulation_all.dat" notitle
  • /trunk/IPs/systemC/processor/Morpheo/Documentation/Source/Makefile

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

    r20 r30  
    22%\def\review{\number\day/\number\month/\number\year\xspace}
    33
    4 \title{Séminaire interne :\newline Processeur libre, haute performance et hautement paramètrable}
     4\title{Séminaire interne :\newline Processeur libre, haute performance et paramètrable}
    55
    6 \institute{Equipe SOC - Laboratoire d'information de Paris VI - France}
     6\institute{Département 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

    r20 r30  
    1 #FIG 3.2  Produced by xfig version 3.2.5-alpha5
     1#FIG 3.2
    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 120 345 7920 6165 queue\001
     154 1 0 50 -1 -1 10 0.0000 4 105 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 120 345 7920 6750 queue\001
     314 1 0 50 -1 -1 10 0.0000 4 105 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
    39 6 7380 7200 13860 7920
    40 2 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
    42 2 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
    44 4 1 0 50 -1 -1 10 0.0000 4 135 480 10620 7605 register\001
    4538-6
    46392 2 2 1 0 7 50 -1 -1 3.000 0 0 -1 0 0 5
     
    126119        3 0 1.00 60.00 120.00
    127120         10620 5760 10620 5130
     1212 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
     1232 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
     1252 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
     1272 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
     1302 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
     1332 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
     1362 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
    1281404 1 0 50 -1 -1 10 1.5708 4 105 360 9945 6615 select\001
    1291414 1 0 50 -1 -1 10 1.5708 4 105 360 11385 6300 select\001
    130 4 1 0 50 -1 -1 10 0.0000 4 120 345 12240 6435 queue\001
     1424 1 0 50 -1 -1 10 0.0000 4 105 345 12240 6435 queue\001
    1311434 1 0 50 -1 -1 10 0.0000 4 105 345 12240 6255 write\001
    1321444 1 0 50 -1 -1 10 0.0000 4 90 465 13320 6255 execute\001
    133 4 1 0 50 -1 -1 10 0.0000 4 120 345 13320 6435 queue\001
    134 4 0 0 50 -1 -1 10 0.0000 4 150 405 8820 5355 bypass\001
     1454 1 0 50 -1 -1 10 0.0000 4 105 345 13320 6435 queue\001
     1464 0 0 50 -1 -1 10 0.0000 4 135 405 8820 5355 bypass\001
    1351474 1 0 50 -1 -1 10 0.0000 4 105 420 10620 5085 Dcache\001
    1361484 2 0 50 -1 -1 10 0.0000 4 90 465 13995 6660 execute\001
    1371494 0 0 50 -1 -1 10 0.0000 4 75 435 7245 6345 rename\001
     1504 1 0 50 -1 -1 10 0.0000 4 135 480 10620 7605 register\001
     1514 1 0 50 -1 -1 10 0.0000 4 105 630 10620 8145 status list\001
     1524 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

    r20 r30  
    1 #FIG 3.2  Produced by xfig version 3.2.5-alpha5
     1#FIG 3.2
    22Landscape
    33Center
     
    88-2
    991200 2
    10 6 4590 5400 5310 5850
    11 2 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
    13 4 1 0 50 -1 -1 10 0.0000 4 105 315 4950 5670 RAT\001
    14 -6
    15106 7020 3600 7740 4050
    16116 7020 3600 7740 4050
     
    26214 1 0 50 -1 -1 10 0.0000 4 105 315 7380 3150 State\001
    2722-6
    28 6 6210 5985 6930 6435
     236 5130 5400 5850 5850
     242 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
     264 1 0 50 -1 -1 10 0.0000 4 105 315 5490 5670 RAT\001
     27-6
     286 6750 5985 7470 6435
    29292 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5
    30          6930 6435 6210 6435 6210 5985 6930 5985 6930 6435
    31 4 1 0 50 -1 -1 10 0.0000 4 105 375 6570 6345 RAW\001
    32 4 1 0 50 -1 -1 10 0.0000 4 105 375 6570 6165 Check\001
     30         7470 6435 6750 6435 6750 5985 7470 5985 7470 6435
     314 1 0 50 -1 -1 10 0.0000 4 105 375 7110 6345 RAW\001
     324 1 0 50 -1 -1 10 0.0000 4 105 375 7110 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 2 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
    38 2 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
    40 2 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
    42 2 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
     351 3 0 1 0 7 50 -1 0 3.000 1 0.0000 7665 5764 30 30 7665 5764 7695 5760
    44362 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
    4537        3 0 1.00 60.00 120.00
    46          4950 5850 4950 6210
    47 2 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
    50 2 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
     38         7470 6210 7830 6210
    53392 4 0 1 0 31 50 -1 20 4.000 0 0 7 0 0 5
    5440         8550 6435 7830 6435 7830 5985 8550 5985 8550 6435
     
    58442 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
    5945        3 0 1.00 60.00 120.00
    60          6750 5625 6390 5625
    61 2 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
    64 2 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
    67 2 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
    6946         8910 3825 7740 3825
    70472 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
    7148        3 0 1.00 60.00 120.00
    72          7110 4320 4230 4320
    73 2 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
    7549         7650 6210 7650 4050
    76 2 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
    78502 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 1 2
    7951        3 0 1.00 60.00 120.00
     
    84562 1 0 1 0 7 50 -1 -1 3.000 0 0 -1 1 0 3
    8557        3 0 1.00 60.00 120.00
    86          7650 5220 5130 5220 5130 5400
     58         7650 5220 5670 5220 5670 5400
     592 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
     622 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
     642 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
    87662 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
    8867        3 0 1.00 60.00 120.00
    89          4770 5040 4770 5400
     68         5490 5850 5490 6210
    90692 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
    9170        3 0 1.00 60.00 120.00
    92          6030 5850 6030 6210
    93 4 1 0 50 -1 -1 10 0.0000 4 105 315 4950 4770 RAT\001
    94 4 1 0 50 -1 -1 10 0.0000 4 150 450 4950 4950 Update\001
    95 4 1 0 50 -1 -1 10 0.0000 4 105 270 6030 5580 Free\001
    96 4 1 0 50 -1 -1 10 0.0000 4 105 255 6030 5805 List\001
    97 4 1 0 50 -1 -1 10 0.0000 4 105 390 7110 5580 Status\001
    98 4 1 0 50 -1 -1 10 0.0000 4 105 255 7110 5775 List\001
     71         7110 4320 4770 4320
     722 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
     752 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
     782 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
     802 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
     832 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
     852 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
     882 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
     912 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
     942 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
    99984 1 0 50 -1 -1 10 0.0000 4 105 480 8190 6165 Rename\001
    100 4 1 0 50 -1 -1 10 0.0000 4 120 345 8190 6345 queue\001
     994 1 0 50 -1 -1 10 0.0000 4 105 345 8190 6345 queue\001
    1011004 2 0 50 -1 -1 10 0.0000 4 75 435 8865 5940 rename\001
    102 4 0 0 50 -1 -1 10 0.0000 4 150 405 4275 4230 update\001
    103 4 0 0 50 -1 -1 10 0.0000 4 105 345 4275 6165 decod\001
    1041014 0 0 50 -1 -1 10 0.0000 4 105 360 7695 4770 insert\001
     1024 2 0 50 -1 -1 10 0.0000 4 90 465 8865 3780 execute\001
     1034 1 0 50 -1 -1 10 0.0000 4 105 315 5490 4770 RAT\001
     1044 1 0 50 -1 -1 10 0.0000 4 135 450 5490 4950 Update\001
     1054 1 0 50 -1 -1 10 0.0000 4 105 270 6570 5580 Free\001
     1064 1 0 50 -1 -1 10 0.0000 4 105 255 6570 5805 List\001
     1074 0 0 50 -1 -1 10 0.0000 4 135 405 4815 4230 update\001
     1084 0 0 50 -1 -1 10 0.0000 4 105 345 4815 6165 decod\001
    1051094 2 0 50 -1 -1 10 0.0000 4 105 345 7065 4770 retire\001
    106 4 2 0 50 -1 -1 10 0.0000 4 90 465 8865 3780 execute\001
     1104 1 0 50 -1 -1 10 0.0000 4 105 390 8190 5535 Status\001
     1114 1 0 50 -1 -1 10 0.0000 4 105 255 8190 5670 List\001
     1124 1 0 50 -1 -1 10 0.0000 4 135 540 8190 5805 Manager\001
     1134 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

    r20 r30  
    1 #FIG 3.2  Produced by xfig version 3.2.5-alpha5
     1#FIG 3.2
    22Landscape
    33Center
     
    88-2
    991200 2
     105 1 0 1 0 29 50 -1 20 0.000 0 1 0 0 4575.000 2100.000 4350 2400 4575 2475 4800 2400
     115 1 0 1 0 2 48 -1 40 0.000 0 0 0 0 5025.000 2700.000 4800 2400 5025 2325 5250 2400
    10126 3675 4050 4725 4650
    11135 1 0 1 0 2 50 -1 20 0.000 0 1 0 0 3975.000 4200.000 3750 4500 3975 4575 4200 4500
     
    31332 1 0 1 0 31 50 -1 20 0.000 0 0 7 0 0 4
    3234         6150 4500 6150 4050 7050 4050 7050 4500
    33 -6
    34 6 4350 1950 5250 2550
    35 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
    36 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
    37 2 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
    39 4 1 0 50 -1 -1 10 0.0000 4 105 255 4800 2325 .gen\001
    40 4 1 0 50 -1 -1 10 0.0000 4 120 675 4800 2100 G\351n\351rateur\001
    4135-6
    42366 5550 1950 6450 2550
     
    87812 4 0 1 0 4 50 -1 20 0.000 0 0 7 0 0 5
    8882         5850 4050 4950 4050 4950 4500 5850 4500 5850 4050
    89 4 1 0 50 -1 -1 10 0.0000 4 150 570 5400 3225 Morpheo\001
     832 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
     854 1 0 50 -1 -1 10 0.0000 4 135 570 5400 3225 Morpheo\001
    90864 1 0 50 -1 -1 10 0.0000 4 105 435 4200 4275 VHDL\001
    91874 1 0 50 -1 -1 10 0.0000 4 105 435 4800 5475 VHDL\001
     
    93894 1 0 50 -1 -1 10 0.0000 4 105 585 6000 5325 Statistics\001
    94904 1 0 50 -1 -1 10 0.0000 4 105 585 6600 4200 Positions\001
    95 4 1 0 50 -1 -1 10 0.0000 4 120 255 6600 4425 .pos\001
     914 1 0 50 -1 -1 10 0.0000 4 105 255 6600 4425 .pos\001
    96924 1 0 50 -1 -1 10 0.0000 4 105 465 7500 3225 Viewer\001
    97934 1 0 50 -1 -1 10 0.0000 4 135 555 5400 4275 SystemC\001
     944 1 0 50 -1 -1 10 0.0000 4 105 255 4800 2325 .gen\001
     954 1 0 50 -1 -1 10 0.0000 4 105 615 4800 2100 Generator\001
  • /trunk/IPs/systemC/processor/Morpheo/Makefile

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

    r20 r30  
    2222      string comment;
    2323      int level;
     24     
    2425    protected:
    2526     
     
    2829      morpheo::tools::viewer::bdd::Entity *getEntity();
    2930      morpheo::tools::viewer::bdd::Architecture *getArchitecture();
    30       QList<morpheo::tools::viewer::bdd::Component> *BaseP::getComponent();
     31      QList<morpheo::tools::viewer::bdd::Component> *getComponent();
    3132
    3233      BaseP();
     34      BaseP(BaseP *p);
    3335      ~BaseP ();
    3436      void setComment(string s);
     
    3739      int getLevel();
    3840      void setLevel (int v);
     41      int getSchema();
    3942    };//end class BaseP
    4043
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/include/BaseV.h

    r20 r30  
    2828      //accesseurs
    2929      morpheo::tools::viewer::bdd::BaseP  get_BasePos(string v);
    30       morpheo::tools::viewer::bdd::Signal *getSignal(string c,PortMap *dest);
     30      morpheo::tools::viewer::bdd::Signal *getSignal(morpheo::tools::viewer::bdd::BaseP *top,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

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

    r20 r30  
    1313    comment=s;
    1414  }
     15  void BaseP::setLevel(int s){
     16    level=s;
     17  }
     18 
    1519  void BaseP::setArchitecture(Architecture *a)
    1620  {
     
    3539    return comment;
    3640  }
     41  int BaseP::getLevel()
     42  {
     43    return level;
     44  }
    3745
    3846    QList<morpheo::tools::viewer::bdd::Component> *BaseP::getComponent()
     
    4149  }
    4250
     51  int BaseP::getSchema(){return ent->getSchema();}
    4352};//end bdd
    4453};//end viewer
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseP_alloc.cpp

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

    r20 r30  
    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

    r20 r30  
    1  /*
     1/*
    22 *
    33 * [desc.]
     
    1313        = pos->begin(); it != pos->end(); ++it)
    1414    {
     15     
    1516      morpheo::tools::viewer::bdd::Entity *test=(it->getEntity());
    1617      string n2=test->getName();
     
    1819      cout << n << endl ;
    1920      cout << "----Entity-----------------------------------------" <<endl;
    20       cout << "Entity name:"<< n2<< endl;
     21      cout << "Entity name:"<< n2 <<" level:"<< it->getLevel()<< endl;
    2122      cout << "------------------ports east-----------------------" <<endl;
    2223     
     
    100101           cout << "port :" << it3->getPort() <<endl;
    101102           cout << "comment :" << it3->getComment() <<endl;
    102          
    103          
     103
     104           
    104105           
    105106             }
    106107         }
    107108      }//if
     109      cout << endl<< "************    fin BASEP  *******************"<<endl <<endl;
     110       
    108111    }//for
    109    
     112     
    110113  }
    111114 
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseV_getSignal.cpp

    r20 r30  
    99namespace viewer{
    1010namespace bdd{ 
    11 
    12   morpheo::tools::viewer::bdd::Signal *BaseV::getSignal(string c,morpheo::tools::viewer::bdd::PortMap *dest)
     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)
    1318  {
    1419    int srcX,srcY,destX,destY;
    15     Architecture *aa=((pos->operator[](0)).getArchitecture());
     20    Architecture *aa=top->getArchitecture();
    1621    morpheo::tools::viewer::bdd::Component x=aa->getComponent(c);
    1722    // cout << dest->getName() <<endl; 
     
    1924    srcX=p->get_x();
    2025    srcY=p->get_y();
    21     // cout << dest->getComponent() <<endl; 
     26    //cout << dest->getComponent() <<endl; 
    2227    morpheo::tools::viewer::bdd::BaseP res=get_BasePos(dest->getComponent());
    2328    morpheo::tools::viewer::bdd::Port *pm=(res.getEntity())->searchPort(dest->getPort());
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/BaseV_searchComponent.cpp

    r20 r30  
     1
    12 /*
    23 *
     
    1112
    1213  morpheo::tools::viewer::bdd::BaseP BaseV::get_BasePos(string v){
    13     return pos->operator[](listcomp->indexOf(v,0));
     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);
    1421  }
    1522
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Bdd/src/Component_accessors.cpp

    r20 r30  
    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

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

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

    r20 r30  
    1414
    1515#include <iostream>
     16#include <cmath>
     17#include <sstream>
    1618#include <qstring.h>
    1719#include <qapplication.h>
     
    3638#include <qtreeview.h>
    3739#include <qdirmodel.h>
     40#include <qevent.h>
     41#include <qfiledialog.h>
     42
    3843
    3944#include "Tools/Viewer/Parser/include/parser.h"
     
    4449#define EAST 2
    4550#define WEST 3
     51
     52#define MARGEX 50
     53#define MARGEY 70
    4654
    4755using namespace morpheo::tools::viewer::parser;
     
    6270
    6371  Window(QString name);
    64   void _setParse(Parse *p); 
    65   void _init_file();   
     72  void _setParse(Parse *p);  //parse the base
     73  void _init_file();    //search component and port before drawing
    6674 private slots:
    6775   
    68   void _open();
    69   void _open_end();
    70   void _open_error();
     76  void _open(); //open a file
     77 void _open_error();
    7178
    72   void _save();
     79  void _save(); //save a file
    7380  void _saveAs();
    7481  void _saveAsOk();
    75   void _close();
    76   void _quit();
     82
     83  void _close(); //close a file
     84
     85  void _quit(); //quit a file
    7786  void _quit2();
    78   void _zoomIn();
     87
     88  void _zoomIn(); //zoom for the architecture view
    7989  void _zoomOut();
    8090  void _defautZoom();
    81   void _level();
    82   void _informations();
    83   void _parameters();
    84   void _about();
    8591
    86  private:
     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
    8798
    88   void wparameters();
    89   void winformations();
    90   void paintEvent( QPaintEvent * );
    91   void repaint();
    92   void drawPort(int x,int y,int pos,string dir);
     99  void _back();//return to the previous view
     100  void _cancel_selection();
     101  void _apply();
    93102
    94   QList <Port> port_east;
     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
    95117  QList <Port> port_west;
    96118  QList <Port> port_north;
     
    98120  QList <Component> *compo;
    99121
    100   QWidget *wparam;
     122  QWidget *wparam;//windows widget (informations, parameters, open, save ...)
    101123  QWidget *winfo;
    102124  QWidget *ws;
    103125  QWidget *wq;
    104   QWidget *wo;
    105126  QWidget *wa;
    106127
    107   Parse *parse;
    108   BaseV *base;
    109   BaseP p;
    110   Entity *entity;
    111   Coord *c;
     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;
    112138 
    113139  QPainter painter;
     
    115141  QStatusBar *status;
    116142
    117   QLineEdit *file_name;
    118   QString current_name;
     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
    119145
    120   int window_height;
     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
    121158  int window_width;
    122   int panel_heigth;
    123   int panel_width;
    124   int margeX;
     159  int margeX;//size of the marge
    125160  int margeY;
    126   int portX;
     161  int portX;//port size, position and size of components, used when drawing the architecture
    127162  int portY;
    128163  int posX;
     
    131166  int tailleY;
    132167
    133   bool save_as;
     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;
    134175  bool first_save;
    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;
     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
    142181  bool wa_open;
    143   bool quit_demand;
    144   bool file_open;
    145   bool is_parse;
     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
    146191};
    147192      };
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_drawAll.cpp

    r20 r30  
    77void Window::paintEvent( QPaintEvent * )
    88{
    9    
    109  /*draw window size*/
    1110  setMinimumSize(600,600);
    12    
     11   
     12  int schema;
     13  QString t;
     14 
    1315  if(paint){
    14 
    1516    painter.begin(this);
    1617    painter.setPen(Qt::blue);
    17     painter.drawRect(margeX,margeY,margeX+450,margeY+450);
     18    painter.drawRect(MARGEX,MARGEY,MARGEX+450,MARGEY+450);
     19
    1820   
    1921    for(QList<Port>::iterator it=port_east.begin(); it!=port_east.end(); ++it){
    2022      portX = it->get_x();
    2123      portY = it->get_y();
    22       drawPort(portX + margeX,portY + margeY ,EAST,it->getDirection());
     24      drawPort(portX + MARGEX,portY + MARGEY ,EAST,it->getDirection());
     25
    2326    }
    2427   
     
    2629      portX = it->get_x() ;
    2730      portY = it->get_y() ;
    28       drawPort(portX + margeX,portY + margeY, WEST, it->getDirection());
     31      drawPort(portX + MARGEX,portY + MARGEY, WEST, it->getDirection());
     32
    2933    }
    3034
     
    3236      portX = it->get_x() ;
    3337      portY = it->get_y() ;
    34       drawPort(portX + margeX ,portY+margeY,NORTH,it->getDirection());
     38      drawPort(portX + MARGEX ,portY+MARGEY,NORTH,it->getDirection());
     39
    3540    }
    3641
     
    3843      portX = it->get_x() ;
    3944      portY = it->get_y() ;
    40       drawPort(portX + margeX,portY+margeY,SOUTH,it->getDirection());
     45      drawPort(portX + MARGEX,portY+MARGEY,SOUTH,it->getDirection());
     46
    4147    }
    42 
    43 
     48   
    4449    if(p.getArchitecture()!=NULL){
    4550      compo = p.getComponent();
    4651      for(QList<Component>::iterator it=compo->begin();it!=compo->end();++it){
    4752        Coord *co = it->get_Position();
    48         posX = co->get_hg_x()+margeX;
    49         posY = co->get_hg_y()+margeY;
     53        posX = co->get_hg_x()+MARGEX;
     54        posY = co->get_hg_y()+MARGEY;
    5055        tailleX = co->get_size_x();
    5156        tailleY = co->get_size_y();
    52         painter.drawRect(posX,posY,tailleX,tailleY);
     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        }
    5387        Coord *co2=new Coord( co->get_hg_x() + tailleX/2, co->get_hg_y() + tailleY/2,tailleX/2,tailleY/2);
     88
    5489        QList<Port> ports2=(it->getPortEast(co2));
    5590        for (QList<Port>::iterator it2=ports2.begin();it2!=ports2.end();++it2)
     
    5893            portX =it2->get_x();
    5994            portY =it2->get_y();
    60             drawPort(portX + margeX,portY+margeY , EAST,it2->getDirection());
     95            drawPort(portX + MARGEX,portY+MARGEY , EAST,it2->getDirection());
    6196          }
    6297        ports2=(it->getPortWest(co));
     
    66101            portX =it2->get_x();
    67102            portY =it2->get_y();
    68             drawPort(portX + margeX ,portY+margeY ,WEST,it2->getDirection());
     103            drawPort(portX + MARGEX ,portY+MARGEY ,WEST,it2->getDirection());
    69104          }
    70105        ports2=(it->getPortNorth(co));
     
    74109            portX =it2->get_x();
    75110            portY =it2->get_y();
    76             drawPort(portX + margeX ,portY+margeY,NORTH,it2->getDirection());
     111            drawPort(portX + MARGEX ,portY+MARGEY,NORTH,it2->getDirection());
    77112           
    78113          }
     
    83118            portX =it2->get_x();
    84119            portY =it2->get_y();
    85             drawPort(portX + margeX ,portY+margeY,SOUTH,it2->getDirection());
     120            drawPort(portX + MARGEX ,portY+MARGEY,SOUTH,it2->getDirection());
    86121
    87122          }
    88123        painter.setPen(Qt::red);
    89124        QList<PortMap> *pm=it->getPortMap();
    90         //init_grid();
     125       
    91126        for (QList<PortMap>::iterator it3=pm->begin();it3!=pm->end();++it3)
    92127          {
    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;
     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
    103139          }
     140        if(charg_open){
     141          charg_open = false;
     142          mess_charg->close();
     143        }
    104144        painter.setPen(Qt::blue);
    105145      }
    106146    }
    107147    painter.end();
    108    
    109    
    110148  }
     149   if(mess_open){
     150    mess_open = false;
     151    mess->close();
     152   }
    111153}
    112154
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_informations_window.cpp

    r20 r30  
    1010{
    1111  winfo = new QWidget();
    12   QBoxLayout *informations = new QBoxLayout(QBoxLayout::LeftToRight,0);
    13   winfo->resize(200,450);
     12  informations = new QBoxLayout(QBoxLayout::TopToBottom,0);
    1413  winfo->setWindowTitle("informations");
    15   winfo->setFixedSize(200,620);
    16   winfo->move(608,0);
     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
    1748  winfo->setLayout(informations);
    1849  winfo->show();
    1950}
    2051
     52void Window::write_comment(string cm){
     53  QString c = QString::fromStdString(cm);
     54  comment->setText(c);
     55  comment->show();
     56}
    2157
     58void Window::write_name(string name){
     59  QString n = QString::fromStdString(name);
     60  lname->setText(n);
     61}
     62
     63void Window::write_type(string type){
     64  lt->setText("type");
     65  QString n = QString::fromStdString(type);
     66  ltype->setText(n);
     67}
     68
     69void Window::_cancel_selection(){
     70  component_clicked = false;
     71}
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_main.cpp

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

    r20 r30  
    1010{
    1111  paint = false;
    12   is_parse = false;
    1312  window_height = 620;
    14   window_width = 600;
    15   margeX = 50;
    16   margeY = 70;
     13  window_width = 620;
     14  charg_open = false;
     15  mess_open = false;
     16  component_clicked = false;
     17  cpt_level=0;
    1718 
    1819  /*menu bar*/
     
    7879  connect(paramAct,SIGNAL(triggered()),this,SLOT(_parameters()));
    7980
     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
    8090  /*add the menu "tools" to the menu bar*/
    8191  tools = menu_bar->addMenu(tr("&Tools"));
    82   tools->addAction(zoomInAct);
    83   tools->addAction(zoomOutAct);
    84   tools->addAction(defautZoomAct);
    85   tools->addAction(levelAct);
     92  //tools->addAction(zoomInAct);
     93  //tools->addAction(zoomOutAct);
     94  //tools->addAction(defautZoomAct);
     95  tools->addAction(compoNameAct);
     96  tools->addAction(signalNameAct);
     97  //tools->addAction(levelAct);
    8698  tools->addAction(infoAct);
    8799  tools->addAction(paramAct);
     
    96108  help->addAction(aboutAct);
    97109 
    98 
    99110  /*add the menu bar to the main window*/
    100111  this->setMenuWidget(menu_bar);
     
    108119
    109120  /*defaut position*/
    110   this->move(0,0);   
     121  this->move(0,50);   
    111122
    112123  /*main window title*/
     
    125136
    126137  /*little windows (open, save...), closed at init*/
    127   wo_open = false;
    128138  wq_open = false;
    129   ws_open = false;
    130139  wa_open = false;
     140
     141  /*signals and components name hidden*/
     142  signalName = false;
     143  componentName = false;
    131144
    132145  /*file unsaved at init*/
     
    134147  first_save = false; //first_save = true for a new file
    135148 
    136 
    137149  current_name = name;
    138150  if(current_name != NULL){
     
    142154    file_open = false;
    143155    paint = false;
    144     is_save = false;
     156    is_save = true;
    145157  }
    146158}
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_parameters_window.cpp

    r20 r30  
    1010{
    1111  wparam = new QWidget();
    12   QBoxLayout *parameters = new QBoxLayout(QBoxLayout::LeftToRight,0);
    13   wparam->resize(200,450);
     12  parameters = new QBoxLayout(QBoxLayout::TopToBottom,0);
    1413  wparam->setWindowTitle("parameters");
    15   wparam->setFixedSize(200,620);
    16   wparam->move(816,0);
     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
    1723  wparam->setLayout(parameters);
    1824  wparam->show();
     
    2026
    2127
    22 
     28void Window::_apply(){
     29  cout << "apply\n";
     30}
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_setParse.cpp

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

    r20 r30  
    11#############################################################################
    22# Makefile for building: bin/Viewer
    3 # Generated by qmake (2.01a) (Qt 4.2.2) on: Wed May 2 14:27:25 2007
     3# Generated by qmake (2.01a) (Qt 4.2.2) on: Sun May 20 18:09:08 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 \
    9597                Parser/src/Parse_parser_pos.cpp \
    9698                Parser/src/Parse_getBaseV.cpp \
     
    98100                Parser/src/Parse_open_file.cpp \
    99101                Graphics/src/Graphics_main.cpp \
    100                 Graphics/src/Graphics_window_actions.cpp \
     102                Graphics/src/Graphics_file_actions.cpp \
     103                Graphics/src/Graphics_tools_actions.cpp \
     104                Graphics/src/Graphics_about_actions.cpp \
    101105                Graphics/src/Graphics_main_window.cpp \
    102106                Graphics/src/Graphics_informations_window.cpp \
     
    104108                Graphics/src/Graphics_parameters_window.cpp \
    105109                Graphics/src/Graphics_setParse.cpp \
    106                 Graphics/src/Graphics_drawAll.cpp moc_window.cpp
     110                Graphics/src/Graphics_drawAll.cpp \
     111                Graphics/src/Graphics_mouseEvent.cpp moc_window.cpp
    107112OBJECTS       = obj/Architecture_accessors.o \
    108113                obj/BaseP_accessors.o \
     
    152157                obj/ListePorts_searchPort.o \
    153158                obj/Parse_alloc.o \
     159                obj/Parse_closeBaseV.o \
     160                obj/Parse_accessors.o \
    154161                obj/Parse_parser_pos.o \
    155162                obj/Parse_getBaseV.o \
     
    157164                obj/Parse_open_file.o \
    158165                obj/Graphics_main.o \
    159                 obj/Graphics_window_actions.o \
     166                obj/Graphics_file_actions.o \
     167                obj/Graphics_tools_actions.o \
     168                obj/Graphics_about_actions.o \
    160169                obj/Graphics_main_window.o \
    161170                obj/Graphics_informations_window.o \
     
    164173                obj/Graphics_setParse.o \
    165174                obj/Graphics_drawAll.o \
     175                obj/Graphics_mouseEvent.o \
    166176                obj/moc_window.o
    167177DIST          = /dsk/l1/misc/kane/qt-x11-opensource-4.2.2/mkspecs/common/unix.conf \
     
    258268dist:
    259269        @$(CHK_DIR_EXISTS) obj/Viewer1.0.0 || $(MKDIR) 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
     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
    261271
    262272
     
    443453        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Parse_alloc.o Parser/src/Parse_alloc.cpp
    444454
     455obj/Parse_closeBaseV.o: Parser/src/Parse_closeBaseV.cpp
     456        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Parse_closeBaseV.o Parser/src/Parse_closeBaseV.cpp
     457
     458obj/Parse_accessors.o: Parser/src/Parse_accessors.cpp
     459        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Parse_accessors.o Parser/src/Parse_accessors.cpp
     460
    445461obj/Parse_parser_pos.o: Parser/src/Parse_parser_pos.cpp
    446462        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Parse_parser_pos.o Parser/src/Parse_parser_pos.cpp
     
    458474        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Graphics_main.o Graphics/src/Graphics_main.cpp
    459475
    460 obj/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
     476obj/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
     479obj/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
     482obj/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
    462484
    463485obj/Graphics_main_window.o: Graphics/src/Graphics_main_window.cpp Graphics/include/window.h
     
    479501        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/Graphics_drawAll.o Graphics/src/Graphics_drawAll.cpp
    480502
     503obj/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
    481506obj/moc_window.o: moc_window.cpp
    482507        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/moc_window.o moc_window.cpp
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Parser/include/parser.h

    r20 r30  
    1717#include "Tools/Viewer/Bdd/include/PortMap.h"
    1818
    19 
     19#define LEVEL_MAX 8
    2020
    2121using namespace std;
     
    3232  string s;
    3333  string absolutePath;
     34  string toplevel;
    3435
    35 protected:
    3636  morpheo::tools::viewer::bdd::BaseV *base;
    3737  morpheo::tools::viewer::bdd::BaseP *pos;
    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 
     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 
     42protected:
    4443
    4544public:
     
    4746  Parse(void);
    4847  ~Parse(void);
    49   void parser_pos(QDomNode n);
    50   //void ParseParam(void);
    51   int open_file(string name);
     48  void parser_pos(QDomNode n,int level);
     49
     50  int open_file(string name,int level);
    5251  //void saveFile(string name);
    5352  morpheo::tools::viewer::bdd::BaseV *getBaseV();
    54 
    55  
     53  string getTopLevelName();
     54  string getAbsolutePath();
     55  /*Close and erase baseV*/
     56  void closeBaseV();
    5657 //void refresh();
    5758 
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Parser/src/Parse_open_file.cpp

    r20 r30  
    1010namespace parser{
    1111
    12    int Parse::open_file(string name){
     12   int Parse::open_file(string name,int level){
     13
    1314    QFile file(QString::fromStdString(name));
     15    QString testname,testname2;
    1416    QString tmppath=QString::fromStdString(name);
    15 
    1617    QString path=tmppath.left(tmppath.lastIndexOf('/',-1,Qt::CaseSensitive)+1);
    17 
    1818    absolutePath=path.toStdString();
    19 
     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   
    2028     if( !file.open( QIODevice::ReadOnly ) )
    2129       {
     
    4452         #endif
    4553         //BaseP
    46          if(!base)
    47            base=new morpheo::tools::viewer::bdd::BaseV();
     54         if(!base){
     55           base=new morpheo::tools::viewer::bdd::BaseV();
     56           toplevel=testname2.toStdString();
     57         }
    4858         pos=new morpheo::tools::viewer::bdd::BaseP();
    4959         //base->addBaseP(pos);
    50          parser_pos(root.firstChild());   
     60         parser_pos(root.firstChild(),level);   
    5161         
    5262       }
     63
     64     //     delete pos;
     65     //delete ctemp;
    5366     return 0;
    54 
    55 
    5667   }
    5768
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Parser/src/Parse_parser_pos.cpp

    r20 r30  
    1010namespace parser{     
    1111
    12   void Parse::parser_pos(QDomNode n){
     12  void Parse::parser_pos(QDomNode n,int level){
     13    string fichier;
    1314       while( !n.isNull() )
    1415      {
     
    2526                //BaseP
    2627                pos->setComment(e.text().toStdString());
     28                pos->setLevel(level);
     29               
    2730              }
    2831            if (e.tagName() == "entity" )
    2932              {
    30                 #ifdef DBUG_PARSE
     33                #ifdef DBUG_PARSE
    3134                cout << "entity" <<endl;
    3235                cout << e.attribute("name","").toStdString() <<endl;
    3336                #endif
    34                 ent=new morpheo::tools::viewer::bdd::Entity\
     37
     38                ent[level]=new morpheo::tools::viewer::bdd::Entity\
    3539                  (e.attribute("name","").toStdString(),\
     40                   e.attribute("type","").toStdString(),\
    3641                   e.attribute("schema","").toInt(0,10));
    37                 s=e.attribute("type","").toStdString();
    38                 pos->setEntity(ent);
    39                 parser_pos(n.firstChild());
     42                s=e.attribute("name","").toStdString();
     43                pos->setEntity(ent[level]);
     44
     45                parser_pos(n.firstChild(),level);
    4046               
    4147                if((n.nextSiblingElement()).tagName() !="architecture")
     
    5965                       e.attribute("localisation","").toStdString());
    6066                p->setComment(e.text().toStdString());
    61                 ent->addport(p);
     67                ent[level]->addport(p);
    6268              }
    6369            if (e.tagName() == "architecture" )
     
    6672                cout << "architecture" <<endl;
    6773                #endif
    68                 arch=new morpheo::tools::viewer::bdd::Architecture();
    69                 pos->setArchitecture(arch);
     74                arch[level]=new morpheo::tools::viewer::bdd::Architecture();
     75                pos->setArchitecture(arch[level]);
    7076               
    7177                base->addBaseP(pos,s);
    7278
    73                 parser_pos(n.firstChild());   
     79                parser_pos(n.firstChild(),level);   
    7480              }
    7581            if (e.tagName() == "component" )
     
    8692                            e.attribute("size_x","").toInt(0,10),\
    8793                            e.attribute("size_y","").toInt(0,10));
    88                 arch->addComponent(comp, e.attribute("type","").toStdString());
    89                 ctemp=comp;
     94                ctemp[level]=comp;
     95                arch[level]->addComponent(ctemp[level], e.attribute("name","").toStdString());
    9096               
    91                 string fichier=absolutePath;
    92                 fichier.append(e.attribute("type","").toStdString());
     97                fichier=absolutePath;
     98                fichier.append(ent[level]->getName());
     99                fichier.append("-");
     100                fichier.append((e.attribute("type","").toLower()).toStdString());
    93101                fichier.append(".pos");
    94                 #ifdef DBUG_PARSE
    95                 cout << fichier <<endl;
    96                 #endif
    97                 open_file(fichier);
    98                 parser_pos(n.firstChild());   
     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               
    99110                //ajout ptr Port du sous composant
    100                 BaseP pt=base->get_BasePos(e.attribute("type","").toStdString());
     111                BaseP pt=base->get_BasePos((e.attribute("type","").toLower()).toStdString());
    101112                QList<Port> *sspor= (pt.getEntity())->getPort();
    102113                for(QList<Port>::iterator it=sspor->begin();it!=sspor->end();++it)
    103                   ctemp->addport(new Port(*it));
     114                  ctemp[level]->addport(new Port(*it));
    104115               
    105116              }
     
    115126                          e.attribute("port","").toStdString());
    116127               
    117                 ctemp->addPortMap(p);
     128                ctemp[level]->addPortMap(p);
    118129               
    119130              }
  • /trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Viewer.pro

    r20 r30  
    4040                        Bdd/include/Entity.h                                            \
    4141                        Bdd/include/ListePorts.h                                        \
    42 #                       Bdd/include/ListV.h                                             \
    4342                        Bdd/include/Port.h                                              \
    4443                        Bdd/include/PortMap.h                                           \
    4544                        Bdd/include/Signal.h                                            \
    46 #                       Graphics/include/point.h                                        \
    4745                        Graphics/include/window.h                                       \
    4846                        Parser/include/parser.h
     
    9492                        Bdd/src/ListePorts_accessors.cpp                                \
    9593                        Bdd/src/ListePorts_searchPort.cpp                               \
    96                         Parser/src/Parse_alloc.cpp                                      \
     94                        Parser/src/Parse_alloc.cpp                                      \               
     95                        Parser/src/Parse_closeBaseV.cpp                                 \
     96                        Parser/src/Parse_accessors.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_window_actions.cpp                        \
     102                        Graphics/src/Graphics_file_actions.cpp                          \
     103                        Graphics/src/Graphics_tools_actions.cpp                         \
     104                        Graphics/src/Graphics_about_actions.cpp                         \
    103105                        Graphics/src/Graphics_main_window.cpp                           \
    104106                        Graphics/src/Graphics_informations_window.cpp                   \
     
    106108                        Graphics/src/Graphics_parameters_window.cpp                     \
    107109                        Graphics/src/Graphics_setParse.cpp                              \
    108                         Graphics/src/Graphics_drawAll.cpp                               
     110                        Graphics/src/Graphics_drawAll.cpp                               \
     111                        Graphics/src/Graphics_mouseEvent.cpp   
     112                       
  • /trunk/Makefile.tools

    r20 r30  
     1#----------------------------------------------------------
    12#-----[ Unix Commands ]------------------------------------
     3#----------------------------------------------------------
     4
    25ECHO                                    = echo
    36EXPORT                                  = export
     
    3942VIEWPDF_FS                              = acroread
    4043
     44#----------------------------------------------------------
    4145#-----[ tools ]--------------------------------------------
    42 SOCLIB                                  =  /users/outil/soc/soclib/
    43 SYSTEMC_systemc                         = /users/outil/systemc/systemc-2.1.v1/
    44 SYSTEMC_systemcass                      = /users/outil/systemc/systemcass/systemcass/latest/i686-Linux.SLA4x/
    45 SYSTEMC_systemcass_deps                 = $(SYSTEMC_systemcass)
    46 XILINX                                  = /dsk/l1/misc/Xilinx91i/
    47 MODELTECH                               = /users/outil/m1archi/modeltech/
    48 OR1K                                    = ../../Tools/or32-elf/
    49 NEWLIB                                  = ../../Tools/newlib-1.14.0
     46#----------------------------------------------------------
     47
     48include $(MORPHEO_TOPLEVEL)/Makefile.tools_path
    5049
    5150#-----[ soclib ]-------------------------------------------
     
    8281
    8382#-----[ Modeltech ]----------------------------------------
    84 MODELTECH_ENV                           = export LM_LICENSE_FILE=/users/soft/mentor/licence/etc/license.anacad
     83MODELTECH_ENV                           = export LM_LICENSE_FILE=$(MODELTECH_LICENCE)/license.anacad
    8584MODELTECH_BIN                           = $(MODELTECH)/bin
    8685MODELTECH_VLIB                          = $(MODELTECH_ENV); $(MODELTECH_BIN)/vlib
Note: See TracChangeset for help on using the changeset viewer.