Layout: My most productive key binding

November 25, 2024

When I was working on my PhD in microelectonics and I was doing analog layout, I was always eager to optimize my key bindings. One stood out specifically, if only because many of my colleagues copied it from me and it became sort-of famous at the research chair. It is about copying objects for custom layout (in cadence virtuoso).

Copying, I hear you say? What is there to solve? This is about creating multiple copies of one thing (say you are placing two-digit number of copies of a gate a vias or a transistor or something). The built-in way of doing this (besides manually) is to use the copy dialog (bring it up by pressing F3), selecting the number of copies, pitch etc.\ While this works (although its a bit tedious), the main problem for me with this method is that I constantly forget to revert the changes. Most of the time I only want to do single copies, but the copy tool remembers these settings and that's really annoying. So I use a different method.

There is a SKILL function called leApplyLastCopyTransform(), which, well, applies the last copy transformation ;). What it does exactly is that it produces a copy of the selected object (can be anything, via, shape, object, etc.) and moves it the same amount as you did the last time (ok, to be more precise it applies last transformation, which also includes stuff like rotation). Then you just hit the keyboard the right number of times and voila, done. The next time you want to do a single copy you can just do it, because the number of copies, pitch etc. was never modified. I mapped this key to shift-C, in my opinion there is nothing important there as a default (it's leHiChop(), which is nice, but much less used than copying. I put it on ctrl-C, which is empty).

Copying test case
Selecting the to-be-copied object
Performing the first 'template' copy
Copy finished (notice how the object is still selected)
Pressing shift-C 10 times

Here is a gif showing the process: