OpticalLinkBackendTx.h revision 10447
12SN/A#ifndef __DSENT_MODEL_OPTICAL_OPTICALLINKBACKENDTX_H__
210595Sgabeblack@google.com#define __DSENT_MODEL_OPTICAL_OPTICALLINKBACKENDTX_H__
31762SN/A
42SN/A#include "util/CommonType.h"
52SN/A#include "model/ElectricalModel.h"
62SN/A
72SN/Anamespace DSENT
82SN/A{
92SN/A    class OpticalLinkBackendTx : public ElectricalModel
102SN/A    {
112SN/A        // An optical link backend tx contains everything needed for thermal
122SN/A        // tuning of rings, bit-reshuffling (if necessary), and serialization (if necessary)
132SN/A        public:
142SN/A            OpticalLinkBackendTx(const String& instance_name_, const TechModel* tech_model_);
152SN/A            virtual ~OpticalLinkBackendTx();
162SN/A
172SN/A        public:
182SN/A            // Set a list of properties' name needed to construct model
192SN/A            void initParameters();
202SN/A            // Set a list of properties' name needed to construct model
212SN/A            void initProperties();
222SN/A
232SN/A        protected:
242SN/A            // Build the model
252SN/A            virtual void constructModel();
262SN/A            virtual void updateModel();
272SN/A            virtual void propagateTransitionInfo();
282665Ssaidi@eecs.umich.edu
292665Ssaidi@eecs.umich.edu        private:
302SN/A            // Calculate ring tuning power
312SN/A            double getRingTuningPower();
322SN/A            // Calculate the degree of bit re-order muxing (for the bit-reshuffler)
332SN/A            unsigned int getBitReorderDegree();
342SN/A
353960Sgblack@eecs.umich.edu    }; // class OpticalLinkBackendTx
3677SN/A} // namespace DSENT
378229Snate@binkert.org
388229Snate@binkert.org#endif // __DSENT_MODEL_OPTICAL_OPTICALLINKBACKENDTX_H__
392986Sgblack@eecs.umich.edu
4010595Sgabeblack@google.com