62 lines
1.4 KiB
C++
62 lines
1.4 KiB
C++
|
/*
|
||
|
* Transistor.cpp
|
||
|
* openChams
|
||
|
*
|
||
|
* Created by damien dupuis on 01/03/10.
|
||
|
* Copyright 2010 UPMC / LIP6. All rights reserved.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
#include <iostream>
|
||
|
using namespace std;
|
||
|
|
||
|
#include "Transistor.h"
|
||
|
#include "Instance.h"
|
||
|
#include "Net.h"
|
||
|
#include "OpenChamsException.h"
|
||
|
|
||
|
namespace OpenChams {
|
||
|
Transistor::Transistor(Name name, Instance* instance)
|
||
|
: _name(name)
|
||
|
, _gate("")
|
||
|
, _source("")
|
||
|
, _drain("")
|
||
|
, _bulk("")
|
||
|
, _instance(instance) {}
|
||
|
|
||
|
void Transistor::setGate(Name gate) {
|
||
|
if (checkConnector(gate))
|
||
|
_gate = gate;
|
||
|
}
|
||
|
|
||
|
void Transistor::setSource(Name source) {
|
||
|
if (checkConnector(source))
|
||
|
_source = source;
|
||
|
}
|
||
|
|
||
|
void Transistor::setDrain(Name drain) {
|
||
|
if (checkConnector(drain))
|
||
|
_drain = drain;
|
||
|
}
|
||
|
|
||
|
void Transistor::setBulk(Name bulk) {
|
||
|
if (checkConnector(bulk))
|
||
|
_bulk = bulk;
|
||
|
}
|
||
|
bool Transistor::checkConnector(Name name) {
|
||
|
map<Name, Net*>::const_iterator it = _instance->getConnectors().find(name);
|
||
|
if (it != _instance->getConnectors().end()) {// si le connecteur existe bien
|
||
|
return true;
|
||
|
} else {
|
||
|
string error("[ERROR] Instance ");
|
||
|
error += _instance->getName().getString();
|
||
|
error += " has no connector named ";
|
||
|
error += name.getString();
|
||
|
error += ".";
|
||
|
throw OpenChamsException(error);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|