Programming 언어/Perl

[Perl] DRC error 항목 select check

호드맨 2023. 11. 9. 23:03

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 속도를 가장 개선할 수 있는 방법은 성능좋은 서버증설이다. 안해줘서 그렇지..