
# -*- python -*-

__id__ = "$Id: vci_mem_cache_v4.sd 291 2013-01-28 12:59:32Z joannou $"
__version__ = "$Revision: 291 $"

Module('caba:vci_mem_cache_v4',
        classname = 'soclib::caba::VciMemCacheV4',

        tmpl_parameters = [ parameter.Module('vci_param', default = 'caba:vci_param') ],

        header_files = [
            '../source/include/vci_mem_cache_v4.h',
            '../source/include/xram_transaction_v4.h',
            '../source/include/mem_cache_directory_v4.h',
            '../source/include/update_tab_v4.h'
        ],

        implementation_files = [ '../source/src/vci_mem_cache_v4.cpp' ],

        uses = [
            Uses('caba:base_module'),
            Uses('common:loader'),
            Uses('common:mapping_table'),
            Uses('caba:generic_fifo'),
            Uses('caba:generic_llsc_global_table'),
        ],

        ports = [
            Port( 'caba:vci_target'   , 'p_vci_tgt' ),
            Port( 'caba:vci_target'   , 'p_vci_tgt_cleanup' ),
            Port( 'caba:vci_initiator', 'p_vci_ini' ),
            Port( 'caba:vci_initiator', 'p_vci_ixr' ),
            Port( 'caba:bit_in'       , 'p_resetn'  , auto = 'resetn' ),
            Port( 'caba:clock_in'     , 'p_clk'     , auto = 'clock'  ),
        ],

        instance_parameters = [
            parameter.Module( 'mtp', 'common:mapping_table' ),
            parameter.Module( 'mtc', 'common:mapping_table' ),
            parameter.Module( 'mtx', 'common:mapping_table' ),
            parameter.IntTab( 'vci_ixr_index' ),
            parameter.IntTab( 'vci_ini_index' ),
            parameter.IntTab( 'vci_tgt_index' ),
            parameter.IntTab( 'vci_tgt_index_cleanup '),
            parameter.Int   ( 'nways' ),
            parameter.Int   ( 'nsets' ),
            parameter.Int   ( 'nwords' ),
            parameter.Int   ( 'heap_size' ),
        ],

        extensions = [
            'dsx:get_ident='
            'vci_ini_index:p_vci_ini:mtc,'
            'vci_tgt_index_cleanup:p_vci_tgt_cleanup:mtc,'
            'vci_tgt_index:p_vci_tgt:mtp,'
            'vci_ixr_index:p_vci_ixr:mtx',
            'dsx:addressable=vci_tgt_index,vci_tgt_index_cleanup',
        ],
)
