Changes between Initial Version and Version 1 of Soclib Cc/Vci Parameters


Ignore:
Timestamp:
May 17, 2007, 11:24:38 AM (17 years ago)
Author:
Nicolas Pouillon
Comment:

VCI parameters in Soclib-CC

Legend:

Unmodified
Added
Removed
Modified
  • Soclib Cc/Vci Parameters

    v1 v1  
     1= Standard usage =
     2
     3When using a VCI-compliant component, you must define explicitely VCI parameters:
     4
     5{{{
     6    Uses('vci_multi_ram',
     7        cell_size = 4,
     8        plen_size = 1,
     9        addr_size = 32,
     10        rerror_size = 1,
     11        clen_size = 1,
     12        rflag_size = 1,
     13        srcid_size = 8,
     14        pktid_size = 1,
     15        trdid_size = 1,
     16        wrplen_size = 1 )
     17}}}
     18
     19When repeated for all components, this can be redundant and error prone (not even speaking of readability):
     20
     21{{{
     22todo = Platform(
     23    Uses('vci_multi_ram', cell_size = 4, plen_size = 1, addr_size = 32, rerror_size = 1,
     24         clen_size = 1, rflag_size = 1, srcid_size = 8, pktid_size = 1, trdid_size = 1,
     25         wrplen_size = 1 ),
     26    Uses('vci_vgmn', cell_size = 4, plen_size = 1, addr_size = 32, rerror_size = 1,
     27         clen_size = 1, rflag_size = 1, srcid_size = 8, pktid_size = 1, trdid_size = 1,
     28         wrplen_size = 1 ),
     29    Uses('vci_xcache', cell_size = 4, plen_size = 1, addr_size = 32, rerror_size = 1,
     30         clen_size = 1, rflag_size = 1, srcid_size = 8, pktid_size = 1, trdid_size = 1,
     31         wrplen_size = 1 ),
     32    Uses('vci_timer', cell_size = 4, plen_size = 1, addr_size = 32, rerror_size = 1,
     33         clen_size = 1, rflag_size = 1, srcid_size = 8, pktid_size = 1, trdid_size = 1,
     34         wrplen_size = 1 ),
     35    Uses('mips'),
     36)
     37}}}
     38
     39So you may factor out common parameters:
     40
     41{{{
     42vci_params = dict(
     43        cell_size = 4,
     44        plen_size = 1,
     45        addr_size = 32,
     46        rerror_size = 1,
     47        clen_size = 1,
     48        rflag_size = 1,
     49        srcid_size = 8,
     50        pktid_size = 1,
     51        trdid_size = 1,
     52        wrplen_size = 1
     53        )
     54
     55todo = Platform(
     56        Uses('mips'),
     57        Uses('vci_locks',     **vci_params),
     58        Uses('vci_multi_ram', **vci_params),
     59        Uses('vci_multi_tty', **vci_params),
     60        Uses('vci_timer',     **vci_params),
     61        Uses('vci_vgmn',      **vci_params),
     62        Uses('vci_xcache',    **vci_params),
     63        Source('top.cc'),
     64)
     65}}}
     66
     67The `**variable_name` will be expanded with all the things defined in the variable, for every line, source:trunk/soclib/platforms/timer_4mips/platform_desc is a live example.
     68
     69If you have some exceptionnal template parameter to add in for one component, you can specify it ''before'' the expanded one:
     70
     71{{{
     72vci_params = dict(
     73        cell_size = 4,
     74[...]
     75        )
     76
     77[...]
     78        Uses('vci_vgmn', write_buffer_depth = 16, **vci_params),
     79[...]
     80}}}
     81