Dracula's syntax and naming convension

Discussion in 'Cadence' started by Thuong, Mar 2, 2004.

  1. Thuong

    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, Mar 2, 2004
    #1
  2. 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.
     
    Andrew Beckett, Mar 2, 2004
    #2
  3. Thuong

    Thuong Guest

    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.
     
    Thuong, Mar 3, 2004
    #3
  4. Thuong

    John Gianni Guest

    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) ...
     
    John Gianni, Mar 3, 2004
    #4
  5. Thuong

    Thuong Guest

    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
     
    Thuong, Mar 4, 2004
    #5
  6. Thuong

    John Gianni Guest

    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, Mar 4, 2004
    #6
  7. 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.

     
    Andrew Beckett, Mar 5, 2004
    #7
Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.