coriolis/chamsin/src/analogic/MetaTransistor.h

62 lines
1.4 KiB
C++

#ifndef METATRANSISTOR_H
#define METATRANSISTOR_H
#include "Device.h"
class Transistor;
class MetaTransistor : public Device {
public:
class Type {
public:
enum Code {UNDEFINED=0, NMOS=1, PMOS=2};
Type(const Code& code = UNDEFINED);
Type(const Type& type);
Type& operator=(const Type& type);
operator const Code&() const {return _code;};
const Code& getCode() const {return _code;};
private:
Code _code;
};
typedef deque<Transistor*> Transistors;
static const Name DrainName;
static const Name SourceName;
static const Name GridName;
static const Name BulkName;
static const Name AnonymousName;
static MetaTransistor* create(Library* library, const Name& name);
void updateLayout();
void setType(Type type);
void setM(unsigned m);
void setW(DbU::Unit value);
void setL(DbU::Unit value);
protected:
void _postCreate();
private:
Net* _drain;
Net* _source;
Net* _grid;
Net* _bulk;
Net* _anonymous;
Type _type;
unsigned _m;
DbU::Unit _l;
DbU::Unit _w;
Transistors _transistors;
MetaTransistor(Library* library, const Name& name);
};
#endif // METATRANSISTOR_H