[Magic-dev] Viewing metal layers without seeing via cuts

R. Timothy Edwards tim at opencircuitdesign.com
Thu Dec 13 16:51:33 EST 2007


Dear Graham,

>    I have a question about the appearance of metal in Magic where there are via
> cuts.
> 
>    Let us say that I am looking at metal4 and its connection to metal3 through
> via3 (called m4c is most tech files). I have switched all other layers off.
> What I see on metal4 are holes where there are via4 connections. Since I have
> switched off via4 I don't want to see the cuts at all.
> 
>    Is there any way to code the tech file so that when via4 is not being
> viewed, it is replaced by metal4 and metal5 rather than by whitespace? And if
> metal5 is not being viewed, then by metal4 only?

Actually, this is so trivial to do, I don't know why I didn't investigate
it earlier.  Personally, I think that the proper solution is not to make
this accomodation in the techfile, but to make this accomodation in Magic
itself, because I can't imagine why anyone who executes the command "see
no *; see metal1" would want to have holes displayed wherever vias are
present.  I've tried this before and found it annoying (which is why it
is especially strange that I had not previously fixed it).  The fix is
trivial because Magic displays one style at a time, so it is easy to just
add the contact types to the search's layer mask for the metal layer
whenever the contact itself is not being displayed but the metal layer
type is.

Here's the change:  In dbwind/DBWdisplay.c, line 334 for either
magic-7.4 or magic-7.5, right after the lines

        if (!TTMaskIsZero(&layers))
         {

add the following lines:

             /* For each contact type, if the contact is not visible,    */
             /* display any of its residue layers that are visible.      */

             TileType t;
             for (t = TT_TECHDEPBASE; t < DBNumTypes; t++)
                 if (DBIsContact(t))
                     if (!TTMaskHasType(&layers, t))
                         if (TTMaskIntersect(DBResidueMask(t), mask))
                             TTMaskSetType(&layers, t);


Ah, so nice to have this change!  I'm checking it into CVS right away.

					Regards,
					Tim

+--------------------------------+-------------------------------------+
| Dr. R. Timothy Edwards (Tim)   | email: tim at opencircuitdesign.com    |
| Open Circuit Design, Inc.	 | web:   http://opencircuitdesign.com |
| 22815 Timber Creek Lane        | phone: (301) 528-9364               |
| Clarksburg, MD 20871-4001      | cell:  (240) 401-0616               |
+--------------------------------+-------------------------------------+



More information about the magic-dev mailing list