diff --git a/VERSION b/VERSION
index be769205..3411c173 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-8.3.409
+8.3.410
diff --git a/doc/html/lef.html b/doc/html/lef.html
index c387cf64..c632dc23 100644
--- a/doc/html/lef.html
+++ b/doc/html/lef.html
@@ -76,6 +76,18 @@ LEF-format input and output
itself would be written to a DEF file.
Options -hide, -tech, and -toplayer are
the same as for the lef write command.
+
nocheck [netname ...]|[none]
+ Do not check for antenna diffusion and gate area on the nets with
+ the names given as option netname.
+ Any number of net names may be given as arguments. Typically,
+ power and ground nets should not need these checks. If the nets
+ are attached to port labels that have been flagged with the use
+ "power" or "ground", then these nets will be
+ skipped automatically. If not, then this command option provides
+ an alternative way to avoid running the checks, which can cause
+ a huge performance hit when generating a LEF view of a large
+ layout. With the single argument "none", removes the
+ list of net names for which antenna checks should be skipped.
datestamp [value|default]
Force all cell definitions generated from LEF macros to have
the datestamp (timestamp) of value. This can be used to
diff --git a/lef/lefWrite.c b/lef/lefWrite.c
index 7dcc6388..aed92f05 100644
--- a/lef/lefWrite.c
+++ b/lef/lefWrite.c
@@ -1442,12 +1442,22 @@ lefWriteMacro(def, f, scale, setback, pinonly, toplayer, domaster)
scx.scx_area = labr;
SelectClear();
- // Check for net names to ignore for antenna checks.
ignored = FALSE;
- for (lnn = lefIgnoreNets; lnn; lnn = lnn->lnn_next)
- if (!strcmp(lnn->lnn_name, lab->lab_text))
+
+ // Ports that have been flagged as power or ground should not be
+ // checked for antenna diffusion and gate area.
+
+ if ((lab->lab_flags & PORT_DIR_MASK) != 0)
+ if (((lab->lab_flags & PORT_USE_MASK) == PORT_USE_POWER) ||
+ ((lab->lab_flags & PORT_USE_MASK) == PORT_USE_GROUND))
ignored = TRUE;
+ // Check for net names to ignore for antenna checks.
+ if (!ignored)
+ for (lnn = lefIgnoreNets; lnn; lnn = lnn->lnn_next)
+ if (!strcmp(lnn->lnn_name, lab->lab_text))
+ ignored = TRUE;
+
if (!ignored || (setback != 0))
SelectNet(&scx, lab->lab_type, 0, NULL, FALSE);