Looking CalTech Interchange Format Syntax.

Discussion in 'Cadence' started by hsphuah, May 12, 2005.

  1. hsphuah

    hsphuah Guest

    Hi all,

    Does CalTech Interchange Format (CIF) has BNF on the Internet? If so,
    could someone give me the link, please? Thanks.

    HS Phuah
     
    hsphuah, May 12, 2005
    #1

  2. You're working with CIF as well as GDSII? There are many websites with
    info on both CIF and GDSII, such as:
    http://www.wrcad.com/manual/xicmanual/node476.html
    http://www.rulabinsky.com/cavd/text/chapb.html

    I can't find a site with BNF for CIF at the moment. I
    think CIF actually stands for "CalTech Intermediate Format", so you
    might have an easier time Google searching with that term. CIF is a little
    tricky since there are many optional parameters, custom languange
    extensions, etc. For example, you can have an entire layout in a CIf
    text file with no newlines or whitespace and only refer to the commands
    by their first letters (if unique). It's less well-defined than GDSII,
    though easier to work with since it's text.

    Frank
     
    Frank E. Gennari, May 12, 2005
    #2
  3. I was able to find the following:
    http://www.ee.vt.edu/~ee5545jg/ee5545e/sld004.htm

    Otherwise, I'd imagine it's documented in Mead & Conway; see if a
    coworker/professor who has been around awhile has a copy.

    If I may ask, what's the interest in CIF? I haven't played with it
    since I used the Chipmunk tools and LEdit back at Caltech. (Though, by
    the time I got there, the actual Chipmunk cluster was long gone, and we
    were running on 300s or 400s...)
     
    David Cuthbert, May 12, 2005
    #3
  4. hsphuah

    hsphuah Guest

    I am requested to write a program to convert GDSII to CIF and vice
    versa for layout automation software. That's why I am looking for CIF
    BNF.

    HS Phuah
     
    hsphuah, May 12, 2005
    #4
  5. hsphuah

    hsphuah Guest

    According to the Cadence Sourcelink, you are right. CIF stands for
    CalTech Intermediate Format. I found the websites prior to posting my
    question. Unfortunately, those information could not help me to much to
    start my project.
     
    hsphuah, May 12, 2005
    #5
  6. This is a solved problem. Is there a reason why pipo doesn't work for
    you? Pull up the .../tools/doc/transref/transref.pdf documentation in
    Acrobat for information on this.

    If you're doing this as a learning exercise, that's great. But if it's
    to write a competing tool, we can't exactly help you in this regard. :)
     
    David Cuthbert, May 12, 2005
    #6
  7. Ok, I managed to track down a copy of Mead & Conway (which is out of
    print). I'm reproducing the CIF 2.0 grammar found on pages 116-117 here
    (and translating it to BNF on the fly) in the hopes that it becomes part
    of Google's collective memory.

    cifFile ::= (blank* command? semi)* endCommand blank*
    command ::= primCommand | defDeleteCommand |
    defStartCommand semi (blank* primCommand? semi)* defFinishCommand
    primCommand ::= polygonCommand | boxCommand | roundFlashCommand |
    wireCommand | layerCommand | callCommand | userExtensionCommand |
    commentCommand
    polygonCommand ::= "P" path
    boxCommand ::= "B" integer sep integer sep point (sep point)?
    roundFlashCommand ::= "R" integer sep point
    wireCommand ::= "W" integer sep path
    layerCommand ::= "L" blank* shortname
    defStartCommand ::= "D" blank* "S" integer (sep integer sep integer)?
    defFinishCommand ::= "D" blank* "F"
    defDeleteCommand ::= "D" blank* "D" integer
    callCommand ::= "C" integer transformation
    userExtensionCommand ::= digit userText
    commentCommand ::= "(" commentText ")"
    endCommand ::= "E"
    transformation ::= (blank* ("T" point |
    "M" blank* "X" |
    "M" blank* "Y" |
    "R" point)*)*
    path ::= point (sep point)*
    point ::= sInteger sep sInteger
    sInteger ::= sep* "-"? integerD
    integer ::= sep* integerD
    integerD ::= digit+
    shortname ::= c c? c? c?
    c ::= digit | upperChar
    userText ::= userChar*
    commentText ::= commentChar* |
    commentText "(" commentText ")" commentText
    semi ::= blank* ";" blank*
    sep ::= upperChar | blank
    digit ::= "0" | "1" | ... | "9"
    upperChar ::= "A" | "B" | ... | "Z"
    blank ::= any ASCII character except digit, upperChar, "-", "(", ")",
    or ";"
    userChar ::= any ASCII character except ";"
    commentChar ::= any ASCII character except "(" or ")"
     
    David Cuthbert, May 12, 2005
    #7

  8. That's quite a project if you plan to support the complete CIF/GDSII
    formats. Some of the shapes in one format can't easily be represented in
    the other (round flashes in GDSII?). If you want a reliable converter that
    others will be using then you probably want to look for a cheap/free
    conversion tool, or use Cadence. What is the intended use of your tool?
    What sort of design flow involves both CIF and GDSII?

    Frank
     
    Frank E. Gennari, May 12, 2005
    #8
  9. hsphuah

    hsphuah Guest

    Thank you for the information. We know CIF/GDSII conversion tools are
    available in the market. Unfortunately, some of them cannot integrate
    into our design flow environment. In my company, we use many EDA tools
    from different vendors. All EDA tools have been customized to suit our
    design flow environment here.

    In my layout automation team, we have only 3 engineers customized
    layout automation tools. To make the matter worse, all of us have
    different education and working experience. None of us knows have solid
    understand about GDSII and CIF formats. My project leader thought it
    was easy to implement it. I only knew the difficulty after I read
    through the CNF slides yesterday. :(

    Anyway, I am really appreciated all your helps. I had learned a lot
    from the GDSII and it is good for me to understand how software
    developers handle shapes, graphics and etc in binary files. :)
     
    hsphuah, May 13, 2005
    #9
  10. hsphuah

    G Vandevalk Guest

    On a similar note ...

    does anyone have a set of C ( or C++ or some classLibrary ) of functions
    to read/write GDSII. (version 6 or 5 or ... )

    At my last job a co-worker had created a compliant GDSII reader/writer
    in C. This was very useful in many of our custom tools. As time went on,
    our company evolved into using comercial tools and this was only used
    when the commercial tools had problems ( i.e. hidden 2Gig limit or
    internal cell size limits, strange illegal cell names ... ) and custom
    debugging
    was needed.

    -- Gerry @ www.ictooling.com

    (still remembering the "good-old-days" when you had to write your own tools
    and GDSI was the latest fad ... )
     
    G Vandevalk, May 13, 2005
    #10
  11. I tried to get Softjin's ANUVAD a few months ago. I filled out their
    request form and never got anything. Eventually they called me about it
    and seemed helpful, but by that time I didn't need it anymore. It seems
    like ANUVAD is the right way to go, especially if you plan to work with
    OASIS sometime in the near future. I'm not sure if their free source
    GDSII/OASIS tools are really free for commercial purposes. I'm planning to
    look into their tools in more detail later when I need the OASIS
    converter so I guess I'll find out.

    Frank
     
    Frank E. Gennari, May 13, 2005
    #11
  12. It sounds like ANUVAD is a good way to go when it's time to add OASIS
    support to my company's tools (unless you're a Softjin marketer in
    disgise:). I guess back at the beginning of the year when I tried to get
    the tool the registration system wasn't fully functional. I'll certainly
    have to take a look in the near future.

    My layout viewer isn't open source (though I did consider that option). I
    would like to make it available to others, but I don't exactly own the
    copyright as it was initially developed under a research grant at UC
    Berkeley. Maybe I can publish some of the algorithms and ideas involved in
    that project in a future paper, but I don't think I can release it as open
    source.

    Frank
     
    Frank E. Gennari, May 16, 2005
    #12
  13. hsphuah

    fogh Guest

    Frank,

    I gave it a quick look. So far
    The registration works fine. The code compiles nicely on solaris and
    linux, even if there are some strangeties in the makefiles. I tried the
    programs on a few stream files (below 2GB), and it ran without trouble.
    The license allows commercial use, unreleased enhancements, and binary
    distribution. The directory layout is very clear and clearly mapped to
    libraries and namespaces. Both the design and the library usage are
    concisely and accurately documented. Only good surprises so far.

    Is your openGL layout rendering code now open sourced ?
     
    fogh, May 16, 2005
    #13
  14. Try this one : StreamVista : http://www.semigy.com/
    A free GDSII viewer. (running Windows only)

    The speed is good, with nice features including zooming, ruler, etc ...

    ================
    Kholdoun TORKI
    http://cmp.imag.fr
    ================
     
    Kholdoun TORKI, May 19, 2005
    #14
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.