Product Documentation
Dracula User Guide
Product Version IC23.1, September 2023

1


Interfaces to Dracula

The Dracula® standalone verification product offers a suite of software applications for Integrated Circuit (IC) design verification.

Overview of This Chapter

This chapter contains the following sections.

Using Cadence Data in Dracula

You can create a layout with a Cadence® design framework II (DFII) tool, such as Virtuoso® layout editor and use Dracula to verify the layout database.

When you put the SYSTEM=CADENCE function in the Description block of your Dracula rules file, the CDSIN module processes your DFII database and converts it to Dracula internal format.

Although you can use the Virtuoso tools to generate the layout database in a standard format, such as GDSII, it is quicker to generate it in Cadence DFII format.

In this section, you’ll learn how to

Preparing To Use a DFII Database

To use CDSIN to convert a DFII database to Dracula internal format, you must meet the following requirements:

Specifying the Path to Your Layout

You can specify the path to your layout database using the INDISK and INDISK-FILE functions in the Description block of your Dracula rules file.

To specify the name of the DFII library containing the primary cell in your design, use the LIBRARY function in the Description block of your rules file.

LIBRARY = mpuLib

The LIBRARY function is required when you use the SYSTEM=CADENCE function.

In the 4.7 and previous versions, the GDSII files were limited to 2.0 Gigabytes.

An enhancement in the 4.8 release suppresses this limitation. To work around the 2GB limit in streamout, Dracula now reads GDSII files that have been split into multiple files on a disk. The files can be split by cells or layers.

Example

MULTI-GDS2-IN = inFile CELL/LAYER

The contents of inFile might be

./CellA.gds
./CellB.gds
./CellC.gds 

or

./Layer1.gds
./Layer2.gds
./Layer3.gds

The CELL/LAYER option is indicates that the .gds files are split by cell or by layer. You must specify either CELL or LAYER.

Controlling Case Sensitivity

To ensure correct results, text in your layout must match text in your schematic. Cell names, labels, and pins in your DFII layout can be upper-, lower-, or mixed-case. By default, Dracula treats all the cell, pin, and label names as case sensitive. When you use SYSTEM = CADENCE in your Dracula rules file, the CNAMES-CSEN = YES option (the default) applies to

To convert everything to uppercase, specify CNAMES-CSEN = NO. To control the case of text names separately, use the TNAMES-CSEN function. For an explanation of how to use these two functions together, see “CNAMES-CSEN” in the “Description Block Commands” chapter of the Dracula Reference.

If you are using external files for Hcells, corresponding points, and composite and cell texts for LVS, LPE, and PRE, make sure the text is consistent with the CNAMES-CSEN command.

Controlling Case in Schematic Netlists

When you compile your schematic netlist with LOGLVS, activate case-sensitive mode by using the CASE function before LOGLVS reads in your circuit. By default, LOGLVS converts all signals to uppercase.

When CDLOUT creates a schematic netlist, it keeps the case information. CDLOUT netlists global signals such as gnd! and vdd! in the *.GLOBAL line.

Correcting Case Problems

If you were not aware or not in control of case requirements when the schematics and layout were created, you can correct problems with cell and signal names as follows:

If necessary, you can edit the CDL netlist to convert the cell names to the same case.

Extracting Objects from a DFII Layout

To extract objects from your DFII layout, specify layer purpose pairs in the Input-Layer block of your Dracula rules file. If you don’t specify a purpose for a DFII layer, the default is that all purposes except pin on that layer are read into the Dracula database.

; all the layer purposes on the active layer will be
; read into the Dracula ACTIVE layer
ACTIVE = active

If you specify a purpose, then only that purpose is read in.

; only the maskAdd layer purpose of the poly layer
; is read into the Dracula POLY layer
POLY   = poly maskAdd

For more information about specifying DFII input layers, see “Layer Name Definition” in the “Input-Layer Block Commands” chapter of the Dracula Reference.

Pins in a DFII layout database mark connection points to interconnect layers. To read in the pin information as text, specify the pin layer with the TEXT function in the Input-Layer block of your rules file.

The layer function syntax for DFII layers is

layer_name = dfII_layer [purpose] TEXT=layer2 [ATTACH=layer3]

layer_name

A name of your choice.

dfII_layer [purpose]

