有时,读入第三方RTL与RTL的等价性检查结果来做ECO是一种非常方便的工作流程。用户做ECO修改RTL后,从RTL与RTL的LEC中可以直接看出设计的改动。第三方的LEC结果,比如Synopysys Formality的不等价报告,可以无缝衔接进GOF ECO的flow里。
另外,这个流程也解决了GOF自带的RTL LEC的问题,尤其是一些SystemVerilog的特殊用法,或者generate语句和复杂参数导致GOF在elab后的层次结构很难与用户网表(通常由Synopsys DC或者Cadence Genus生成)匹配的问题。
从第三方工具中加载不等价的列表文件
GOF ECO能够读入并处理ECO points的列表。ECO points列表由类型(inst、port、pin等)和路径组成,一行一个,可以写多行。这个ECO points列表格式简单,也很容易手工整理和编写。当ECO改动不大时,手工写也是好的选择。
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
从第三方LEC工具生成ECO列表文件后,在GOF的fix_design() api里用-list_file选项读取。
Synposys Formality里,在verify之后用下面的命令来dump不等价的报告文件。
verify
report_failing_points > formality_non_eq.report
用GOF ECO的脚本把Formality的报告文件转成我们需要的ECO points列表文件格式。
下面是转换和后续ECO的GOF脚本示例:
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;
来源: https://www.linkedin.com/pulse/integrating-third-party-lec-tool-outcome-functional-eco-heidi-zheng-tovpc
关于NanDigits Design Automation
NanDigits Design Automation于2007年成立,公司总部位于美国硅谷圣何塞(San Jose)。2016年10月在中国大陆成立销售和技术支持部门。我们是完整的芯片网表解决方案提供商,主要产品有网表功能ECO工具GOF ECO、逻辑等价性检查工具GOF LEC,网表调试工具GOF Debug、汽车电子功能安全验证的GOF Formal。到目前,我们已经帮助全球数十家芯片设计公司Tapeout超过100个项目。
欢迎评估试用
中国大陆
技术支持:support@nandigits.cn
美国总部
技术支持:support@nandigits.com
欢迎联系评估和试用:https://nandigits.cn/license/getlic.php。
欢迎关注同名公众号“NanDigits”,完整的芯片网表解决方案提供商