Hi, in magic, how to see all the device layers rig...
# magic
d
Hi, in magic, how to see all the device layers right after opening a layout? I currently only see this: (can't find the key to see the whole hierarchy)
t
With the cursor over the background, type 's' to select the top level cell, then type 'x' to expand all views (equivalently from the command line: "select top cell" followed by "expand").
d
thanks @User
h
Magic is super confusing at first, but pretty cool if you learn how to handle it. I made a cheatsheet for Magic, might be useful for you: https://github.com/hpretl/iic-osic/blob/main/magic-cheatsheet/magic_cheatsheet.pdf
👍 2
d
Hi Harald, in your cheatsheet there is a section called IIC add-on, what is that add-on and how to get it? I would like to use the "k" command in Magic for rulers like in Virtuoso but currently it's not working on my magic installation. How do I get that working, or how do I get that IIC add-on?
h
The bindkeys are defined here, you can easily adapt to your own needs: https://github.com/hpretl/iic-osic/blob/main/iic-magic-bindkeys. These definitions need to be added to the
.magicrc
that you will use.
I do that by this command
Copy code
echo "source $SCRIPT_DIR/iic-magic-bindkeys" >> "$PDK_ROOT/sky130A/libs.tech/magic/sky130A.magicrc"
d
awesome, thanks! and your cheatsheet is great, thanks for sharing.
t
@User: There is a set of commands for creating and deleting rulers, which is
measure
and
unmeasure
. Since the thing that is measured is the cursor box, all you need to do is place the box where you want and type
measure
.
👍 1
h
@User @User for taking quick measurements it is almost faster to place the box and hit
b
t
@User: That is what I always do, and part of how efficient design in magic is often fundamentally different from efficient design using other tools. The
measure
command is still sometimes useful to keep a measurement around for reference.
h
@User good point about the sticky measurements. what is certainly true is that you need to adapt to magic, but once I do, it is quite cool.
@User One question/observation I have made: I dont know how I can trigger this, but I have seen it on multiple occasions: I place a pcell, all good DRC-wise. Then, later (maybe by hitting some keystroke I shouldn't, which I regularly do since Virtuoso keystrokes are hardwired in my brain for 20 years 🙂 ), I get a tiny DRC error somewhere in the pcell, which looks like a rounding error. I have DRC(full) active, before and after, means layout was clean, and then not?!?
t
@User: There are various possible reasons for this (not the least of which is my messing around with the hierarchical DRC code in magic, which always complicates things because I can never assume that any specific problem is a user error). There are situations in which magic just marks cells as "DRC clean" and does not perform a check---the DRC engine is interactive, after all, so it tries not to run except where and when things have changed, and so runs a 2-step check in which it first marks modified areas as "dirty" and needing checking, and then goes back during idle periods and runs the actual checks on those areas. This means that (1) sometimes things are not checked because they were never flagged for checking, and (2) sometimes the DRC results can take a long time to show up (as you are allowed to continue working while the DRC engine is running). Note that the DRC engine is not multitasking; it just runs when nothing else is happening. So if you are actively doing layout, you can end up preventing the DRC engine from running for long periods of time. That is not an exhaustive list of things that could explain your experience, though.
h
@User as an addon info: once this DRC error happens in the pcell, I need to go into the pcell and fix it by hand. one such situation I recall is that I had a 5-finger MOST, and the middle finger was throwing DRC errors by a minuscale amount. so is there something in the pcell where there may be a rounding error depending on grid or similar?
t
@User: That is entirely possible. If you can specify steps leading to the error, I can try to debug it.
h
@User Unfortunately I have not a proven path to failure yet, but once I have I will let you know for sure :-)