<@U017X0NM2E7> <@U016EM8L91B> How can we extract a...
# magic
p
@Mitch Bailey @Tim Edwards How can we extract a single . mag file out of a complete gds so that it can be used with getcell command in magic?
t
.mag files are not hierarchical, so you can't extract a "single" .mag file, but you don't necessarily need a .mag file at all; just do "gds read" into magic, change what you need to change, and then follow that with "gds write". But be very aware---magic's layers are different from GDS layers, and "gds read" followed by "gds write" does not produce the same output as was read in (unless the original GDS was written by magic). You probably want to use the "gds readonly true" option, which tags every cell with the position in the original GDS file it came from, so that it can be pulled directly from the GDS and written verbatim to the output when doing "gds write". Any changes you make to a cell will be ignored unless, for the cell you are editing, you remove the property "GDS_FILE" (i.e.,
property GDS_FILE ""
). Then you can make changes. That makes sure that all the GDS is preserved as-is except for the cell you want to modify.
p
Thanks Tim! @Tim Edwards will try to use gds write . Actually I don't want to make changes to gds file just want to get a mag file out of it so that I can use the module directly in the user_analog_project_wrapper.
Is there any other way to use a gds with the place instance option so that it can be placed inside user_analog_project_wrapper?
m
Try starting with the default
user_analog_project_wrapper
read in your gds file rename your top cell to
user_analog_proj_example
place it and add wiring to the top ports in
user_analog_project_wrapper
then
Copy code
load user_analog_proj_example
                property LEFview true
                property GDS_FILE <gds_path>/<your_gds_file_name>
                property GDS_START 0
load the top level and write the gds file.
@Tim Edwards correct me if I’m wrong.
p
@Mitch Bailey How to place user_analog_proj_example is the doubt because the place instance needs a mag file for the cell and I have a gds with me.
Do we need to manually route to the top ports with user_analog_project_wrapper? Or can we use the OpenLane flow as it is used for digital user_project_wrapper.
m
I’m not an expert, but most of the analog designs I’ve seen use variable width wiring that isn’t done automatically. If you have the
user_analog_proj_example
gds, you could probably use that to create
user_analog_project_wrapper
with openlane and then manually fix the wiring.
t
For a digital project, you can use openlane to create a full layout that is smaller than the user project area and then wire that out to the pins manually (although I'm told that openlane can wire out to the pins as well, but I don't know how to do that---you'd have to ask the openlane developers). But if it's an analog design, you probably don't want to involve openlane at all.
p
Yes. It is mixed signal design. I have already a gds of the design from the OpenROAD with clean drc and lvs. I just need to integrate that into the wrapper.
@Tim Edwards Sorry! But I am still unclear on the part on how to put my gds into the wrapper.
How can I add a design's gds to an existing user_analog_project_wrapper.gds which already has some designs present inside the wrapper? Sorry for so many questions 😅.
t
That's why I was suggesting to use the empty wrapper, just be sure to rename it to
user_analog_project_wrapper
.
Sorry, my answers have gotten split since you posted questions both into #magic and #caravan
p
Sorry, my bad. for putting questions on both channels.
I get it that you suggest on using empty wrapper but. There is already a wrapper that was ready for tapeout. I just need to add my design to existing wrapper instead of creating a new design inside a empty wrapper.