Dracula's syntax and naming convension

T

Thuong

Guest
Hi!

I am trying to learn Dracula and how to write DRC decks. I would
appreciate it somebody could answer the following questions for me as
I could not find them in any of the Dracula's documentation.

I have noticed that it seems that Dracula is only looking at the first
3 letters of keywords, therefore, allowing to abreviate my commands or
even tolerate my mispells. For example, I could write WID for WIDTH,
OUT for OUTSIDE, and SEL for SELECT. It also seems that I could use
secondary keywords as layer names for my derived layers. I would
appreciate it if someone could confirm if my assumptions are correct.

Regards,
Thuong
 
Thuong,

I don't believe this is documented, so don't do it. Use the documented
names.

Using abbreviated names will only confuse other readers of the rule deck, and
potentially not work if things change.

I think I said this in a previous reply.

Andrew.

On 2 Mar 2004 06:48:44 -0800, thuong_u@hotmail.com (Thuong) wrote:

Hi!

I am trying to learn Dracula and how to write DRC decks. I would
appreciate it somebody could answer the following questions for me as
I could not find them in any of the Dracula's documentation.

I have noticed that it seems that Dracula is only looking at the first
3 letters of keywords, therefore, allowing to abreviate my commands or
even tolerate my mispells. For example, I could write WID for WIDTH,
OUT for OUTSIDE, and SEL for SELECT. It also seems that I could use
secondary keywords as layer names for my derived layers. I would
appreciate it if someone could confirm if my assumptions are correct.

Regards,
Thuong
--
Andrew Beckett
Senior Technical Leader
Custom IC Solutions
Cadence Design Systems Ltd
 
Thanks Andrew for replying to both of my questions. The reason why I
asked this is because I have seen it in many rule decks provided by
several different foundries around the world. Yet, Dracula does not
seem to complain and, there's no documentations at all about whether
or not abreviated commands and using keywords as derived layer names
are allowed. I don't have access to the latest documentations to
confirm this.

Andrew Beckett <andrewb@DELETETHISBITcadence.com> wrote in message news:<cag940lcsdah0apujaiq0g674ff7vepk7i@4ax.com>...
Thuong,

I don't believe this is documented, so don't do it. Use the documented
names.

Using abbreviated names will only confuse other readers of the rule deck, and
potentially not work if things change.

I think I said this in a previous reply.

Andrew.

On 2 Mar 2004 06:48:44 -0800, thuong_u@hotmail.com (Thuong) wrote:

Hi!

I am trying to learn Dracula and how to write DRC decks. I would
appreciate it somebody could answer the following questions for me as
I could not find them in any of the Dracula's documentation.

I have noticed that it seems that Dracula is only looking at the first
3 letters of keywords, therefore, allowing to abreviate my commands or
even tolerate my mispells. For example, I could write WID for WIDTH,
OUT for OUTSIDE, and SEL for SELECT. It also seems that I could use
secondary keywords as layer names for my derived layers. I would
appreciate it if someone could confirm if my assumptions are correct.

Regards,
Thuong
 
thuong_u@hotmail.com (Thuong) wrote in message news:<bd8360d4.0403022254.27ef8e2d@posting.google.com>...
Thanks Andrew for replying to both of my questions. The reason why I
asked this is because I have seen it in many rule decks provided by
several different foundries around the world. Yet, Dracula does not
seem to complain and, there's no documentations at all about whether
or not abreviated commands and using keywords as derived layer names
are allowed. I don't have access to the latest documentations to
confirm this.
Very many years ago, I wrote the most complete sample Dracula rule deck
in the world. This "drac.rul" rule deck contained every single Dracula
command known to man (and quite a few known only to internal programmers).

I'll send that "drac.rul" template to the thread participants' business
address (I never send support information to bogus free-email addresses).

In it's thousands of lines, I used the syntax as shown below:

