ExpertQuestion 139 of 141Source: Synopsys PrimeTime User Guide: ECO Flow (Manual Netlist Editing, ECOs With Multiply Instantiated Modules)

What happens when you manually edit an instance of a multiply-instantiated block in PrimeTime?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

PrimeTime uniquifies the edited instance automatically. If you size_cell (PT) a cell inside one of several instances of the same block, that instance, and every block above it up to the first singly instanced block, becomes a new unique design. The timing is right for what you did, but the physical side now has two different versions of a block that was built once, so decide first whether the change belongs to every instance.

Technical Reference DiagramWhat happens when you manually edit an instance of a multiply-instantiated block in PrimeTime?
A schematic of two instances of the same block, where a size_cell edit inside one instance makes it unique along with its parent up to the first singly instanced level, while the other instance keeps the original design.

Technical Explanation

  • The uniquify is automatic and logged. Editing i1/low/n1 with size_cell (PT) prints messages such as the low block becoming low_0 and its parent inter becoming inter_0. The new name avoids names already in use.
  • It goes up the hierarchy. The edited block is uniquified along with all blocks above it, up to the first singly instanced block. The parent and ancestors are marked as edited through the Boolean is_edited attribute.
  • PrimeTime does not create the new design right away. It creates a placeholder, similar to what link_design -remove_sub_designs (PT) leaves, and the designs become real only when you relink. list_designs -all (PT) shows them.
  • Other edit commands do the same. rename_net (PT) on a net inside a multiply instantiated block uniquifies it, and write_changes (PT) writes the rename.
  • Automated ECO has a MIM mode. With eco_enable_mim (PT) set to true, fix_eco_timing (PT) and the other fix commands apply the same change across each set of MIM instances and write one change list per set.
  • eco_mim_preserve (PT) controls whether MIM groups are preserved, and the -all_mim_instances option of size_cell (PT), insert_buffer (PT) and remove_buffer (PT) overrides it when it is false.
  • Physically, a block reused across instances is normally implemented once. A uniquified edit has to become a separate block in layout, which costs an implementation and a signoff of its own.

What To Check

  • Uniquify messages in the PrimeTime log after every manual edit.
  • Designs listed by list_designs -all and the is_edited attribute on hierarchy.
  • Whether eco_enable_mim is set when automated fixing runs.
  • Whether the change list applies to one instance or all instances.

Command Checks & Actions

PrimeTime (pt_shell)size_cell i1/low/n1 class/NR4P

Manual resize inside one instance; triggers uniquify.

PrimeTime (pt_shell)get_attribute [get_cells i1/low] is_edited

Confirms which hierarchy was marked edited.

PrimeTime (pt_shell)set_app_var eco_enable_mim true

Applies automated ECO changes across all MIM instances.

PrimeTime (pt_shell)report_eco_mim_instances

Reports the MIM groups the ECO uses.

PrimeTime (pt_shell)write_changes -format icctcl -output pteco.tcl

Writes change lists; with MIM enabled, one per module set.

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): All MIM changes applied through eco_enable_mim, one change list per module, and no unexpected uniquify messages.
  • Suspicious (illustrative): One manual edit uniquified a block, and the layout team has not been told.
  • Hard stop: A uniquified instance going to tapeout while layout still uses one shared block for both. Timing and silicon now disagree.

Common Mistake

The Trap: Resizing a cell in cpu0 only, to fix a path that fails there because of its placement in the top. PrimeTime uniquifies cpu0 and reports the path fixed. The layout team implements the change list in the shared CPU block, so both instances get the change; the other instance loses 6 ps of hold on the same path, and the top-level signoff shows it a week later.

What The Interviewer Is Testing

  • Knowing that PrimeTime uniquifies automatically, and how far up the hierarchy it goes.
  • Can you connect a netlist edit to its physical consequence for shared blocks?
  • Awareness of the MIM options in automated ECO.

Follow-up Question & Model Response

"How do you fix a violation that exists only in one instance of a shared block?"

Candidate Model Response: I first look for a fix outside the block, for example at the top-level driver or load of that instance, because that keeps the block shared. If the fix has to be inside, I check that the change is safe in every instance and apply it to all of them with the MIM options. Only if the instances truly need different content do I uniquify on purpose and plan the extra implementation and signoff.

Practical Example

Tapeout Scenario: Two instances, cpu0 and cpu1, of one CPU block (illustrative). A setup path inside cpu0 fails by 9 ps because of a long top-level input route; cpu1 passes with +14 ps. A manual size_cell (PT) in cpu0 uniquifies it as CPU_0. Instead, the team upsizes the top-level driver into cpu0, which fixes the path by 11 ps without touching the block. Both instances stay identical and share one layout.

PnR Flow Mentor Guide

Read the complete 8-chapter PnR Flow Mentor Guide free on the web — library setup through placement, clock tree synthesis, routing, chip finishing, hierarchical implementation, and ECO, all the way to stream-out.

PnR Flow Physical Design Mentor Guide — eight chaptersPnR Flow Mentor GuideEight chapters, library setup through to stream-out. →