Completed inspector support on analog transitors.
This commit is contained in:
parent
ae5f6ad3de
commit
7cfd056da2
|
@ -20,6 +20,7 @@
|
|||
FloatParameter.cpp
|
||||
MatrixParameter.cpp
|
||||
MCheckBoxParameter.cpp
|
||||
SpinBoxParameter.cpp
|
||||
StepParameter.cpp
|
||||
StringParameter.cpp
|
||||
BJT.cpp
|
||||
|
|
|
@ -107,4 +107,17 @@ namespace Analog {
|
|||
}
|
||||
|
||||
|
||||
string Cascode::_getTypeName () const
|
||||
{ return "Cascode"; }
|
||||
|
||||
|
||||
Record* Cascode::_getRecord () const
|
||||
{
|
||||
Record* record = Super::_getRecord();
|
||||
record->add( getSlot("_cBulkConnectedName" , _cBulkConnectedName ) );
|
||||
record->add( getSlot("_cBulkUnconnectedName", _cBulkUnconnectedName ) );
|
||||
return record;
|
||||
}
|
||||
|
||||
|
||||
} // Analog namespace.
|
||||
|
|
|
@ -109,4 +109,17 @@ namespace Analog {
|
|||
}
|
||||
|
||||
|
||||
string CommonDrain::_getTypeName () const
|
||||
{ return "CommonDrain"; }
|
||||
|
||||
|
||||
Record* CommonDrain::_getRecord () const
|
||||
{
|
||||
Record* record = Super::_getRecord();
|
||||
record->add( getSlot("_cdBulkConnectedName" , _cdBulkConnectedName ) );
|
||||
record->add( getSlot("_cdBulkUnconnectedName", _cdBulkUnconnectedName ) );
|
||||
return record;
|
||||
}
|
||||
|
||||
|
||||
} // Analog namespace.
|
||||
|
|
|
@ -103,4 +103,16 @@ namespace Analog {
|
|||
{ return (isBulkConnected()) ? _cgBulkConnectedName : _cgBulkUnconnectedName; }
|
||||
|
||||
|
||||
string CommonGatePair::_getTypeName () const
|
||||
{ return "CommonGatePair"; }
|
||||
|
||||
|
||||
Record* CommonGatePair::_getRecord () const
|
||||
{
|
||||
Record* record = Super::_getRecord();
|
||||
record->add( getSlot("_cgBulkConnectedName" , _cgBulkConnectedName ) );
|
||||
record->add( getSlot("_cgBulkUnconnectedName", _cgBulkUnconnectedName ) );
|
||||
return record;
|
||||
}
|
||||
|
||||
} // Analog namespace.
|
||||
|
|
|
@ -244,4 +244,17 @@ namespace Analog {
|
|||
}
|
||||
|
||||
|
||||
string CommonSourcePair::_getTypeName () const
|
||||
{ return "CommonSourcePair"; }
|
||||
|
||||
|
||||
Record* CommonSourcePair::_getRecord () const
|
||||
{
|
||||
Record* record = Super::_getRecord();
|
||||
record->add( getSlot("_cspBulkConnectedName" , _cspBulkConnectedName ) );
|
||||
record->add( getSlot("_cspBulkUnconnectedName", _cspBulkUnconnectedName ) );
|
||||
return record;
|
||||
}
|
||||
|
||||
|
||||
} // Analog namespace.
|
||||
|
|
|
@ -98,4 +98,17 @@ namespace Analog {
|
|||
{ return (isBulkConnected()) ? _ccpBulkConnectedName : _ccpBulkUnconnectedName; }
|
||||
|
||||
|
||||
string CrossCoupledPair::_getTypeName () const
|
||||
{ return "CrossCoupledPair"; }
|
||||
|
||||
|
||||
Record* CrossCoupledPair::_getRecord () const
|
||||
{
|
||||
Record* record = Super::_getRecord();
|
||||
record->add( getSlot("_ccpBulkConnectedName" , _ccpBulkConnectedName ) );
|
||||
record->add( getSlot("_ccpBulkUnconnectedName", _ccpBulkUnconnectedName ) );
|
||||
return record;
|
||||
}
|
||||
|
||||
|
||||
} // Analog namespace.
|
||||
|
|
|
@ -264,4 +264,17 @@ namespace Analog {
|
|||
}
|
||||
|
||||
|
||||
string DifferentialPair::_getTypeName () const
|
||||
{ return "DifferentialPair"; }
|
||||
|
||||
|
||||
Record* DifferentialPair::_getRecord () const
|
||||
{
|
||||
Record* record = Super::_getRecord();
|
||||
record->add( getSlot("_dpBulkConnectedName" , _dpBulkConnectedName ) );
|
||||
record->add( getSlot("_dpBulkUnconnectedName", _dpBulkUnconnectedName ) );
|
||||
return record;
|
||||
}
|
||||
|
||||
|
||||
} // Analog namespace.
|
||||
|
|
|
@ -101,4 +101,17 @@ namespace Analog {
|
|||
{ return (isBulkConnected()) ? _lsBulkConnectedName : _lsBulkUnconnectedName; }
|
||||
|
||||
|
||||
string LevelShifter::_getTypeName () const
|
||||
{ return "LevelShifter"; }
|
||||
|
||||
|
||||
Record* LevelShifter::_getRecord () const
|
||||
{
|
||||
Record* record = Super::_getRecord();
|
||||
record->add( getSlot("_lsBulkConnectedName" , _lsBulkConnectedName ) );
|
||||
record->add( getSlot("_lsBulkUnconnectedName", _lsBulkUnconnectedName ) );
|
||||
return record;
|
||||
}
|
||||
|
||||
|
||||
} // Analog namespace.
|
||||
|
|
|
@ -72,4 +72,36 @@ namespace Analog {
|
|||
}
|
||||
|
||||
|
||||
string MetaTransistor::_getTypeName () const
|
||||
{ return "MetaTransistor"; }
|
||||
|
||||
|
||||
Record* MetaTransistor::_getRecord () const
|
||||
{
|
||||
Record* record = Super::_getRecord();
|
||||
record->add( getSlot("_drain" , _drain ) );
|
||||
record->add( getSlot("_source" , _source ) );
|
||||
record->add( getSlot("_gate" , _gate ) );
|
||||
record->add( getSlot("_bulk" , _bulk ) );
|
||||
record->add( getSlot("_anonymous", _anonymous ) );
|
||||
record->add( getSlot("_m" , _m ) );
|
||||
record->add( getSlot("_we" , _we ) );
|
||||
record->add( getSlot("_le" , _le ) );
|
||||
record->add( getSlot("_ids" , _ids ) );
|
||||
record->add( getSlot("_vgs" , _vgs ) );
|
||||
record->add( getSlot("_vds" , _vds ) );
|
||||
record->add( getSlot("_vbs" , _vds ) );
|
||||
record->add( getSlot("_vg" , _vg ) );
|
||||
record->add( getSlot("_vd" , _vd ) );
|
||||
record->add( getSlot("_vb" , _vb ) );
|
||||
record->add( getSlot("_vs" , _vs ) );
|
||||
record->add( getSlot("_veg" , _veg ) );
|
||||
record->add( getSlot("_vth" , _vth ) );
|
||||
record->add( getSlot("_wmin" , _wmin ) );
|
||||
record->add( getSlot("_wmax" , _wmax ) );
|
||||
record->add( getSlot("_nfing" , _nfing ) );
|
||||
return record;
|
||||
}
|
||||
|
||||
|
||||
} // Analog namespace.
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
// -*- C++ -*-
|
||||
//
|
||||
// This file is part of the Coriolis Software.
|
||||
// Copyright (c) Sorbonne Université 2023-2023, All Rights Reserved
|
||||
//
|
||||
// +-----------------------------------------------------------------+
|
||||
// | C O R I O L I S |
|
||||
// | H u r r i c a n e A n a l o g |
|
||||
// | |
|
||||
// | Authors : Christophe Alexandre |
|
||||
// | E-mail : Jean-Paul.Chaput@lip6.fr |
|
||||
// | =============================================================== |
|
||||
// | C++ Module : "./SpinBoxParameter.cpp" |
|
||||
// +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
#include "hurricane/analog/SpinBoxParameter.h"
|
||||
|
||||
|
||||
namespace Analog {
|
||||
|
||||
using std::string;
|
||||
|
||||
|
||||
string SpinBoxParameter::_getTypeName () const
|
||||
{ return "SpinBoxParameter"; }
|
||||
|
||||
|
||||
std::string SpinBoxParameter::_getString () const
|
||||
{
|
||||
string s = Super::_getString();
|
||||
s.insert( s.size()-1, " "+getString(_value) );
|
||||
return s;
|
||||
}
|
||||
|
||||
|
||||
Record* SpinBoxParameter::_getRecord () const
|
||||
{
|
||||
Record* record = Super::_getRecord();
|
||||
record->add( getSlot( "_min" , _min ) );
|
||||
record->add( getSlot( "_max" , _max ) );
|
||||
record->add( getSlot( "_value", _value ) );
|
||||
return record;
|
||||
}
|
||||
|
||||
|
||||
} // Analog namespace.
|
|
@ -233,4 +233,8 @@ namespace Analog {
|
|||
}
|
||||
|
||||
|
||||
string Transistor::_getTypeName () const
|
||||
{ return "Transistor"; }
|
||||
|
||||
|
||||
} // Analog namespace.
|
||||
|
|
|
@ -33,7 +33,7 @@ namespace Analog {
|
|||
, _m (NULL)
|
||||
, _externalDummy (NULL)
|
||||
, _sourceFirst (NULL)
|
||||
, _bulkType (NULL)
|
||||
, _bulkType (NULL)
|
||||
{ }
|
||||
|
||||
|
||||
|
@ -64,7 +64,23 @@ namespace Analog {
|
|||
addStepParameter( "NIRC" , 1, 1, 1 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
Record* TransistorFamily::_getRecord () const
|
||||
{
|
||||
Record* record = Super::_getRecord();
|
||||
record->add( getSlot("_type" , &_type ) );
|
||||
record->add( getSlot("_referenceTransistor", _referenceTransistor) );
|
||||
record->add( getSlot("_operatorIndex" , _operatorIndex ) );
|
||||
record->add( getSlot("_w" , _w ) );
|
||||
record->add( getSlot("_l" , _l ) );
|
||||
record->add( getSlot("_m" , _m ) );
|
||||
record->add( getSlot("_externalDummy" , _externalDummy ) );
|
||||
record->add( getSlot("_sourceFirst" , _sourceFirst ) );
|
||||
record->add( getSlot("_bulkType" , _bulkType ) );
|
||||
return record;
|
||||
}
|
||||
|
||||
|
||||
#ifdef DISABLED
|
||||
void TransistorFamily::setReferenceTransistor ( const Name& referenceTransistorName ) {
|
||||
Instance* instance = getInstance(referenceTransistorName);
|
||||
|
|
|
@ -40,4 +40,13 @@ namespace Analog {
|
|||
}
|
||||
|
||||
|
||||
Record* TransistorPair::_getRecord () const
|
||||
{
|
||||
Record* record = Super::_getRecord();
|
||||
record->add( getSlot("_m1" , _m1 ) );
|
||||
record->add( getSlot("_m2" , _m2 ) );
|
||||
record->add( getSlot("_mInt", _mInt ) );
|
||||
return record;
|
||||
}
|
||||
|
||||
} // Analog namespace.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// -*- C++ -*-
|
||||
//
|
||||
// This file is part of the Coriolis Software.
|
||||
// Copyright (c) UPMC 2009-2018, All Rights Reserved
|
||||
// Copyright (c) Sorbonne Université 2009-2023, All Rights Reserved
|
||||
//
|
||||
// +-----------------------------------------------------------------+
|
||||
// | C O R I O L I S |
|
||||
|
@ -14,9 +14,7 @@
|
|||
// +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
#ifndef ANALOG_CASCODE_H
|
||||
#define ANALOG_CASCODE_H
|
||||
|
||||
#pragma once
|
||||
#include "hurricane/analog/TransistorPair.h"
|
||||
|
||||
namespace Analog {
|
||||
|
@ -31,6 +29,8 @@ namespace Analog {
|
|||
, const Type&
|
||||
, bool bulkConnected );
|
||||
virtual Hurricane::Name getDeviceName () const;
|
||||
virtual std::string _getTypeName () const;
|
||||
virtual Record* _getRecord () const;
|
||||
protected:
|
||||
Cascode ( Hurricane::Library*, const Hurricane::Name&, const Type& );
|
||||
private:
|
||||
|
@ -43,4 +43,6 @@ namespace Analog {
|
|||
|
||||
} // Analog namespace.
|
||||
|
||||
#endif // ANALOG_CASCODE_H
|
||||
|
||||
INSPECTOR_P_SUPPORT(Analog::Cascode);
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// -*- C++ -*-
|
||||
//
|
||||
// This file is part of the Coriolis Software.
|
||||
// Copyright (c) UPMC 2009-2018, All Rights Reserved
|
||||
// Copyright (c) Sorbonne Université 2009-2023, All Rights Reserved
|
||||
//
|
||||
// +-----------------------------------------------------------------+
|
||||
// | C O R I O L I S |
|
||||
|
@ -14,9 +14,7 @@
|
|||
// +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
#ifndef ANALOG_COMMON_DRAIN_H
|
||||
#define ANALOG_COMMON_DRAIN_H
|
||||
|
||||
#pragma once
|
||||
#include "hurricane/analog/TransistorPair.h"
|
||||
|
||||
|
||||
|
@ -32,6 +30,8 @@ namespace Analog {
|
|||
, const Type&
|
||||
, bool bulkConnected );
|
||||
virtual Hurricane::Name getDeviceName () const;
|
||||
virtual std::string _getTypeName () const;
|
||||
virtual Record* _getRecord () const;
|
||||
protected:
|
||||
CommonDrain ( Hurricane::Library*, const Hurricane::Name&, const Type& );
|
||||
private:
|
||||
|
@ -44,4 +44,5 @@ namespace Analog {
|
|||
|
||||
} // Analog namespace.
|
||||
|
||||
#endif // ANALOG_COMMON_DRAIN_H
|
||||
|
||||
INSPECTOR_P_SUPPORT(Analog::CommonDrain);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// -*- C++ -*-
|
||||
//
|
||||
// This file is part of the Coriolis Software.
|
||||
// Copyright (c) UPMC 2009-2018, All Rights Reserved
|
||||
// Copyright (c) Sorbonne Université 2009-2023, All Rights Reserved
|
||||
//
|
||||
// +-----------------------------------------------------------------+
|
||||
// | C O R I O L I S |
|
||||
|
@ -14,9 +14,7 @@
|
|||
// +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
#ifndef ANALOG_COMMON_GATE_PAIR_H
|
||||
#define ANALOG_COMMON_GATE_PAIR_H
|
||||
|
||||
#pragma once
|
||||
#include "hurricane/analog/TransistorPair.h"
|
||||
|
||||
namespace Analog {
|
||||
|
@ -31,6 +29,8 @@ namespace Analog {
|
|||
, const Type&
|
||||
, bool bulkConnected );
|
||||
virtual Hurricane::Name getDeviceName () const;
|
||||
virtual std::string _getTypeName () const;
|
||||
virtual Record* _getRecord () const;
|
||||
protected:
|
||||
CommonGatePair ( Hurricane::Library*, const Hurricane::Name&, const Type& );
|
||||
virtual void createConnections ( bool bulkConnected );
|
||||
|
@ -42,4 +42,5 @@ namespace Analog {
|
|||
|
||||
} // Analog namespace.
|
||||
|
||||
#endif // ANALOG_COMMON_GATE_PAIR_H
|
||||
|
||||
INSPECTOR_P_SUPPORT(Analog::CommonGatePair);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// -*- C++ -*-
|
||||
//
|
||||
// This file is part of the Coriolis Software.
|
||||
// Copyright (c) UPMC 2009-2018, All Rights Reserved
|
||||
// Copyright (c) Sorbonne Université 2009-2023, All Rights Reserved
|
||||
//
|
||||
// +-----------------------------------------------------------------+
|
||||
// | C O R I O L I S |
|
||||
|
@ -14,9 +14,7 @@
|
|||
// +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
#ifndef ANALOG_COMMON_SOURCE_PAIR_H
|
||||
#define ANALOG_COMMON_SOURCE_PAIR_H
|
||||
|
||||
#pragma once
|
||||
#include "hurricane/analog/TransistorPair.h"
|
||||
|
||||
namespace Analog {
|
||||
|
@ -34,6 +32,8 @@ namespace Analog {
|
|||
unsigned int getRestriction ( Hurricane::Net* net ) const;
|
||||
|
||||
bool isSame ( CommonSourcePair* );
|
||||
virtual std::string _getTypeName () const;
|
||||
virtual Record* _getRecord () const;
|
||||
protected:
|
||||
CommonSourcePair ( Hurricane::Library*, const Hurricane::Name&, const Type& );
|
||||
private:
|
||||
|
@ -46,4 +46,5 @@ namespace Analog {
|
|||
|
||||
} // Analog namespace.
|
||||
|
||||
#endif // ANALOG_COMMON_SOURCE_PAIR_H
|
||||
|
||||
INSPECTOR_P_SUPPORT(Analog::CommonSourcePair);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// -*- C++ -*-
|
||||
//
|
||||
// This file is part of the Coriolis Software.
|
||||
// Copyright (c) UPMC 2009-2018, All Rights Reserved
|
||||
// Copyright (c) Sorbonne Université 2009-2023, All Rights Reserved
|
||||
//
|
||||
// +-----------------------------------------------------------------+
|
||||
// | C O R I O L I S |
|
||||
|
@ -14,9 +14,7 @@
|
|||
// +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
#ifndef ANALOG_CROSS_COUPLED_PAIR_H
|
||||
#define ANALOG_CROSS_COUPLED_PAIR_H
|
||||
|
||||
#pragma once
|
||||
#include "hurricane/analog/TransistorPair.h"
|
||||
|
||||
namespace Analog {
|
||||
|
@ -31,6 +29,8 @@ namespace Analog {
|
|||
, const Type& type
|
||||
, bool bulkConnected );
|
||||
virtual Hurricane::Name getDeviceName () const;
|
||||
virtual std::string _getTypeName () const;
|
||||
virtual Record* _getRecord () const;
|
||||
protected:
|
||||
CrossCoupledPair ( Hurricane::Library*, const Hurricane::Name&, const Type& );
|
||||
private:
|
||||
|
@ -43,4 +43,5 @@ namespace Analog {
|
|||
|
||||
} // Analog namespace.
|
||||
|
||||
#endif // ANALOG_CROSS_COUPLED_PAIR_H
|
||||
|
||||
INSPECTOR_P_SUPPORT(Analog::CrossCoupledPair);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// -*- C++ -*-
|
||||
//
|
||||
// This file is part of the Coriolis Software.
|
||||
// Copyright (c) UPMC 2009-2018, All Rights Reserved
|
||||
// Copyright (c) Sorbonne Université 2009-2023, All Rights Reserved
|
||||
//
|
||||
// +-----------------------------------------------------------------+
|
||||
// | C O R I O L I S |
|
||||
|
@ -14,9 +14,7 @@
|
|||
// +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
#ifndef ANALOG_DIFFERENTIAL_PAIR_H
|
||||
#define ANALOG_DIFFERENTIAL_PAIR_H
|
||||
|
||||
#pragma once
|
||||
#include "hurricane/analog/TransistorPair.h"
|
||||
|
||||
namespace Analog {
|
||||
|
@ -31,8 +29,10 @@ namespace Analog {
|
|||
, const Type&
|
||||
, bool bulkConnected );
|
||||
virtual Hurricane::Name getDeviceName () const;
|
||||
unsigned int getRestriction ( Hurricane::Net* net ) const;
|
||||
bool isSame ( DifferentialPair* dp );
|
||||
unsigned int getRestriction ( Hurricane::Net* net ) const;
|
||||
bool isSame ( DifferentialPair* dp );
|
||||
virtual std::string _getTypeName () const;
|
||||
virtual Record* _getRecord () const;
|
||||
protected:
|
||||
DifferentialPair ( Hurricane::Library*, const Hurricane::Name&, const Type& );
|
||||
private:
|
||||
|
@ -45,4 +45,5 @@ namespace Analog {
|
|||
|
||||
} // Analog namespace.
|
||||
|
||||
#endif // ANALOG_DIFFERENTIAL_PAIR_H
|
||||
|
||||
INSPECTOR_P_SUPPORT(Analog::DifferentialPair);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// -*- C++ -*-
|
||||
//
|
||||
// This file is part of the Coriolis Software.
|
||||
// Copyright (c) UPMC 2009-2018, All Rights Reserved
|
||||
// Copyright (c) Sorbonne Université 2009-2023, All Rights Reserved
|
||||
//
|
||||
// +-----------------------------------------------------------------+
|
||||
// | C O R I O L I S |
|
||||
|
@ -14,9 +14,7 @@
|
|||
// +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
#ifndef ANALOG_LEVEL_SHIFTER_H
|
||||
#define ANALOG_LEVEL_SHIFTER_H
|
||||
|
||||
#pragma once
|
||||
#include "hurricane/analog/TransistorPair.h"
|
||||
|
||||
namespace Analog {
|
||||
|
@ -30,6 +28,8 @@ namespace Analog {
|
|||
, const Type&
|
||||
, bool bulkConnected );
|
||||
virtual Hurricane::Name getDeviceName () const;
|
||||
virtual std::string _getTypeName () const;
|
||||
virtual Record* _getRecord () const;
|
||||
protected:
|
||||
LevelShifter ( Hurricane::Library*, const Hurricane::Name&, const Type& );
|
||||
virtual void createConnections ( bool bulkConnected );
|
||||
|
@ -41,4 +41,5 @@ namespace Analog {
|
|||
|
||||
} // Analog namespace.
|
||||
|
||||
#endif // ANALOG_LEVEL_SHIFTER_H
|
||||
|
||||
INSPECTOR_P_SUPPORT(Analog::LevelShifter);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// -*- C++ -*-
|
||||
//
|
||||
// This file is part of the Coriolis Software.
|
||||
// Copyright (c) UPMC 2008-2018, All Rights Reserved
|
||||
// Copyright (c) Sorbonne Université 2008-2023, All Rights Reserved
|
||||
//
|
||||
// +-----------------------------------------------------------------+
|
||||
// | C O R I O L I S |
|
||||
|
@ -14,9 +14,7 @@
|
|||
// +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
#ifndef ANALOG_METATRANSISTOR_H
|
||||
#define ANALOG_METATRANSISTOR_H
|
||||
|
||||
#pragma once
|
||||
#include "hurricane/Cell.h"
|
||||
|
||||
|
||||
|
@ -29,46 +27,48 @@ namespace Analog {
|
|||
public:
|
||||
typedef Cell Super;
|
||||
public:
|
||||
static MetaTransistor* create ( Library* , const Name& );
|
||||
inline Net* getSource () const;
|
||||
inline Net* getDrain () const;
|
||||
inline Net* getGate () const;
|
||||
inline Net* getBulk () const;
|
||||
inline float getWE () const;
|
||||
inline float getLE () const;
|
||||
inline float getIDS () const;
|
||||
inline float getVGS () const;
|
||||
inline float getVDS () const;
|
||||
inline float getVBS () const;
|
||||
inline float getVG () const;
|
||||
inline float getVD () const;
|
||||
inline float getVS () const;
|
||||
inline float getVB () const;
|
||||
inline float getVEG () const;
|
||||
inline float getVTH () const;
|
||||
inline float getWmin () const;
|
||||
inline float getWmax () const;
|
||||
inline int getNfing () const;
|
||||
inline void setM ( unsigned int m );
|
||||
inline void setWE ( float we );
|
||||
inline void setLE ( float le );
|
||||
inline void setIDS ( float ids );
|
||||
inline void setVGS ( float vgs );
|
||||
inline void setVDS ( float vds );
|
||||
inline void setVBS ( float vbs );
|
||||
inline void setVG ( float vg );
|
||||
inline void setVD ( float vd );
|
||||
inline void setVS ( float vs );
|
||||
inline void setVB ( float vb );
|
||||
inline void setVEG ( float veg );
|
||||
inline void setVTH ( float vth );
|
||||
inline void setWmin ( float wmin );
|
||||
inline void setWmax ( float wmax );
|
||||
inline void setNfing ( int nfing );
|
||||
static MetaTransistor* create ( Library* , const Name& );
|
||||
inline Net* getSource () const;
|
||||
inline Net* getDrain () const;
|
||||
inline Net* getGate () const;
|
||||
inline Net* getBulk () const;
|
||||
inline float getWE () const;
|
||||
inline float getLE () const;
|
||||
inline float getIDS () const;
|
||||
inline float getVGS () const;
|
||||
inline float getVDS () const;
|
||||
inline float getVBS () const;
|
||||
inline float getVG () const;
|
||||
inline float getVD () const;
|
||||
inline float getVS () const;
|
||||
inline float getVB () const;
|
||||
inline float getVEG () const;
|
||||
inline float getVTH () const;
|
||||
inline float getWmin () const;
|
||||
inline float getWmax () const;
|
||||
inline int getNfing () const;
|
||||
inline void setM ( unsigned int m );
|
||||
inline void setWE ( float we );
|
||||
inline void setLE ( float le );
|
||||
inline void setIDS ( float ids );
|
||||
inline void setVGS ( float vgs );
|
||||
inline void setVDS ( float vds );
|
||||
inline void setVBS ( float vbs );
|
||||
inline void setVG ( float vg );
|
||||
inline void setVD ( float vd );
|
||||
inline void setVS ( float vs );
|
||||
inline void setVB ( float vb );
|
||||
inline void setVEG ( float veg );
|
||||
inline void setVTH ( float vth );
|
||||
inline void setWmin ( float wmin );
|
||||
inline void setWmax ( float wmax );
|
||||
inline void setNfing ( int nfing );
|
||||
virtual std::string _getTypeName () const;
|
||||
virtual Record* _getRecord () const;
|
||||
protected:
|
||||
void _postCreate ();
|
||||
void _postCreate ();
|
||||
private:
|
||||
MetaTransistor ( Library* , const Name& );
|
||||
MetaTransistor ( Library* , const Name& );
|
||||
private:
|
||||
Net* _drain;
|
||||
Net* _source;
|
||||
|
@ -127,4 +127,5 @@ namespace Analog {
|
|||
|
||||
} // Analog namespace.
|
||||
|
||||
#endif // ANALOG_METATRANSISTOR_H
|
||||
|
||||
INSPECTOR_P_SUPPORT(Analog::MetaTransistor);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// -*- C++ -*-
|
||||
//
|
||||
// This file is part of the Coriolis Software.
|
||||
// Copyright (c) UPMC 2009-2018, All Rights Reserved
|
||||
// Copyright (c) Sorbonne Université 2009-2023, All Rights Reserved
|
||||
//
|
||||
// +-----------------------------------------------------------------+
|
||||
// | C O R I O L I S |
|
||||
|
@ -14,15 +14,15 @@
|
|||
// +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
#ifndef ANALOG_SPINBOX_PARAMETER_H
|
||||
#define ANALOG_SPINBOX_PARAMETER_H
|
||||
|
||||
#pragma once
|
||||
#include "hurricane/analog/Parameter.h"
|
||||
|
||||
namespace Analog {
|
||||
|
||||
|
||||
class SpinBoxParameter : public Parameter {
|
||||
public:
|
||||
typedef Parameter Super;
|
||||
public:
|
||||
inline SpinBoxParameter ( std::string id, long min, long max );
|
||||
inline long getMin () const;
|
||||
|
@ -30,7 +30,9 @@ namespace Analog {
|
|||
inline long getValue () const;
|
||||
inline operator long () const;
|
||||
inline void setValue ( long value );
|
||||
virtual std::string _getTypeName () const { return "SpinBoxParameter"; }
|
||||
virtual std::string _getTypeName () const;
|
||||
virtual std::string _getString () const;
|
||||
virtual Record* _getRecord () const;
|
||||
private:
|
||||
long _min;
|
||||
long _max;
|
||||
|
@ -48,4 +50,5 @@ namespace Analog {
|
|||
|
||||
} // Analog namespace.
|
||||
|
||||
#endif // ANALOG_SPINBOX_PARAMETER_H
|
||||
|
||||
INSPECTOR_PR_SUPPORT(Analog::SpinBoxParameter);
|
||||
|
|
|
@ -36,6 +36,7 @@ namespace Analog {
|
|||
Transistor ( Hurricane::Library* , const Hurricane::Name& , const Type& );
|
||||
virtual void _postCreate ( const Hurricane::Name& deviceName );
|
||||
virtual void createConnections ( bool bulkConnected );
|
||||
virtual std::string _getTypeName () const;
|
||||
private:
|
||||
static const Hurricane::Name _transistorBulkConnectedName;
|
||||
static const Hurricane::Name _transistorBulkUnconnectedName;
|
||||
|
@ -44,3 +45,6 @@ namespace Analog {
|
|||
|
||||
|
||||
} // Analog namespace.
|
||||
|
||||
|
||||
INSPECTOR_P_SUPPORT(Analog::Transistor);
|
||||
|
|
|
@ -84,6 +84,7 @@ namespace Analog {
|
|||
// Sizing parameters commons to all MOS transistors.
|
||||
inline int getOperatorIndex () const;
|
||||
inline void setOperatorIndex ( int );
|
||||
virtual Record* _getRecord () const;
|
||||
|
||||
protected:
|
||||
TransistorFamily ( Hurricane::Library*
|
||||
|
@ -173,3 +174,30 @@ namespace Analog {
|
|||
|
||||
|
||||
} // Analog namespace.
|
||||
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
// Inspector Support for : Net::Type::Code*".
|
||||
|
||||
template<>
|
||||
inline std::string getString<const Analog::TransistorFamily::Type*>
|
||||
( const Analog::TransistorFamily::Type* object )
|
||||
{
|
||||
switch ( *object ) {
|
||||
case Analog::TransistorFamily::NMOS: return "NMOS";
|
||||
case Analog::TransistorFamily::PMOS: return "PMOS";
|
||||
}
|
||||
return "Unknow (error)";
|
||||
}
|
||||
|
||||
template<>
|
||||
inline Hurricane::Record* getRecord<const Analog::TransistorFamily::Type*>
|
||||
( const Analog::TransistorFamily::Type* object )
|
||||
{
|
||||
Hurricane::Record* record = new Hurricane::Record(getString(object));
|
||||
record->add(getSlot("Type", (unsigned int*)object));
|
||||
return record;
|
||||
}
|
||||
|
||||
IOSTREAM_POINTER_SUPPORT(Analog::TransistorFamily::Type);
|
||||
IOSTREAM_VALUE_SUPPORT(Analog::TransistorFamily::Type);
|
||||
|
|
|
@ -14,9 +14,7 @@
|
|||
// +-----------------------------------------------------------------+
|
||||
|
||||
|
||||
#ifndef ANALOG_TRANSISTOR_PAIR_H
|
||||
#define ANALOG_TRANSISTOR_PAIR_H
|
||||
|
||||
#pragma once
|
||||
#include "hurricane/analog/TransistorFamily.h"
|
||||
|
||||
namespace Analog {
|
||||
|
@ -28,6 +26,7 @@ namespace Analog {
|
|||
public:
|
||||
inline long getMint () const;
|
||||
inline void setMint ( long );
|
||||
virtual Record* _getRecord () const;
|
||||
protected:
|
||||
TransistorPair ( Hurricane::Library*, const Hurricane::Name&, const Type& );
|
||||
virtual void _postCreate ( const Hurricane::Name& deviceName );
|
||||
|
@ -43,5 +42,3 @@ namespace Analog {
|
|||
|
||||
|
||||
} // Analog namespace.
|
||||
|
||||
#endif // ANALOG_TRANSISTOR_PAIR_H
|
||||
|
|
Loading…
Reference in New Issue