DFFQ.h revision 10448:bc1a3b7ab5ef
110037SARM gem5 Developers/* Copyright (c) 2012 Massachusetts Institute of Technology
210037SARM gem5 Developers *
310037SARM gem5 Developers * Permission is hereby granted, free of charge, to any person obtaining a copy
410037SARM gem5 Developers * of this software and associated documentation files (the "Software"), to deal
510037SARM gem5 Developers * in the Software without restriction, including without limitation the rights
610037SARM gem5 Developers * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
710037SARM gem5 Developers * copies of the Software, and to permit persons to whom the Software is
810037SARM gem5 Developers * furnished to do so, subject to the following conditions:
910037SARM gem5 Developers *
1010037SARM gem5 Developers * The above copyright notice and this permission notice shall be included in
1110037SARM gem5 Developers * all copies or substantial portions of the Software.
1210037SARM gem5 Developers *
1310037SARM gem5 Developers * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1410037SARM gem5 Developers * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1510037SARM gem5 Developers * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1610037SARM gem5 Developers * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1710037SARM gem5 Developers * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1810037SARM gem5 Developers * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1910037SARM gem5 Developers * THE SOFTWARE.
2010037SARM gem5 Developers */
2110037SARM gem5 Developers
2210037SARM gem5 Developers#ifndef __DSENT_MODEL_STD_CELLS_DFFQ_H__
2310037SARM gem5 Developers#define __DSENT_MODEL_STD_CELLS_DFFQ_H__
2410037SARM gem5 Developers
2510037SARM gem5 Developers#include "util/CommonType.h"
2610037SARM gem5 Developers#include "model/std_cells/StdCell.h"
2710037SARM gem5 Developers#include "model/TransitionInfo.h"
2810037SARM gem5 Developers
2910037SARM gem5 Developersnamespace DSENT
3010037SARM gem5 Developers{
3110037SARM gem5 Developers    class DFFQ : public StdCell
3210037SARM gem5 Developers    {
3310037SARM gem5 Developers        // A DQ flip-flop
3410037SARM gem5 Developers        public:
3510037SARM gem5 Developers            DFFQ(const String& instance_name_, const TechModel* tech_model_);
3610037SARM gem5 Developers            virtual ~DFFQ();
3710037SARM gem5 Developers
3810037SARM gem5 Developers        public:
3910037SARM gem5 Developers            // Set a list of properties' name needed to construct model
4010037SARM gem5 Developers            void initProperties();
4110037SARM gem5 Developers            // Cache the standard cell
4210037SARM gem5 Developers            void cacheStdCell(StdCellLib* cell_lib_, double drive_strength_);
4310037SARM gem5 Developers
4410037SARM gem5 Developers        private:
4510037SARM gem5 Developers            TransitionInfo m_trans_M_;
4610037SARM gem5 Developers
4710037SARM gem5 Developers        protected:
4810037SARM gem5 Developers            // Build the model
4910037SARM gem5 Developers            virtual void constructModel();
5010037SARM gem5 Developers            virtual void updateModel();
5110037SARM gem5 Developers            virtual void evaluateModel();
5210037SARM gem5 Developers            virtual void useModel();
5310037SARM gem5 Developers            virtual void propagateTransitionInfo();
5410037SARM gem5 Developers
5510905Sandreas.sandberg@arm.com    }; // class DFFQ
5610905Sandreas.sandberg@arm.com} // namespace DSENT
5710905Sandreas.sandberg@arm.com
5810037SARM gem5 Developers#endif // __DSENT_MODEL_STD_CELLS_INV_H__
5910037SARM gem5 Developers
6010037SARM gem5 Developers