Contents
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,
- Conformal ECO, in either one shot or two steps, has ~65 new cells added
- Gates On the Fly, in one shot, has 82 new cells added
- 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.