From 69f2911e04ffb1b19eef1fafb8c040af271f656e Mon Sep 17 00:00:00 2001 From: Tor Aamodt Date: Thu, 15 Jul 2010 18:09:46 -0800 Subject: creating branch for adding support for CUDA 3.x and Fermi [git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 6829] --- src/intersim/router.hpp | 63 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 src/intersim/router.hpp (limited to 'src/intersim/router.hpp') diff --git a/src/intersim/router.hpp b/src/intersim/router.hpp new file mode 100644 index 0000000..d2dff13 --- /dev/null +++ b/src/intersim/router.hpp @@ -0,0 +1,63 @@ +#ifndef _ROUTER_HPP_ +#define _ROUTER_HPP_ + +#include +#include + +#include "module.hpp" +#include "flit.hpp" +#include "credit.hpp" +#include "config_utils.hpp" + +class Router : public Module { +protected: + int _id; + + int _inputs; + int _outputs; + + int _input_speedup; + int _output_speedup; + + int _routing_delay; + int _vc_alloc_delay; + int _sw_alloc_delay; + int _st_prepare_delay; + int _st_final_delay; + + int _credit_delay; + + vector *_input_channels; + vector *_input_credits; + vector *_output_channels; + vector *_output_credits; + vector *_channel_faults; + + Credit *_NewCredit( int vcs = 1 ); + void _RetireCredit( Credit *c ); + +public: + Router( const Configuration& config, + Module *parent, string name, int id, + int inputs, int outputs ); + + virtual ~Router( ); + + static Router *NewRouter( const Configuration& config, + Module *parent, string name, int id, + int inputs, int outputs ); + + void AddInputChannel( Flit **channel, Credit **backchannel ); + void AddOutputChannel( Flit **channel, Credit **backchannel ); + + virtual void ReadInputs( ) = 0; + virtual void InternalStep( ) = 0; + virtual void WriteOutputs( ) = 0; + + void OutChannelFault( int c, bool fault = true ); + bool IsFaultyOutput( int c ) const; + + int GetID( ) const; +}; + +#endif -- cgit v1.3