mirror of https://github.com/KLayout/klayout.git
Added DO .. BY .. STEP to vias in SPECIALNETS in DEF reader, added one more private testcase
This commit is contained in:
parent
0ae97279d8
commit
2c60338ae8
|
|
@ -727,9 +727,36 @@ DEFImporter::do_read (db::Layout &layout)
|
|||
std::string vn = get ();
|
||||
db::FTrans ft = get_orient (true /*optional*/);
|
||||
|
||||
db::Coord dx = 0, dy = 0;
|
||||
long nx = 1, ny = 1;
|
||||
|
||||
if (specialnets && test ("DO")) {
|
||||
|
||||
nx = std::max (0l, get_long ());
|
||||
test ("BY");
|
||||
ny = std::max (0l, get_long ());
|
||||
test ("STEP");
|
||||
dx = db::coord_traits<db::Coord>::rounded (get_double () * scale);
|
||||
dy = db::coord_traits<db::Coord>::rounded (get_double () * scale);
|
||||
|
||||
if (nx < 0) {
|
||||
dx = -dx;
|
||||
nx = -nx;
|
||||
}
|
||||
if (ny < 0) {
|
||||
dy = -dy;
|
||||
ny = -ny;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
std::map<std::string, ViaDesc>::const_iterator vd = via_desc.find (vn);
|
||||
if (vd != via_desc.end () && ! pts.empty ()) {
|
||||
design.insert (db::CellInstArray (db::CellInst (vd->second.cell->cell_index ()), db::Trans (ft.rot (), db::Vector (pts.back ()))));
|
||||
if (nx <= 1 && ny <= 1) {
|
||||
design.insert (db::CellInstArray (db::CellInst (vd->second.cell->cell_index ()), db::Trans (ft.rot (), db::Vector (pts.back ()))));
|
||||
} else {
|
||||
design.insert (db::CellInstArray (db::CellInst (vd->second.cell->cell_index ()), db::Trans (ft.rot (), db::Vector (pts.back ())), db::Vector (dx, 0), db::Vector (0, dy), (unsigned long) nx, (unsigned long) ny));
|
||||
}
|
||||
if (ln == vd->second.m1) {
|
||||
ln = vd->second.m2;
|
||||
} else if (ln == vd->second.m2) {
|
||||
|
|
|
|||
|
|
@ -240,11 +240,16 @@ TEST(19)
|
|||
}
|
||||
|
||||
TEST(20)
|
||||
{
|
||||
run_test (_this, "def11", "lef:test.lef+def:test.def", "au.oas.gz", default_options ());
|
||||
}
|
||||
|
||||
TEST(100)
|
||||
{
|
||||
run_test (_this, "issue-172", "lef:in.lef+def:in.def", "au.oas.gz", default_options (), false);
|
||||
}
|
||||
|
||||
TEST(21)
|
||||
TEST(101)
|
||||
{
|
||||
db::LEFDEFReaderOptions opt = default_options ();
|
||||
opt.set_produce_pin_names (true);
|
||||
|
|
@ -252,7 +257,7 @@ TEST(21)
|
|||
run_test (_this, "issue-489", "lef:in.lef+def:in.def", "au.oas", opt, false);
|
||||
}
|
||||
|
||||
TEST(22)
|
||||
TEST(102)
|
||||
{
|
||||
db::LEFDEFReaderOptions opt = default_options ();
|
||||
opt.set_produce_pin_names (true);
|
||||
|
|
@ -260,8 +265,12 @@ TEST(22)
|
|||
run_test (_this, "issue-489b", "lef:in_tech.lef+lef:in.lef", "au.oas.gz", opt, false);
|
||||
}
|
||||
|
||||
TEST(23)
|
||||
TEST(103)
|
||||
{
|
||||
run_test (_this, "issue-517", "def:in.def", "au.oas.gz", default_options (), false);
|
||||
}
|
||||
|
||||
TEST(104)
|
||||
{
|
||||
run_test (_this, "doxy_vias", "def:test.def", "au.oas.gz", default_options (), false);
|
||||
}
|
||||
|
|
@ -6,7 +6,7 @@ TARGET = lefdef_tests
|
|||
include($$PWD/../../../../lib_ut.pri)
|
||||
|
||||
SOURCES = \
|
||||
dbLEFDEFImport.cc
|
||||
dbLEFDEFImportTests.cc
|
||||
|
||||
INCLUDEPATH += $$LAY_INC $$TL_INC $$DB_INC $$GSI_INC $$PWD/../db_plugin $$PWD/../../../common
|
||||
DEPENDPATH += $$LAY_INC $$TL_INC $$DB_INC $$GSI_INC $$PWD/../db_plugin $$PWD/../../../common
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,19 @@
|
|||
|
||||
VERSION 5.8 ;
|
||||
DIVIDERCHAR "/" ;
|
||||
BUSBITCHARS "[]" ;
|
||||
DESIGN chip_top ;
|
||||
UNITS DISTANCE MICRONS 1000 ;
|
||||
DIEAREA ( 30000 3000 ) ( 10000000 4000 ) ;
|
||||
VIAS 1 ;
|
||||
- VIA1_dummy
|
||||
+ RECT M1 ( -200 -140 ) ( 200 140 )
|
||||
+ RECT VIA1 ( -100 -100 ) ( 100 100 )
|
||||
+ RECT M2 ( -300 -120 ) ( 300 120 ) ;
|
||||
END VIAS
|
||||
SPECIALNETS 1 ;
|
||||
- dummy
|
||||
+ ROUTED M1 150 + SHAPE IOWIRE ( 40000 3600 ) VIA1_dummy DO 16000 BY 1 STEP 700 0
|
||||
;
|
||||
END SPECIALNETS
|
||||
END DESIGN
|
||||
Loading…
Reference in New Issue