diff --git a/src/db/db/dbLayoutToNetlist.cc b/src/db/db/dbLayoutToNetlist.cc
index 6b9bf63cc..d8c9114d5 100644
--- a/src/db/db/dbLayoutToNetlist.cc
+++ b/src/db/db/dbLayoutToNetlist.cc
@@ -1366,9 +1366,10 @@ compute_area_and_perimeter_of_net_shapes (const db::hier_clusters
perimeter = ap_collector.perimeter ();
}
-static void
+static db::Point
get_merged_shapes_of_net (const db::hier_clusters &clusters, db::cell_index_type ci, size_t cid, unsigned int layer_id, db::Shapes &shapes)
{
+ db::Point ref;
db::EdgeProcessor ep;
// count vertices and reserve space
@@ -1380,16 +1381,76 @@ get_merged_shapes_of_net (const db::hier_clusters &clusters, db::c
size_t p = 0;
for (db::recursive_cluster_shape_iterator rci (clusters, layer_id, ci, cid); !rci.at_end (); ++rci) {
- ep.insert (rci.trans () * rci->polygon_ref (), ++p);
+ if (p == 0) {
+ db::PolygonRef pr = (rci.trans () * rci->polygon_ref ());
+ db::PolygonRef::polygon_edge_iterator e = pr.begin_edge ();
+ if (! e.at_end ()) {
+ // pick one reference point for the label
+ ref = (*e).p1 ();
+ ep.insert (pr, ++p);
+ }
+ } else {
+ ep.insert (rci.trans () * rci->polygon_ref (), ++p);
+ }
}
db::ShapeGenerator sg (shapes);
db::PolygonGenerator pg (sg, false);
db::SimpleMerge op;
ep.process (pg, op);
+
+ return ref;
}
-db::Region LayoutToNetlist::antenna_check (const db::Region &gate, double gate_area_factor, double gate_perimeter_factor, const db::Region &metal, double metal_area_factor, double metal_perimeter_factor, double ratio, const std::vector > &diodes)
+static std::string
+create_antenna_msg (double agate, db::Polygon::area_type agate_int, double gate_area_factor, db::Polygon::perimeter_type pgate_int, double gate_perimeter_factor,
+ double ametal, db::Polygon::area_type ametal_int, double metal_area_factor, db::Polygon::perimeter_type pmetal_int, double metal_perimeter_factor,
+ const std::vector > &diodes,
+ const std::vector &adiodes_int,
+ double r, double ratio, double dbu)
+{
+ std::string msg;
+ msg += tl::sprintf ("agate_eff: %.12g, ", agate);
+ if (fabs (gate_area_factor) > 1e-6) {
+ msg += tl::sprintf ("agate: %.12g, agate_factor: %.12g, ", agate_int * dbu * dbu, gate_area_factor);
+ }
+ if (fabs (gate_perimeter_factor) > 1e-6) {
+ msg += tl::sprintf ("pgate: %.12g, pgate_factor: %.12g, ", pgate_int * dbu * dbu, gate_perimeter_factor);
+ }
+ msg += tl::sprintf ("ametal_eff: %.12g, ", ametal);
+ if (fabs (metal_area_factor) > 1e-6) {
+ msg += tl::sprintf ("ametal: %.12g, ametal_factor: %.12g, ", ametal_int * dbu * dbu, metal_area_factor);
+ }
+ if (fabs (metal_perimeter_factor) > 1e-6) {
+ msg += tl::sprintf ("pmetal: %.12g, pmetal_factor: %.12g, ", pmetal_int * dbu * dbu, metal_perimeter_factor);
+ }
+ if (! adiodes_int.empty ()) {
+ msg += "adiodes: [";
+ for (auto d = adiodes_int.begin (); d != adiodes_int.end (); ++d) {
+ if (d != adiodes_int.begin ()) {
+ msg += ", ";
+ }
+ msg += tl::sprintf ("%.12g", *d * dbu * dbu);
+ }
+ msg += "], ";
+ }
+ if (! diodes.empty ()) {
+ msg += "diode_factors: [";
+ for (auto d = diodes.begin (); d != diodes.end (); ++d) {
+ if (d != diodes.begin ()) {
+ msg += ", ";
+ }
+ msg += tl::sprintf ("%.12g", d->second);
+ }
+ msg += "], ";
+ }
+ msg += tl::sprintf ("ratio: %.12g, ", ametal / agate);
+ msg += tl::sprintf ("max_ratio_eff: %.12g, ", r);
+ msg += tl::sprintf ("max_ratio: %.12g", ratio);
+ return msg;
+}
+
+db::Region LayoutToNetlist::antenna_check (const db::Region &gate, double gate_area_factor, double gate_perimeter_factor, const db::Region &metal, double metal_area_factor, double metal_perimeter_factor, double ratio, const std::vector > &diodes, db::Texts *values)
{
// TODO: that's basically too much .. we only need the clusters
if (! m_netlist_extracted) {
@@ -1401,6 +1462,11 @@ db::Region LayoutToNetlist::antenna_check (const db::Region &gate, double gate_a
db::DeepLayer dl (&dss (), m_layout_index, ly.insert_layer ());
+ db::DeepLayer dlv;
+ if (values) {
+ dlv = db::DeepLayer (&dss (), m_layout_index, ly.insert_layer ());
+ }
+
for (db::Layout::bottom_up_const_iterator cid = ly.begin_bottom_up (); cid != ly.end_bottom_up (); ++cid) {
const connected_clusters &clusters = m_net_clusters.clusters_per_cell (*cid);
@@ -1408,6 +1474,8 @@ db::Region LayoutToNetlist::antenna_check (const db::Region &gate, double gate_a
continue;
}
+ std::vector adiodes_int;
+
for (connected_clusters::all_iterator c = clusters.begin_all (); ! c.at_end (); ++c) {
if (! clusters.is_root (*c)) {
@@ -1417,13 +1485,18 @@ db::Region LayoutToNetlist::antenna_check (const db::Region &gate, double gate_a
double r = ratio;
bool skip = false;
- for (std::vector >::const_iterator d = diodes.begin (); d != diodes.end () && ! skip; ++d) {
+ adiodes_int.clear ();
+ adiodes_int.reserve (diodes.size ());
+
+ for (auto d = diodes.begin (); d != diodes.end () && ! skip; ++d) {
db::Polygon::area_type adiode_int = 0;
db::Polygon::perimeter_type pdiode_int = 0;
compute_area_and_perimeter_of_net_shapes (m_net_clusters, *cid, *c, layer_of (*d->first), adiode_int, pdiode_int);
+ adiodes_int.push_back (adiode_int);
+
if (fabs (d->second) < db::epsilon) {
if (adiode_int > 0) {
skip = true;
@@ -1465,12 +1538,29 @@ db::Region LayoutToNetlist::antenna_check (const db::Region &gate, double gate_a
}
if (tl::verbosity () >= 50) {
- tl::info << "cell [" << ly.cell_name (*cid) << "]: agate=" << tl::to_string (agate) << ", ametal=" << tl::to_string (ametal) << ", r=" << tl::sprintf ("%.12g", r);
+ tl::info << "cell [" << ly.cell_name (*cid) << "]: " <<
+ create_antenna_msg (agate, agate_int, gate_area_factor, pgate_int, gate_perimeter_factor,
+ ametal, ametal_int, metal_area_factor, pmetal_int, metal_perimeter_factor,
+ diodes, adiodes_int, r, ratio, dbu);
}
if (ametal / agate > r + db::epsilon) {
+
db::Shapes &shapes = ly.cell (*cid).shapes (dl.layer ());
- get_merged_shapes_of_net (m_net_clusters, *cid, *c, layer_of (metal), shapes);
+ db::Point ref = get_merged_shapes_of_net (m_net_clusters, *cid, *c, layer_of (metal), shapes);
+
+ if (values) {
+
+ // generate a data string with the details of the antenna computation (intentionally like JSON)
+ std::string msg = create_antenna_msg (agate, agate_int, gate_area_factor, pgate_int, gate_perimeter_factor,
+ ametal, ametal_int, metal_area_factor, pmetal_int, metal_perimeter_factor,
+ diodes, adiodes_int, r, ratio, dbu);
+
+ db::Shapes &shapesv = ly.cell (*cid).shapes (dlv.layer ());
+ shapesv.insert (db::Text (msg, db::Trans (ref - db::Point ())));
+
+ }
+
}
}
@@ -1481,6 +1571,10 @@ db::Region LayoutToNetlist::antenna_check (const db::Region &gate, double gate_a
}
+ if (values) {
+ *values = db::Texts (new db::DeepTexts (dlv));
+ }
+
return db::Region (new db::DeepRegion (dl));
}
diff --git a/src/db/db/dbLayoutToNetlist.h b/src/db/db/dbLayoutToNetlist.h
index 6b04e5cce..f1b099076 100644
--- a/src/db/db/dbLayoutToNetlist.h
+++ b/src/db/db/dbLayoutToNetlist.h
@@ -856,18 +856,18 @@ public:
* regardless of the diode's area.
* In other words: any diode will make the net safe against antenna discharge.
*/
- db::Region antenna_check (const db::Region &gate, double gate_perimeter_factor, const db::Region &metal, double metal_perimeter_factor, double ratio, const std::vector > &diodes = std::vector > ())
+ db::Region antenna_check (const db::Region &gate, double gate_perimeter_factor, const db::Region &metal, double metal_perimeter_factor, double ratio, const std::vector > &diodes = std::vector > (), db::Texts *values = 0)
{
- return antenna_check (gate, 1.0, gate_perimeter_factor, metal, 1.0, metal_perimeter_factor, ratio, diodes);
+ return antenna_check (gate, 1.0, gate_perimeter_factor, metal, 1.0, metal_perimeter_factor, ratio, diodes, values);
}
/**
* @brief Variant of the antenna check not using the perimeter
* This version uses 0 for the perimeter factor hence not taking into account the perimeter at all.
*/
- db::Region antenna_check (const db::Region &gate, const db::Region &metal, double ratio, const std::vector > &diodes = std::vector > ())
+ db::Region antenna_check (const db::Region &gate, const db::Region &metal, double ratio, const std::vector > &diodes = std::vector > (), db::Texts *values = 0)
{
- return antenna_check (gate, 1.0, 0.0, metal, 1.0, 0.0, ratio, diodes);
+ return antenna_check (gate, 1.0, 0.0, metal, 1.0, 0.0, ratio, diodes, values);
}
/**
@@ -879,8 +879,10 @@ public:
*
* where f is the area scale factor and t the perimeter scale factor. This version allows to ignore the
* area contribution entirely and switch to a perimeter-based antenna check by setting f to zero.
+ *
+ * If values is non-null, texts explaining the violations are placed there.
*/
- db::Region antenna_check (const db::Region &gate, double gate_area_factor, double gate_perimeter_factor, const db::Region &metal, double metal_area_factor, double metal_perimeter_factor, double ratio, const std::vector > &diodes = std::vector > ());
+ db::Region antenna_check (const db::Region &gate, double gate_area_factor, double gate_perimeter_factor, const db::Region &metal, double metal_area_factor, double metal_perimeter_factor, double ratio, const std::vector > &diodes = std::vector > (), Texts *values = 0);
/**
* @brief Saves the database to the given path
diff --git a/src/db/db/gsiDeclDbLayoutToNetlist.cc b/src/db/db/gsiDeclDbLayoutToNetlist.cc
index 6f8b86c47..4d98e4f17 100644
--- a/src/db/db/gsiDeclDbLayoutToNetlist.cc
+++ b/src/db/db/gsiDeclDbLayoutToNetlist.cc
@@ -98,7 +98,7 @@ static std::vector l2n_layer_names (const db::LayoutToNetlist *l2n)
return ln;
}
-static db::Region antenna_check3 (db::LayoutToNetlist *l2n, const db::Region &poly, double poly_area_factor, double poly_perimeter_factor, const db::Region &metal, double metal_area_factor, double metal_perimeter_factor, double ratio, const std::vector &diodes)
+static db::Region antenna_check3 (db::LayoutToNetlist *l2n, const db::Region &poly, double poly_area_factor, double poly_perimeter_factor, const db::Region &metal, double metal_area_factor, double metal_perimeter_factor, double ratio, const std::vector &diodes, db::Texts *texts)
{
std::vector > diode_pairs;
@@ -127,17 +127,17 @@ static db::Region antenna_check3 (db::LayoutToNetlist *l2n, const db::Region &po
}
- return l2n->antenna_check (poly, poly_area_factor, poly_perimeter_factor, metal, metal_area_factor, metal_perimeter_factor, ratio, diode_pairs);
+ return l2n->antenna_check (poly, poly_area_factor, poly_perimeter_factor, metal, metal_area_factor, metal_perimeter_factor, ratio, diode_pairs, texts);
}
-static db::Region antenna_check2 (db::LayoutToNetlist *l2n, const db::Region &poly, double poly_perimeter_factor, const db::Region &metal, double metal_perimeter_factor, double ratio, const std::vector &diodes)
+static db::Region antenna_check2 (db::LayoutToNetlist *l2n, const db::Region &poly, double poly_perimeter_factor, const db::Region &metal, double metal_perimeter_factor, double ratio, const std::vector &diodes, db::Texts *texts)
{
- return antenna_check3 (l2n, poly, 1, poly_perimeter_factor, metal, 1, metal_perimeter_factor, ratio, diodes);
+ return antenna_check3 (l2n, poly, 1, poly_perimeter_factor, metal, 1, metal_perimeter_factor, ratio, diodes, texts);
}
-static db::Region antenna_check (db::LayoutToNetlist *l2n, const db::Region &poly, const db::Region &metal, double ratio, const std::vector &diodes)
+static db::Region antenna_check (db::LayoutToNetlist *l2n, const db::Region &poly, const db::Region &metal, double ratio, const std::vector &diodes, db::Texts *texts)
{
- return antenna_check3 (l2n, poly, 1, 0, metal, 1, 0, ratio, diodes);
+ return antenna_check3 (l2n, poly, 1, 0, metal, 1, 0, ratio, diodes, texts);
}
static void join_net_names (db::LayoutToNetlist *l2n, const std::string &s)
@@ -701,7 +701,7 @@ Class decl_dbLayoutToNetlist ("db", "LayoutToNetlist",
"@brief Reads the extracted netlist from the file.\n"
"This method employs the native format of KLayout.\n"
) +
- gsi::method_ext ("antenna_check", &antenna_check, gsi::arg ("gate"), gsi::arg ("metal"), gsi::arg ("ratio"), gsi::arg ("diodes", std::vector (), "[]"),
+ gsi::method_ext ("antenna_check", &antenna_check, gsi::arg ("gate"), gsi::arg ("metal"), gsi::arg ("ratio"), gsi::arg ("diodes", std::vector (), "[]"), gsi::arg ("texts", (db::Texts *) 0, "nil"),
"@brief Runs an antenna check on the extracted clusters\n"
"\n"
"The antenna check will traverse all clusters and run an antenna check\n"
@@ -741,8 +741,13 @@ Class decl_dbLayoutToNetlist ("db", "LayoutToNetlist",
"# diode_layer1 increases the ratio by 50 per square micrometer area:\n"
"errors = l2n.antenna(poly, metal, 10.0 [ [ diode_layer, 50.0 ] ])\n"
"@/code\n"
+ "\n"
+ "If 'texts' is non-nil, this text collection will receive labels explaining the error in "
+ "terms of area values and relevant ratio.\n"
+ "\n"
+ "The 'texts' parameter has been added in version 0.27.11."
) +
- gsi::method_ext ("antenna_check", &antenna_check2, gsi::arg ("gate"), gsi::arg ("gate_perimeter_factor"), gsi::arg ("metal"), gsi::arg ("metal_perimeter_factor"), gsi::arg ("ratio"), gsi::arg ("diodes", std::vector (), "[]"),
+ gsi::method_ext ("antenna_check", &antenna_check2, gsi::arg ("gate"), gsi::arg ("gate_perimeter_factor"), gsi::arg ("metal"), gsi::arg ("metal_perimeter_factor"), gsi::arg ("ratio"), gsi::arg ("diodes", std::vector (), "[]"), gsi::arg ("texts", (db::Texts *) 0, "nil"),
"@brief Runs an antenna check on the extracted clusters taking the perimeter into account\n"
"\n"
"This version of the \\antenna_check method allows taking the perimeter of gate or metal into account. "
@@ -759,7 +764,7 @@ Class decl_dbLayoutToNetlist ("db", "LayoutToNetlist",
"\n"
"This variant has been introduced in version 0.26.6.\n"
) +
- gsi::method_ext ("antenna_check", &antenna_check3, gsi::arg ("gate"), gsi::arg ("gate_area_factor"), gsi::arg ("gate_perimeter_factor"), gsi::arg ("metal"), gsi::arg ("metal_area_factor"), gsi::arg ("metal_perimeter_factor"), gsi::arg ("ratio"), gsi::arg ("diodes", std::vector (), "[]"),
+ gsi::method_ext ("antenna_check", &antenna_check3, gsi::arg ("gate"), gsi::arg ("gate_area_factor"), gsi::arg ("gate_perimeter_factor"), gsi::arg ("metal"), gsi::arg ("metal_area_factor"), gsi::arg ("metal_perimeter_factor"), gsi::arg ("ratio"), gsi::arg ("diodes", std::vector (), "[]"), gsi::arg ("texts", (db::Texts *) 0, "nil"),
"@brief Runs an antenna check on the extracted clusters taking the perimeter into account and providing an area factor\n"
"\n"
"This (most generic) version of the \\antenna_check method allows taking the perimeter of gate or metal into account and also "
diff --git a/src/drc/drc/built-in-macros/_drc_netter.rb b/src/drc/drc/built-in-macros/_drc_netter.rb
index 7e8de64e0..6b81ceb41 100644
--- a/src/drc/drc/built-in-macros/_drc_netter.rb
+++ b/src/drc/drc/built-in-macros/_drc_netter.rb
@@ -351,7 +351,7 @@ module DRC
# %DRC%
# @brief Performs an antenna check
# @name antenna_check
- # @synopsis antenna_check(gate, metal, ratio, [ diode_specs ... ])
+ # @synopsis antenna_check(gate, metal, ratio, [ diode_specs ... ] [, texts ])
#
# The antenna check is used to avoid plasma induced damage. Physically,
# the damage happes if during the manufacturing of a metal layer with
@@ -486,8 +486,13 @@ module DRC
# The error shapes produced by the antenna check are copies
# of the metal shapes on the metal layers of each network
# violating the antenna rule.
+ #
+ # You can specify a text layer (use "labels" to create one). It will receive
+ # error labels describing the measured values and computation parameters for debugging
+ # the layout. This option has been introduced in version 0.27.11.
+ #
- def antenna_check(agate, ametal, ratio, *diodes)
+ def antenna_check(agate, ametal, ratio, *args)
@engine._context("antenna_check") do
@@ -529,18 +534,31 @@ module DRC
raise("Ratio argument is not a number")
end
- dl = diodes.collect do |d|
- if d.is_a?(Array)
- d.size == 2 || raise("Diode specification pair expects two elements")
- d[0].requires_region
- [ d[0].data, d[1].to_f ]
- else
- d.requires_region
- [ d.data, 0.0 ]
+ dl = []
+ texts = nil
+ n = 3
+ args.each do |a|
+ if a.is_a?(Array)
+ a.size == 2 || raise("Diode specification pair expects two elements for argument #{n + 1}")
+ if ! a[0].is_a?(DRC::DRCLayer)
+ raise("Diode specification pair needs a layer for the first argument of argument #{n + 1}")
+ end
+ a[0].requires_region
+ dl << [ a[0].data, a[1].to_f ]
+ elsif ! a.is_a?(DRC::DRCLayer)
+ raise("Argument #{n + 1} has to be a layer")
+ else
+ a.requires_texts_or_region
+ if a.data.is_a?(RBA::Region)
+ dl << [ a.data, 0.0 ]
+ else
+ texts = a.data
+ end
end
+ n += 1
end
- DRC::DRCLayer::new(@engine, @engine._cmd(l2n_data, :antenna_check, gate.data, gate_area_factor, gate_perimeter_factor, metal.data, metal_area_factor, metal_perimeter_factor, ratio, dl))
+ DRC::DRCLayer::new(@engine, @engine._cmd(l2n_data, :antenna_check, gate.data, gate_area_factor, gate_perimeter_factor, metal.data, metal_area_factor, metal_perimeter_factor, ratio, dl, texts))
end
diff --git a/src/drc/drc/built-in-macros/_drc_source.rb b/src/drc/drc/built-in-macros/_drc_source.rb
index 600630949..0af32c75a 100644
--- a/src/drc/drc/built-in-macros/_drc_source.rb
+++ b/src/drc/drc/built-in-macros/_drc_source.rb
@@ -367,6 +367,7 @@ CODE
# %DRC%
# @name input
# @brief Specifies input from a source
+ # @synopsis source.input
# @synopsis source.input(layer)
# @synopsis source.input(layer, datatype)
# @synopsis source.input(layer_into)
@@ -405,6 +406,8 @@ CODE
# True text layers should be preferred over mixed polygon/text layers if text object processing
# is required.
#
+ # "input" without any arguments will create a new, empty original layer.
+ #
# Use the global version of "input" without a source object to address the default source.
def input(*args)
@@ -417,6 +420,7 @@ CODE
# %DRC%
# @name labels
# @brief Gets the labels (texts) from an input layer
+ # @synopsis source.labels
# @synopsis source.labels(layer)
# @synopsis source.labels(layer, datatype)
# @synopsis source.labels(layer_into)
@@ -429,6 +433,8 @@ CODE
# to provide text support but a layer type which is provided for carrying text objects
# explicitly.
#
+ # "labels" without any arguments will create a new, empty original layer.
+ #
# Use the global version of "labels" without a source object to address the default source.
def labels(*args)
@@ -441,6 +447,7 @@ CODE
# %DRC%
# @name polygons
# @brief Gets the polygon shapes (or shapes that can be converted polygons) from an input layer
+ # @synopsis source.polygons
# @synopsis source.polygons(layer)
# @synopsis source.polygons(layer, datatype)
# @synopsis source.polygons(layer_into)
@@ -452,6 +459,8 @@ CODE
#
# This method is identical to \input with respect to the options supported.
#
+ # "polygons" without any arguments will create a new, empty original layer.
+ #
# Use the global version of "polygons" without a source object to address the default source.
def polygons(*args)
@@ -464,6 +473,7 @@ CODE
# %DRC%
# @name edges
# @brief Gets the edge shapes (or shapes that can be converted edges) from an input layer
+ # @synopsis source.edges
# @synopsis source.edges(layer)
# @synopsis source.edges(layer, datatype)
# @synopsis source.edges(layer_into)
@@ -478,6 +488,8 @@ CODE
#
# Use the global version of "edges" without a source object to address the default source.
#
+ # "edges" without any arguments will create a new, empty original layer.
+ #
# This method has been introduced in version 0.27.
def edges(*args)
@@ -490,6 +502,7 @@ CODE
# %DRC%
# @name edge_pairs
# @brief Gets the edge pairs from an input layer
+ # @synopsis source.edge_pairs
# @synopsis source.edge_pairs(layer)
# @synopsis source.edge_pairs(layer, datatype)
# @synopsis source.edge_pairs(layer_into)
@@ -504,6 +517,8 @@ CODE
#
# Use the global version of "edge_pairs" without a source object to address the default source.
#
+ # "edge_pairs" without any arguments will create a new, empty original layer.
+ #
# This method has been introduced in version 0.27.
def edge_pairs(*args)
@@ -517,7 +532,8 @@ CODE
# @name make_layer
# @brief Creates an empty polygon layer based on the hierarchy of the layout
# @synopsis make_layer
- # This method delivers a new empty original layer.
+ # This method delivers a new empty original layer. It is provided to keep old code working.
+ # Use "input" without arguments instead.
def make_layer
layers = []
diff --git a/src/lay/lay/doc/about/drc_ref_layer.xml b/src/lay/lay/doc/about/drc_ref_layer.xml
index 9c6966097..f475254c3 100644
--- a/src/lay/lay/doc/about/drc_ref_layer.xml
+++ b/src/lay/lay/doc/about/drc_ref_layer.xml
@@ -3037,6 +3037,12 @@ The effect of the operation is shown in these examples:
+"texts?" - Returns true, if the layer is a text collection
+
+Usage:
+
"texts_not" - Selects texts from an original layer not matching a specific selection
Usage:
diff --git a/src/lay/lay/doc/about/drc_ref_netter.xml b/src/lay/lay/doc/about/drc_ref_netter.xml
index 5d9c091da..2b317dcc1 100644
--- a/src/lay/lay/doc/about/drc_ref_netter.xml
+++ b/src/lay/lay/doc/about/drc_ref_netter.xml
@@ -65,7 +65,7 @@ More methods will be added in the future to support network-related features.
Usage:
-- antenna_check(gate, metal, ratio, [ diode_specs ... ])
+- antenna_check(gate, metal, ratio, [ diode_specs ... ] [, texts ])
The antenna check is used to avoid plasma induced damage. Physically,
@@ -201,6 +201,10 @@ errors = antenna_check(perimeter_only(gate, 0.5), ...)
The error shapes produced by the antenna check are copies
of the metal shapes on the metal layers of each network
violating the antenna rule.
+
+You can specify a text layer (use "labels" to create one). It will receive
+error labels describing the measured values and computation parameters for debugging
+the layout. This option has been introduced in version 0.27.11.
"clear_connections" - Clears all connections stored so far
diff --git a/src/lay/lay/doc/about/drc_ref_source.xml b/src/lay/lay/doc/about/drc_ref_source.xml
index 20a46bee9..439157065 100644
--- a/src/lay/lay/doc/about/drc_ref_source.xml
+++ b/src/lay/lay/doc/about/drc_ref_source.xml
@@ -58,6 +58,7 @@ same but without clipping is touching or
Usage:
+- source.edge_pairs
- source.edge_pairs(layer)
- source.edge_pairs(layer, datatype)
- source.edge_pairs(layer_into)
@@ -73,12 +74,15 @@ This method is identical to input with respect to the optio
Use the global version of "edge_pairs" without a source object to address the default source.
+"edge_pairs" without any arguments will create a new, empty original layer.
+
This method has been introduced in version 0.27.
"edges" - Gets the edge shapes (or shapes that can be converted edges) from an input layer
Usage:
+- source.edges
- source.edges(layer)
- source.edges(layer, datatype)
- source.edges(layer_into)
@@ -94,6 +98,8 @@ This method is identical to input with respect to the optio
Use the global version of "edges" without a source object to address the default source.
+"edges" without any arguments will create a new, empty original layer.
+
This method has been introduced in version 0.27.
"extent" - Returns a layer with the bounding box of the selected layout or cells
@@ -160,6 +166,7 @@ source.global_transform(shift(0, 100.um), rotate(90.0))
Usage:
+- source.input
- source.input(layer)
- source.input(layer, datatype)
- source.input(layer_into)
@@ -200,12 +207,15 @@ operations is available for these objects, such as boolean "and" and "not" with
True text layers should be preferred over mixed polygon/text layers if text object processing
is required.
+"input" without any arguments will create a new, empty original layer.
+
Use the global version of "input" without a source object to address the default source.
"labels" - Gets the labels (texts) from an input layer
Usage:
+- source.labels
- source.labels(layer)
- source.labels(layer, datatype)
- source.labels(layer_into)
@@ -219,6 +229,8 @@ layer. Starting with version 0.27, the result is no longer a polygon layer that
to provide text support but a layer type which is provided for carrying text objects
explicitly.
+"labels" without any arguments will create a new, empty original layer.
+
Use the global version of "labels" without a source object to address the default source.
"layers" - Gets the layers the source contains
@@ -258,7 +270,8 @@ layers.each { |l| (input(l) & clip_box).output(l) }
- make_layer
-This method delivers a new empty original layer.
+This method delivers a new empty original layer. It is provided to keep old code working.
+Use "input" without arguments instead.
"overlapping" - Specifies input selected from a region in overlapping mode
@@ -286,6 +299,7 @@ the search region with their bounding box (without the requirement to overlap)
Usage:
+- source.polygons
- source.polygons(layer)
- source.polygons(layer, datatype)
- source.polygons(layer_into)
@@ -298,6 +312,8 @@ Those are boxes, paths and real polygons.
This method is identical to input with respect to the options supported.
+"polygons" without any arguments will create a new, empty original layer.
+
Use the global version of "polygons" without a source object to address the default source.
"select" - Adds cell name expressions to the cell filters
diff --git a/src/lay/lay/doc/images/drc_and1.png b/src/lay/lay/doc/images/drc_and1.png
index d1f6d3fb9..8f480bfe7 100644
Binary files a/src/lay/lay/doc/images/drc_and1.png and b/src/lay/lay/doc/images/drc_and1.png differ
diff --git a/src/lay/lay/doc/images/drc_and2.png b/src/lay/lay/doc/images/drc_and2.png
index 20592ffce..5b8511d14 100644
Binary files a/src/lay/lay/doc/images/drc_and2.png and b/src/lay/lay/doc/images/drc_and2.png differ
diff --git a/src/lay/lay/doc/images/drc_and3.png b/src/lay/lay/doc/images/drc_and3.png
index 81b678059..607deea18 100644
Binary files a/src/lay/lay/doc/images/drc_and3.png and b/src/lay/lay/doc/images/drc_and3.png differ
diff --git a/src/lay/lay/doc/images/drc_centers1.png b/src/lay/lay/doc/images/drc_centers1.png
index 11980e56d..909553ab4 100644
Binary files a/src/lay/lay/doc/images/drc_centers1.png and b/src/lay/lay/doc/images/drc_centers1.png differ
diff --git a/src/lay/lay/doc/images/drc_centers2.png b/src/lay/lay/doc/images/drc_centers2.png
index e79d76598..69c7ecb7f 100644
Binary files a/src/lay/lay/doc/images/drc_centers2.png and b/src/lay/lay/doc/images/drc_centers2.png differ
diff --git a/src/lay/lay/doc/images/drc_corners1.png b/src/lay/lay/doc/images/drc_corners1.png
index 48adba3ca..d1557f3a2 100644
Binary files a/src/lay/lay/doc/images/drc_corners1.png and b/src/lay/lay/doc/images/drc_corners1.png differ
diff --git a/src/lay/lay/doc/images/drc_corners2.png b/src/lay/lay/doc/images/drc_corners2.png
index 13fbbd89c..b595ea398 100644
Binary files a/src/lay/lay/doc/images/drc_corners2.png and b/src/lay/lay/doc/images/drc_corners2.png differ
diff --git a/src/lay/lay/doc/images/drc_corners3.png b/src/lay/lay/doc/images/drc_corners3.png
index 55a909efd..00b978bb3 100644
Binary files a/src/lay/lay/doc/images/drc_corners3.png and b/src/lay/lay/doc/images/drc_corners3.png differ
diff --git a/src/lay/lay/doc/images/drc_covering.png b/src/lay/lay/doc/images/drc_covering.png
index a149730c7..a96d88a7b 100644
Binary files a/src/lay/lay/doc/images/drc_covering.png and b/src/lay/lay/doc/images/drc_covering.png differ
diff --git a/src/lay/lay/doc/images/drc_enc1.png b/src/lay/lay/doc/images/drc_enc1.png
index 69abadec6..2bef4ab3c 100644
Binary files a/src/lay/lay/doc/images/drc_enc1.png and b/src/lay/lay/doc/images/drc_enc1.png differ
diff --git a/src/lay/lay/doc/images/drc_enc1u.png b/src/lay/lay/doc/images/drc_enc1u.png
index 02f4d14b0..5d6e58bb9 100644
Binary files a/src/lay/lay/doc/images/drc_enc1u.png and b/src/lay/lay/doc/images/drc_enc1u.png differ
diff --git a/src/lay/lay/doc/images/drc_enc2.png b/src/lay/lay/doc/images/drc_enc2.png
index 16bbda855..df854246d 100644
Binary files a/src/lay/lay/doc/images/drc_enc2.png and b/src/lay/lay/doc/images/drc_enc2.png differ
diff --git a/src/lay/lay/doc/images/drc_enc2u.png b/src/lay/lay/doc/images/drc_enc2u.png
index a7a70d48c..8a56c4e66 100644
Binary files a/src/lay/lay/doc/images/drc_enc2u.png and b/src/lay/lay/doc/images/drc_enc2u.png differ
diff --git a/src/lay/lay/doc/images/drc_encd1.png b/src/lay/lay/doc/images/drc_encd1.png
index 4be32165a..b53da5730 100644
Binary files a/src/lay/lay/doc/images/drc_encd1.png and b/src/lay/lay/doc/images/drc_encd1.png differ
diff --git a/src/lay/lay/doc/images/drc_encd1u.png b/src/lay/lay/doc/images/drc_encd1u.png
index 8c9403be8..f19b3d6c9 100644
Binary files a/src/lay/lay/doc/images/drc_encd1u.png and b/src/lay/lay/doc/images/drc_encd1u.png differ
diff --git a/src/lay/lay/doc/images/drc_encd2.png b/src/lay/lay/doc/images/drc_encd2.png
index 88e7ad63e..5e810437c 100644
Binary files a/src/lay/lay/doc/images/drc_encd2.png and b/src/lay/lay/doc/images/drc_encd2.png differ
diff --git a/src/lay/lay/doc/images/drc_encd2u.png b/src/lay/lay/doc/images/drc_encd2u.png
index ec3615fca..d85dbca67 100644
Binary files a/src/lay/lay/doc/images/drc_encd2u.png and b/src/lay/lay/doc/images/drc_encd2u.png differ
diff --git a/src/lay/lay/doc/images/drc_end_segments1.png b/src/lay/lay/doc/images/drc_end_segments1.png
index d8ac09404..71fbae69e 100644
Binary files a/src/lay/lay/doc/images/drc_end_segments1.png and b/src/lay/lay/doc/images/drc_end_segments1.png differ
diff --git a/src/lay/lay/doc/images/drc_end_segments2.png b/src/lay/lay/doc/images/drc_end_segments2.png
index 666e81a31..63f6feee9 100644
Binary files a/src/lay/lay/doc/images/drc_end_segments2.png and b/src/lay/lay/doc/images/drc_end_segments2.png differ
diff --git a/src/lay/lay/doc/images/drc_extended1.png b/src/lay/lay/doc/images/drc_extended1.png
index 0acf06f9f..3ff0f23f4 100644
Binary files a/src/lay/lay/doc/images/drc_extended1.png and b/src/lay/lay/doc/images/drc_extended1.png differ
diff --git a/src/lay/lay/doc/images/drc_extended2.png b/src/lay/lay/doc/images/drc_extended2.png
index fe016af38..8860625aa 100644
Binary files a/src/lay/lay/doc/images/drc_extended2.png and b/src/lay/lay/doc/images/drc_extended2.png differ
diff --git a/src/lay/lay/doc/images/drc_extended3.png b/src/lay/lay/doc/images/drc_extended3.png
index ce7e24be2..a585d84c2 100644
Binary files a/src/lay/lay/doc/images/drc_extended3.png and b/src/lay/lay/doc/images/drc_extended3.png differ
diff --git a/src/lay/lay/doc/images/drc_extended4.png b/src/lay/lay/doc/images/drc_extended4.png
index 7d4bc6d9d..47a09728b 100644
Binary files a/src/lay/lay/doc/images/drc_extended4.png and b/src/lay/lay/doc/images/drc_extended4.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs1.png b/src/lay/lay/doc/images/drc_extent_refs1.png
index a0ce25631..d3c89b5f9 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs1.png and b/src/lay/lay/doc/images/drc_extent_refs1.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs10.png b/src/lay/lay/doc/images/drc_extent_refs10.png
index 4616764b0..fd1785e21 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs10.png and b/src/lay/lay/doc/images/drc_extent_refs10.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs11.png b/src/lay/lay/doc/images/drc_extent_refs11.png
index 06b354453..ba28f7c6f 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs11.png and b/src/lay/lay/doc/images/drc_extent_refs11.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs12.png b/src/lay/lay/doc/images/drc_extent_refs12.png
index 84569ccad..ee0848fe8 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs12.png and b/src/lay/lay/doc/images/drc_extent_refs12.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs13.png b/src/lay/lay/doc/images/drc_extent_refs13.png
index 5234c4ccc..90eb6e900 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs13.png and b/src/lay/lay/doc/images/drc_extent_refs13.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs20.png b/src/lay/lay/doc/images/drc_extent_refs20.png
index 6f2e21b15..c5c7384a8 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs20.png and b/src/lay/lay/doc/images/drc_extent_refs20.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs21.png b/src/lay/lay/doc/images/drc_extent_refs21.png
index e8a0efae4..cd7ba9a21 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs21.png and b/src/lay/lay/doc/images/drc_extent_refs21.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs22.png b/src/lay/lay/doc/images/drc_extent_refs22.png
index cc53d2e58..5864bfd3f 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs22.png and b/src/lay/lay/doc/images/drc_extent_refs22.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs23.png b/src/lay/lay/doc/images/drc_extent_refs23.png
index 799244e8a..753dfadcf 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs23.png and b/src/lay/lay/doc/images/drc_extent_refs23.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs24.png b/src/lay/lay/doc/images/drc_extent_refs24.png
index 5e0fa248d..dada72737 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs24.png and b/src/lay/lay/doc/images/drc_extent_refs24.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs25.png b/src/lay/lay/doc/images/drc_extent_refs25.png
index e698483b7..97a3e4ffe 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs25.png and b/src/lay/lay/doc/images/drc_extent_refs25.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs26.png b/src/lay/lay/doc/images/drc_extent_refs26.png
index ffaac3ccc..a281ba6ad 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs26.png and b/src/lay/lay/doc/images/drc_extent_refs26.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs27.png b/src/lay/lay/doc/images/drc_extent_refs27.png
index 0ffd732a0..580ee7363 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs27.png and b/src/lay/lay/doc/images/drc_extent_refs27.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs30.png b/src/lay/lay/doc/images/drc_extent_refs30.png
index f10836f89..8971fe0f2 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs30.png and b/src/lay/lay/doc/images/drc_extent_refs30.png differ
diff --git a/src/lay/lay/doc/images/drc_extent_refs31.png b/src/lay/lay/doc/images/drc_extent_refs31.png
index 2ecb4b3fc..0c1273866 100644
Binary files a/src/lay/lay/doc/images/drc_extent_refs31.png and b/src/lay/lay/doc/images/drc_extent_refs31.png differ
diff --git a/src/lay/lay/doc/images/drc_extents1.png b/src/lay/lay/doc/images/drc_extents1.png
index 4da7f777e..494f98de6 100644
Binary files a/src/lay/lay/doc/images/drc_extents1.png and b/src/lay/lay/doc/images/drc_extents1.png differ
diff --git a/src/lay/lay/doc/images/drc_extents2.png b/src/lay/lay/doc/images/drc_extents2.png
index 2d9c743be..849ef4b8f 100644
Binary files a/src/lay/lay/doc/images/drc_extents2.png and b/src/lay/lay/doc/images/drc_extents2.png differ
diff --git a/src/lay/lay/doc/images/drc_holes.png b/src/lay/lay/doc/images/drc_holes.png
index 7234bdc9d..f8d0d5767 100644
Binary files a/src/lay/lay/doc/images/drc_holes.png and b/src/lay/lay/doc/images/drc_holes.png differ
diff --git a/src/lay/lay/doc/images/drc_hulls.png b/src/lay/lay/doc/images/drc_hulls.png
index 05294e60a..a86927915 100644
Binary files a/src/lay/lay/doc/images/drc_hulls.png and b/src/lay/lay/doc/images/drc_hulls.png differ
diff --git a/src/lay/lay/doc/images/drc_in.png b/src/lay/lay/doc/images/drc_in.png
index 6abd1f525..d490a4a25 100644
Binary files a/src/lay/lay/doc/images/drc_in.png and b/src/lay/lay/doc/images/drc_in.png differ
diff --git a/src/lay/lay/doc/images/drc_inside.png b/src/lay/lay/doc/images/drc_inside.png
index ad110260a..61b9f0385 100644
Binary files a/src/lay/lay/doc/images/drc_inside.png and b/src/lay/lay/doc/images/drc_inside.png differ
diff --git a/src/lay/lay/doc/images/drc_inside_part.png b/src/lay/lay/doc/images/drc_inside_part.png
index 4f60b0e88..632836c75 100644
Binary files a/src/lay/lay/doc/images/drc_inside_part.png and b/src/lay/lay/doc/images/drc_inside_part.png differ
diff --git a/src/lay/lay/doc/images/drc_interacting.png b/src/lay/lay/doc/images/drc_interacting.png
index cf8ccb394..b0ca9711d 100644
Binary files a/src/lay/lay/doc/images/drc_interacting.png and b/src/lay/lay/doc/images/drc_interacting.png differ
diff --git a/src/lay/lay/doc/images/drc_interacting2.png b/src/lay/lay/doc/images/drc_interacting2.png
index a67ed9efc..c924a17d1 100644
Binary files a/src/lay/lay/doc/images/drc_interacting2.png and b/src/lay/lay/doc/images/drc_interacting2.png differ
diff --git a/src/lay/lay/doc/images/drc_interacting3.png b/src/lay/lay/doc/images/drc_interacting3.png
index 91daa8762..1ca5f6703 100644
Binary files a/src/lay/lay/doc/images/drc_interacting3.png and b/src/lay/lay/doc/images/drc_interacting3.png differ
diff --git a/src/lay/lay/doc/images/drc_interacting4.png b/src/lay/lay/doc/images/drc_interacting4.png
index 38a4fd033..4eff34e8d 100644
Binary files a/src/lay/lay/doc/images/drc_interacting4.png and b/src/lay/lay/doc/images/drc_interacting4.png differ
diff --git a/src/lay/lay/doc/images/drc_interacting5.png b/src/lay/lay/doc/images/drc_interacting5.png
index 72b1316f7..63aa03f67 100644
Binary files a/src/lay/lay/doc/images/drc_interacting5.png and b/src/lay/lay/doc/images/drc_interacting5.png differ
diff --git a/src/lay/lay/doc/images/drc_join1.png b/src/lay/lay/doc/images/drc_join1.png
index d76202b20..b5acb1b0a 100644
Binary files a/src/lay/lay/doc/images/drc_join1.png and b/src/lay/lay/doc/images/drc_join1.png differ
diff --git a/src/lay/lay/doc/images/drc_join2.png b/src/lay/lay/doc/images/drc_join2.png
index f0e5afc18..b3d66c286 100644
Binary files a/src/lay/lay/doc/images/drc_join2.png and b/src/lay/lay/doc/images/drc_join2.png differ
diff --git a/src/lay/lay/doc/images/drc_merged1.png b/src/lay/lay/doc/images/drc_merged1.png
index f8902eb65..ff025981e 100644
Binary files a/src/lay/lay/doc/images/drc_merged1.png and b/src/lay/lay/doc/images/drc_merged1.png differ
diff --git a/src/lay/lay/doc/images/drc_merged2.png b/src/lay/lay/doc/images/drc_merged2.png
index 6e8aee84f..c66432764 100644
Binary files a/src/lay/lay/doc/images/drc_merged2.png and b/src/lay/lay/doc/images/drc_merged2.png differ
diff --git a/src/lay/lay/doc/images/drc_merged3.png b/src/lay/lay/doc/images/drc_merged3.png
index a6cc97752..24d14f99c 100644
Binary files a/src/lay/lay/doc/images/drc_merged3.png and b/src/lay/lay/doc/images/drc_merged3.png differ
diff --git a/src/lay/lay/doc/images/drc_merged4.png b/src/lay/lay/doc/images/drc_merged4.png
index fcdd01725..f66a7a02c 100644
Binary files a/src/lay/lay/doc/images/drc_merged4.png and b/src/lay/lay/doc/images/drc_merged4.png differ
diff --git a/src/lay/lay/doc/images/drc_middle1.png b/src/lay/lay/doc/images/drc_middle1.png
index ba9dca0d2..109ee09ad 100644
Binary files a/src/lay/lay/doc/images/drc_middle1.png and b/src/lay/lay/doc/images/drc_middle1.png differ
diff --git a/src/lay/lay/doc/images/drc_moved1.png b/src/lay/lay/doc/images/drc_moved1.png
index f7f0d3235..9fbd96ea1 100644
Binary files a/src/lay/lay/doc/images/drc_moved1.png and b/src/lay/lay/doc/images/drc_moved1.png differ
diff --git a/src/lay/lay/doc/images/drc_not1.png b/src/lay/lay/doc/images/drc_not1.png
index b222eed5d..c44c4d55e 100644
Binary files a/src/lay/lay/doc/images/drc_not1.png and b/src/lay/lay/doc/images/drc_not1.png differ
diff --git a/src/lay/lay/doc/images/drc_not2.png b/src/lay/lay/doc/images/drc_not2.png
index 17e258276..2e4c3784f 100644
Binary files a/src/lay/lay/doc/images/drc_not2.png and b/src/lay/lay/doc/images/drc_not2.png differ
diff --git a/src/lay/lay/doc/images/drc_not3.png b/src/lay/lay/doc/images/drc_not3.png
index a558b73eb..3a51db056 100644
Binary files a/src/lay/lay/doc/images/drc_not3.png and b/src/lay/lay/doc/images/drc_not3.png differ
diff --git a/src/lay/lay/doc/images/drc_not_covering.png b/src/lay/lay/doc/images/drc_not_covering.png
index 4a89f993a..a192aecd3 100644
Binary files a/src/lay/lay/doc/images/drc_not_covering.png and b/src/lay/lay/doc/images/drc_not_covering.png differ
diff --git a/src/lay/lay/doc/images/drc_not_in.png b/src/lay/lay/doc/images/drc_not_in.png
index 588a5ddec..784aab798 100644
Binary files a/src/lay/lay/doc/images/drc_not_in.png and b/src/lay/lay/doc/images/drc_not_in.png differ
diff --git a/src/lay/lay/doc/images/drc_not_inside.png b/src/lay/lay/doc/images/drc_not_inside.png
index 069afb6b3..16146f7aa 100644
Binary files a/src/lay/lay/doc/images/drc_not_inside.png and b/src/lay/lay/doc/images/drc_not_inside.png differ
diff --git a/src/lay/lay/doc/images/drc_not_interacting.png b/src/lay/lay/doc/images/drc_not_interacting.png
index e1124a818..66f1d8478 100644
Binary files a/src/lay/lay/doc/images/drc_not_interacting.png and b/src/lay/lay/doc/images/drc_not_interacting.png differ
diff --git a/src/lay/lay/doc/images/drc_not_interacting2.png b/src/lay/lay/doc/images/drc_not_interacting2.png
index d6105f972..cb6ec6d38 100644
Binary files a/src/lay/lay/doc/images/drc_not_interacting2.png and b/src/lay/lay/doc/images/drc_not_interacting2.png differ
diff --git a/src/lay/lay/doc/images/drc_not_interacting3.png b/src/lay/lay/doc/images/drc_not_interacting3.png
index 32604950c..069e09508 100644
Binary files a/src/lay/lay/doc/images/drc_not_interacting3.png and b/src/lay/lay/doc/images/drc_not_interacting3.png differ
diff --git a/src/lay/lay/doc/images/drc_not_interacting4.png b/src/lay/lay/doc/images/drc_not_interacting4.png
index 6a02f22cc..d78b0219e 100644
Binary files a/src/lay/lay/doc/images/drc_not_interacting4.png and b/src/lay/lay/doc/images/drc_not_interacting4.png differ
diff --git a/src/lay/lay/doc/images/drc_not_interacting5.png b/src/lay/lay/doc/images/drc_not_interacting5.png
index a7a81e180..ee77c5bdd 100644
Binary files a/src/lay/lay/doc/images/drc_not_interacting5.png and b/src/lay/lay/doc/images/drc_not_interacting5.png differ
diff --git a/src/lay/lay/doc/images/drc_not_outside.png b/src/lay/lay/doc/images/drc_not_outside.png
index 00e0104f5..f2519219a 100644
Binary files a/src/lay/lay/doc/images/drc_not_outside.png and b/src/lay/lay/doc/images/drc_not_outside.png differ
diff --git a/src/lay/lay/doc/images/drc_not_overlapping.png b/src/lay/lay/doc/images/drc_not_overlapping.png
index 40661ce0e..9909a7f36 100644
Binary files a/src/lay/lay/doc/images/drc_not_overlapping.png and b/src/lay/lay/doc/images/drc_not_overlapping.png differ
diff --git a/src/lay/lay/doc/images/drc_or1.png b/src/lay/lay/doc/images/drc_or1.png
index 0763b79d2..7357a705c 100644
Binary files a/src/lay/lay/doc/images/drc_or1.png and b/src/lay/lay/doc/images/drc_or1.png differ
diff --git a/src/lay/lay/doc/images/drc_or2.png b/src/lay/lay/doc/images/drc_or2.png
index fdd7cab47..0aa51b9fa 100644
Binary files a/src/lay/lay/doc/images/drc_or2.png and b/src/lay/lay/doc/images/drc_or2.png differ
diff --git a/src/lay/lay/doc/images/drc_outside.png b/src/lay/lay/doc/images/drc_outside.png
index a3913d379..0345e4258 100644
Binary files a/src/lay/lay/doc/images/drc_outside.png and b/src/lay/lay/doc/images/drc_outside.png differ
diff --git a/src/lay/lay/doc/images/drc_outside_part.png b/src/lay/lay/doc/images/drc_outside_part.png
index 213f7a15e..34cc504d2 100644
Binary files a/src/lay/lay/doc/images/drc_outside_part.png and b/src/lay/lay/doc/images/drc_outside_part.png differ
diff --git a/src/lay/lay/doc/images/drc_overlap1.png b/src/lay/lay/doc/images/drc_overlap1.png
index e4bd2d325..f58070e79 100644
Binary files a/src/lay/lay/doc/images/drc_overlap1.png and b/src/lay/lay/doc/images/drc_overlap1.png differ
diff --git a/src/lay/lay/doc/images/drc_overlap1u.png b/src/lay/lay/doc/images/drc_overlap1u.png
index 4fa168ee3..72401d229 100644
Binary files a/src/lay/lay/doc/images/drc_overlap1u.png and b/src/lay/lay/doc/images/drc_overlap1u.png differ
diff --git a/src/lay/lay/doc/images/drc_overlap2.png b/src/lay/lay/doc/images/drc_overlap2.png
index 108b48822..4da4a00ab 100644
Binary files a/src/lay/lay/doc/images/drc_overlap2.png and b/src/lay/lay/doc/images/drc_overlap2.png differ
diff --git a/src/lay/lay/doc/images/drc_overlap2u.png b/src/lay/lay/doc/images/drc_overlap2u.png
index 9c246f0e8..6b4666f18 100644
Binary files a/src/lay/lay/doc/images/drc_overlap2u.png and b/src/lay/lay/doc/images/drc_overlap2u.png differ
diff --git a/src/lay/lay/doc/images/drc_overlapping.png b/src/lay/lay/doc/images/drc_overlapping.png
index c066614e0..d3f803281 100644
Binary files a/src/lay/lay/doc/images/drc_overlapping.png and b/src/lay/lay/doc/images/drc_overlapping.png differ
diff --git a/src/lay/lay/doc/images/drc_raw1.png b/src/lay/lay/doc/images/drc_raw1.png
index 38490f5c1..81d56369b 100644
Binary files a/src/lay/lay/doc/images/drc_raw1.png and b/src/lay/lay/doc/images/drc_raw1.png differ
diff --git a/src/lay/lay/doc/images/drc_raw2.png b/src/lay/lay/doc/images/drc_raw2.png
index e788362dc..2803f371f 100644
Binary files a/src/lay/lay/doc/images/drc_raw2.png and b/src/lay/lay/doc/images/drc_raw2.png differ
diff --git a/src/lay/lay/doc/images/drc_raw3.png b/src/lay/lay/doc/images/drc_raw3.png
index dffd596e6..f335740ad 100644
Binary files a/src/lay/lay/doc/images/drc_raw3.png and b/src/lay/lay/doc/images/drc_raw3.png differ
diff --git a/src/lay/lay/doc/images/drc_rotated1.png b/src/lay/lay/doc/images/drc_rotated1.png
index f16aaf3d3..10f561f25 100644
Binary files a/src/lay/lay/doc/images/drc_rotated1.png and b/src/lay/lay/doc/images/drc_rotated1.png differ
diff --git a/src/lay/lay/doc/images/drc_rounded_corners.png b/src/lay/lay/doc/images/drc_rounded_corners.png
index 984f71ae2..49dfb4495 100644
Binary files a/src/lay/lay/doc/images/drc_rounded_corners.png and b/src/lay/lay/doc/images/drc_rounded_corners.png differ
diff --git a/src/lay/lay/doc/images/drc_scaled1.png b/src/lay/lay/doc/images/drc_scaled1.png
index a0ae3fdbc..10595dfee 100644
Binary files a/src/lay/lay/doc/images/drc_scaled1.png and b/src/lay/lay/doc/images/drc_scaled1.png differ
diff --git a/src/lay/lay/doc/images/drc_separation1.png b/src/lay/lay/doc/images/drc_separation1.png
index e982d2871..1dfa0e9f3 100644
Binary files a/src/lay/lay/doc/images/drc_separation1.png and b/src/lay/lay/doc/images/drc_separation1.png differ
diff --git a/src/lay/lay/doc/images/drc_separation10.png b/src/lay/lay/doc/images/drc_separation10.png
index af8fdeac7..041e66910 100644
Binary files a/src/lay/lay/doc/images/drc_separation10.png and b/src/lay/lay/doc/images/drc_separation10.png differ
diff --git a/src/lay/lay/doc/images/drc_separation11.png b/src/lay/lay/doc/images/drc_separation11.png
index de975994c..bfa3d688f 100644
Binary files a/src/lay/lay/doc/images/drc_separation11.png and b/src/lay/lay/doc/images/drc_separation11.png differ
diff --git a/src/lay/lay/doc/images/drc_separation1u.png b/src/lay/lay/doc/images/drc_separation1u.png
index 1f0db1ee8..c3bbe1416 100644
Binary files a/src/lay/lay/doc/images/drc_separation1u.png and b/src/lay/lay/doc/images/drc_separation1u.png differ
diff --git a/src/lay/lay/doc/images/drc_separation1un.png b/src/lay/lay/doc/images/drc_separation1un.png
index 26a5fbd91..f3cd674a9 100644
Binary files a/src/lay/lay/doc/images/drc_separation1un.png and b/src/lay/lay/doc/images/drc_separation1un.png differ
diff --git a/src/lay/lay/doc/images/drc_separation2.png b/src/lay/lay/doc/images/drc_separation2.png
index 9878580aa..9859e8e4b 100644
Binary files a/src/lay/lay/doc/images/drc_separation2.png and b/src/lay/lay/doc/images/drc_separation2.png differ
diff --git a/src/lay/lay/doc/images/drc_separation3.png b/src/lay/lay/doc/images/drc_separation3.png
index 54425378d..cfdd7f26b 100644
Binary files a/src/lay/lay/doc/images/drc_separation3.png and b/src/lay/lay/doc/images/drc_separation3.png differ
diff --git a/src/lay/lay/doc/images/drc_separation4.png b/src/lay/lay/doc/images/drc_separation4.png
index 818d2ef7d..7c3d58d68 100644
Binary files a/src/lay/lay/doc/images/drc_separation4.png and b/src/lay/lay/doc/images/drc_separation4.png differ
diff --git a/src/lay/lay/doc/images/drc_separation5.png b/src/lay/lay/doc/images/drc_separation5.png
index dea235507..7087dfe60 100644
Binary files a/src/lay/lay/doc/images/drc_separation5.png and b/src/lay/lay/doc/images/drc_separation5.png differ
diff --git a/src/lay/lay/doc/images/drc_separation6.png b/src/lay/lay/doc/images/drc_separation6.png
index f21d778a8..dfa38c475 100644
Binary files a/src/lay/lay/doc/images/drc_separation6.png and b/src/lay/lay/doc/images/drc_separation6.png differ
diff --git a/src/lay/lay/doc/images/drc_separation7.png b/src/lay/lay/doc/images/drc_separation7.png
index 0a76ec4de..95006d6af 100644
Binary files a/src/lay/lay/doc/images/drc_separation7.png and b/src/lay/lay/doc/images/drc_separation7.png differ
diff --git a/src/lay/lay/doc/images/drc_separation8.png b/src/lay/lay/doc/images/drc_separation8.png
index 638722f9b..1dc539958 100644
Binary files a/src/lay/lay/doc/images/drc_separation8.png and b/src/lay/lay/doc/images/drc_separation8.png differ
diff --git a/src/lay/lay/doc/images/drc_separation9.png b/src/lay/lay/doc/images/drc_separation9.png
index c6a675e18..a6da75eaa 100644
Binary files a/src/lay/lay/doc/images/drc_separation9.png and b/src/lay/lay/doc/images/drc_separation9.png differ
diff --git a/src/lay/lay/doc/images/drc_shielded1.png b/src/lay/lay/doc/images/drc_shielded1.png
index aa788f104..22b98c231 100644
Binary files a/src/lay/lay/doc/images/drc_shielded1.png and b/src/lay/lay/doc/images/drc_shielded1.png differ
diff --git a/src/lay/lay/doc/images/drc_shielded2.png b/src/lay/lay/doc/images/drc_shielded2.png
index 1ee78bb0e..0116e6229 100644
Binary files a/src/lay/lay/doc/images/drc_shielded2.png and b/src/lay/lay/doc/images/drc_shielded2.png differ
diff --git a/src/lay/lay/doc/images/drc_shielded3.png b/src/lay/lay/doc/images/drc_shielded3.png
index ba1ab8312..d7c3abf0b 100644
Binary files a/src/lay/lay/doc/images/drc_shielded3.png and b/src/lay/lay/doc/images/drc_shielded3.png differ
diff --git a/src/lay/lay/doc/images/drc_shielded4.png b/src/lay/lay/doc/images/drc_shielded4.png
index c1644a2ec..f7fbc75fc 100644
Binary files a/src/lay/lay/doc/images/drc_shielded4.png and b/src/lay/lay/doc/images/drc_shielded4.png differ
diff --git a/src/lay/lay/doc/images/drc_sized1.png b/src/lay/lay/doc/images/drc_sized1.png
index daae1b5ec..445a60538 100644
Binary files a/src/lay/lay/doc/images/drc_sized1.png and b/src/lay/lay/doc/images/drc_sized1.png differ
diff --git a/src/lay/lay/doc/images/drc_sized2.png b/src/lay/lay/doc/images/drc_sized2.png
index 1e5f2514d..db23995c6 100644
Binary files a/src/lay/lay/doc/images/drc_sized2.png and b/src/lay/lay/doc/images/drc_sized2.png differ
diff --git a/src/lay/lay/doc/images/drc_sized3.png b/src/lay/lay/doc/images/drc_sized3.png
index 63946cc16..247bda8b2 100644
Binary files a/src/lay/lay/doc/images/drc_sized3.png and b/src/lay/lay/doc/images/drc_sized3.png differ
diff --git a/src/lay/lay/doc/images/drc_sized4.png b/src/lay/lay/doc/images/drc_sized4.png
index c4d470f98..5e180f7d2 100644
Binary files a/src/lay/lay/doc/images/drc_sized4.png and b/src/lay/lay/doc/images/drc_sized4.png differ
diff --git a/src/lay/lay/doc/images/drc_sized5.png b/src/lay/lay/doc/images/drc_sized5.png
index 4426443b4..7caace4de 100644
Binary files a/src/lay/lay/doc/images/drc_sized5.png and b/src/lay/lay/doc/images/drc_sized5.png differ
diff --git a/src/lay/lay/doc/images/drc_sized6.png b/src/lay/lay/doc/images/drc_sized6.png
index 0849455da..83677eef9 100644
Binary files a/src/lay/lay/doc/images/drc_sized6.png and b/src/lay/lay/doc/images/drc_sized6.png differ
diff --git a/src/lay/lay/doc/images/drc_space1.png b/src/lay/lay/doc/images/drc_space1.png
index a4d6a8877..96caf65c2 100644
Binary files a/src/lay/lay/doc/images/drc_space1.png and b/src/lay/lay/doc/images/drc_space1.png differ
diff --git a/src/lay/lay/doc/images/drc_space1u.png b/src/lay/lay/doc/images/drc_space1u.png
index 617e6af62..c3fc2f8a1 100644
Binary files a/src/lay/lay/doc/images/drc_space1u.png and b/src/lay/lay/doc/images/drc_space1u.png differ
diff --git a/src/lay/lay/doc/images/drc_space2.png b/src/lay/lay/doc/images/drc_space2.png
index 713378517..5b7b015c6 100644
Binary files a/src/lay/lay/doc/images/drc_space2.png and b/src/lay/lay/doc/images/drc_space2.png differ
diff --git a/src/lay/lay/doc/images/drc_space2u.png b/src/lay/lay/doc/images/drc_space2u.png
index d223d9663..0f3303314 100644
Binary files a/src/lay/lay/doc/images/drc_space2u.png and b/src/lay/lay/doc/images/drc_space2u.png differ
diff --git a/src/lay/lay/doc/images/drc_space3.png b/src/lay/lay/doc/images/drc_space3.png
index a9ddcd213..9273739f0 100644
Binary files a/src/lay/lay/doc/images/drc_space3.png and b/src/lay/lay/doc/images/drc_space3.png differ
diff --git a/src/lay/lay/doc/images/drc_space3u.png b/src/lay/lay/doc/images/drc_space3u.png
index 41b7853de..2d304de7c 100644
Binary files a/src/lay/lay/doc/images/drc_space3u.png and b/src/lay/lay/doc/images/drc_space3u.png differ
diff --git a/src/lay/lay/doc/images/drc_start_segments1.png b/src/lay/lay/doc/images/drc_start_segments1.png
index bdd7c7051..377a6ac57 100644
Binary files a/src/lay/lay/doc/images/drc_start_segments1.png and b/src/lay/lay/doc/images/drc_start_segments1.png differ
diff --git a/src/lay/lay/doc/images/drc_start_segments2.png b/src/lay/lay/doc/images/drc_start_segments2.png
index 8c23e1c0b..ad269e32d 100644
Binary files a/src/lay/lay/doc/images/drc_start_segments2.png and b/src/lay/lay/doc/images/drc_start_segments2.png differ
diff --git a/src/lay/lay/doc/images/drc_textpoly1.png b/src/lay/lay/doc/images/drc_textpoly1.png
index d43240264..487cfcc9c 100644
Binary files a/src/lay/lay/doc/images/drc_textpoly1.png and b/src/lay/lay/doc/images/drc_textpoly1.png differ
diff --git a/src/lay/lay/doc/images/drc_textpoly2.png b/src/lay/lay/doc/images/drc_textpoly2.png
index ff84fb7b0..e6eec02b4 100644
Binary files a/src/lay/lay/doc/images/drc_textpoly2.png and b/src/lay/lay/doc/images/drc_textpoly2.png differ
diff --git a/src/lay/lay/doc/images/drc_texts1.png b/src/lay/lay/doc/images/drc_texts1.png
index 44e30c5bb..a3c5eabf2 100644
Binary files a/src/lay/lay/doc/images/drc_texts1.png and b/src/lay/lay/doc/images/drc_texts1.png differ
diff --git a/src/lay/lay/doc/images/drc_texts2.png b/src/lay/lay/doc/images/drc_texts2.png
index 010c0abca..2e672d4ce 100644
Binary files a/src/lay/lay/doc/images/drc_texts2.png and b/src/lay/lay/doc/images/drc_texts2.png differ
diff --git a/src/lay/lay/doc/images/drc_transformed1.png b/src/lay/lay/doc/images/drc_transformed1.png
index 3fbbc5af2..1c8f240f0 100644
Binary files a/src/lay/lay/doc/images/drc_transformed1.png and b/src/lay/lay/doc/images/drc_transformed1.png differ
diff --git a/src/lay/lay/doc/images/drc_width1.png b/src/lay/lay/doc/images/drc_width1.png
index afc906e51..e603ea2ec 100644
Binary files a/src/lay/lay/doc/images/drc_width1.png and b/src/lay/lay/doc/images/drc_width1.png differ
diff --git a/src/lay/lay/doc/images/drc_width1u.png b/src/lay/lay/doc/images/drc_width1u.png
index dfdc2267f..0620c9f52 100644
Binary files a/src/lay/lay/doc/images/drc_width1u.png and b/src/lay/lay/doc/images/drc_width1u.png differ
diff --git a/src/lay/lay/doc/images/drc_width2.png b/src/lay/lay/doc/images/drc_width2.png
index e27d018ef..adbd23e3e 100644
Binary files a/src/lay/lay/doc/images/drc_width2.png and b/src/lay/lay/doc/images/drc_width2.png differ
diff --git a/src/lay/lay/doc/images/drc_width2u.png b/src/lay/lay/doc/images/drc_width2u.png
index da04841dd..72059ed49 100644
Binary files a/src/lay/lay/doc/images/drc_width2u.png and b/src/lay/lay/doc/images/drc_width2u.png differ
diff --git a/src/lay/lay/doc/images/drc_width3.png b/src/lay/lay/doc/images/drc_width3.png
index 47a5c108f..b6e4f245d 100644
Binary files a/src/lay/lay/doc/images/drc_width3.png and b/src/lay/lay/doc/images/drc_width3.png differ
diff --git a/src/lay/lay/doc/images/drc_width3u.png b/src/lay/lay/doc/images/drc_width3u.png
index 3766720b1..d8b9975fa 100644
Binary files a/src/lay/lay/doc/images/drc_width3u.png and b/src/lay/lay/doc/images/drc_width3u.png differ
diff --git a/src/lay/lay/doc/images/drc_width4.png b/src/lay/lay/doc/images/drc_width4.png
index afef4849c..10024dbfd 100644
Binary files a/src/lay/lay/doc/images/drc_width4.png and b/src/lay/lay/doc/images/drc_width4.png differ
diff --git a/src/lay/lay/doc/images/drc_width4u.png b/src/lay/lay/doc/images/drc_width4u.png
index 6434c0e14..481c252f2 100644
Binary files a/src/lay/lay/doc/images/drc_width4u.png and b/src/lay/lay/doc/images/drc_width4u.png differ
diff --git a/src/lay/lay/doc/images/drc_width5u.png b/src/lay/lay/doc/images/drc_width5u.png
index 9bcd5eadf..df054f8b5 100644
Binary files a/src/lay/lay/doc/images/drc_width5u.png and b/src/lay/lay/doc/images/drc_width5u.png differ
diff --git a/src/lay/lay/doc/images/drc_width6u.png b/src/lay/lay/doc/images/drc_width6u.png
index 664e44a3e..5c25d49a4 100644
Binary files a/src/lay/lay/doc/images/drc_width6u.png and b/src/lay/lay/doc/images/drc_width6u.png differ
diff --git a/src/lay/lay/doc/images/drc_with_angle1.png b/src/lay/lay/doc/images/drc_with_angle1.png
index ec941dbbb..77e234653 100644
Binary files a/src/lay/lay/doc/images/drc_with_angle1.png and b/src/lay/lay/doc/images/drc_with_angle1.png differ
diff --git a/src/lay/lay/doc/images/drc_with_angle2.png b/src/lay/lay/doc/images/drc_with_angle2.png
index 7deb564f0..c122a281b 100644
Binary files a/src/lay/lay/doc/images/drc_with_angle2.png and b/src/lay/lay/doc/images/drc_with_angle2.png differ
diff --git a/src/lay/lay/doc/images/drc_with_angle3.png b/src/lay/lay/doc/images/drc_with_angle3.png
index 98df2c5f8..1e04a839b 100644
Binary files a/src/lay/lay/doc/images/drc_with_angle3.png and b/src/lay/lay/doc/images/drc_with_angle3.png differ
diff --git a/src/lay/lay/doc/images/drc_with_angle4.png b/src/lay/lay/doc/images/drc_with_angle4.png
index 605b45d14..2fc74b3c7 100644
Binary files a/src/lay/lay/doc/images/drc_with_angle4.png and b/src/lay/lay/doc/images/drc_with_angle4.png differ
diff --git a/src/lay/lay/doc/images/drc_xor1.png b/src/lay/lay/doc/images/drc_xor1.png
index 9e7b24970..d33f65b84 100644
Binary files a/src/lay/lay/doc/images/drc_xor1.png and b/src/lay/lay/doc/images/drc_xor1.png differ
diff --git a/src/lay/lay/doc/images/drc_xor2.png b/src/lay/lay/doc/images/drc_xor2.png
index 246364a18..ec9da5c2b 100644
Binary files a/src/lay/lay/doc/images/drc_xor2.png and b/src/lay/lay/doc/images/drc_xor2.png differ
diff --git a/testdata/drc/drcSimpleTests_5.drc b/testdata/drc/drcSimpleTests_5.drc
index 28b655ea6..0ec16cc9a 100644
--- a/testdata/drc/drcSimpleTests_5.drc
+++ b/testdata/drc/drcSimpleTests_5.drc
@@ -19,6 +19,9 @@ connect(poly, poly_cont)
connect(poly_cont, metal1)
antenna_check(gate, metal1, 1.0).output(201)
+values = labels
+antenna_check(gate, metal1, 1.0, values).output(201, 1)
+values.output(201, 10)
antenna_check(gate, metal1, 2.0).output(202)
antenna_check(gate, metal1, 3.0).output(203)
antenna_check(gate, metal1, 4.0).output(204)
@@ -32,6 +35,9 @@ connect(metal1, via1)
connect(via1, metal2)
antenna_check(gate, metal2, 1.0).output(101)
+values = labels
+antenna_check(gate, metal2, 1.0, values).output(101, 1)
+values.output(101, 10)
antenna_check(gate, metal2, 5.0).output(105)
antenna_check(gate, metal2, 10.0).output(110)
antenna_check(gate, metal2, 50.0).output(150)
diff --git a/testdata/drc/drcSimpleTests_5i.drc b/testdata/drc/drcSimpleTests_5i.drc
index 973cdfa7e..2bc555a0b 100644
--- a/testdata/drc/drcSimpleTests_5i.drc
+++ b/testdata/drc/drcSimpleTests_5i.drc
@@ -19,6 +19,9 @@ connect(poly, poly_cont)
connect(poly_cont, metal1)
antenna_check(gate, metal1, 1.0).output(201)
+values = labels
+antenna_check(gate, metal1, 1.0, values).output(201, 1)
+values.output(201, 10)
antenna_check(gate, metal1, 2.0).output(202)
antenna_check(gate, metal1, 3.0).output(203)
antenna_check(gate, metal1, 4.0).output(204)
@@ -27,6 +30,9 @@ connect(metal1, via1)
connect(via1, metal2)
antenna_check(gate, metal2, 1.0).output(101)
+values = labels
+antenna_check(gate, metal2, 1.0, values).output(101, 1)
+values.output(101, 10)
antenna_check(gate, metal2, 5.0).output(105)
antenna_check(gate, metal2, 10.0).output(110)
antenna_check(gate, metal2, 50.0).output(150)
diff --git a/testdata/drc/drcSimpleTests_6.drc b/testdata/drc/drcSimpleTests_6.drc
index 998f43ce1..9953ee782 100644
--- a/testdata/drc/drcSimpleTests_6.drc
+++ b/testdata/drc/drcSimpleTests_6.drc
@@ -23,6 +23,9 @@ connect(metal1, via1)
connect(via1, metal2)
antenna_check(gate, metal2, 1.0).output(101)
+values = labels
+antenna_check(gate, metal2, 1.0, values).output(101, 1)
+values.output(101, 10)
antenna_check(gate, metal2, 5.0).output(105)
antenna_check(gate, metal2, 10.0).output(110)
antenna_check(gate, metal2, 50.0).output(150)
diff --git a/testdata/drc/drcSimpleTests_7.drc b/testdata/drc/drcSimpleTests_7.drc
index 28797e54b..dc2ffc5e0 100644
--- a/testdata/drc/drcSimpleTests_7.drc
+++ b/testdata/drc/drcSimpleTests_7.drc
@@ -26,6 +26,9 @@ connect(metal1, via1)
connect(via1, metal2)
antenna_check(gate, metal2, 1.0, diode).output(101)
+values = labels
+antenna_check(gate, metal2, 1.0, diode, values).output(101, 1)
+values.output(101, 10)
antenna_check(gate, metal2, 1.5, diode).output(102)
antenna_check(gate, metal2, 2.0, diode).output(103)
antenna_check(gate, metal2, 5.0, diode).output(105)
@@ -33,12 +36,18 @@ antenna_check(gate, metal2, 10.0, diode).output(110)
antenna_check(gate, metal2, 50.0, diode).output(150)
antenna_check(gate, metal2, 1.0, [ diode, 0.5 ]).output(201)
+values = labels
+antenna_check(gate, metal2, 1.0, [ diode, 0.5 ], values).output(201, 1)
+values.output(201, 10)
antenna_check(gate, metal2, 1.0, [ diode, 5.0 ]).output(202)
antenna_check(gate, metal2, 5.0, [ diode, 5.0 ]).output(205)
antenna_check(gate, metal2, 10.0, [ diode, 5.0 ]).output(210)
antenna_check(gate, metal2, 50.0, [ diode, 5.0 ]).output(250)
antenna_check(area_only(gate), area_and_perimeter(metal2, 0.2.um), 1.0, diode).output(301)
+values = labels
+antenna_check(area_only(gate), area_and_perimeter(metal2, 0.2.um), 1.0, diode, values).output(301, 1)
+values.output(301, 10)
antenna_check(area_only(gate), area_and_perimeter(metal2, 0.2.um), 1.5, diode).output(302)
antenna_check(area_only(gate), area_and_perimeter(metal2, 0.2.um), 2.0, diode).output(303)
antenna_check(area_only(gate), area_and_perimeter(metal2, 0.2), 5.0, diode).output(305)
@@ -46,6 +55,9 @@ antenna_check(area_only(gate), area_and_perimeter(metal2, 0.0002.mm), 10.0, diod
antenna_check(area_only(gate), area_and_perimeter(metal2, 200.nm), 50.0, diode).output(350)
antenna_check(area_and_perimeter(gate, 0.07.um), area_only(metal2), 1.0, diode).output(401)
+values = labels
+antenna_check(area_and_perimeter(gate, 0.07.um), area_only(metal2), 1.0, diode, values).output(401, 1)
+values.output(401, 10)
antenna_check(area_and_perimeter(gate, 0.07.um), area_only(metal2), 1.5, diode).output(402)
antenna_check(area_and_perimeter(gate, 0.07.um), area_only(metal2), 2.0, diode).output(403)
antenna_check(area_and_perimeter(gate, 70.nm), area_only(metal2), 5.0, diode).output(405)
@@ -53,6 +65,9 @@ antenna_check(area_and_perimeter(gate, 0.07), area_only(metal2), 10.0, diode).ou
antenna_check(area_and_perimeter(gate, 0.07), area_only(metal2), 50.0, diode).output(450)
antenna_check(perimeter_only(gate, 0.07.um), area_only(metal2), 1.0, diode).output(501)
+values = labels
+antenna_check(perimeter_only(gate, 0.07.um), area_only(metal2), 1.0, diode, values).output(501, 1)
+values.output(501, 10)
antenna_check(perimeter_only(gate, 0.07.um), area_only(metal2), 1.5, diode).output(502)
antenna_check(perimeter_only(gate, 0.07.um), area_only(metal2), 2.0, diode).output(503)
antenna_check(perimeter_only(gate, 70.nm), area_only(metal2), 5.0, diode).output(505)
diff --git a/testdata/drc/drcSimpleTests_au5.gds b/testdata/drc/drcSimpleTests_au5.gds
index 064e177b1..cf85326dd 100644
Binary files a/testdata/drc/drcSimpleTests_au5.gds and b/testdata/drc/drcSimpleTests_au5.gds differ
diff --git a/testdata/drc/drcSimpleTests_au6.gds b/testdata/drc/drcSimpleTests_au6.gds
index 75a2525f9..a1bc32508 100644
Binary files a/testdata/drc/drcSimpleTests_au6.gds and b/testdata/drc/drcSimpleTests_au6.gds differ
diff --git a/testdata/drc/drcSimpleTests_au7.gds b/testdata/drc/drcSimpleTests_au7.gds
index cb53332ae..582724aac 100644
Binary files a/testdata/drc/drcSimpleTests_au7.gds and b/testdata/drc/drcSimpleTests_au7.gds differ