I'm trying to use the hierarchical method of drawi...
# magic
m
I'm trying to use the hierarchical method of drawing. So I've got my R2R DAC drawn and simulated in xschem, export spice, import into magic and have laid it out. No DRCs. Then I insert that cell into my top level cell and immediately get 20 DRC errors
why do the DRC errors only appear after I insert the R2R dac cell?
r2r.mag is the r2r dac with no DRC errors
tt_um_mattvenn_r2r_dac.mag is the top level cell, that shows the 20 DRC errors related to the r2r dac
t
Looks like a scaling issue somewhere (roundoff error). The resistor is supposed to be drawn at 0.35um wide and is instead coming out 0.34um. I'm not sure when or how the resistor width got reduced.
m
I changed the grid a few times while I was wiring
Could that change the resistor width?
t
The reason that the error doesn't show up in the individual cell is that magic thinks it created a properly sized resistor and has marked it as "clean and not needing checking again". If you forced a re-check, the error would show up inside the device. It shows up at the top level because the top level was created new and marked as requiring a check.
Changing the grid is not supposed to do that, but obviously something did, so if you could manage to reproduce the conditions under which that happened, it would help me figure it out.
The problem with being author/user is that I do things in the way that I'm used to, and other perfectly good paths to the same result aren't on my radar until somebody else tries it and discovers something's broken.
@Matt Venn: I can get the same result by doing
scalegrid 2 1
to force the entire database to lambda units, which reveals a minor issue that the device generators don't round up those measurements. The same thing could be achieved by starting magic without the usual
.magicrc
file (which scales the grid down to the 5nm manufacturing grid from the default 10nm grid), but then if you were doing to create parameterized devices, you would have to load the device generator script manually. I think what you did was to manage to scale the grid up by two using
scalegrid
, which is not quite the same thing as applying the user grid (
grid
command).
m
I only used grid, not scale grid