• 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. Which steps are necessary such that Innovus recognizes the...

Stats

  • Locked Locked
  • Replies 3
  • Subscribers 91
  • Views 3341
  • 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

Which steps are necessary such that Innovus recognizes the link between I/O pads defined in the netlist and the floorplan?

FormerMember
FormerMember over 2 years ago

Dear Community

I am working on a digital design where the I/O pads are placed in a predefined location. The floorplan is described in a .def file where the pads are defined as follows:

COMPONENTS 55 ;
    - I0 BBCUD4SF + PLACED ( 00) W ;
    - I1 VDDPADF + PLACED ( 100 0 ) FN ;
    - I2 GNDORPADF + PLACED ( 200 0 ) N ;
    - I3 ICUDF + PLACED ( 300 0) W ;
    < other definitions >
END COMPONENTS

The numbers are made up; don't pay attention to them. Furthermore, the pins are simply placed on top of the I/O pads where their MET1 pin is located according to the LEF file. So for example:

PINS 256 ;
    - adc_in + NET adc_in
      + DIRECTION INPUT
      + PORT
        + LAYER MET1 ( 0 0 ) ( 280 280 )
        + FIXED ( 25 25) W ;
    - vddd + NET vddd
      + DIRECTION INOUT
      + USE POWER
      + PORT
        + LAYER MET3 ( 0 0 ) ( 280 280 )
        + FIXED ( 125 25) FN ;
    - vssd + NET vssd
      + DIRECTION INOUT
      + USE GROUND
      + PORT
        + LAYER MET3 ( 0 0 ) ( 280 280 )
        + FIXED ( 225 25) N ;
    - adc_out + NET adc_out
      + DIRECTION OUTPUT
      + PORT
        + LAYER MET1 ( 0 0 ) ( 280 280 )
        + FIXED ( 325 25) W ;
    < other definitions >

END PINS

Finally, the Pads are defined in the gate-level netlist from the synthesis tool, which looks something like this:

module pads(<long list of ports>);
    < other assignments >
    BBCUD4SF i0_BBCUD4SF (< pin assignment >);
    VDDPADF i0_VDDPADF (< pin assignment >);
    GNDORPADF i0_GNDORPADF (< pin assignment >);
    ICUDF i0_ICUDF (< pin assignment >);
endmodule

Now when I import everything into Innovus, the setup does not quite work yet. First of all, I get a warning that says

**WARN: (IMPFP-3961):    The techSite 'io_site_F3V' has no related standard cells in the LEF/OA library. The calculations for this site type cannot be made unless standard cell models of this type exist in the LEF/OA library. Ignore this warning if the SITE is not used by the library. Alternatively, remove the SITE definition for the LEF/OA library to avoid this message.

Could someone explain what a "site" is in this context?

Moreover, Innovus does not recognize the connection between the pads in the netlist and the floorplan. I get several messages in the form

IoPad I1 is not in DB, created it.
IoPad I2 is not in DB, created it.
IoPad I0 is not in DB, created it.
IoPad I3 is not in DB, created it.

As a result, Innovus places I/O Pads randomly in my design and links them to the pins defined in the .def file rather than using the predefined pads. Which steps are necessary such that Innovus makes the link between the netlist and the floorplan? Also, are there any special steps required for power pins?

Thank you for any advice.

  • Cancel
  • DimoM
    DimoM over 2 years ago

    Hi,
    from the LEF/DEF 5.8 Language Reference:  "[a site] defines a placement site in the design. A placement site gives the placement grid for a family of macros, such as I/O, core, block, analog, digital, short, tall, and so forth. SITE definitions can be used in DEF ROW statements."

    It seems like your floorplan DEF file and the netlist have a mismatch. The tool is telling you that there is no instance called I0/I1/I2/I3 in the design, which is probably the case, because you have a hierarchy around all the pads, and they also have longer names (e.g. i0_BBCUD4SF).
    I suggest you check the full name of the pads in your netlist and fix your DEF file accordingly.

    - Dimo

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • FormerMember
    FormerMember over 2 years ago in reply to DimoM

    Dear Dimo

    Thank you for your response.

    I can confirm that matching the instance names (including the hierarchy) is what was missing. For everybody else reading this: The correct syntax in my small example would be

    COMPONENTS 55 ;
        - i0_pads/i0_BBCUD4SF BBCUD4SF + PLACED ( 00) W ;
        - i0_pads/i0_VDDPADF VDDPADF + PLACED ( 100 0 ) FN ;
        - i0_pads/i0_GNDORPADF GNDORPADF + PLACED ( 200 0 ) N ;
        - i0_pads/i0_ICUDF ICUDF + PLACED ( 300 0) W ;
        < other definitions >
    END COMPONENTS
    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • DimoM
    DimoM over 2 years ago in reply to FormerMember

    Great, thanks for following up on this. Some future reader could appreciate it :)

    • 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