[Magic-dev] Magic stacked contact bug...

Philippe Pouliquen philippe at alpha.ece.jhu.edu
Sat May 17 13:47:19 EDT 2008


Hi All,

There seems to be a couple bugs in Magic's stacked contacts or possibly 
I'm writing my techfiles incorrectly.  These two bugs seem to have been 
around for a while, and no one else seems to have reported any trouble, so 
I'm suspicious that that the latter may be the problem.  On the other 
hand, I let my students have a go at 7.5.115, so possibly it's gotten a 
little more exposure than usual.  Anyway, these two bugs are definitely in 
versions as early as 7.5.108, and also present in the current version 
7.5.137.

The first bug is that when you use stretch to move a contact at the end of 
a wire (by more than the contact size), the wire should shrink in length, 
but this only occurs for one of the contact's residue types.  You can 
observe this problem in the attached layout with the long command:

box 0 0 4 4 ; select area ; stretch u 10

The metal 1 will be shortened as normal, but the metal 2 does not.  A 
temporary work-around is to move in steps of 4 or less -- but that brings 
us to the second bug.


The second bug is more insidious.  If you move a stack of three contacts 
more than once, the middle contact is dropped.  This occurs if you move 
something diagonally, as the move has to be done with two separate 
"Manhattan" moves.  (I don't know if stacks of four or more are affected 
as I haven't been working with a techfile that had that many stackable 
contacts lately.)  You can duplicate this problem in the sample layout 
with the command:

box 20 0 24 4 ; select area ; move r 10 ; move u 10

You can see that the middle contact has been dropped from the selection by 
inserting a "what" command around the moves.  Note that on the second 
move, you will get a warning about "You selected paint outside the edit 
cell..."  This warning might be generated anyway if your original 
selection contained paint in a subcell, so who pays attention :-)

A temporary work-around is to modify the command to be:

box 20 0 24 4 ; select area ; move r 10 ; select area ; move u 10

but it's not that useful for complicated selection patterns.  For those, 
you just need to do a "move to ...".


Philippe Pouliquen
The Johns Hopkins University
-------------- next part --------------
magic
tech simple
timestamp 1211041433
<< metal1 >>
rect 0 4 4 28
rect 10 0 14 4
<< metal2 >>
rect 0 4 4 28
rect 10 8 14 12
<< metal3 >>
rect 10 16 14 20
<< metal4 >>
rect 10 24 14 28
<< m12contact >>
rect 0 0 4 4
rect 10 4 14 8
rect 20 0 24 4
<< m23contact >>
rect 10 12 14 16
rect 20 0 24 4
<< m34contact >>
rect 10 20 14 24
rect 20 0 24 4
<< end >>
-------------- next part --------------
tech
    format 33
    simple
end


version
    version 1
    description "Magic debug"
end


planes
    metal1,m1
    metal2,m2
    metal3,m3
    metal4,m4
end


types
    metal1 metal1,m1
    metal2 metal2,m2
    metal3 metal3,m3
    metal4 metal4,m4
    metal1 m12contact,m12c
    metal2 m23contact,m23c
    metal3 m34contact,m34c
end

contact
    m12c m1 m2
    m23c m2 m3
    m34c m3 m4
    stackable
end

styles
    styletype mos
    m1 20
    m2 21
    m3 22
    m4 23
    m12c 20
    m12c 21
    m12c 33
    m23c 21
    m23c 22
    m23c 37
    m34c 22
    m34c 23
    m34c 38
    error_p 42
    error_s 42
    error_ps 42
end

compose
end

connect
    m1,m12c/m1 m1,m12c/m1
    m2,m12c/m2,m23c/m2 m2,m12c/m2,m23c/m2
    m3,m23c/m3,m34c/m3 m3,m23c/m3,m34c/m3
    m4,m34c/m4 m4,m34c/m4
end

cifoutput
end

cifinput
end

# mzrouter
# end

drc

end


extract
 style debug
 planeorder metal1 0
 planeorder metal2 1
 planeorder metal3 2
 planeorder metal4 3
end


# wiring
# end

# router
# end

# plowing
# end

# plot
# end


More information about the magic-dev mailing list