*DESCRIPTION ;Delineate the start of the Description-block commands:
;
; Note: The examples provided with this rules file
; are set up such that the capitalized portion
; of every example command consists of the
; minimum-allowable abbreviation for PDRACULA
; to recognize the command. For example,
; "PRIMary = CADENCE" indicates the shortest
; working abbreviation would be "PRIM = CADENCE".
;
PRIMary = cname ;Choose the top-level cell for DRACULA to expand:
; cname = any valid cell name up to 32 characters long.
;
; The cell name is case-sensitive for SYSIN = CIF, or,
; when CNAMES-CSEN = YES.
;
; Note: DRACULA, version 3.0, unix version will accept
; the dollar-sign as a valid character.
; PRIMARY = A$b$C$ will be interpreted as: A$B$C$
; or A$b$C$ depending on CNAMES-CSEN=YES/NO.
;
; PRIMARY is a required Description-block command.
; See also the NO-PRIMARY-CELL Description-block cmd.
; Example: PRIMary = 123456_CELL

etc. (for thousands upon thousands of DRACULA-acceptable syntax templates) ...
 
Hi John,

I would appreciate it very much if you could send me your file. This
would help me tremendously. Thanks in advance for you help.

Thuong
tu@3dfab.com

dmsflow@yahoo.com (John Gianni) wrote in message news:<d92d25cb.0403031403.67cf7f5a@posting.google.com>...
thuong_u@hotmail.com (Thuong) wrote in message news:<bd8360d4.0403022254.27ef8e2d@posting.google.com>...
Thanks Andrew for replying to both of my questions. The reason why I
asked this is because I have seen it in many rule decks provided by
several different foundries around the world. Yet, Dracula does not
seem to complain and, there's no documentations at all about whether
or not abreviated commands and using keywords as derived layer names
are allowed. I don't have access to the latest documentations to
confirm this.

Very many years ago, I wrote the most complete sample Dracula rule deck
in the world. This "drac.rul" rule deck contained every single Dracula
command known to man (and quite a few known only to internal programmers).

I'll send that "drac.rul" template to the thread participants' business
address (I never send support information to bogus free-email addresses).

In it's thousands of lines, I used the syntax as shown below:

*DESCRIPTION ;Delineate the start of the Description-block commands:
;
; Note: The examples provided with this rules file
; are set up such that the capitalized portion
; of every example command consists of the
; minimum-allowable abbreviation for PDRACULA
; to recognize the command. For example,
; "PRIMary = CADENCE" indicates the shortest
; working abbreviation would be "PRIM = CADENCE".
;
PRIMary = cname ;Choose the top-level cell for DRACULA to expand:
; cname = any valid cell name up to 32 characters long.
;
; The cell name is case-sensitive for SYSIN = CIF, or,
; when CNAMES-CSEN = YES.
;
; Note: DRACULA, version 3.0, unix version will accept
; the dollar-sign as a valid character.
; PRIMARY = A$b$C$ will be interpreted as: A$B$C$
; or A$b$C$ depending on CNAMES-CSEN=YES/NO.
;
; PRIMARY is a required Description-block command.
; See also the NO-PRIMARY-CELL Description-block cmd.
; Example: PRIMary = 123456_CELL

etc. (for thousands upon thousands of DRACULA-acceptable syntax templates) ...
 
Bear in mind, it is folly to GUESS the number of characters in a
DRACULA abbreviation.

The actual number of characters is not always 3 as you surmised.
In fact (see below), it's often way more than three in order to
get a unique abbreviation, given the depth of the DRACULA command
syntax.

For example, I simply grep'd just the description block of my ancient
drac.rul file to come up with this excerpted list of abbreviations:

