
# -*- python -*-

__id__ = "$Id: vci_cc_vcache_wrapper_v4.sd 20 2011-10-13  alain $"

Module('caba:vci_cc_vcache_wrapper_v4',
	classname = 'soclib::caba::VciCcVCacheWrapperV4',
	tmpl_parameters = [ parameter.Module('vci_param', default = 'caba:vci_param'),
	                    parameter.Module('iss_t') ],
	header_files =         [ '../source/include/vci_cc_vcache_wrapper_v4.h' ],
	implementation_files = [ '../source/src/vci_cc_vcache_wrapper_v4.cpp' ],
	uses = [ Uses('caba:base_module'),
	         Uses('common:mapping_table'),
	         Uses('common:iss2'),
	         Uses('caba:multi_write_buffer'),
	         Uses('caba:generic_fifo'),
	         Uses('caba:generic_cam'),
	         Uses('caba:generic_llsc_local_table'),
	         Uses('caba:generic_cache', 
                       addr_t = parameter.StringExt('sc_dt::sc_uint<%d> ', 
                       parameter.Reference('addr_size'))),
	         Uses('caba:generic_tlb', 
                       addr_t = parameter.StringExt('sc_dt::sc_uint<%d> ', 
                       parameter.Reference('addr_size'))),
	         Uses('common:address_masking_table', 
                       data_t = parameter.StringExt('sc_dt::sc_uint<%d> ', 
                       parameter.Reference('addr_size'))) ],
	ports = [ Port('caba:vci_initiator', 'p_vci_ini_d'),
	          Port('caba:vci_initiator', 'p_vci_ini_c'),
	          Port('caba:vci_target', 'p_vci_tgt_d'),
	          Port('caba:bit_in','p_irq', parameter.Constant('n_irq')),
	          Port('caba:bit_in', 'p_resetn', auto = 'resetn'),
	          Port('caba:clock_in', 'p_clk', auto = 'clock'), ],
	instance_parameters = [ parameter.Int('proc_id'),
	                        parameter.Module('mt', 'common:mapping_table'),
	                        parameter.Module('mc', 'common:mapping_table'),
	                        parameter.IntTab('initiator_rw_index'),
	                        parameter.IntTab('initiator_c_index'),
	                        parameter.IntTab('target_index'),
    	                        parameter.Int('itlb_ways'),
    	                        parameter.Int('itlb_sets'),
    	                        parameter.Int('dtlb_ways'),
    	                        parameter.Int('dtlb_sets'),
    	                        parameter.Int('icache_ways'),
    	                        parameter.Int('icache_sets'),
    	                        parameter.Int('icache_words'),
    	                        parameter.Int('dcache_ways'),
    	                        parameter.Int('dcache_sets'),
    	                        parameter.Int('dcache_words'),
    	                        parameter.Int('wbuf_nlines'),
    	                        parameter.Int('wbuf_nwords'),
    	                        parameter.Int('max_frozen_cycles'), ],
	extensions = [ 'dsx:get_ident='
                       'initiator_d_index:p_vci_ini_d:mt,'
                       'initiator_c_index:p_vci_ini_c:mc,'
                       'target_index:p_vci_tgti_d:mc',
	               'dsx:cpu=wrapper:iss_t',
	               'dsx:addressable=target_index',
                       'dsx:on_segment=mc:add_index:initiator_rw_index',
	               'dsx:mapping_type=processor:proc_id', ],
)


