#ifndef TSAR_CLUSTER_V1_H #define TSAR_CLUSTER_V1_H #include #include #include "mapping_table.h" #include "mips32.h" #include "vci_multi_tty.h" #include "vci_mem_cache_v1.h" #include "vci_cc_xcache_wrapper_v1.h" #include "vci_xicu.h" #include "vci_simple_ring_fast.h" #include "gdbserver.h" #include "vci_initiator.h" /////////////////////////////////////////////////////////// // TGTID & SRCID definition in direct space // For all components: global TGTID = global SRCID = cluster_index // For processors, the local SRCID is between 0 & nprocs-1 #define MEMC_TGTID 0 #define XICU_TGTID 1 #define MTTY_TGTID 2 #define PROC_SRCID 0 namespace soclib { namespace caba { template class TsarClusterV1 : public soclib::caba::BaseModule { public: TsarClusterV1( sc_module_name nm, // Cluster Index int cluster_idx, // Dspin Routers parameters int infifo_depth, int outfifo_depth, int x_local, int y_local, // Bits for global routing size_t x_width, size_t y_width, // Mapping tables const MappingTable & md, const MappingTable & mc, const MappingTable & mx, // Processor Number size_t nprocs, size_t max_nprocs, // Cache L1 sizes size_t iways, size_t isets, size_t iwords, size_t dways, size_t dsets, size_t dwords, // MemCache sizes size_t mcways, size_t mcsets, size_t mcwords, int is_io, Loader & loader ); void print_trace(); ~TsarClusterV1(); private: typedef soclib::common::GdbServer proc_iss; /////////////////////////////////////////////////////////// // Components VciSimpleRingFast * ringd; VciSimpleRingFast * ringc; VciCcXCacheWrapperV1 ** procs; VciMemCacheV1 * memc; VciXicu * xicu; VciMultiTty * mtty; //////////////////////////////////////////////////////////// // Signals // Direct VCI Signals VciSignals * signal_vci_ini_d; VciSignals * signal_vci_tgt_d; // Coherence VCI Signals VciSignals * signal_vci_ini_c; VciSignals * signal_vci_tgt_c; // Interruptions sc_signal * signal_proc_irq; sc_signal signal_mtty_irq; sc_signal signal_false; size_t m_nprocs; public: //////////////////////////////////////////////////////////// // Ports sc_in p_clk; sc_in p_resetn; soclib::caba::VciInitiator p_vci_ixr; }; } } #endif // vim: tabstop=2 : shiftwidth=2 : expandtab