• 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. Blogs
  2. Digital Design
  3. Planning for Hierarchical Design Success: Do You Have a…
BobD
BobD

Community Member

Blog Activity
Options
  • Subscribe by email
  • More
  • Cancel
CDNS - RequestDemo

Have a question? Need more information?

Contact Us
EDI system
hierarchical design
feedthrough insertion
encounter
Digital Implementation

Planning for Hierarchical Design Success: Do You Have a Robust Feedthrough Insertion Solution?

27 Dec 2010 • 2 minute read

Feedthrough insertion is a subtly crucial task that naturally arises in hierarchical digital design.  There are several types of approaches we can use to allow signals to traverse across a chip, but the most common and effective I've seen is where buffers are inserted in neighboring partitions.  This eliminates top-level routing and more importantly takes the top-level timing closure task and makes it part of block-level timing closure.  In Encounter this capability is accessed through the TCL command insertPtnFeedthrough.

Here's a picture to describe what I'm talking about.  Say we have 3 partitions: a, b, and c.  A signal that originates in "a" and connects to "c" traverses over "b":

If we don't perform feedthrough insertion, what we'll get is a net that traverses over partition "b".  This is unacceptable in scenarios where all layers are reserved for partitions, and in scenarios where some layers are reserved for over the block-routing we get into a difficult situation because we can't insert buffers on nets that exceed the maximum distance required for rebuffering.  See below what the design would look like after buffering without feedthrough insertion:

If we use insertPtnFeedthrough, the tool will:

  1. Insert buffers within "b" for each entrance and (optionally) exit required to traverse the partition.
  2. Create new ports as needed on the partitions to make new connections.  In this case, 1 new input and 1 new output port is needed on "b".
  3. Create new top-level logical nets as needed to connect to the new ports.
Here's what the design would look like after feedthrough insertion (insertPtnFeedthrough -chanLess -bufCell BUFX1 -doubleBuffer) prior to partitioning:

Once the buffers have been inserted we can place the partition pins (assignPtnPin) and commit the partitions (partition is the command).  The result should be a design where connections between neighboring partitions consist of only 2-pin nets between abutted edges (or in the case of design with small roughly 10 microns channels, short jumper wires connecting the partitions):

So that's how feedthrough works in its simplest sense. In this context it's tempting to consider writing a script to do this at the logic synthesis stage.  But feedthrough insertion is much more complex in practice.  In upcoming blog posts I plan to focus on more advanced scenarios to give you a sense of what to prepare for in terms of making sure the tools you're using are up to the task.

I'd love it if you subscribed to our Digital Implementation RSS feed -or- via E-mail at the form on the right side of this page so we can continue the conversation.

Bob Dwyer


CDNS - RequestDemo

Try Cadence Software for your next design!

Free Trials

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

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