Integrating Third Party LEC Tool Outcome for Functional ECO
专栏:NanDigits March 1, 2024, 11:46 a.m. 153 阅读
This LEC assessment can seamlessly integrate into GOF ECO for rapid functional ECO iteration. Non-equivalent outcomes may arise from tools such as Synopsys Formality.

Original URL: https://www.linkedin.com/pulse/integrating-third-party-lec-tool-outcome-functional-eco-heidi-zheng-tovpc

Occasionally, accessing a Third-Party RTL to RTL LEC outcome proves highly convenient due to an established workflow. When users modify RTL during ECO, conducting a swift RTL to RTL comparison can reveal the impact of design changes. This LEC assessment can seamlessly integrate into GOF ECO for rapid functional ECO iteration. Non-equivalent outcomes may arise from tools such as Synopsys Formality.

Additionally, the process resolves challenges encountered with the internal RTL2RTL flow in GOF, particularly when intricate SystemVerilog features and numerous generate statements with complex parameter configurations lead to hierarchy interpretation mismatches between GOF and the synthesis tool.

image.png
Figure 1: Load Non-equivalent List File from Third Party Tool

GOF ECO has the capability to ingest a list of ECO points, enabling it to concentrate exclusively on the items specified in the list. The format of the list file comprises a type designation followed by one or multiple spaces and then the non-equivalence point.

inst yak_zcvg_inst/skip_pix_reg
port te_coord[5]
inst yak_hah_inst/x_start_pa_reg_31_
inst yak_hah_inst/x_end_pa_reg_30_
inst yak_hah_inst/x_end_pa_reg_29_
inst yak_hah_inst/x_end_pa_reg_28_
inst yak_hah_inst/x_end_pa_reg_27_
inst yak_hah_inst/x_end_pa_reg_26_
pin yak_hah_inst/u_sync_cell/D

The ECO list file is incorporated using the '-list_file' option within the 'read_design' command. It can be generated from a Third Party LEC non-equivalence result file.

In Synopsys Formality, the following command can dump out a non-equivalent report file after verify command.

verify
report_failing_points > formality_non_eq.report

In a GOF ECO script, this report file is then read in and converted into the list file.

Below is an example script demonstrating the conversion of Third Party LEC (Formality) results and execution of GOF ECO with the 'list_file' option:

use strict;
my $list_cont = "";
open(FIN, "formality_non_eq.report");
while(<FIN>){
  if(m/Ref\s+(\w+)\s+r:\/\w+\/\w+\/(.+)/){
    my $fm_type = $1;
    my $point = $2;
    my $gof_type = "inst";
    if($fm_type =~ m/Pin/){
      $gof_type = "pin";
    }elsif($fm_type =~ m/Port/){
      $gof_type = "port";
    }else{
      # For instance type
      $point =~ s/\[/_/g; # Mostly abc_reg[0] has name changed to abc_reg_0_ in the netlist
      $point =~ s/\]/_/g;
    }
    $list_cont .= "$gof_type $point\n";
  }
}
close(FIN);
open(FOUT, ">eco_list.txt");
print FOUT $list_cont;
setup_eco("eco_list_file"); # Setup ECO name
set_log_file("eco_list_file.log");
read_library("tsmc.5nm.lib");# Read in standard library
read_design("-ref", "reference.gv");# Read in Reference Netlist
read_design("-imp", "implementation.gv");# Read in Implementation Netlist Which is under ECO
set_top("SOC_TOP");
set_pin_constant("test_mode", 0);
set_pin_constant("scan_en", 0);
set_ignore_output("test_so*");
fix_design("-list_file", "eco_list.txt"); # -list_file option to read in the ECO list file with the ECO points
report_eco();
write_verilog("eco_verilog.v");
exit;

GOF platform integrates four functional components: ECO, Formal, LEC and Debug. To access detailed information about GOF, please visit the website https://nandigits.com

感谢阅读,更多文章点击这里:【专栏:NanDigits】