Get email delivery of the Cadence blog featured here
Once you have successfully designed and optimized an area of your substrate today, how do you leverage your tool to reuse your work across the rest of your current design – or apply it to other similar layouts in your queue?
If you have the good fortune to use the Cadence® Allegro® layout tools, you should turn to the place replicate interface. Whether you want to leverage just the symbol placement, incorporate additional routing that will tie subsequent instances together, or pull in critical supporting elements like keep outs and text; the replicate toolset will allow you to define the exact block for ideal reuse across your spectrum of designs.
How does this work, and what has changed recently for those of you familiar with Allegro module definitions already? Read on to find out!
A module in Allegro is a reusable block of design elements. In an IC design, you might refer to this as a cell. The exact name will differ depending on the tool and context it's being used in. For discussions here, however, a module can contain physical symbols and logical components, placed relative to each other and a reference origin. They can also contain routing clines and vias, shapes, and even keep outs and reference text elements.
The purpose of the module is to allow you, as a designer or a librarian, to build blocks of elements for efficient reuse across a substrate or a family of substrates. A common example of this, which resonates with many designers, would be to create a module of an entire design and then replicate that across the entire area of a panel. On the panel, each instance of the module is identical. So, creating a reusable block that gets repeated multiple times is more efficient for data representation and allows editing. After all, if you need to make an ECO (engineering change order) change to that design, wouldn’t you like all the instances on the panel to get those same updates automatically?
Because the module can contain the logical components and netlist, it retains the connectivity between routing elements and component pins. Then, when the module is applied to a different layout with different components, the mapping between the two netlists can be seamlessly applied.
Once you have your module defined in your design, you may find you’ve got a similar grouping of components in multiple areas. Don’t do the work more than once. Save yourself time. In this case, you don’t have to worry about layer stack differences, missing padstack definitions, or anything else. The flow is as simple as you would expect.
After making sure you’re in the placement edit mode, select the components representing another instance of this group in the canvas. Right-click and choose Place Replicate Apply and pick your module definition. If there are any uncertainties in component mapping, you can set these up in the form you are presented with.
From there, it is as simple as taking the module, now on your cursor with the logic hooked up relative to the new components, and placing it an appropriate location in the canvas.
The best part of this? If in the future you find changes you need to make to the original module’s layout, it can be quickly applied to all instances across the layout, ensuring that the SI characteristics will remain consistent in all cases and minimizing any opportunity for missing a change anywhere.
You’ve got your current design complete. You have your place replicate modules in your library. How do you leverage that for your next project, when your existing design is a four-layer board and the next one is a more complex, six-layer version? Do you have to start again? NO! If your six-layer design has components compatible with your module’s contents, you’re all set.
In your new design, make sure that your module path has your target reuse module available. From the placement edit application mode, select the component(s) to apply the module to. When you choose Place Replicate Apply and pick your module, the system will immediately notice that your cross sections aren’t the same; you’re presented with a simple drag-and-drop mapping form so you can get the layers mapped as is appropriate for this layer stack (maybe “bottom” in your four-layer design should be mapped to layer 4 in your six-layer, instead of bottom?). If there is any doubt about logical component to module instance mapping, you’ll be able to configure those ties, as well.
Fear not about via definitions. Their start and end layers will be appropriately updated (creating new padstacks as needed) based on your layer mappings.
From here, you’re all set. The module, with the logic hooked up, is on your cursor and ready for placement. Have multiple sets that should use the same (or other) modules? Just keep repeating. Before you know it, all your common parts and interfaces will be configured and be ready for connection!
With every release, you’ll find a host of new performance improving functionality in Allegro to save you time and effort getting your next design completed. If you have an idea for how the place replicate tool – or any feature in the product – can be even more useful to your work, be sure to let us know!