Hello, I would like to know if this is a bug, or I...
# magic
j
Hello, I would like to know if this is a bug, or I am selecting the wrong cell, what I wanted to do was change the multiplicity of a transistor, to apply interdigitation techniques, however, the transistors appear enclosed in a single cell, which that does not allow them to be moved independently to apply the technique, so I don't know if it is something that has not yet been changed in magic or I should select the transistor in another way. On the other hand, the same thing happens from xschem, that is, if you change the multiplicity in xschem and then use the "import spice" option in magic, all the transistors appear, but just as I mentioned before, they appear enclosed in a single cell, which It does not allow applying layout techniques. Although it is not optimal, in xschem this can be solved by drawing each transistor, so that when you import the spice, they come out independent and you can place them however you want, but this is not optimal if there are 300 transistors in parallel. @Stefan Schippers @Tim Edwards
m
@Juan Andres Maybe you want to change the
Fingers
parameter (in xschem its
nf
). Be aware that
nf
does not effect the total effective size of the transistor, while
m
multiplies it. For example, a transistor of
L=0.1 W=12 nf=3
would have 3 transistors of
W=4
placed adjacently. If you used
L=0.1 W=4 m=3
you’d get the same sized transistors, but they’d be placed separately. You may be able to flatten the cells and regroup if you need fine tuned placement.
👍 1
s
There are different ways to describe parallel transistors in xschem. • Use the
mult
parameter. This will netlist the transistor with the
m=...
parameter set to
mult
. This is is very efficient for simulation because you are using one device with current/capacitance/charge values multiplied by
m
. • The
nf
parameters is used to describe how many fingers the transistor is drawn with. As @Mitch Bailey said the width of each finger is the given
W
(total width) of the transistor divided by
nf
. • You can draw multiple transistors in xschem by using vector instance names:
M3[9:0]
will place 10 transistors in the netlist, M3[9], M3[8], ..., M3[0]. This last method is very useful if these transistors are not all in parallel, for example you can use a different gate signal for each, like
GATE[9:0]
see here for more details
👍 1
l
Hey, there was a vector approach all this time to xschem! It is very good for working with series transistor arrays.
s
@Luis Henrique Rodovalho Yes, the following picture shows a 32 bit (series) ripple carry adder drawn using vector names
t
@Juan Andres: For the layout, yes, there are several ways to do it. The "M" value for transistors is copied from an "M" value in the schematic, and translates to arraying vertically, and not fingered. "Fingers" is taken from the "NF" parameter in the schematic. However, you can always change the values in the layout from M to Fingers or vice versa. And if the device generator doesn't give you what you want, you can reduce the generated device to one transistor and use the "array" command in magic to make the array, or you can edit the generated layout (as long as you don't try to change parameters and apply the changes, which will overwrite any edits you make to that cell).
j
hI, @Stefan Schippers @Tim Edwards, Hello, perhaps what I wanted to explain was not understood, in a few words the problem is going from xschem to magic, and having all the transistors loose, also in magic when changing M and NF, the same thing happens, they are located next to each other but they are stuck to the same cell. I tried to vectorize but although it calls them in spice, it doesn't work in the extraction for the layout.
t
@Juan Andres: The vectorizing in xschem ultimately makes individual devices in the netlist, with M=1 and NF=1, so no fingering is implied.
j
That's what I want, to be able to place the transistors freely with layout techniques, however, magic doesn't read the vectorization when importing the netlist?
t
Okay, so I did misunderstand your intent. The vectored devices is what you want. Just make sure that you do a "writeall" before extraction, so that the generated devices are saved to disk.
j
Este mensaje contiene elementos interactivos.
t
The attached netlist (with NF set on a single device) produces the attached layout. Isn't that what you want?
j
yes how can i do it?
t
I think I see your issue. You want interdigitated devices where the schematic shows two devices but these get merged into a single layout. The problem is that the layout import code can't understand this. Ultimately, the solution is that you will have to edit the layout to get what you want; I don't think you will be able to get what you want by simply importing the schematic. I'm not sure what is the most efficient way of doing it, but I think if you can get (any) two transistors from the schematic into the layout, then you can do the following: (1) Delete one of the transistors (2) Select the remaining transistor instance (3) Type Ctrl-P to get the parameters of the device (4) Change the value of "nf" in the parameter window to set the number of fingers for both (interleaved) devices. (5) Click "Okay" to modify the device layout.
j
not necessarily that he gives me the interdigitation, if not the separate transistors so that I can locate them manually
do you paste them manually?
t
Yes, often. There are a number of helpful options in magic like the "array" command so that you can place one instance of one transistor and then array it automatically, so that 300 devices is just as quick to do as one.
j
Could you explain to me how to use that instance to order them? please?
t
(1) Create a single transistor (2) If this is a generated device, you'll want to unselect "guard ring" in the dialog window because otherwise the guard ring will get in the way of interdigitating; click "Okay" to apply the parameter change (3) Select the device instance (4) Type "array 30 1" to get an array of 30 devices (5) The array pitch will probably be wrong. Change the cursor box size to be narrower if the devices are too far apart or wider if the devices are too close together. The width of the cursor box is used to set the array pitch. (6) Repeat steps (4) and (5) until you have the transistors at the right pitch.
j
I can’t to see the devices instance
Este mensaje contiene elementos interactivos.
t
(1) Select the device instance using the
i
key. (2) I was not aware that the transistors separate when the guard ring is removed. That's an error in the device generator that I didn't know about. That is not supposed to happen, and the poly contacts are removed because if it were drawn like it was supposed to be, then the sources and drains would be shared, and the poly contacts would be too close to be in a straight line without causing a DRC error. The error might only happen for transistors with small width; my example had wider transistors and I didn't get that error.
j
Este mensaje contiene elementos interactivos.
t
It's definitely a bug, one that I have not seen before.
j
Este mensaje contiene elementos interactivos.
celda.JPG
t
Not really. You can modify a parameterized generated cell, but any change that you make in the parameter dialog window and apply will delete everything you did and redraw the device. Your choices are: (1) Make sure all of the device properties like number of fingers, etc., are correct before you edit the device, (2) Draw the substrate contact outside of the subcell, or (3) Finger the device by arraying subcells. Ultimately, if you want your layout to look like something that the device generator doesn't know how to draw, then you will end up having to do the layout manually. Which is fine; there's nothing special about the generated devices except that they automate the layout work.
j
Thanks