• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Digital Implementation
  3. addFiller does not completely fill free area

Stats

  • Locked Locked
  • Replies 9
  • Subscribers 91
  • Views 16491
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

addFiller does not completely fill free area

kasyab
kasyab over 14 years ago

 Hi,

    I am seeing some strange behaviour with addFiller. It adds fillers on every alternate row and even then not everywhere. checkFiller duly reports gaps, but I am unable to change this behaviour inspite of turning on the -fitGap switch and trying '-util 1' with addFiller . I have checked that:

a) The list of filler cells is complete and ordered wider to narrower.

b) setFillerMode is not configured with anything wrong.

 

verifyGeometry, verifyConnectivity and verifyProcessAntenna all pass in Encounter, but I get errors related to p/n well continuity with the signoff DRC ruleset in Calibre.

 The version of encounter I am using is Encounter v09.10-p004_1.

 Any help is appreciated.

 Kasyab

  • Cancel
  • Kari
    Kari over 14 years ago

     Are there std cells on the rows where fillers aren't getting added? Is the row definition correct? Can you place a filler cell there by hand without errors? Just a few things to check to start narrowing down the issue...

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • kasyab
    kasyab over 14 years ago

    Hi Kari,

    Are there std cells on the rows where fillers aren't getting added?

    Yes. There are. I can forward pictures if so necessary. There are a large number of memory macros and the rows are cut in that area (including the placement blockage region for the macros), but if the rows are cut it should not influence the placement of thefillers in anyway,should it?

    Is the row definition correct?

    Can you explain a little more about what you mean by this? The rows match the std cell height of 4.92u (ST 130nm lib). However, I do get a warning during routing (CTS initially since I have routing turned on during CTS). That is pasted below:

     #NanoRoute Version v09.10-p020 NR091118-1115/USR62-UB
    #Using multithreading with 4 threads.
    #WARNING (NREX-28) The height of the first routing layer M1 is 0.000000. It should be larger than 0.000000
    #WARNING (NREX-30) Please also check the height and metal thickness values for the routing layers heigher than routing layer M1

     

    I am not sure they are related.

    Can you place a filler cell there by hand without errors?

    I tried this briefly yesterday but got warnings about the orientation. Itried moving one of the placed fillers to a row below but got warnings about  orientation violations. I was not able to change the orientation by editing the properties (FIXED -> PLACED, R0 -> MX).

     

    Hope this helps. I'm still looking for a solution.

     

    Thanks,

    Kasyab

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Kari
    Kari over 14 years ago

     Hi Kasyab,

    Let's talk about the rows. The orientation warnings you mention are definitely suspicious. Select one of your rows and hit Q, then look at the orientation. Then select the row above that, and do the same thing. Do your row orientations alternate R0, Mx, R0, Mx, etc.? 

    In order to select rows, you need to make them selectable in the layer selection panel on the right of the Encounter window. They're called "Standard Row".

    Also check the LEF of your filler cells - what is the SYMMETRY? It should be SYMMETRY X Y.

    - Kari

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • kasyab
    kasyab over 14 years ago

     Hi Kari,

       Thanks for the quick reply. I am running a new implementation and ran the checks you suggested. The rows are alternately marked R0 and MX.

     I can confirm that the LEF macros specify symmetry to be SYMMETRY X  Y for all the fillers I use.

    I should mention that I specify a user grid of 0.82u. The M2 pitch in this process is 0.41u. Can this influence the rows in any way?

    Kasyab

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Kari
    Kari over 14 years ago

     It sounds like everything is set up right so far. Another thing you can check in the LEF is the SITE definition. The site is used to create the rows. It's usually called CORE or core, but could be anything. Make sure your filler cells reference the site that was used to create the rows. (In the filler cell MACRO definition, it will say SITE core, or whatever your site is called.)

    Can you post the warning you got when you tried to put a filler cell in the row by hand? 

    Do you have std cell power rails in place? Are they correct? (Alternating VDD/GND.) 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • kasyab
    kasyab over 14 years ago

    Hi Kari,

    These are the warnings I got while trying to move the cell by hand. If you scroll down the list, you will see I tried various orientations as well.

    <CMD> selectInst FILLER_1030
    <CMD> uiSetTool move
    **WARN: (ENCDB-2513):    Given orientation not legal, FILLER_1030 remains original orientation R0, check for SYMMETRY statement in the LEF file for the cell FILLERCELL32.
    <CMD> setObjFPlanBox Instance FILLER_1030 2429.957 1406.399 2443.077 1411.319
    **WARN: (ENCDB-2513):    Given orientation not legal, FILLER_1030 remains original orientation R0, check for SYMMETRY statement in the LEF file for the cell FILLERCELL32.
    <CMD> placeInstance FILLER_1030 2430.07 1406.3 R0
    **WARN: (ENCDB-2513):    Given orientation not legal, FILLER_1030 remains original orientation R0, check for SYMMETRY statement in the LEF file for the cell FILLERCELL32.
    <CMD> placeInstance FILLER_1030 2430.07 1406.3 R0
    Instance FILLER_1030 is placed sideway.  Reset orientationto to R0.
    Flip instance FILLER_1030 to match row orient.
    **WARN: (ENCDB-2513):    Given orientation not legal, FILLER_1030 remains original orientation R0, check for SYMMETRY statement in the LEF file for the cell FILLERCELL32.
    <CMD> placeInstance FILLER_1030 2430.07 1406.3 R0
    <CMD> setObjFPlanBox Instance FILLER_1030 2430.847 1411.432 2443.967 1416.352
    <CMD> setObjFPlanBox Instance FILLER_1030 2430.89 1411.064 2444.01 1415.984
    **WARN: (ENCDB-2513):    Given orientation not legal, FILLER_1030 remains original orientation R0, check for SYMMETRY statement in the LEF file for the cell FILLERCELL32.
    <CMD> setObjFPlanBox Instance FILLER_1030 2430.268 1406.399 2443.388 1411.319
    <CMD> setObjFPlanBox Instance FILLER_1030 2431.003 1411.121 2444.123 1416.041
    <CMD> orientateInst FILLER_1030 MX
    Flip instance FILLER_1030 to match row orient.
    **WARN: (ENCDB-2513):    Given orientation not legal, FILLER_1030 remains original orientation R0, check for SYMMETRY statement in the LEF file for the cell FILLERCELL32.
    <CMD> setObjFPlanBox Instance FILLER_1030 2429.957 1406.088 2443.077 1411.008
    <CMD> orientateInst FILLER_1030 MX
    **WARN: (ENCDB-2513):    Given orientation not legal, FILLER_1030 remains original orientation R0, check for SYMMETRY statement in the LEF file for the cell FILLERCELL32.
    <CMD> orientateInst FILLER_1030 MY
    Flip instance FILLER_1030 to match row orient.
    **WARN: (ENCDB-2513):    Given orientation not legal, FILLER_1030 remains original orientation R0, check for SYMMETRY statement in the LEF file for the cell FILLERCELL32.

     The LEF MACRO's for the filler cells do not have a site (or SITE) definition. They define the macros with a CLASS CORE instead. I am not familiar with the LEF/DEF syntax, but has the handling of LEF's changed in this version of EDI (as opposed to SOC-8.1 or SOC-7.1 )?

    Kasyab

     

    PS: I just looked at the technology LEF and that does have a SITE CORE definition with co-ordinates matching the numbers I gave earlier. However, it sefines the symmetry only as 'y'.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Kari
    Kari over 14 years ago

     The SITE stuff is a pretty basic part of LEF that probably hasn't changed since LEF was created. Make sure your filler cells reference the CORE site in your tech LEF, like this:

    MACRO FILL1
        CLASS CORE ;
        FOREIGN FILL1 0.000 0.000  ;
        ORIGIN 0.000 0.000 ;
        SIZE 0.200 BY 1.800 ;
        SYMMETRY x y ;
        SITE core ;
        PIN VSS
            DIRECTION INOUT ;
            USE ground ;
            SHAPE ABUTMENT ;
            PORT
            LAYER M1 ;
            RECT  0.000 -0.165 0.200 0.165 ;
            END
        END VSS
        PIN VDD
            DIRECTION INOUT ;
            USE power ;
            SHAPE ABUTMENT ;
            PORT
            LAYER M1 ;
            RECT  0.000 1.635 0.200 1.965 ;
            END
        END VDD
    END FILL1
     

    If your filler cell LEF definitions are really missing this part, then that's the problem I think. Add that in, reload the design, then try to add fillers again.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • kasyab
    kasyab over 14 years ago

     Hi Kari,

       Thanks a lot foryour inputs.

      I looked at your last reply and checked my conf file again. I found two LEF files defining the filler cells; the first without the SITE definitions and the one following that with SITE definitions (with antenna rules). Since the one without the site definition was getting read first, the second one was being ignored. I updated the confile with the correctLEF and things happened as they should.

     I've generated a new GDS and have DRC running. Fingers crossed this time :-).

    Thanks again,

    Kasyab

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Kari
    Kari over 14 years ago

     You're welcome! Glad you found the issue and are able to move on with your design.

     

    - Kari

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information