Router.h revision 10447:a465576671d4
18706Sandreas.hansson@arm.com#ifndef __DSENT_MODEL_ELECTRICAL_ROUTER_ROUTER_H__
212522Sandreas.sandberg@arm.com#define __DSENT_MODEL_ELECTRICAL_ROUTER_ROUTER_H__
38706Sandreas.hansson@arm.com
48706Sandreas.hansson@arm.com#include "util/CommonType.h"
58706Sandreas.hansson@arm.com#include "model/ElectricalModel.h"
68706Sandreas.hansson@arm.com
78706Sandreas.hansson@arm.comnamespace DSENT
88706Sandreas.hansson@arm.com{
98706Sandreas.hansson@arm.com    /** \class Router
108706Sandreas.hansson@arm.com     * \param Input ports: In[0-9]*
118706Sandreas.hansson@arm.com     * \param Output ports: Out[0-9]*
128706Sandreas.hansson@arm.com     */
138706Sandreas.hansson@arm.com    class Router : public ElectricalModel
148706Sandreas.hansson@arm.com    {
158706Sandreas.hansson@arm.com        public:
168706Sandreas.hansson@arm.com            Router(const String& instance_name_, const TechModel* tech_model_);
178706Sandreas.hansson@arm.com            virtual ~Router();
188706Sandreas.hansson@arm.com
198706Sandreas.hansson@arm.com        public:
208706Sandreas.hansson@arm.com            // Set a list of properties' name needed to construct model
218706Sandreas.hansson@arm.com            void initParameters();
228706Sandreas.hansson@arm.com            // Set a list of properties' name needed to construct model
238706Sandreas.hansson@arm.com            void initProperties();
248706Sandreas.hansson@arm.com
258706Sandreas.hansson@arm.com            // Clone and return a new instance
268706Sandreas.hansson@arm.com            virtual Router* clone() const;
278706Sandreas.hansson@arm.com
288706Sandreas.hansson@arm.com        protected:
298706Sandreas.hansson@arm.com            // Build the model
308706Sandreas.hansson@arm.com            virtual void constructModel();
318706Sandreas.hansson@arm.com            virtual void updateModel();
328706Sandreas.hansson@arm.com            virtual void propagateTransitionInfo();
338706Sandreas.hansson@arm.com
348706Sandreas.hansson@arm.com        private:
358706Sandreas.hansson@arm.com            void createRouterInputPort();
368706Sandreas.hansson@arm.com            void createVirtualChannelAllocator();
378706Sandreas.hansson@arm.com            void createSwitchAllocator();
388706Sandreas.hansson@arm.com            void createCrossbar();
398706Sandreas.hansson@arm.com            void createClockTree();
408706Sandreas.hansson@arm.com            void createPipelineReg();
418706Sandreas.hansson@arm.com
428706Sandreas.hansson@arm.com    }; // class Router
438706Sandreas.hansson@arm.com} // namespace DSENT
448853Sandreas.hansson@arm.com
458853Sandreas.hansson@arm.com#endif // __DSENT_MODEL_ELECTRICAL_ROUTER_ROUTER_H__
468853Sandreas.hansson@arm.com
478853Sandreas.hansson@arm.com