ABort-p-g-short = YES
CHeck-mode = CELL
CNames-csen = YES
DEL-vir-wire = YES
GRound-node = GND1, MINUS
HCELL = INV1 INV1
HCELL-File = HCELL.FIL
MAG-bef-grid = YES
NOT-hcell = NOR
POwer-node = VPP, PWR, PLUS
SIZE-MInimum-width = .005 mic
ABORT-SOFTCHK = YES
ACute-clip = NO
ARray = BOUNDARY SRFF_CEL
AUto-restart = yes
BAtch-queue = FAST$BATCH
BRacket-def = {,}
CELL-Child-text = NO
CELL-Error-rep = HIER
CELL-LIBRARY = YES
CELLBox-layer = 63
COMmands = yes
CONN-INTER-WIRE = YES
CONvert-database = YES
CPOINT-FILE = CORRESPONDENCE.FILE
CTEXT = 60 ATTACH = METAL1
DELCel = LOGO
DIodeseq = A3 P3
EBES-Mode = ALF
EBES-Stripe = 1024
EBES-Mode = ALF
EBES-Stripe = 1024
EBES-Unit = 0.25 MICRONS
END-Label = SCHMIN
END-Label = stage20
END-Macro = CLEAN.COM
ENVironment-max = 10 MICrons
ERror-path-width = .25 MICRON
EVen-dbu = YES
EXPand-node-delimiter = "-"
FILTER-LAY-OPT = BCDEFGHIJK
FILTER-LAY-OPT = BCDEFGHIJK
FILTER-OPT = BCDEFGHIJK
FILTER-SER-CONN = NO
FLAG-Acute = YES
FLAG-Non45 = YES
FLAG-Offgrid = YES
FLAG-Self = YES
FLATten-pwrgnd = yes
GEN-TEXT-FIle = edtext.file
GEN-TEXT-FRame = 9 MICrons
GEN-TEXT-Wire = yes
GEN-TXT-FLtnode = yes
GLobal-frame = 1 micron
HCELL-Rule = 20, 10 2 300
INDisk-file = [-]INPUT.DB
INMag = 8.5
INTape = [-]INPUT.DB
Keepdata = SMART
LAYER-FILE = /usr/foo/drac2edge/layers
Keepdata = SMART
LAYER-FILE = /usr/foo/drac2edge/layers
LAYER-FILE-type = display
LIMIT-Input-to = POLY
LIMIT-Run-to = ERRCEL01
LISterror = 50
LVS-OPTION = JG
LVSRPT-ONLY = YES
LVl-part = SCHEMATIC
MAChine = via
MEBES-Mode = EXT
MEBES-Stripe = 1024
MEBES-Unit = 1.0 MIC
MIRROR = Y
MIni-summary = NO
MODE = EXEC NOW
MODEL = MOS[N],nmos MOS[PX],pmos DIO[N],d
NO-Layout-text = YES
NO-Primary-cell = YES
OUTDisk = DUMMY.OUT
OUTLib = OUT123456_CELL
OUTMag = 10
OUTPUT-ONE-LAYER = YES
OUTPUT-TEXT = YES
OUTPut-outdisk =
OUTTape = DUMMY.OUT
PArset SET1 AREA PERI CA CP BA BP EA EP
PG = MEBES
PGE-MAskmaker = YES
PGE-MIRror = Y
PGE-MAskmaker = YES
PGE-MIRror = Y
PGE-Rotate = 270
PGE-mil = YES
PGEDIR-FILE = NO
PLAte-size = 6 INCH
PLOT-TExt-size = 1.0 0.5 0.175 .175
PLOT-Window = -500 -500 500 500
PLOTScale = 500
PLOTTer = 8242
PREfix-parasitic = DIO,PD CAP,PCAP
PRIMary = 123456_CELL
PRINtfile = TESTCASE
PROgram-dir = /usr/foo/Drac4.0/
PTS-Cell-type = foo
PTS-Mode = FLAT
RAM-CELL = RAM1, RAM2, RAM3
RESolution = .1 MICrons
ROM-CELL = ROM1, ROM2, ROM3, ROM4
ROTATION = 180
RUn = SLOW
SCALE = .001 MIC
SCALEData = 2 Mic
SCALEOut = .01 Mic
SCALEText = 2 Mic
SCHematic = /usr/foo/schematics/circuit1
SCHematic = LVSLOGIC
SIZE-CLIP-Factor = 2
SIZE-CLIP-Mode = 1
SIZE-MAx-vertex = 200
SIZE-CLIP-Mode = 1
SMASH-CAP-TYPE = YES
START-Label = EXPAND
START-Label = stage2
START-Macro = "foo.util hello world"
START-Macro = CLEAN.COM
START-Macro = TST.COM
STATus-command = "SHOW STATUS"
SUBCKT-NAME = TOPCELL
SUBMit-options = /NOPRINT
SUMmary-only = YES
SYSIn = GDS2
SYSOut = CIF TREE1234.DAT
SYSTem = CIF
TEXT-Font-size = 3.0 4.5 2.5 1.0
TEXT-LAYER = METAL1
TEXT-Pri-only = NO
UNIQue-procname = YES
UNIT = CAPACITANCE,PF AREA,P PERIMETER,U
WINDEl = -10.00 -10 10 -15.01
WINDOW = -1000.00 -100 1000 150.01
WINDOW-clip = YES
etc.

