LEF/DEF component maskshift: some implementation tuning and test updates.

This commit is contained in:
Matthias Koefferlein 2020-08-23 19:20:53 +02:00
parent af2bfce051
commit 56dead9662
7 changed files with 203 additions and 4 deletions

View File

@ -295,8 +295,10 @@ unsigned int
GeometryBasedLayoutGenerator::mask_for (const std::string &ln, unsigned int m, unsigned int mshift, const LEFDEFNumberOfMasks *nm) const
{
// for FIXEDMASK we don't do any mask shifting
if (m_fixedmask || m == 0 || mshift == 0 || !nm) {
if (m_fixedmask || mshift == 0) {
return m;
} else if (m == 0) {
return mshift;
} else {
return (m + mshift - 2) % nm->number_of_masks (ln) + 1;
}

View File

@ -274,17 +274,17 @@ TEST(14)
TEST(15)
{
run_test (_this, "def6", "lef:cells.lef+lef:tech.lef+def:in.def.gz", "au.oas.gz", default_options ());
run_test (_this, "def6", "lef:cells.lef+lef:tech.lef+def:in.def.gz", "au-new.oas.gz", default_options ());
}
TEST(16)
{
db::LEFDEFReaderOptions options = default_options ();
options.set_placement_blockage_layer ("PLACEMENT_BLK (11/0)");
run_test (_this, "def7", "lef:cells.lef+lef:tech.lef+def:in.def.gz", "au.oas.gz", options);
run_test (_this, "def7", "lef:cells.lef+lef:tech.lef+def:in.def.gz", "au-new.oas.gz", options);
options.set_placement_blockage_layer ("PLACEMENT_BLK (60/0)");
run_test (_this, "def7", "map:in.map+lef:cells.lef+lef:tech.lef+def:in.def.gz", "au_with_map_file.oas.gz", options);
run_test (_this, "def7", "map:in.map+lef:cells.lef+lef:tech.lef+def:in.def.gz", "au_with_map_file-new.oas.gz", options);
}
TEST(17)

Binary file not shown.

44
testdata/lefdef/masks-2/in.def vendored Normal file
View File

@ -0,0 +1,44 @@
VERSION 5.8 ;
DIVIDERCHAR "/" ;
BUSBITCHARS "[]" ;
DESIGN mapfile ;
UNITS DISTANCE MICRONS 1000 ;
DIEAREA ( 0 0 ) ( 3000 3000 ) ;
COMPONENTMASKSHIFT M2 M1 M0PO ;
COMPONENTS 3 ;
- comp1 mask_macro
+ PLACED ( 0 0 ) N ;
- comp1 mask_macro
+ MASKSHIFT 2
+ PLACED ( 1000 0 ) N ;
- comp1 mask_macro
+ MASKSHIFT 221
+ PLACED ( 2000 0 ) N ;
- comp1 nomask_macro
+ PLACED ( 0 1000 ) N ;
- comp1 nomask_macro
+ MASKSHIFT 2
+ PLACED ( 1000 1000 ) N ;
- comp1 nomask_macro
+ MASKSHIFT 221
+ PLACED ( 2000 1000 ) N ;
- comp1 fixedmask_macro
+ PLACED ( 0 2000 ) N ;
- comp1 fixedmask_macro
+ MASKSHIFT 2
+ PLACED ( 1000 2000 ) N ;
- comp1 fixedmask_macro
+ MASKSHIFT 221
+ PLACED ( 2000 2000 ) N ;
END COMPONENTS ;
END DESIGN

56
testdata/lefdef/masks-2/in.lef vendored Normal file
View File

@ -0,0 +1,56 @@
MACRO nomask_macro
CLASS CORE ;
ORIGIN 0.3 0.3 ;
SIZE 0.6 BY 0.6 ;
PIN Z
PORT
LAYER M0PO ;
RECT -0.07 -0.03 0.07 0.03 ;
LAYER M1 ;
RECT 0.07 -0.03 0.13 0.03 ;
LAYER M2 ;
RECT -0.13 -0.03 -0.07 0.03 ;
VIA 0.0 0.2 square_nomask ;
VIA 0.0 -0.2 square_nomask ;
END
END Z
END nomask_macro
MACRO mask_macro
CLASS CORE ;
ORIGIN 0.3 0.3 ;
SIZE 0.6 BY 0.6 ;
PIN Z
PORT
LAYER M0PO ;
RECT MASK 2 -0.07 -0.03 0.07 0.03 ;
LAYER M1 ;
RECT MASK 2 0.07 -0.03 0.13 0.03 ;
LAYER M2 ;
RECT MASK 1 -0.13 -0.03 -0.07 0.03 ;
VIA MASK 200 0.0 0.2 square ;
VIA 0.0 -0.2 square ;
END
END Z
END mask_macro
MACRO fixedmask_macro
CLASS CORE ;
FIXEDMASK ;
ORIGIN 0.3 0.3 ;
SIZE 0.6 BY 0.6 ;
PIN Z
PORT
LAYER M0PO ;
RECT MASK 2 -0.07 -0.03 0.07 0.03 ;
LAYER M1 ;
RECT MASK 2 0.07 -0.03 0.13 0.03 ;
LAYER M2 ;
RECT MASK 1 -0.13 -0.03 -0.07 0.03 ;
VIA MASK 200 0.0 0.2 square ;
VIA 0.0 -0.2 square ;
END
END Z
END fixedmask_macro

56
testdata/lefdef/masks-2/in.map vendored Normal file
View File

@ -0,0 +1,56 @@
DIEAREA ALL 4 0
NAME M0PO 1 1
M0PO LEFPIN,PIN 1 2
M0PO VIA 1 3
M0PO NET:MASK:1 1 100
M0PO NET:MASK:2 1 200
M0PO SPNET:MASK:1 1 101
M0PO SPNET:MASK:2 1 201
M0PO VIA:MASK:1 1 102
M0PO VIA:MASK:2 1 202
M0PO LEFPIN,PIN:MASK:1 1 110
M0PO LEFPIN,PIN:MASK:2 1 210
NAME VIA0 2 1
VIA0 LEFPIN,PIN 2 2
VIA0 VIA 2 3
VIA0 NET:MASK:1 2 100
VIA0 NET:MASK:2 2 200
VIA0 SPNET:MASK:1 2 101
VIA0 SPNET:MASK:2 2 201
VIA0 VIA:MASK:1 2 102
VIA0 VIA:MASK:2 2 202
VIA0 LEFPIN,PIN:MASK:1 2 110
VIA0 LEFPIN,PIN:MASK:2 2 210
NAME M1 3 1
M1 PIN,LEFPIN 3 2
M1 VIA 3 3
M1 NET:MASK:1 3 100
M1 NET:MASK:2 3 200
M1 SPNET:MASK:1 3 101
M1 SPNET:MASK:2 3 201
M1 VIA:MASK:1 3 102
M1 VIA:MASK:2 3 202
M1 PIN,LEFPIN:MASK:1 3 110
M1 PIN,LEFPIN:MASK:2 3 210
NAME VIA1 4 1
VIA1 PIN,LEFPIN 4 2
VIA1 VIA 4 3
VIA1 NET:MASK:1 4 100
VIA1 NET:MASK:2 4 200
VIA1 SPNET:MASK:1 4 101
VIA1 SPNET:MASK:2 4 201
VIA1 VIA:MASK:1 4 102
VIA1 VIA:MASK:2 4 202
VIA1 PIN,LEFPIN:MASK:1 4 110
VIA1 PIN,LEFPIN:MASK:2 4 210
NAME M2 5 1
M2 PIN,LEFPIN 5 2
M2 VIA 5 3
M2 NET:MASK:1 5 100
M2 NET:MASK:2 5 200
M2 SPNET:MASK:1 5 101
M2 SPNET:MASK:2 5 201
M2 VIA:MASK:1 5 102
M2 VIA:MASK:2 5 202
M2 PIN,LEFPIN:MASK:1 5 110
M2 PIN,LEFPIN:MASK:2 5 210

41
testdata/lefdef/masks-2/in_tech.lef vendored Normal file
View File

@ -0,0 +1,41 @@
LAYER M0PO
TYPE MASTERSLICE ;
WIDTH 0.02 ;
MASK 2 ;
END M0PO
LAYER VIA0
TYPE CUT ;
MASK 2 ;
END VIA0
LAYER M1
TYPE MASTERSLICE ;
WIDTH 0.024 ;
MASK 2 ;
END M1
LAYER VIA1
TYPE CUT ;
MASK 2 ;
END VIA1
LAYER M2
TYPE MASTERSLICE ;
WIDTH 0.03 ;
MASK 2 ;
END M2
VIA square
LAYER M0PO ;
RECT MASK 2 -0.06 -0.06 0.06 0.06 ;
LAYER VIA0 ;
RECT -0.06 -0.06 0.06 0.06 ;
LAYER M1 ;
RECT MASK 1 -0.06 -0.06 0.06 0.06 ;
END square
VIA square_nomask
LAYER M0PO ;
RECT -0.06 -0.06 0.06 0.06 ;
LAYER VIA0 ;
RECT -0.06 -0.06 0.06 0.06 ;
LAYER M1 ;
RECT -0.06 -0.06 0.06 0.06 ;
END square_nomask