114 lines
4.0 KiB
HTML
114 lines
4.0 KiB
HTML
<HTML>
|
|
<HEAD>
|
|
<STYLE type="text/css">
|
|
H1 {color: black }
|
|
H2 {color: maroon }
|
|
H3 {color: #007090 }
|
|
A.head:link {color: #0060a0 }
|
|
A.head:visited {color: #3040c0 }
|
|
A.head:active {color: white }
|
|
A.head:hover {color: yellow }
|
|
A.red:link {color: red }
|
|
A.red:visited {color: maroon }
|
|
A.red:active {color: yellow }
|
|
</STYLE>
|
|
</HEAD>
|
|
<TITLE>Magic-8.3 Command Reference</TITLE>
|
|
<BODY BACKGROUND=graphics/blpaper.gif>
|
|
<H1> <IMG SRC=graphics/magic_title8_3.png ALT="Magic VLSI Layout Tool Version 8.3">
|
|
<IMG SRC=graphics/magic_OGL_sm.gif ALIGN="top" ALT="*"> </H1>
|
|
|
|
<H2>cellsearch</H2>
|
|
<HR>
|
|
Execute a TCL procedure on each cell definition or instance in the hierarchy
|
|
<HR>
|
|
|
|
<H3>Usage:</H3>
|
|
<BLOCKQUOTE>
|
|
<B>cellsearch</B> [<B>instances</B>] <I>procedure</I> <BR><BR>
|
|
<BLOCKQUOTE>
|
|
where <I>procedure</I> is the name of a predefined Tcl procedure
|
|
(see Summary, below).
|
|
</BLOCKQUOTE>
|
|
</BLOCKQUOTE>
|
|
|
|
<H3>Summary:</H3>
|
|
<BLOCKQUOTE>
|
|
The <B>cellsearch</B> command is a method for user access to
|
|
the <B>magic</B> database search routines. It searches the
|
|
hierarchical database for all cell definitions and applies
|
|
the callback procedure to each. If the <B>instances</B>
|
|
keyword is present, it searches the database for all cell
|
|
instances and applies the callback procedure to each. The
|
|
callback procedure must be defined as described below.
|
|
Note that the callback method into Tcl is inherently slow
|
|
and should only be used for non-compute-intensive tasks. <P>
|
|
|
|
The Tcl callback procedure for the <B>instances</B> version of
|
|
the <B>cellsearch</B> command is passed six values, the bounding
|
|
box coordinates of the instance, the instance use name (id), and
|
|
the name of the parent cell definition. The procedure must be
|
|
defined to accept these six arguments, as in the following
|
|
example:
|
|
<BLOCKQUOTE> <TT> <PRE>
|
|
proc inst_callback {llx lly urx ury usename defname} {
|
|
puts stdout "Instance $usename of $defname bbox $llx $lly $urx $ury"
|
|
}
|
|
</PRE> </TT> </BLOCKQUOTE>
|
|
|
|
The Tcl callback procedure for the cell definition search
|
|
is passed one value, the name of the cell definition. The
|
|
procedure must be defined to accept this single argument, as
|
|
in the following example:
|
|
<BLOCKQUOTE> <TT> <PRE>
|
|
proc def_callback {defname} {
|
|
puts stdout "Cell $defname"
|
|
}
|
|
</PRE> </TT> </BLOCKQUOTE>
|
|
</BLOCKQUOTE>
|
|
|
|
<H3>Implementation Notes:</H3>
|
|
<BLOCKQUOTE>
|
|
<B>cellsearch</B> is implemented as an internal <B>magic</B>
|
|
command that links to an external Tcl procedure as a callback
|
|
function. This routine is experimental and subject to change
|
|
without notice.
|
|
</BLOCKQUOTE>
|
|
|
|
<H3>Bugs:</H3>
|
|
<BLOCKQUOTE>
|
|
As currently implemented, there is no protection against
|
|
calling a <B>magic</B> command from the callback procedure
|
|
that will alter the internal cell hash table while it is
|
|
being traversed, causing a crash. The implementation
|
|
should be changed to a 2-step procedure that traverses the
|
|
cell hash table first, creating an internal list of function
|
|
arguments to pass for each cell, and then executes the
|
|
callback function on each. <P>
|
|
|
|
There are more efficient ways of executing the callback
|
|
function than Tcl_EvalEx(). In particular, the procedure
|
|
should be cast as a Tcl object and Tcl_EvalObjEx() used.<P>
|
|
|
|
The callback function should allow in-line Tcl procedures
|
|
and use the standard Tcl/Tk method of "%" escape sequences
|
|
used as arguments to the callback function that allow the
|
|
user to specify what arguments are passed to the callback
|
|
function (as is done for the <B>tag</B> command).
|
|
</BLOCKQUOTE>
|
|
|
|
<H3>See Also:</H3>
|
|
<BLOCKQUOTE>
|
|
<A HREF=search.html><B>search</B></A> <BR>
|
|
</BLOCKQUOTE>
|
|
|
|
<P><IMG SRC=graphics/line1.gif><P>
|
|
<TABLE BORDER=0>
|
|
<TR>
|
|
<TD> <A HREF=commands.html>Return to command index</A>
|
|
</TR>
|
|
</TABLE>
|
|
<P><I>Last updated:</I> March 7, 2020 at 1:06pm <P>
|
|
</BODY>
|
|
</HTML>
|