Optimal ECO Strategy: Combining Automatic and Manual Modes for Resource-Limited Metal-Only ECOs
HEIDI ZHENG
Manager at NanDigits, Functional Netlist ECO, Functional Safety Fault Verification
Lockup latches or flops are used in scan chains to fix hold time issues and ensure correct timing during shift operations. These latches do not interfere with the non-scan functional behavior of a design. However, if not managed properly during functional ECO flow, they can inadvertently affect the outcome of an ECO, particularly in metal-only ECO scenarios. An optimal ECO requires special handling of lockup latches to avoid introducing redundant or unnecessary logic.
Use case: Lockup handling in metal only ECO
In this use case, the RTL changes involve updates to a gated clock enable signal logic. Figure 1 illustrates the reference design where modifications have been made to the gated clock enable logic. When implementing the design, the ECO process should apply a corresponding patch to this logic.
However, in the implementation design, the gated clock driving the logic also drives additional lockup latches that are not present in the reference design, as shown in Figure 2.
Without special handling of these lockup latches during the ECO process, redundant logic, such as new gated clock cells and duplicated enable signal logic, can be introduced. Automatic ECO tools, GOF ECO, or Conformal ECO will generate the same issue. In Figure 3, the redundant logic is shown in orange.
领英推荐
In this particular metal-only ECO case, due to the unavailability of spare gated clock cells, the introduction of 16 multiplexers (MUXs) would be required to handle the clock conversion. This significantly increases resource usage and leads to a lack of spare gates necessary to complete the job, as shown in Figure 4.
The optimal solution is to temporarily disconnect the lockup latches before applying the automatic ECO. After the ECO process completes, the lockup latches are reconnected. This method prevents the creation of unnecessary logic, reduces resource consumption, and ensures a clean and efficient ECO outcome.
ECO script to handle lockups in Metal-Only ECO
# GofCall ECO script, run_metal_only_lockup_example.pl
# Lockup latches are treated specially
use strict;
undo_eco; # Discard previous ECO operations
# Setup ECO name, had better be unique to avoid naming confliction
setup_eco("eco_example");
read_library("art.90nm.lib"); # Read in standard library
read_design("-ref", "reference.gv"); # Read in the Reference Netlist
read_design("-imp", "implementation.gv"); # Read in the implementation Netlist Which is under ECO
# Disconnect lockup latches' clock pins before automatic fix
set_top("state_control"); # Set to module 'state_control'
my @locks = get_cells("lockup*"); # Get all cells with 'lockup' string
my $oldcons = {};
foreach my $lock (@locks){
my @drv = get_driver("$lock/CK", "-nonbuf");
$oldcons->{$lock} = \@drv;
change_pin("$lock/CK", "");
}
set_top("topmod"); # Set to the most top module
fix_design();
# Connect back lockup latches' clock pins
set_top("state_control"); # Set to module 'state_control'
foreach my $lock (@locks){
my ($inst, $pin, $dtype) = @{$oldcons->{$lock}};
change_pin("$lock/CK", "$inst/$pin");
}
set_top("topmod"); # Set to the most top module
# Now we need to map all new added ECO gates to spare type instances
read_def("topmod.def"); # Read Design Exchange Format file, optional.
# Specify spare cell pattern, when 'map_spare_cells' is done,
# a new updated spare list file will be written out.
# The updated spare list file has default name 'spare_cells_script_name.list'.
# Click 'get_spare_cell' below for more usage detail
get_spare_cells("*/*_SPARE*");
# Comment the above line and use the following line to use spare list file
# if the spare list file has been generated already and gone through other ECOs
# get_spare_cells("-file", "spare_list_file.txt");
map_spare_cells();
report_eco(); # ECO report
write_verilog("eco_verilog.v"); # Write out ECO result in Verilog
write_soce("eco_soce.tcl"); # Write out TCL script for SOC Encounter
exit; # Exit when the ECO is done, comment it out to go to interactive mode when 'GOF >' appears
Conclusion
To achieve the best ECO results, combining Automatic and Manual ECO modes is the ideal approach. This is especially crucial in Metal-Only ECOs, where resources are highly constrained.