10
Using DRAC2CDL Netlist Generator
Overview
DRAC2CDL generates a CDL netlist file from certain Dracula generated binary files. These binary files are the:
-
LVSLOGIC.DATfile generated byLOGLVS. The file can be created from processing a simple CDL or Spice netlist or from a combination of a CDL/Spice netlist and a Verilog database generated by the van executable. -
6NETS.DATand6NETL.DAT files created during a Dracula LVS run. These files are the finalized schematic and layout netlists used by Dracula LVS for comparison. When you runDRAC2CDLon either of these two files, the resulting CDL netlist file will reflect the filter and reduction options specified in the Dracula LVS rules file.
Running DRAC2CDL
DRAC2CDL can be run interactively or in batch mode just like PDRACULA or LOGLVS.
Interactive Mode
To run DRAC2CDL interactively, simply execute the following command from the shell:
user@host> DRAC2CDL
A menu list of commands will appear, followed by a colon (:) prompt, as follows:
*****************************************************************************
*/N* DRAC2CDL (REV. xxxxxxx.mm-yyyy / LINUX /GENDATE: dd-MMM/yyyy)
*** ( Copyright yyyy, Cadence ) ***
*/N* EXEC TIME = hh:mm:ss DATE = dd-MMM-yyyy HOSTNAME = hostname
*****************************************************************************
1)infile <filename> - set name of Dracula netlist file. Default is "LVSLOGIC.DAT".
2)outfile <filename> - set name of output cdl file. Default is "out.cdl".
3)header <filename> - set name of header include file. Default is "head.cdl".
4)swapbyte {yes|no|auto} - set byte swapping mode for cross-platform run. Default is auto.
5)r(un) - translate netlist and exit.
6)h(elp) - show this help.
7)exit/x - exit without doing anything.
:
The various commands are explained next.
INFILE <filename>
The default input to DRAC2CDL is the LVSLOGIC.DAT file. You can omit the INFILE command when generating a CDL netlist from default input file.
Use this command to specify the input binary file for translation to a CDL netlist.
OUTFILE <filename>
By default the output CDL netlist is written to a file called out.cdl. Use the OUTFILE command to redirect the output to a different file.
HEADER <filename>
In order to increase performance, DRAC2CDL writes global signals to a separate header file, which is referenced by the output CDL netlist file via an include statement (.INCLUDE). The default header name is head.cdl.
Use the HEADER command to specify a different CDL header file name.
SWAPBYTE {yes | no | auto}
Potential issues concerning byte-order can occur when running DRAC2CDL using binary data generated from a different Operating System. By default, DRAC2CDL automatically determines whether to swap bytes or not; however, in some cases it may fail. Should this occur, use the SWAPBYTE command with one of the following options:
Swaps bytes on the input binary data. This may be needed when running DRAC2CDL using input binary files generated from a different Operating System.
Does not to swap bytes on binary input data. It may be useful in rare instances when DRAC2CDL wrongly determines input file-types.
Automatically determines whether to swap bytes or not. This is the default.
R(UN)
Generates the CDL netlist file based on the input binary file and automatically exits DRAC2CDL. The subcircuit’s name in the CDL netlist is “top”.
You can simply type the letter ‘R’ or ‘r’ at the prompt. The command is not case sensitive.
H(ELP)
Redisplays the menu list of commands.
You can type ‘H’ or ‘h’ at the prompt. The command is not case sensitive.
EXIT/X
Batch Mode
DRAC2CDL can also run in batch mode just like PDRACULA or LOGLVS using standard Unix input redirect:
DRAC2CDL << !
infile 6NETS.DAT
outfile my.cdl
r
!
Examples
Example 1: This is the simplest example of running DRAC2CDL in interactive mode. It will generate the default head.cdl and out.cdl files from the LVSLOGIC.DAT file:
user@host> DRAC2CDL
*****************************************************************************
*/N* DRAC2CDL (REV. xxxxxxx.mm-yyyy / LINUX /GENDATE: dd-MMM/yyyy)
*** ( Copyright yyyy, Cadence ) ***
*/N* EXEC TIME = hh:mm:ss DATE = dd-MMM-yyyy HOSTNAME = hostname
*****************************************************************************
1)infile <filename> - set name of Dracula netlist file. Default is "LVSLOGIC.DAT".
2)outfile <filename> - set name of output cdl file. Default is "out.cdl".
3)header <filename> - set name of header include file. Default is "head.cdl".
4)swapbyte {yes|no|auto} - set byte swapping mode for cross-platform run. Default is auto.
5)r(un) - translate netlist and exit.
6)h(elp) - show this help.
7)exit/x - exit without doing anything.
:r
Translation of LVSLOGIC.DAT finished. Output results are in out.cdl
Bye!
If the original CDL netlist processed with LOGLVS to generate the LVSLOGIC.DAT file is as follows:
*.BIPOLAR
*.RESVAL
*.EQUATION
*.SCALE METER
*.MEGA
.PARAM
*.GLOBAL VDD! GND!
.SUBCKT inv A Y
MM1 Y A GND! GND! NM W=3.1u L=2.5u M=1
MM0 Y A VDD! VDD! PM W=3.1u L=2.5u M=1
.ENDS
.SUBCKT buffer IN OUT
RR0 net8 net3 1K $[PR]
XI1 net3 OUT / inv
XI0 IN net8 / inv
.ENDS
The following will be the output header file (head.cdl):
* Header include file
*.bipolar
*.ldd
*.resval
*.capval
.param
* PAD name:VDD! model:P number:1
.GLOBAL 1:P
*.EQUIV VDD!=1
* PAD name:GND! model:G number:2
.GLOBAL 2:G
*.EQUIV GND!=2
* PAD name:IN model:O number:3
.GLOBAL 3:O
*.EQUIV IN=3
* PAD name:OUT model:I number:4
.GLOBAL 4:I
*.EQUIV OUT=4
* The end of include file
The following will be the output netlist file (out.cdl):
.include head.cdl
.subckt top
* NODE name: VDD! number:1
* NODE name: GND! number:2
* NODE name: IN number:3
* NODE name: OUT number:4
R1 6 7 1000 $[PR] * RR0
M2 4 7 2 2 NM W=3.1 L=2.5 M=1 * MM1XI1
M3 4 7 1 1 PM W=3.1 L=2.5 M=1 * MM0XI1
M4 6 3 2 2 NM W=3.1 L=2.5 M=1 * MM1XI0
M5 6 3 1 1 PM W=3.1 L=2.5 M=1 * MM0XI0
* NODE name:NET8 number: 6
* NODE name:NET3 number: 7
.ends top
* The end
Example 2: Generates the default head.cdl file and a CDL netlist file called “layout.cdl” from the finalized 6NETL.DAT layout netlist file in batch mode:
DRAC2CDL << !
infile 6NETL.DAT
outfile layout.cdl
r
!
Return to top