Transistor Layout in progress

This commit is contained in:
Christophe Alexandre 2008-06-29 09:56:59 +00:00
parent acd1ccdd66
commit 248838db7e
4 changed files with 14 additions and 4 deletions

View File

@ -1,5 +1,10 @@
<technology name="hcmos9"> <technology name="hcmos9">
<physical_rules> <physical_rules>
<rule name="transistorMinL" value="0.13" ref="13-1.a"/>
<rule name="transistorMaxL" value="13.0" ref="13-1.a"/>
<rule name="transistorMinW" value="0.15" ref="2-1"/>
<rule name="transistorMaxW" value="1500.0" ref="2-1"/>
<rule name="minWidth" layer="cut0" value="0.16" ref="19-1"/> <rule name="minWidth" layer="cut0" value="0.16" ref="19-1"/>
<arule name="minExtension" layer1="poly" layer2="cut0" value="0.07" ref="19-3"/> <arule name="minExtension" layer1="poly" layer2="cut0" value="0.07" ref="19-3"/>

View File

@ -193,9 +193,9 @@ void Transistor::createLayout() {
DbU::Unit dx00 = _l; DbU::Unit dx00 = _l;
DbU::Unit dy00 = _w - y00*2; DbU::Unit dy00 = _w - y00*2;
Box box00(x00, y00, dx00, dy00); Box box00(x00, y00, dx00, dy00);
cerr << _w << endl;
cerr << box00 << endl;
_grid00->setBoundingBox(box00); _grid00->setBoundingBox(box00);
Contact* contact = Contact::create(_grid, getLayer(techno, "metal1"), box00.getXCenter(), box00.getYCenter(), box00.getWidth(), box00.getHeight());
Pad* pad = Pad::create(_grid, getLayer(techno, "metal1"), box00);
//grid30 //grid30
DbU::Unit maxValue = widthCut0 + 2*extPolyCut0; DbU::Unit maxValue = widthCut0 + 2*extPolyCut0;

View File

@ -18,7 +18,6 @@ void syntaxError(const string& reason) {
} }
DbU::Unit getUnitValue(double physicalValue) { DbU::Unit getUnitValue(double physicalValue) {
cerr << "akecoucou : " << DbU::getPhysicalsPerGrid() << endl;
return DbU::grid(DbU::physicalToGrid(physicalValue, DbU::Micro)); return DbU::grid(DbU::physicalToGrid(physicalValue, DbU::Micro));
} }

View File

@ -36,7 +36,13 @@ int main(int argc, char* argv[]) {
exit(56); exit(56);
} }
aTechnology->print(); aTechnology->print();
Transistor* trans = Transistor::create(userLibrary, Name("TEST"), Transistor::Polarity::P, 10, 10);
DbU::Unit transistorMinL = aTechnology->getPhysicalRule("transistorMinL")->getValue();
DbU::Unit transistorMinW = aTechnology->getPhysicalRule("transistorMinW")->getValue();
DbU::Unit L = transistorMinL;
DbU::Unit W = transistorMinW;
Transistor* trans = Transistor::create(userLibrary, Name("TEST"), Transistor::Polarity::P, L, W);
trans->createLayout(); trans->createLayout();
CellViewer* viewer = new CellViewer ( trans ); CellViewer* viewer = new CellViewer ( trans );
viewer->show(); viewer->show();