DISCLAIMER: I wrote the drac.rule in the late 1980's, and Dracula
has come a long way since then; so use this only as an example!
--
John Gianni
 
And since it isn't documented (at least I don't think it is), it's best not to
use the abbreviations at all, IMHO.

Andrew.

On 4 Mar 2004 12:39:40 -0800, dmsflow@yahoo.com (John Gianni) wrote:

Bear in mind, it is folly to GUESS the number of characters in a
DRACULA abbreviation.

The actual number of characters is not always 3 as you surmised.
In fact (see below), it's often way more than three in order to
get a unique abbreviation, given the depth of the DRACULA command
syntax.

For example, I simply grep'd just the description block of my ancient
drac.rul file to come up with this excerpted list of abbreviations:

ABort-p-g-short = YES
CHeck-mode = CELL
CNames-csen = YES
DEL-vir-wire = YES
GRound-node = GND1, MINUS
HCELL = INV1 INV1
HCELL-File = HCELL.FIL
MAG-bef-grid = YES
NOT-hcell = NOR
POwer-node = VPP, PWR, PLUS
SIZE-MInimum-width = .005 mic
ABORT-SOFTCHK = YES
ACute-clip = NO
ARray = BOUNDARY SRFF_CEL
AUto-restart = yes
BAtch-queue = FAST$BATCH
BRacket-def = {,}
CELL-Child-text = NO
CELL-Error-rep = HIER
CELL-LIBRARY = YES
CELLBox-layer = 63
COMmands = yes
CONN-INTER-WIRE = YES
CONvert-database = YES
CPOINT-FILE = CORRESPONDENCE.FILE
CTEXT = 60 ATTACH = METAL1
DELCel = LOGO
DIodeseq = A3 P3
EBES-Mode = ALF
EBES-Stripe = 1024
EBES-Mode = ALF
EBES-Stripe = 1024
EBES-Unit = 0.25 MICRONS
END-Label = SCHMIN
END-Label = stage20
END-Macro = CLEAN.COM
ENVironment-max = 10 MICrons
ERror-path-width = .25 MICRON
EVen-dbu = YES
EXPand-node-delimiter = "-"
FILTER-LAY-OPT = BCDEFGHIJK
FILTER-LAY-OPT = BCDEFGHIJK
FILTER-OPT = BCDEFGHIJK
FILTER-SER-CONN = NO
FLAG-Acute = YES
FLAG-Non45 = YES
FLAG-Offgrid = YES
FLAG-Self = YES
FLATten-pwrgnd = yes
GEN-TEXT-FIle = edtext.file
GEN-TEXT-FRame = 9 MICrons
GEN-TEXT-Wire = yes
GEN-TXT-FLtnode = yes
GLobal-frame = 1 micron
HCELL-Rule = 20, 10 2 300
INDisk-file = [-]INPUT.DB
INMag = 8.5
INTape = [-]INPUT.DB
Keepdata = SMART
LAYER-FILE = /usr/foo/drac2edge/layers
Keepdata = SMART
LAYER-FILE = /usr/foo/drac2edge/layers
LAYER-FILE-type = display
LIMIT-Input-to = POLY
LIMIT-Run-to = ERRCEL01
LISterror = 50
LVS-OPTION = JG
LVSRPT-ONLY = YES
LVl-part = SCHEMATIC
MAChine = via
MEBES-Mode = EXT
MEBES-Stripe = 1024
MEBES-Unit = 1.0 MIC
MIRROR = Y
MIni-summary = NO
MODE = EXEC NOW
MODEL = MOS[N],nmos MOS[PX],pmos DIO[N],d
NO-Layout-text = YES
NO-Primary-cell = YES
OUTDisk = DUMMY.OUT
OUTLib = OUT123456_CELL
OUTMag = 10
OUTPUT-ONE-LAYER = YES
OUTPUT-TEXT = YES
OUTPut-outdisk =
OUTTape = DUMMY.OUT
PArset SET1 AREA PERI CA CP BA BP EA EP
PG = MEBES
PGE-MAskmaker = YES
PGE-MIRror = Y
PGE-MAskmaker = YES
PGE-MIRror = Y
PGE-Rotate = 270
PGE-mil = YES
PGEDIR-FILE = NO
PLAte-size = 6 INCH
PLOT-TExt-size = 1.0 0.5 0.175 .175
PLOT-Window = -500 -500 500 500
PLOTScale = 500
PLOTTer = 8242
PREfix-parasitic = DIO,PD CAP,PCAP
PRIMary = 123456_CELL
PRINtfile = TESTCASE
PROgram-dir = /usr/foo/Drac4.0/
PTS-Cell-type = foo
PTS-Mode = FLAT
RAM-CELL = RAM1, RAM2, RAM3
RESolution = .1 MICrons
ROM-CELL = ROM1, ROM2, ROM3, ROM4
ROTATION = 180
RUn = SLOW
SCALE = .001 MIC
SCALEData = 2 Mic
SCALEOut = .01 Mic
SCALEText = 2 Mic
SCHematic = /usr/foo/schematics/circuit1
SCHematic = LVSLOGIC
SIZE-CLIP-Factor = 2
SIZE-CLIP-Mode = 1
SIZE-MAx-vertex = 200
SIZE-CLIP-Mode = 1
SMASH-CAP-TYPE = YES
START-Label = EXPAND
START-Label = stage2
START-Macro = "foo.util hello world"
START-Macro = CLEAN.COM
START-Macro = TST.COM
STATus-command = "SHOW STATUS"
SUBCKT-NAME = TOPCELL
SUBMit-options = /NOPRINT
SUMmary-only = YES
SYSIn = GDS2
SYSOut = CIF TREE1234.DAT
SYSTem = CIF
TEXT-Font-size = 3.0 4.5 2.5 1.0
TEXT-LAYER = METAL1
TEXT-Pri-only = NO
UNIQue-procname = YES
UNIT = CAPACITANCE,PF AREA,P PERIMETER,U
WINDEl = -10.00 -10 10 -15.01
WINDOW = -1000.00 -100 1000 150.01
WINDOW-clip = YES
etc.

DISCLAIMER: I wrote the drac.rule in the late 1980's, and Dracula
has come a long way since then; so use this only as an example!
--
Andrew Beckett
Senior Technical Leader
Custom IC Solutions
Cadence Design Systems Ltd
 

Welcome to EDABoard.com

Sponsor

Back
Top