| 
#!/usr/bin/perl 
 
open(I,"t6.vcd"); 
$s=0; 
%hname=(); 
%hbit=(); 
$t=0; 
while($l=<I>) { 
        if($l=~/module u2_MAPI/) { $s=1;} 
        elsif($s==1) { 
                if($l=~/upscope /) { $s=2;} 
                else { 
                        @as=split(/ /,$l); 
                        if($as[5]=~/\[/) { 
                                print "reg        $as[5]        $as[4]\;\n"; 
                                $as[4].=$as[5]; 
                        } 
                        else { 
                                print "reg                $as[4]\;\n"; 
                        } 
                        %hname=(%hname,$as[3],$as[4]); 
                        %hbit=(%hbit,$as[3],$as[2]); 
                } 
        } 
        elsif($s==2) { 
                if($l=~/dumpvars/) { $s=3;} 
        } 
        elsif($s==3) { 
                if($l=~/end/) { $s=4;} 
        } 
        elsif($s==4) { 
                chop($l); 
                if($l=~/^\#/) { 
                        $l=~s/^.//g; 
                        $t=$l-$t; 
                        print "        \#$t\;\n"; 
                        $t=$l; 
                } 
                elsif($l=~/^b/) { 
                        $l=~s/^.//g; 
                        ($a,$b)=split(/ /,$l); 
                        $name=$hname{$b}; 
                        $bit=$hbit{$b}; 
                        if($name) { 
                                print "        $name=${bit}'b${a}\;\n"; 
                        } 
                } 
                else { 
                        @as=split(//,$l); 
                        $a=@as[0]; shift(@as); 
                        $b=join(//,@as); 
                        $name=$hname{$b}; 
                        $bit=$hbit{$b}; 
                        if($name) { 
                                print "        $name=${bit}'b${a}\;\n"; 
                        } 
                } 
        } 
} 
close(I);  | 
 |