ECO

Last modified 2012-11-29

Sini

Engineering Change Order or ECO is how you incorporate last minute changes in your design. ECO saves money and time and is prevalent in the industry. When I talk ECO, I am talking about ECOs in the layout. So typically you start with an ECO on the gate level netlist. The designer need to edit the gate-level netlist, make the same changes in RTL, and then pass all verifications before it is passed on to layout. Make sure the ECO pass formal and functional verification before you start editing your layout. There are two types of ECOs and similar design flows are used by the PnR tool for both except the variable or command related to “freezesilicon".

Unconstrained ECO/All Layer ECO An all layer ECO is typically done before mask generation. There is no restriction on the changes permitted in the layout. You need to have a robust ECO flow ready as you are gearing up for tapeout. ECOs can be done at any stage in the design flow, post-place, post CTS and post-route. ECOs are used to

An unconstrained ECO typically has the following stages.

  1. Adding/Deleting Cells - At this stage, there is no restriction on adding the cells other than design/layout constraints.
  2. Updating the connections - The net connections needs to be updated for the existing and newly added cells.
  3. Placement - Tools can automatically place ECO instances, however I find it better to manually place them for best performance.
  4. Routing - Today's tools can automatically identify the changed nets and route them.

Even though you typically use unconstrained ECO flow before tapeout and as part of your PnR flow, it can also be done after tapeout. There is no savings in mask generation costs, but the design cycle can be significantly reduced if the required changes are minimal.

Freeze Silicon ECO/Metal Mask ECO These are done after tape-out and saves significant costs in mask generation by targeting only a few layers for new mask generation. The base layers are all frozen and cannot be changed. All or some of the metal layers are changed to achieve the required functionality of the ECO. The reasons for the ECO and the flow stages stay essentially same; but with some significant differences.

A freeze silicon ECO typically used spare cells available in the design. These are cells sprinkled in the design in anticipation of use in an ECO. See my article on Spare Cells to know about inserting and placing spare cells.

Example scripts for IC Compiler ECOs can be done either using database commands or using a modified netlist, typically referred to as an ECO netlist. Because you are editing the database, make sure you save your existing cell before starting the ECO.

1. An all metal layer ECO using database commands.

## ECO commands sizecell {ui2cslave/U3ICCcts} stdlib/BUFX8 insertbuffer {ckrstgen/U29/Y } {stdlib/BUFX2} createcell {xlm48901/ecodiode1} {ANTENNA5} setattribute [getcells -all {xlm48901/ecodiode1}] origin "2519.127 0.000" connectnet {xlm48901/adclenable} {xlm48901/ecodiode1/A}

##IC place & route of the ECO cells legalizeplacement routezrteco -utilizedanglingwires true -reroute modifiednetsfirstthenothers

2. A metal mask ECO using verilog. You can turn on or turn off the freezesilicon status by the command `setfreezesiliconeco`.

setfreezesiliconeco setfreezesiliconeco -report

econetlist -byverilogfile {./eco.v} -preserverouting -freezesilicon routezrteco -utilizedanglingwires true -reroute modifiednetsfirstthenothers

Note that both methods can be used for metal mask only or all layer ECOs.