When creating an array of capacitors in magic, I g...
# magic
c
When creating an array of capacitors in magic, I get DRC errors because the individual capacitors are too close to each other. Is anyone else experiencing this as well? Or am I doing something wrong? (I used the MIM cap metal3 in the "devices 2" menu and did X Repeat and Y Repeat)
t
I think the draw routines need correcting. You can work around the issue by changing the X and Y spacing in the array. You might need to unselect the option to connect the plates together, and add those connections manually.
m
@Tim Edwards How do you change the x and y spacing in the array? I ran into the same issue…
t
@Christof Gindu, @Micah Tseng Oh, there is not an option for it in the dialog---I did not realize that! You can change the array spacing manually by selecting any instance of the array; type the command
array pitch <x> <y>
with the increased pitch between cells (e.g.,
array pitch 12um 12um
).
c
Thank you very much!
m
@Tim Edwards Thank you! That is awesome and such a better solution than what I was doing (I won't say what I was doing cause it's embarrassing, lol).
@Tim Edwards one more related question: I was looking in the docs and perhaps I missed it, but is there somewhere a reference which lists every command magic has available and a little information on what each command does? The tutorial docs are super helpful, but aren't exhaustive.
t
@Micah Tseng: Go to http://opencircuitdesign.com/magic and click on Using Magic. At the bottom of that page is a full list of commands in magic. Clicking on any command gets you to a page explaining the command usage. This list of commands is linked directly to a clone of the repository; the documentation is in the magic repository source code under
doc/html/
.
m
@Tim Edwards Ah! Thank you! I totally missed that tab. I was looking under the documentation tab. Thanks for your help!
@Tim Edwards So I’ve been working on trying to use the array pitch…correct me if I am wrong, but the device generator for the caps, does not create an array, correct? Using the array command wasn’t working so I took at look at the text of magic files of an array of capacitors and of a capacitor array generated by the gencell and they are quite different. Notably in the gencell cap file, there is no
array
line. I took a look at the sky130A.tcl and found the code generating the capacitor. By adjusting the parameters to the values
bot_surround 0.2
and
end_spacing  *0.3*
in the default capacitor values section (line 2339) I can generate capacitors that pass both Magic and Klayout DRC. I don’t really like modifying sky130A.tcl (especially since I’m using a docker container and any changes there get burned on restart)…what do you advise? Should I just create a single cap, make an array of that and then wire them together?
Oh, I should also say, if you think this is an error in the generator defaults, I can open a pull request on open_pdks.
c
I just created a single cap, created an array with appropriate spacing and connected them
t
@Micah Tseng: Yes, this is an error in the device generator, and I really would appreciate a pull request.
m
@Tim Edwards Ok, for now I will create an array from a single cap….I imaging I will have to do some work to get LVS to pass, correct? Sounds good. You will see a pull request later today.
t
I don't expect it to make any difference for LVS.