PhotonicClos.h revision 10447:a465576671d4
15323Sgblack@eecs.umich.edu#ifndef __DSENT_MODEL_NETWORK_PHOTONIC_CLOS_H__
22934Sktlim@umich.edu#define __DSENT_MODEL_NETWORK_PHOTONIC_CLOS_H__
32934Sktlim@umich.edu
42934Sktlim@umich.edu#include "util/CommonType.h"
52934Sktlim@umich.edu#include "model/ElectricalModel.h"
62934Sktlim@umich.edu
72934Sktlim@umich.edunamespace DSENT
82934Sktlim@umich.edu{
92934Sktlim@umich.edu    /**
102934Sktlim@umich.edu     * \brief An 3-stage clos network implemented with photonic router-to-router links
112934Sktlim@umich.edu     */
122934Sktlim@umich.edu    class PhotonicClos : public ElectricalModel
132934Sktlim@umich.edu    {
142934Sktlim@umich.edu        public:
152934Sktlim@umich.edu            PhotonicClos(const String& instance_name_, const TechModel* tech_model_);
162934Sktlim@umich.edu            virtual ~PhotonicClos();
172934Sktlim@umich.edu
182934Sktlim@umich.edu        public:
192934Sktlim@umich.edu            // Set a list of properties' name needed to construct model
202934Sktlim@umich.edu            void initParameters();
212934Sktlim@umich.edu            // Set a list of properties' name needed to construct model
222934Sktlim@umich.edu            void initProperties();
232934Sktlim@umich.edu
242934Sktlim@umich.edu            // Clone and return a new instance
252934Sktlim@umich.edu            virtual PhotonicClos* clone() const;
262934Sktlim@umich.edu
272934Sktlim@umich.edu        protected:
282934Sktlim@umich.edu            // Build the model
292934Sktlim@umich.edu            virtual void constructModel();
302969Sktlim@umich.edu            virtual void updateModel();
312934Sktlim@umich.edu            virtual void propagateTransitionInfo();
322995Ssaidi@eecs.umich.edu
332934Sktlim@umich.edu    };
342934Sktlim@umich.edu} // namespace DSENT
352934Sktlim@umich.edu
362934Sktlim@umich.edu#endif // __DSENT_MODEL_NETWORK_PHOTONIC_CLOS_H__
372934Sktlim@umich.edu
382934Sktlim@umich.edu