mirror of
https://github.com/KLayout/klayout.git
synced 2026-08-30 17:53:00 +02:00
* Fixed #489 (LEF/DEF reader provides pin names as properties) * Removed vi swap file * #489 fixed (LEF pins also get properties, added tests)
This commit is contained in:
Vendored
BIN
Binary file not shown.
Vendored
+34
@@ -0,0 +1,34 @@
|
||||
VERSION 5.7 ;
|
||||
DIVIDERCHAR "/" ;
|
||||
BUSBITCHARS "[]" ;
|
||||
DESIGN test ;
|
||||
UNITS DISTANCE MICRONS 2000 ;
|
||||
|
||||
DIEAREA ( 0 0 ) ( 37520 7840 ) ;
|
||||
|
||||
PINS 12 ;
|
||||
- VDD + NET VDD + SPECIAL + DIRECTION INOUT + USE POWER
|
||||
+ LAYER M2 ( -320 0 ) ( 320 37520 )
|
||||
+ FIXED ( 37520 3920 ) W ;
|
||||
- VSS + NET VSS + SPECIAL + DIRECTION INOUT + USE GROUND
|
||||
+ PORT
|
||||
+ LAYER M2 ( -18760 0 ) ( 18760 640 )
|
||||
+ FIXED ( 18760 -320 ) N
|
||||
+ PORT
|
||||
+ LAYER M2 ( -18760 0 ) ( 18760 640 )
|
||||
+ FIXED ( 18760 8160 ) S
|
||||
;
|
||||
END PINS
|
||||
|
||||
SPECIALNETS 4 ;
|
||||
- VSS ( * VSS )
|
||||
+ ROUTED M2 640 + SHAPE FOLLOWPIN ( 0 0 ) ( 37520 * )
|
||||
NEW M2 640 + SHAPE FOLLOWPIN ( 0 7840 ) ( 37520 * )
|
||||
+ USE GROUND
|
||||
;
|
||||
- VDD ( * VDD )
|
||||
+ ROUTED M2 640 + SHAPE FOLLOWPIN ( 0 3920 ) ( 37520 * )
|
||||
+ USE POWER
|
||||
;
|
||||
END SPECIALNETS
|
||||
END DESIGN
|
||||
Vendored
+63
@@ -0,0 +1,63 @@
|
||||
VERSION 5.7 ;
|
||||
|
||||
BUSBITCHARS "[]" ;
|
||||
DIVIDERCHAR "/" ;
|
||||
UNITS
|
||||
DATABASE MICRONS 1000 ;
|
||||
END UNITS
|
||||
|
||||
MANUFACTURINGGRID 0.002 ;
|
||||
|
||||
USEMINSPACING OBS OFF ;
|
||||
|
||||
LAYER overlap
|
||||
TYPE OVERLAP ;
|
||||
END overlap
|
||||
|
||||
LAYER contact
|
||||
TYPE CUT ;
|
||||
END contact
|
||||
|
||||
LAYER metal1
|
||||
TYPE ROUTING ;
|
||||
DIRECTION HORIZONTAL ;
|
||||
END metal1
|
||||
|
||||
LAYER via1
|
||||
TYPE CUT ;
|
||||
END via1
|
||||
|
||||
LAYER metal2
|
||||
TYPE ROUTING ;
|
||||
DIRECTION VERTICAL ;
|
||||
END metal2
|
||||
|
||||
LAYER via2
|
||||
TYPE CUT ;
|
||||
END via2
|
||||
|
||||
LAYER metal3
|
||||
TYPE ROUTING ;
|
||||
DIRECTION HORIZONTAL ;
|
||||
END metal3
|
||||
|
||||
LAYER via3
|
||||
TYPE CUT ;
|
||||
END via3
|
||||
|
||||
LAYER metal4
|
||||
TYPE ROUTING ;
|
||||
DIRECTION VERTICAL ;
|
||||
END metal4
|
||||
|
||||
LAYER via4
|
||||
TYPE CUT ;
|
||||
END via4
|
||||
|
||||
LAYER metal5
|
||||
TYPE ROUTING ;
|
||||
DIRECTION HORIZONTAL ;
|
||||
END metal5
|
||||
|
||||
|
||||
END LIBRARY
|
||||
Vendored
BIN
Binary file not shown.
Vendored
+23
@@ -0,0 +1,23 @@
|
||||
MACRO dummy
|
||||
CLASS CORE ;
|
||||
FOREIGN dummy 0.000 0.000 ;
|
||||
ORIGIN 0.000 0.000 ;
|
||||
SIZE 0.384 BY 0.480 ;
|
||||
SYMMETRY X Y ;
|
||||
SITE BLABLA ;
|
||||
PROPERTY LEF58_EDGETYPE "
|
||||
EDGETYPE LEFT L ;
|
||||
EDGETYPE RIGHT R ;
|
||||
" ;
|
||||
PIN Z
|
||||
ANTENNADIFFAREA 0.009048 ;
|
||||
DIRECTION OUTPUT ;
|
||||
PORT
|
||||
LAYER M1 ;
|
||||
RECT 0.306 0.357 0.318 0.403 ;
|
||||
RECT 0.318 0.115 0.352 0.403 ;
|
||||
VIA 0.336 0.167 square ;
|
||||
VIA 0.336 0.351 square ;
|
||||
END
|
||||
END Z
|
||||
END dummy
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
LAYER OD
|
||||
TYPE IMPLANT ;
|
||||
END OD
|
||||
LAYER VTS_N
|
||||
TYPE IMPLANT ;
|
||||
END VTS_N
|
||||
LAYER VTS_P
|
||||
TYPE IMPLANT ;
|
||||
END VTS_P
|
||||
LAYER M0OD
|
||||
TYPE IMPLANT ;
|
||||
END M0OD
|
||||
LAYER M0PO
|
||||
TYPE MASTERSLICE ;
|
||||
END M0PO
|
||||
LAYER VIA0
|
||||
TYPE CUT ;
|
||||
END VIA0
|
||||
LAYER M1
|
||||
TYPE MASTERSLICE ;
|
||||
END M1
|
||||
LAYER VIA1
|
||||
TYPE CUT ;
|
||||
END VIA1
|
||||
LAYER M2
|
||||
TYPE MASTERSLICE ;
|
||||
END M2
|
||||
|
||||
VIA square
|
||||
LAYER M0PO ;
|
||||
RECT -0.006 -0.006 0.006 0.006 ;
|
||||
LAYER VIA0 ;
|
||||
RECT -0.006 -0.006 0.006 0.006 ;
|
||||
LAYER M1 ;
|
||||
RECT -0.006 -0.006 0.006 0.006 ;
|
||||
END square
|
||||
Vendored
+141
@@ -178,6 +178,147 @@ class DBReaders_TestClass < TestBase
|
||||
|
||||
end
|
||||
|
||||
# LEF/DEF Options
|
||||
def test_lefdef_options
|
||||
|
||||
conf = RBA::LEFDEFReaderConfiguration::new
|
||||
lm = RBA::LayerMap::new
|
||||
lm.map(RBA::LayerInfo::new(1, 0), 2, RBA::LayerInfo::new(42, 17))
|
||||
conf.layer_map = lm
|
||||
|
||||
opt = RBA::LoadLayoutOptions::new
|
||||
opt.lefdef_config = conf
|
||||
assert_equal(opt.lefdef_config.layer_map.to_string, "1/0 : 42/17\n")
|
||||
assert_equal(opt.dup.lefdef_config.layer_map.to_string, "1/0 : 42/17\n")
|
||||
|
||||
assert_equal(conf.layer_map.to_string, "1/0 : 42/17\n")
|
||||
|
||||
conf.create_other_layers = false
|
||||
assert_equal(conf.create_other_layers, false)
|
||||
conf.create_other_layers = true
|
||||
assert_equal(conf.create_other_layers, true)
|
||||
|
||||
conf.dbu = 2.5
|
||||
assert_equal(conf.dbu, 2.5)
|
||||
|
||||
assert_equal(conf.net_property_name, 1)
|
||||
conf.net_property_name = "x"
|
||||
assert_equal(conf.net_property_name, "x")
|
||||
conf.net_property_name = 2
|
||||
assert_equal(conf.net_property_name, 2)
|
||||
conf.net_property_name = nil
|
||||
assert_equal(conf.net_property_name, nil)
|
||||
|
||||
assert_equal(conf.pin_property_name, nil)
|
||||
conf.pin_property_name = "y"
|
||||
assert_equal(conf.pin_property_name, "y")
|
||||
conf.pin_property_name = 3
|
||||
assert_equal(conf.pin_property_name, 3)
|
||||
conf.pin_property_name = nil
|
||||
assert_equal(conf.pin_property_name, nil)
|
||||
|
||||
assert_equal(conf.instance_property_name, 1)
|
||||
conf.instance_property_name = "z"
|
||||
assert_equal(conf.instance_property_name, "z")
|
||||
conf.instance_property_name = 4
|
||||
assert_equal(conf.instance_property_name, 4)
|
||||
conf.instance_property_name = nil
|
||||
assert_equal(conf.instance_property_name, nil)
|
||||
|
||||
assert_equal(conf.produce_cell_outlines, true)
|
||||
conf.produce_cell_outlines = false
|
||||
assert_equal(conf.produce_cell_outlines, false)
|
||||
|
||||
assert_equal(conf.cell_outline_layer, "OUTLINE")
|
||||
conf.cell_outline_layer = "17/1"
|
||||
assert_equal(conf.cell_outline_layer, "17/1")
|
||||
|
||||
assert_equal(conf.produce_placement_blockages, true)
|
||||
conf.produce_placement_blockages = false
|
||||
assert_equal(conf.produce_placement_blockages, false)
|
||||
|
||||
assert_equal(conf.placement_blockage_layer, "PLACEMENT_BLK")
|
||||
conf.placement_blockage_layer = "17/2"
|
||||
assert_equal(conf.placement_blockage_layer, "17/2")
|
||||
|
||||
assert_equal(conf.produce_via_geometry, true)
|
||||
conf.produce_via_geometry = false
|
||||
assert_equal(conf.produce_via_geometry, false)
|
||||
|
||||
assert_equal(conf.via_geometry_suffix, "")
|
||||
conf.via_geometry_suffix = "XVIA"
|
||||
assert_equal(conf.via_geometry_suffix, "XVIA")
|
||||
|
||||
assert_equal(conf.via_geometry_datatype, 0)
|
||||
conf.via_geometry_datatype = 17
|
||||
assert_equal(conf.via_geometry_datatype, 17)
|
||||
|
||||
assert_equal(conf.produce_pins, true)
|
||||
conf.produce_pins = false
|
||||
assert_equal(conf.produce_pins, false)
|
||||
|
||||
assert_equal(conf.pins_suffix, ".PIN")
|
||||
conf.pins_suffix = "XPIN"
|
||||
assert_equal(conf.pins_suffix, "XPIN")
|
||||
|
||||
assert_equal(conf.pins_datatype, 2)
|
||||
conf.pins_datatype = 18
|
||||
assert_equal(conf.pins_datatype, 18)
|
||||
|
||||
assert_equal(conf.produce_obstructions, true)
|
||||
conf.produce_obstructions = false
|
||||
assert_equal(conf.produce_obstructions, false)
|
||||
|
||||
assert_equal(conf.obstructions_suffix, ".OBS")
|
||||
conf.obstructions_suffix = "XOBS"
|
||||
assert_equal(conf.obstructions_suffix, "XOBS")
|
||||
|
||||
assert_equal(conf.obstructions_datatype, 3)
|
||||
conf.obstructions_datatype = 19
|
||||
assert_equal(conf.obstructions_datatype, 19)
|
||||
|
||||
assert_equal(conf.produce_blockages, true)
|
||||
conf.produce_blockages = false
|
||||
assert_equal(conf.produce_blockages, false)
|
||||
|
||||
assert_equal(conf.blockages_suffix, ".BLK")
|
||||
conf.blockages_suffix = "XBLK"
|
||||
assert_equal(conf.blockages_suffix, "XBLK")
|
||||
|
||||
assert_equal(conf.blockages_datatype, 4)
|
||||
conf.blockages_datatype = 20
|
||||
assert_equal(conf.blockages_datatype, 20)
|
||||
|
||||
assert_equal(conf.produce_labels, true)
|
||||
conf.produce_labels = false
|
||||
assert_equal(conf.produce_labels, false)
|
||||
|
||||
assert_equal(conf.labels_suffix, ".LABEL")
|
||||
conf.labels_suffix = "XLABEL"
|
||||
assert_equal(conf.labels_suffix, "XLABEL")
|
||||
|
||||
assert_equal(conf.labels_datatype, 1)
|
||||
conf.labels_datatype = 21
|
||||
assert_equal(conf.labels_datatype, 21)
|
||||
|
||||
assert_equal(conf.produce_routing, true)
|
||||
conf.produce_routing = false
|
||||
assert_equal(conf.produce_routing, false)
|
||||
|
||||
assert_equal(conf.routing_suffix, "")
|
||||
conf.routing_suffix = "XROUT"
|
||||
assert_equal(conf.routing_suffix, "XROUT")
|
||||
|
||||
assert_equal(conf.routing_datatype, 0)
|
||||
conf.routing_datatype = 22
|
||||
assert_equal(conf.routing_datatype, 22)
|
||||
|
||||
assert_equal(conf.lef_files.join(","), "")
|
||||
conf.lef_files = [ "u.lef", "v.lef" ]
|
||||
assert_equal(conf.lef_files.join(","), "u.lef,v.lef")
|
||||
|
||||
end
|
||||
|
||||
# MAG Options
|
||||
def test_mag_options
|
||||
|
||||
|
||||
Reference in New Issue
Block a user