Added a (obvious, in retrospect) additional automatic handling of

nets to be avoided for running antenna gate and diffusion area
checks when doing "lef write", which is to check if the pin of
the net is flagged with use "power" or use "ground".  This avoids
the need to use the (recently added) "lef nocheck" option (although
that still exists as an additional way to control which nets do and
do not get checked).
This commit is contained in:
Tim Edwards 2023-07-05 12:37:56 -04:00
parent c8a2d06e08
commit cc4eef4eb1
3 changed files with 26 additions and 4 deletions

View File

@ -1 +1 @@
8.3.409
8.3.410

View File

@ -76,6 +76,18 @@ LEF-format input and output
itself would be written to a DEF file. <BR>
Options <B>-hide</B>, <B>-tech</B>, and <B>-toplayer</B> are
the same as for the <B>lef write</B> command.
<DT> <B>nocheck</B> [<I>netname</I> ...]|[<B>none</B>]
<DD> Do not check for antenna diffusion and gate area on the nets with
the names given as option <I>netname</I>.
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
"<B>power</B>" or "<B>ground</B>", 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 "<B>none</B>", removes the
list of net names for which antenna checks should be skipped.
<DT> <B>datestamp</B> [<I>value</I>|<B>default</B>]
<DD> Force all cell definitions generated from LEF macros to have
the datestamp (timestamp) of <I>value</I>. This can be used to

View File

@ -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);