coriolis/vlsisapd/openChams/Transistor.cpp

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);
}
}
}