     1	#!/usr/local/bin/perl5 -w
     2	
     3	$input1 = 'chaintest.scan';
     4	$output= "OUT";
     5	$output2= "OUT.out";
     6	
     7	open (INFILE,"$input1")||die "cannot open $input1";
     8	open(OUTFILE,">$output")||die "canoot\n";
     9	open(OUTFILE2,">$output2")||die "canoot\n";
    10	
    11	#######################################################
    12	&preprocess;
    13	open (INFILE2,"$output")||die "cannot open $input1";
    14	$/=";";
    15	$ct_scanout = 0;
    16	while (<INFILE2>) {
    17	  chomp;
    18	  $ct_scanout = 1 if (/apply\s*\"grp[0-9]_unload\"/);
    19	  $chain_test=1  if (/CHAIN_TEST/);
    20	
    21	  if ((/\t*chain\s+\"chain([0-9])\"/) && ($chain_test)){
    22	    $chain_number = $1;
    23	    &cleanup;
    24	    $chain_input = (split /=/,$_)[1];
    25	    $chain_input =~ tr/\"//d;
    26	    $chain[$chain_number] = [split //, $chain_input];
    27	    &printout if $chain_number == 7;
    28	  }
    29	}
    30	
    31	sub printout {
    32	  if ($ct_scanout ){
    33	    for ($i=0;$i<@{$chain[3]};$i++){
    34	      for (@chain) { 
    35	        $_->[$i] =~ s/0/L/g; 
    36	        $_->[$i] =~ s/1/H/g;
    37	      }
    38	      my @chars = map $_->[$i], @chain;
    39	      print OUTFILE2 "\n(ct_so\n", join("", @chars), "\n )";
    40	    }
    41	    $ct_scanout=0;
    42	  } elsif ($ct_scanout==0) {
    43	    for ($i=0;$i<@{$chain[3]};$i++) {
    44	      for (@chain) {
    45	        $_->[$i] =~ s/X/0/g;
    46	      }
    47	      my @chars = map $_->[$i], @chain;
    48	      print OUTFILE2 "\n(ct_si  $ct_si{tdi}\n", join("", @chars), "\n )";
    49	    }
    50	  }
    51	}
    52	
    53	sub cleanup {
    54	  s/^\s+|\s*\n+$//g;
    55	  tr/\t  //d;            
    56	  s/\n//g;                
    57	  s/\\//g;
    58	}
    59	
    60	sub preprocess {
    61	  while (<INFILE>){
    62	    chomp;
    63	    s/$/;/g if (/apply/);
    64	    print OUTFILE ("$_\n");
    65	    last if ( /^SCAN_CELLS/);
    66	  }
    67	  close OUTFILE;
    68	}
