Home > Community > Blogs > Digital Implementation > planning for hierarchical design success do you have a robust feedthrough insertion solution
Login with a Cadence account.
Not a member yet?
Create a permanent login account to make interactions with Cadence more conveniennt.

Register | Membership benefits
Get email delivery of the Digital Implementation blog (individual posts).


* Required Fields

Recipients email * (separate multiple addresses with commas)

Your name *

Your email *

Message *

Contact Us

* Required Fields
First Name *

Last Name *

Email *

Company / Institution *

Comments: *

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

Comments(1)Filed under: Digital Implementation, encounter, hierarchical design, EDI system, feedthrough insertion

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


By vamsi on September 26, 2011
nice explanation for a fresher to get an idea..

Leave a Comment

E-mail (will not be published)
 I have read and agree to the Terms of use and Community Guidelines.
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.