26 | | Dans le cas général, l'identification des dépendances entre composants logiciels (le fichier A |
27 | | fait référence à des objets définis dans le fichier B, qui lui-même fait appel au fichier C), |
28 | | et la construction du Makefile permettant de générer le simulateur constituent un travail non négligeable. |
| 29 | Dans le cas général, l'identification tous les fichiers nécessaires à la génération du simulateur d'une architecture particulièredes est un travail non négligeable, à cause des dépendances entre composants logiciels (le fichier A |
| 30 | fait référence à des objets définis dans le fichier B, qui lui-même fait appel au fichier C, etc.), et |
| 31 | la construction du Makefile permettant de générer le simulateur est généralement un exercice complexe. |
| 42 | Pour permettre cette automatisation, tout composant logiciel de SoCLib doit être accompagné d'un fichier |
| 43 | de ''métadata'' (fichier possédant le suffixe ''.sd'') qui contient les informations suivantes: |
| 44 | * |
| 45 | * |
| 46 | * |
| 47 | * |
| 48 | Ce fichier est écrit en langage Python, et on trouvera ci-dessous à titre d'exemple le fichier de metadata associé |
| 49 | au composant ''vci_simple_ram'': |
| 50 | {{{ |
| 51 | # -*- python -*- |
| 52 | |
| 53 | __id__ = "$Id$" |
| 54 | __version__ = "$Revision$" |
| 55 | |
| 56 | Module('caba:vci_simple_ram', |
| 57 | classname = 'soclib::caba::VciSimpleRam', |
| 58 | tmpl_parameters = [parameter.Module('vci_param', default = 'caba:vci_param')], |
| 59 | header_files = ['../source/include/vci_simple_ram.h',], |
| 60 | implementation_files = ['../source/src/vci_simple_ram.cpp'], |
| 61 | ports = [ |
| 62 | Port('caba:vci_target', 'p_vci'), |
| 63 | Port('caba:bit_in', 'p_resetn', auto = 'resetn') |
| 64 | Port('caba:clock_in', 'p_clk', auto = 'clock')], |
| 65 | uses = [ |
| 66 | Uses('caba:base_module'), |
| 67 | Uses('common:linked_access_buffer', |
| 68 | addr_t = parameter.StringExt('sc_dt::sc_uint<%d>', parameter.Reference('addr_size')), |
| 69 | id_t = parameter.StringExt('sc_dt::sc_uint<%d>', parameter.Reference('srcid_size'))), |
| 70 | Uses('common:loader'), |
| 71 | Uses('common:mapping_table',], |
| 72 | instance_parameters = [ |
| 73 | parameter.IntTab('ident'), |
| 74 | parameter.Module('mt', 'common:mapping_table', auto='env:mapping_table'), |
| 75 | parameter.Module('loader', 'common:loader', auto='env:loader'), |
| 76 | parameter.Int('latency')], |
| 77 | extensions = [ |
| 78 | 'dsx:addressable=ident', |
| 79 | 'dsx:get_ident=ident:p_vci', |
| 80 | 'dsx:mapping_type=memory'], |
| 81 | ) |
| 82 | }}} |