If you use the TEXT keyword, this is the DFII layer purpose pair that contains the pins. The layer purpose pair must be defined in the DFII library technology file.

TEXT

A keyword that tells Dracula to generate text from pins.

layer2

A layer name/number of your choice. It does not have to be a layer used in the Dracula rules file or defined in the technology file.

ATTACH=layer3

The layer on which Dracula attaches the text.

Dracula reads in pin purpose shapes only when you specify a pin purpose to create text from pins. When the pins are on a design layer purpose, you must define a separate layer for the text, as the following example shows.

mettxt1 = metal1  pin  TEXT = dummy  ATTACH = metal1                        

The TEXT function puts all metal1 pins on pin purposes on the mettxt1 layer. Text is generated and attached to metal1 and paired with

metal1 = metal1

which is necessary to read in all the drawing information. Similarly, if you specify

metal1 = metal1 drawing TEXT = dummy ATTACH = metal1

all metal1 pins on the drawing purpose are read in. Text is generated and attached to metal1.

Each text layer corresponds to one pin layer.

Sample Rules File

The following sample rules file demonstrates functions you might need to read in a DFII layout database.

*DESCRIPTION
;
SYSTEM = CADENCE
LIBRARY = prelib
OUTDISK = lpe1
PRIMARY = lpe1 layout
SCALE = 0.001 MICRON
RESOLUTION = 0.001 MICRON
; INDISK-FILE is used when more than one library is
; referenced. If there is just one library path, use the
; INDISK = directoryname function
INDISK-FILE = ../indisk.file
;
; <functions omitted>
;
*END
*INPUT-LAYER
;
; In the following, active, poly, pimplant, metal, pin,
; and so on are layer purpose pairs defined in the DFII
; technology file.
;
ACTIVE = active
POLY = poly maskAdd; read in only the maskAdd purpose
PIMP = pimplant
PWELL = pwell
METAL1 = metal1
METAL2 = metal2
;
; <functions omitted>
;
; Read in all the pins and treat as text attached to METAL1
; and METAL2 -- mettxt1 for METAL1, mettxt2 for METAL2,
; where the pins are drawn on the pin purpose layer
;
mettxt1 = metal1 pin text=dummy attach=METAL1
mettxt2 = metal2 pin text=dummy attach=METAL2
;
SUBSTRATE = BULK 63
;
CONNECT-LAYER = NSUB PWELL NSD PSD POLY METAL
;
*END
*OPERATION
;
; <functions omitted>
;
*END

Converting a GDSII Rules File for Cadence Input

You might already have a Dracula rules file for your process technology that specifies a GDSII input database. To convert this rules file for Cadence input, change the Description block of your rules file as follows.

In the Input-Layer block, change the GDSII layer numbers to the names of layers in your technology file. You can also include some or all of your layer purposes in the Dracula verification, as described in “Extracting Objects from a DFII Layout”. The default layer purpose is pin.

GDSII-to-Cadence Conversion: Description Block
GDSII Cadence

PRIMARY = MPU4f

PRIMARY = MPU4f

INDISK = mpu4f.gds2

INDISK-FILE = indisk.fil

LIBRARY = mpuLib

OUTDISK = DRCOUT

OUTDISK = DRCOUT

MODE = EXEC NOW

MODE = EXEC NOW

SYSTEM = gds2

SYSTEM = cadence

SCALE = .001 MICRON

SCALE = .001 MICRON

RESOLUTION = .001 MICRON

RESOLUTION = .001 MICRON

PROGRAM-DIR = /net/cds000/hp2/dracula

PROGRAM-DIR = /net/cds000/hp2/dracula

PRINTFILE = mpu4f4

PRINTFILE = mpu4f4

GDSII-to-Cadence Conversion: Input-Layer Block
GDSII Cadence

PWELL = 1

PWELL = pwell

ACTIVE = 2

ACTIVE = diff

PDIFS = 3

PDIFS = pdiff

NDIFS = 4

NDIFS = ndiff

POLY = 5

POLY = poly1

PIMPL = 6

PIMPL = pimplant

CONTS = 7

CONTS = cont

METAL1 = 8 TEXT = 60

METAL1 = metal1 TEXT = intext

VIA = 9

VIA = via

METAL2 = 10

METAL2 = metal2

SUBSTRATE = BULK 63

SUBSTRATE = BULK 63


Return to top
 ⠀
X