Combining Manual Script Changes with Automatic Functional ECO for Efficient Fix Scope Reduction

In automatic functional ECO, one of the critical steps is to identify non-equivalent points in the logic cone and minimize the Fix Scope, as depicted in Figure 1, by determining the appropriate non-equivalent boundary points. The size of the triangle formed by the three points in the figure is a key factor in determining the focus of the ECO tool. A smaller triangle area enables the tool to work more efficiently, leading to the most optimal and minimal final patch. This step is essential to achieving the desired outcome in automatic functional ECO.

Reducing the initial Fix Scope can result in better performance from the ECO tool. One practical method for achieving this is to combine manual script ECO changes with automatic ECO.

If the user has specific knowledge of boundary changes such as tie-offs, it can be more efficient to implement these changes through manual scripting. This approach can be highly beneficial in assisting the subsequent automatic ECO process.

Figure 1: Functional ECO Fix Scope

In Figure 1, the Fix Scope is determined by three non-equivalent points: A, B, and C. Point A involves tying an input port to zero at the parent level, which can be easily fixed manually. However, Points B and C are not easily identifiable through manual means and must be extracted by the ECO tool.

To reduce the Fix Scope, the 'change_pin' command can be utilized to manually fix Point A. This will lead to a redefinition and reduction of the Fix Scope.

To implement this approach, the following script can be used to combine the change_pin and automatic ECO commands for fixing the design:

# GOF ECO script, run_manual_and_auto_fix.pl
use strict;
undo_eco; # Discard previous ECO operations
setup_eco("eco_manual_and_auto_fix");# Setup ECO name
read_library("art.5nm.lib");# Read in standard library
read_svf("-ref", "reference.svf.txt"); # Optional, must be loaded before read_design, must be in text format
read_svf("-imp", "implementation.svf.txt"); # Optional, must be loaded before read_design, must be in text format
read_design("-ref", "reference.gv");# Read in Reference Netlist
read_design("-imp", "implementation.gv");# Read in Implementation Netlist Which is under ECO
set_top("topmod");# Set the top module
set_ignore_output("scan_out*");
set_pin_constant("scan_enable", 0);
set_pin_constant("scan_mode", 0);
change_pin("u_video_top/u_tile/decode_start", "1'b0"); # This is the Point A to be fixed in Figure 1
fix_design;
save_session("current_eco_name"); # Save a session for future restoration
report_eco(); # ECO report
check_design("-eco");# Check if the ECO causes any issue, like floating
write_verilog("eco_verilog.v");# Write out ECO result in Verilog
exit; # Exit when the ECO is done, comment it out to go to interactive mode when 'GOF >' appears

After manually fixing Point A using the 'change_pin' command, the ECO tool identifies new Point D, which together with Points B and C, refines the Fix Scope. This refinement often leads to a considerable reduction in the Fix Scope, as illustrated in Figure 2. A smaller Fix Scope can enhance the ECO tool's performance and potentially achieve better results.

Figure 2: Reduced ECO Fix Scope

Conclusion

In conclusion, mixing manual script changes with automatic ECO provides several benefits. By manually fixing certain boundary changes, such as tie-offs, the initial Fix Scope can be reduced, which in turn improves the ECO tool's performance. Additionally, this approach enables the ECO tool to focus on identifying non-equivalent points that are not easily identifiable by manual means. This results in a refined Fix Scope, which can lead to more efficient and effective ECO solutions. Overall, combining manual script changes with automatic ECO can improve the design process and help achieve much better results.

Other mix mode ECO example can be found here


Follow us:
© 2024 NanDigits Design Automation. All rights reserved.