New utilities for Cadence design flow

In Sonnet 13.56, some new utilities have been added to support the Cadence<>Sonnet design flow. These are implemented as Skill scripts and can be customized by the user if needed.

This functionality is added by the new Skill scripts:

  • Remove unwanted polygons from SonnetEM, based on layer purpose
  • “Stop via” implementation as used for MIM-capacitors and resistors
  • Merge a meshed ground plane into a solid polygon, with cutouts for vias

All these scripts are explained in detail below.

Introduction

When creating the Sonnet EM view from the Caddence layout view, the Sonnet interface can run pre- and postprocessing scripts. This enables customized modification of the layout, to prepare it for efficient EM simulation.


(click to view full size)


Remove unwanted polygons based on layer purpose

 

Some designs in certain PDK’s for parasitic extraction have polygons on a non-drawing purpose such as the “ll” purpose. Without using the new script, the layer mapping from Cadence to Sonnet does not evaluate the purpose, so designers would have to delete these extra polygons manually.

In the picture below, the unwanted polygon is moved in the Sonnet editor, to show this extra polygon better.

In Sonnet 13.56, we have a new script to remove these extra polygons. The default is to keep polygons on the “drawing” purpose and the “pin” purpose. Deleting polygons only happens in the SonnetEM view and not in the original layout.

You can easily run this script when creating the SonnetEM view and pass in a list of purposes to keep.

SonnetDeletePolygonsNotWithPurpose(list("drawing" "pin"))
SonnetDeletePolygonsNotWithPurpose()


(click to view full size)

 


Stop via implementation

 

In some technologies, the same via layer is user to connect to different metal layers. This is sometimes found in MIM capacitors or resistors. In the example below, you can see that VIA3 connects to Metal3 or MIM, depending on the presence of the MIM metal layer.

In Sonnet 13.56, we have a new script to handle this situation.

This simple script will move the polygons on the via drawing layer connecting to the MIM layer to a temporary drawing layer for translation purposes. In the Cadence to Sonnet layer mapping , we can then use that new via to connect to the MIM layer.

Of course, moving of polygons only happens in the SonnetEM view and not in the original layout.

You can easily run this script when creating the SonnetEM view and pass in the appropriate layer purpose pairs. Syntax is to pass in the layer purpose pair (LPP) of the MIM layer, then the via LPP connecting to the MIM and finally the new temporary via LPP

IMPORTANT: When using the script, the .matl file needs to be edited so that the new temporary drawing layers used are mapped properly.


(click to view full size)

SonnetMoveSingleMimCapVias(list(“MIM” “drawing”) list(“Via3” “drawing”) list(“TempVia3” “drawing”))


Simplify meshed ground plane

 

Due to layout rules, large ground planes are often implemented by a mesh of lines, instead of a filled area. Electrically, this mesh will behave very similar to a filled area. The filled area representation is much more efficient for EM simulation. By using a new script, we can now convert the meshed area to a filled area, for much faster simulation.

This new script will simplify a ground plane, but leave the required keep out areas for pins and vias.

Technically, this script will grow all of the metal on certain drawing layers, merge them all together and then shrink all of the metal back to its original size. Merging of polygons only happens in the SonnetEM view and not in the original layout. You can easily run this script when creating the SonnetEM view and pass in the appropriate layer purpose pairs.

Syntax is to pass in the layer purpose pair (LPP) of the ground layer which you want to merge and then a LPP that is used to temporarily move the polygons to in the algorithm.


(click to view full size)

SonnetMergeMeshGndPlane(list(“Metal1” “drawing”) list(“TempMetal1” “drawing”))


Installing the new scripts

The Skill scripts are located in <SONNET_DIR>/sonnet_virtuoso_dk/skillutil.

It’s best to install these scripts after the interface is installed in the .cdsinit file so that they are easily available for use. Just load in the .il files that you might be interested in using and the parameters can be passed into each function when creating the SonnetEM view.

aSonnetDir = getShellEnvVar("SONNET_DIR") 
;// Loads the Sonnet Move Single MIM Cap Vias Utility
loadi(simplifyFilename(strcat(aSonnetDir "/sonnet_virtuoso_dk/skillutil/sonnetmovesinglemimcapvias.il"))) 
;// Loads the Sonnet Move Dual MIM Cap Vias Utility
loadi(simplifyFilename(strcat(aSonnetDir "/sonnet_virtuoso_dk/skillutil/sonnetmovedualmimcapvias.il"))) 
;// Loads the Sonnet Move Resistor Vias Utility
loadi(simplifyFilename(strcat(aSonnetDir "/sonnet_virtuoso_dk/skillutil/sonnetmoveresistorvias.il"))) 
;// Loads the Sonnet Delete Polygons Not With Purpose Utility
loadi(simplifyFilename(strcat(aSonnetDir "/sonnet_virtuoso_dk/skillutil/sonnetdeletepolygonsnotwithpurpose.il"))) 
;// Loads the Sonnet Mesh Ground Plane Utility
loadi(simplifyFilename(strcat(aSonnetDir "/sonnet_virtuoso_dk/skillutil/sonnetmergemeshgndplane.il")))