Created 2019 03 01 (markdown)

Matthias Köfferlein 2019-03-02 11:43:56 +01:00
parent b381a158e8
commit d41ad570d0
1 changed files with 81 additions and 0 deletions

81
2019-03-01.md Normal file

@ -0,0 +1,81 @@
# More Hierarchical Operations and Antenna Check
## More hierarchical operations
Most DRC functions are now hierarchy-enabled. By simply specifying "deep" at the beginning of a DRC script, DRC performs hierarchically.
There are some limitations:
* Hierarchical XOR performance isn't quite good as it is implementation as two NOT's. Specifically when doing XOR between two layouts, the performance additionally suffers from the hierarchy mapping required between the two layouts.
* Transformations not implemented hierarchically yet.
* Same for "strange polygon check".
* Some operations will build hierarchy variants if required and modify the layout therefore. Among these operations are the anisotropic variants (like "size(10, 20)") and snap. Most measurement or selection functions will need to create magnification variants if cells are instantiated in different magnifications.
## Antenna check
With the network formation abilities, it was possible to implement an antenna check for preventing plasma induced damage. The implementation is based on a LayoutToNetlist object. The DRC script language now wraps this objects in a lightweight API. This will become the basis of LVS integration finally.
The antenna check is a first application of this feature.
Here is a sample script for the antenna check:
```ruby
# use on testdata/drc/antenna_l1.gds for example
report("Antenna check sample")
deep
diff = input(2, 0)
poly = input(3, 0)
contact = input(4, 0)
poly_cont = input(5, 0)
metal1 = input(6, 0)
via1 = input(7, 0)
metal2 = input(8, 0)
gate = diff & poly
connect(gate, poly)
connect(poly, poly_cont)
connect(poly_cont, metal1)
connect(metal1, via1)
connect(via1, metal2)
antenna_check(gate, metal2, 10.0).output("Antenna ratio metal2/gate > 10")
```
Diodes can be included to rectify the antenna effect. A diode is characterized by a layer which describes the diode area. Here is a sample for an antenna check with diodes:
```ruby
# use on testdata/drc/antenna_l1.gds for example
report("Antenna check sample")
deep
diff = input(2, 0)
poly = input(3, 0)
diff_cont = input(4, 0)
poly_cont = input(5, 0)
metal1 = input(6, 0)
via1 = input(7, 0)
metal2 = input(8, 0)
diode = input(2, 10) # drawn marker layer - could also be derived
gate = diff & poly
connect(gate, poly)
connect(poly, poly_cont)
connect(diode, diff_cont)
connect(diff_cont, metal1)
connect(poly_cont, metal1)
connect(metal1, via1)
connect(via1, metal2)
# Any connection to a diode makes the net excluded from the test
antenna_check(gate, metal2, 10.0, diode).output("Antenna ratio metal2/gate > 10")
# Any diode connected to a net will increase the ratio by 5.0 per square micrometer
# of diode area
antenna_check(gate, metal2, 10.0, [ diode, 5.0 ]).output("Antenna ratio metal2/gate > 10, each diode increases ratio by 5.0 per square um of diode area")
```