Transistor Layout in progress
This commit is contained in:
parent
acd1ccdd66
commit
248838db7e
|
@ -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"/>
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
|
|
Loading…
Reference in New Issue