134 lines
3.5 KiB
C++
134 lines
3.5 KiB
C++
// ****************************************************************************************************
|
|
// File: MetaTransistor.h
|
|
// Authors: Wu YiFei
|
|
// Date : 21/12/2006
|
|
// ****************************************************************************************************
|
|
|
|
#ifndef HURRICANE_METATRANSISTOR
|
|
#define HURRICANE_METATRANSISTOR
|
|
|
|
#include "Cell.h"
|
|
#include "AnalogicalCommons.h"
|
|
|
|
|
|
//BEGIN_NAMESPACE_HURRICANE
|
|
|
|
namespace Hurricane {
|
|
|
|
class Library;
|
|
class Name;
|
|
class Symbol;
|
|
class Record;
|
|
|
|
class MetaTransistor: public Cell {
|
|
// ********************************
|
|
|
|
|
|
// Types
|
|
// *****
|
|
public : typedef Cell Inherit;
|
|
|
|
# if !defined(__DOXYGEN_PROCESSOR__)
|
|
|
|
// Logicals Attributes
|
|
// *******************
|
|
private : char _type;
|
|
private : unsigned _m;
|
|
private : Micro _le, _we; // length and width expected
|
|
private : Micro _lr, _wr; // real length and real width
|
|
private : unsigned _nSex, _nDex, nSin, _nDin, _nSsh, _nDsh;
|
|
private : Micro _dgg, _de;
|
|
private : MicroPower2 _as, _ad;
|
|
private : Micro _ps, _pd;
|
|
private : double _capaDrain, _capaGate, _capaSource;
|
|
private : double _cgb, _cgs, _cdb, _cds, _csb, _cgd;
|
|
|
|
|
|
// Behaviorals attributes
|
|
// **********************
|
|
private : double _temp, _vds, _vgs; // DC
|
|
private : double _vg, _vd, _vs, _vb;
|
|
private : char _region;
|
|
private : double _ids;
|
|
private : double _vth, _vdsat; // AC
|
|
|
|
# endif
|
|
|
|
// Constructors
|
|
// ************
|
|
# if !defined(__DOXYGEN_PROCESSOR__)
|
|
protected : MetaTransistor(Library* library, const Name& name, char type);
|
|
# endif
|
|
|
|
public : static MetaTransistor* Create(Library* library, const Name& name, char type);
|
|
|
|
# if !defined(__DOXYGEN_PROCESSOR__)
|
|
protected : virtual void _PostCreate();
|
|
|
|
|
|
// Destructors
|
|
// ***********
|
|
protected : ~MetaTransistor() {};
|
|
protected : virtual void _PreDelete();
|
|
# endif
|
|
|
|
// Operations
|
|
// **********
|
|
|
|
// Create the connection between all instances.
|
|
// ********************************************
|
|
public : void CreateConnection();
|
|
|
|
// Create the layout of all motifs in this metatransistor.
|
|
// *******************************************************
|
|
public : void CreateLayout();
|
|
|
|
|
|
# if !defined(__DOXYGEN_PROCESSOR__)
|
|
// Get all paramters after generation of Layout (capa..).
|
|
// *****************************************************
|
|
public : void GetParameterOfGeneration() { /* to do */};
|
|
|
|
// Delete all instances and all motifs in this metatransistor.
|
|
// ***********************************************************
|
|
public : void Flush();
|
|
# endif
|
|
|
|
|
|
// Accessors
|
|
// *********
|
|
public : const Micro& GetLe() const { return _le; };
|
|
public : const Micro& GetWe() const { return _we; };
|
|
public : const char GetType() const { return _type; };
|
|
public : const unsigned GetM() const { return _m; };
|
|
|
|
|
|
// Updators
|
|
// ********
|
|
public : void SetLe (const Micro le) { _le=le; };
|
|
public : void SetWe (const Micro we) { _we=we; };
|
|
public : void SetType(const char type) { _type=type; };
|
|
public : void SetM (const unsigned m) { _m=m; };
|
|
|
|
|
|
//#endif
|
|
|
|
# if !defined(__DOXYGEN_PROCESSOR__)
|
|
// Others
|
|
// ******
|
|
public: virtual string _GetTypeName() const {return _TName("MetaTransistor");};
|
|
public: virtual string _GetString() const;
|
|
public: virtual Record* _GetRecord() const;
|
|
# endif
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
//END_NAMESPACE_HURRICANE
|
|
|
|
#endif // HURRICANE_METATRANSISTOR
|
|
|
|
|