1、为什么使用perl过滤报告?
在IC设计中,有很多EDA工具会产生各类的报告文件,需要人工去检查。如max_delay,spyglass lint和cdc检查。有时候就需要将关键提取出来,将其他的无用的行删除。如
spyglass cdc 筛选出异步时钟径却没有跨时钟的路径,需要将包含跨时钟模块的路径全部删除,如果采用人工筛选,费时费力,perl脚本写好后,只需要1分钟就能获得过滤后的结果。
如max_delay检查也是:从网表文件中提取的max_delay约束,筛选出异步时钟径却没有跨时钟的路径,也需要将包含跨时钟模块的路径全部删除。
2、perl脚本如何实现?
脚本实现原理如下:
- 打开已有的文件config_max_delay.sdc
- 逐行匹配,是否包含跨时钟模块want_to_delet,如果包含则不操作,去匹配下一行,如果不包含跨时钟模块,则将此行保存到@save_line。
- 匹配结束后,将@save_line写入文件max_delay_unsyn.sdc
3、perl脚本如何使用
使用命令:perl 脚本名称
#!/usr/bin/perl -w
use strict ;
my $eachline ;
my @save_lines =0 ;
my $line_cnt =0 ;
my $list ;
my $delet ;
my $want_to_delet = '(3x_syn)|(syn_bus)|(pluse_sampling)|(xxxxx)|(xxxxx)';
open (INFILE,"./config_max_delay.sdc");
while ($eachline=<INFILE>) {
if($eachline =~ m/$want_to_delet/) {
} else {
push@save_lines,$eachline ;
}
}
close(INFILE) ;
open(OUTFILE,">max_delay_unsync.sdc");
print OUTFILE "@save_lines" ;
print "Please to check max_delay_unsync.sdc\n";