Unsupported LEF construction

edited June 2014 in KLayout Support
Hi Matthias,

First, thank you very much for the best tool! We use it every day :)

In our new project we faced with new (for us) LEF syntax that is not supported by klayout.
Here is an example cut from LEF OBS shapes description:
----------------
OBS
LAYER metal3 ;
RECT 765.65 250.4 884.65 260.4 ;
RECT 765.65 239.7 884.65 249.7 ;
RECT 759.95 175.7 884.65 176.7 ;
LAYER metal3 SPACING 0.7 ;
RECT 114.2 0 136.15 265.1 ;
RECT 0 0 110.3 265.1 ;
RECT 140.05 0 304.35 265.1 ;
----------------
Here, "LAYER metal3 SPACING 0.7 ;" construction is used.
It says routing tool the minimum space it can route near the following shapes.
It is needed when you create wide blockage rectangle in LEF, but it is possible to route near it at minimum space.

Klayout just ignores these shapes and do not draw them. It is quite confusing.
Is it possible to support this construction?

Comments

  • edited June 2014

    Hi,

    Well, from the code that should be supported alread. KLayout will ignore the SPACING (it's no router, so this should be fine), but it should put the shapes on metal3.

    I suspect it's some other issue. Are you able to send a small testcase to the email address listed on the Contacts page?

    Or alternatively: could you verify that the shapes are read correctly if you remove the "SPACING 0.7" specification?

    I assume you're using the latest version (0.23.4). If not I'd ask you to try with that one - LEF has been continuously developed over some time.

    Regards,

    Matthias

  • edited November -1
    Matthias,

    yes, I use the latest version.

    I can print testcase right here:

    --- BEGIN testcase.lef ----
    VERSION 5.6 ;
    BUSBITCHARS "[]" ;
    DIVIDERCHAR "/" ;

    MACRO testcase
    CLASS BLOCK ;
    ORIGIN 0 0 ;
    FOREIGN testcase 0 0 ;
    SIZE 100 BY 100 ;
    SYMMETRY X Y R90 ;
    OBS
    LAYER metal1 ;
    RECT 0 0 50 50 ;
    LAYER metal2 SPACING 0.7 ;
    ; LAYER metal2 ;
    RECT 0 0 70 70 ;
    END
    END testcase

    END LIBRARY
    --- END of testcase.lef ----

    If you comment line with SPACING statement and uncomment with simple LAYER definition, everything will work correctly.
  • edited June 2014

    Hi,

    thanks very much for the testcase.

    However, I'm afraid I'm not able to reproduce the issue right away.

    I'm not an everyday user of LEF, so I am not very familiar with that format. By "comment line" you mean adding a semicolon in from like above? If I just copy & paste the sample above the reader complains about expecting an END statement in line 15. But the following two examples produce identical results:

    VERSION 5.6 ;
    BUSBITCHARS "[]" ;
    DIVIDERCHAR "/" ;
    
    MACRO testcase
    CLASS BLOCK ;
    ORIGIN 0 0 ;
    FOREIGN testcase 0 0 ;
    SIZE 100 BY 100 ;
    SYMMETRY X Y R90 ;
    OBS
    LAYER metal1 ;
    RECT 0 0 50 50 ;
    LAYER metal2 ;
    RECT 0 0 70 70 ;
    END
    END testcase
    
    END LIBRARY
    

    and

    VERSION 5.6 ;
    BUSBITCHARS "[]" ;
    DIVIDERCHAR "/" ;
    
    MACRO testcase
    CLASS BLOCK ;
    ORIGIN 0 0 ;
    FOREIGN testcase 0 0 ;
    SIZE 100 BY 100 ;
    SYMMETRY X Y R90 ;
    OBS
    LAYER metal1 ;
    RECT 0 0 50 50 ;
    LAYER metal2 SPACING 0.7 ;
    RECT 0 0 70 70 ;
    END
    END testcase
    
    END LIBRARY
    

    In both cases I see three rectangles aligned at the lower-left corner: on metal1 with 50x50, on metal2 with 70x70 and on "OUTLINE" with 100x100. All experiments were run on Linux, 0.23.4.

    Is that how the result is supposed to look like? Maybe you're able to provide another hint?

    Regards,

    Matthias

Sign In or Register to comment.