A Practical Way to Do Netlist ECO & Debug

GOF beats Conformal ECO Case 4

Summary

The test case shows how to achieve minimum patch size by doing ECO in two steps. 

Analysis

The ECO case has two changes in RTL codes. Both of them are modifications of complicated combinational signal.

Figure 1: Changes for two complicated combinational signals

It's hard to find the exact ECO locations by manual way. However, if the two changes are fixed at the same time by automatic tool, the patch size is big and some redundant logics are added.

 

Figure 2: Fix two changes in one shot

Two Steps ECO Methods

GOF uses two steps to fix the two changes and achieves the minimum patch size.

The step one is to fix one signal in RTL and run synthesis to generate Reference Netlist One. Implementation Netlist is fixed by referencing Reference Netlist One and Middle Neltist is generated after the step one ECO.

The step two is to fix the other signal in RTL and run synthesis to generate Reference Netlist Two. Middle Netlist generated in the step one is fixed by referencing Reference Netlist Two and the final ECOed Netlist is generated after the step two ECO.

Figure 3: Two steps ECO

Conformal ECO can't yield good result by two steps ECO, due to its fundamental defect in handling complicated combinational signal ECO. Check this link for more detail, "GOF vs Conformal ECO".

Detail ECO Scripts

The Step One ECO script

# GofCall ECO script, eco_step1.gpl
use strict;  
undo_eco;  # Discard previous ECO operations
setup_eco("eco_step1");  # Setup ECO name
read_library("m28.lib"); # Read in standard library

# Read in the Reference Netlist which is re-synthesized with several modules modified
read_design("-ref", "ref_step1.v");  
# Read in the implementation Netlist Which is under ECO
read_design("-imp", "imp.v");  

set_top("top"); # Set the top module

set_ignore_output("cshi_so*"); # To avoid test lockup to affect the ECO result
set_pin_constant("cshi_se",0); # To avoid test logic being touched

fix_design;

report_eco(); # ECO report
write_verilog("eco_middle.v"); # Write out ECO result in Verilog
exit;

The Step Two ECO script

# GofCall ECO script, eco_step2.gpl
use strict;  
undo_eco;  # Discard previous ECO operations
setup_eco("eco_step2");  # Setup ECO name
read_library("m28.lib"); # Read in standard library

# Read in the Reference Netlist which is re-synthesized with several modules modified
read_design("-ref", "ref_step2.v");  
# Read in the netlist generated in Step One ECO
read_design("-imp", "eco_middle.v");

set_top("top"); # Set the top module

set_ignore_output("cshi_so*"); # To avoid test lockup to affect the ECO result
set_pin_constant("cshi_se",0); # To avoid test logic being touched

fix_design;

report_eco(); # ECO report
write_verilog("eco_final.v"); # Write out ECO result in Verilog
exit;

Results Comparison

Three experiments have been run on the ECO case. The results are,

  1. Conformal ECO, in either one shot or two steps, has ~65 new cells added
  2. Gates On the Fly, in one shot, has 82 new cells added
  3. Gates On the Fly, in two steps, has 3 new cells added, 1 cell in step 1 and 2 cells in step 2.
ECO Result Total Cells Area
Conformal ECO ~65 35.3
GOF (In one shot) 82 34.2
GOF (in two steps) 3 2.9

Files in ECO

  • gof_patch_step1.v ----------------- GOF patch file, 1 cells
  • gof_patch_step2.v ----------------- GOF patch file, 2 cells
  • cfm_eco_patch_1.v ---------------- Conformal ECO patch file, >65 cells
  • imp.v ---------------------------------- Implementation netlist
  • ref_step1.v --------------------------- Reference Netlist in Step 1
  • ref_step2.v --------------------------- Reference Netlist in Step 2
  • m28.lib ---------------------- Liberty file. Warning! Since timing information is removed, the file can not be used in Synthesis
  • eco_step1.gpl -------------------------- GOF ECO script in Step 1
  • eco_step2.gpl -------------------------- GOF ECO script in Step 2

GOF command line

The files can be downloaded to reproduce the result

The Step One ECO Command:

gof -lib m28.lib imp.v -ref ref_step1.v -run eco_step1.gpl

The Step Two ECO Command:

gof -lib m28.lib eco_middle.v -ref ref_step2.v -run eco_step2.gpl

Conclusion

Two steps ECO can fully utilize the Logic Optimization Algorithm of Gates On the Fly.  

 

 Home / Products / Download / Documents / UseCases / ContactUs / Usage / 中文

 Copyright © 2019 NanDigits Design Automation. All rights reserved.