| 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 | }}} |