mirror of https://github.com/KLayout/klayout.git
WIP: bug fixing.
This commit is contained in:
parent
dbe5e19017
commit
a9719ad78e
|
|
@ -982,7 +982,7 @@ DEFImporter::read_vias (db::Layout & /*layout*/, db::Cell & /*design*/, double s
|
|||
|
||||
std::string ln = get ();
|
||||
|
||||
if (m_lef_importer.is_routing_layer (ln) && seen_layers.find (ln) != seen_layers.end ()) {
|
||||
if (m_lef_importer.is_routing_layer (ln) && seen_layers.find (ln) == seen_layers.end ()) {
|
||||
seen_layers.insert (ln);
|
||||
routing_layers.push_back (ln);
|
||||
}
|
||||
|
|
@ -1004,7 +1004,7 @@ DEFImporter::read_vias (db::Layout & /*layout*/, db::Cell & /*design*/, double s
|
|||
|
||||
std::string ln = get ();
|
||||
|
||||
if (m_lef_importer.is_routing_layer (ln) && seen_layers.find (ln) != seen_layers.end ()) {
|
||||
if (m_lef_importer.is_routing_layer (ln) && seen_layers.find (ln) == seen_layers.end ()) {
|
||||
seen_layers.insert (ln);
|
||||
routing_layers.push_back (ln);
|
||||
}
|
||||
|
|
@ -1015,7 +1015,7 @@ DEFImporter::read_vias (db::Layout & /*layout*/, db::Cell & /*design*/, double s
|
|||
}
|
||||
|
||||
db::Polygon poly;
|
||||
read_polygon (poly, scale);
|
||||
read_rect (poly, scale);
|
||||
geo_based_vg->add_polygon (ln, poly, mask);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -245,7 +245,7 @@ GeometryBasedViaGenerator::GeometryBasedViaGenerator ()
|
|||
void
|
||||
GeometryBasedViaGenerator::create_cell (LEFDEFReaderState &reader, Layout &layout, db::Cell &cell, unsigned int /*mask_bottom*/, unsigned int /*mask_cut*/, unsigned int /*mask_top*/, const LEFDEFNumberOfMasks * /*nm*/)
|
||||
{
|
||||
for (std::map <std::string, std::list<std::pair<unsigned int, db::Polygon> > >::const_iterator g = m_geometries.begin (); g != m_geometries.end (); ++g) {
|
||||
for (std::map <std::string, std::list<std::pair<unsigned int, db::Polygon> > >::const_iterator g = m_polygons.begin (); g != m_polygons.end (); ++g) {
|
||||
|
||||
for (std::list<std::pair<unsigned int, db::Polygon> >::const_iterator i = g->second.begin (); i != g->second.end (); ++i) {
|
||||
|
||||
|
|
@ -259,12 +259,33 @@ GeometryBasedViaGenerator::create_cell (LEFDEFReaderState &reader, Layout &layou
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
for (std::map <std::string, std::list<std::pair<unsigned int, db::Box> > >::const_iterator g = m_boxes.begin (); g != m_boxes.end (); ++g) {
|
||||
|
||||
for (std::list<std::pair<unsigned int, db::Box> >::const_iterator i = g->second.begin (); i != g->second.end (); ++i) {
|
||||
|
||||
std::pair <bool, unsigned int> dl (false, 0);
|
||||
|
||||
dl = reader.open_layer (layout, g->first, ViaGeometry, i->first);
|
||||
if (dl.first) {
|
||||
cell.shapes (dl.second).insert (i->second);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
GeometryBasedViaGenerator::add_polygon (const std::string &ln, const db::Polygon &poly, unsigned int mask)
|
||||
{
|
||||
m_geometries [ln].push_back (std::make_pair (mask, poly));
|
||||
m_polygons [ln].push_back (std::make_pair (mask, poly));
|
||||
}
|
||||
|
||||
void
|
||||
GeometryBasedViaGenerator::add_box (const std::string &ln, const db::Box &box, unsigned int mask)
|
||||
{
|
||||
m_boxes [ln].push_back (std::make_pair (mask, box));
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -925,9 +925,11 @@ public:
|
|||
virtual void create_cell (LEFDEFReaderState &reader, Layout &layout, db::Cell &cell, unsigned int mask_bottom, unsigned int mask_cut, unsigned int mask_top, const LEFDEFNumberOfMasks *num_cut_masks);
|
||||
|
||||
void add_polygon (const std::string &ln, const db::Polygon &poly, unsigned int mask);
|
||||
void add_box (const std::string &ln, const db::Box &box, unsigned int mask);
|
||||
|
||||
private:
|
||||
std::map <std::string, std::list<std::pair<unsigned int, db::Polygon> > > m_geometries;
|
||||
std::map <std::string, std::list<std::pair<unsigned int, db::Polygon> > > m_polygons;
|
||||
std::map <std::string, std::list<std::pair<unsigned int, db::Box> > > m_boxes;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -607,7 +607,7 @@ LEFImporter::read_viadef_by_geometry (GeometryBasedViaGenerator *vg, ViaDesc &vi
|
|||
}
|
||||
|
||||
db::Box b (points [0], points [1]);
|
||||
vg->add_polygon (layer_name, db::Polygon (b), mask);
|
||||
vg->add_box (layer_name, b, mask);
|
||||
|
||||
expect (";");
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue