verification 과정 중 하나인 DRC (Design Rule Check)는 DB가 큰 경우 많은 시간이 걸리게 된다. 최종 DB의 검증을 위해서는 모든 DRC rule을 체크해야 하지만, 아직 수정 중이거나 특정 항목만 체크해도 되는 경우에는 "DRC SELECT CHECK <RULE NAME>" 방법으로 검증 시간을 단축할 수 있다.
처음부터 특정 항목만 찾아서 검증할 수 있지만, 한번 DRC 돌고난 report 파일을 가지고, 에러가 발생한 RULE만 골라내서 돌려보자. 그 방법은 여러가지가 있고 선택하기 나름이지만 이번에는 Perl script 를 통해 작성해 보자. 코드는 아래와 같다.
#!/usr/bin/perl -w
use File::Find;
use strict;
use warnings;
my ( $run_file, $line );
$run_file = $ARGV[0];
open( IN , "$run_file" ) or die "Can't open file.\n";
open( OUT, ">select_check" ) or die "Can't open file.\n";
while( $line = <IN> ) {
chop $line;
if( $line =~ "RULECHECK" ) {
if( $line =~ "TOTAL Result Count = 0" || $line =~ "NOT EXECUTE" || $line =~ "STATISTICS") {
} else {
$line =~ s/RULECHECK/DRC SELECT CHECK/;
$line =~ s/\.\.\.\.\./\/\//;
print OUT "$line\n";
}
}
}
close( IN );
close( OUT );
DRC report 파일의 이름은 설정하기에 따라 다를 수 있지만 DRC.rep 이라고 한다면
-> select_check.pl DRC.rep
이렇게 입력하면 select_check 라는 파일이 생성된다. RULECHECK 라는 단어가 들어간 줄에 "TOTAL Result Count = 0" 즉 에러 개수가 0인 경우, "NOT EXECUTE" 즉 특정 이유로 체크할 필요 없어 넘어간 경우, "STATISTICS" 가 들어간 마지막 Summary 부분은 제외하고 가져온 뒤,
RULECHECK 글자를 "DRC SELECT CHECK" 로 바꿔주고 report 파일에서 '......' 되어 있는 부분은 주석처리 (//) 해버렸다. 이렇게 되면 에러가 있는 경우 그 항목들만 모아두었기 때문에, DRC runset 에서 "include select_check" 처럼 연결만 해주면 된다.
물론 지금 사용하는 Skill script 에서는 저 파일을 이용하고 있지는 않지만, 원리는 똑같다. 하지만 역시 verification 속도를 가장 개선할 수 있는 방법은 성능좋은 서버증설이다. 안해줘서 그렇지..
'Programming 언어 > Perl' 카테고리의 다른 글
[Perl] Find 명령어를 통한 복수 파일 문자치환 (0) | 2020.12.30 |
---|