Files
openairinterface5g/openair3/MESH/RRM/VCD/mkvcd
T
2013-06-25 09:05:02 +00:00

132 lines
2.6 KiB
Perl
Executable File

#!/usr/bin/perl
use strict;
my $t_old ;
my $t ;
my $tt ;
my $inst ;
my $interf;
my $funct;
my $nfunc;
my $transid;
my $transaction_mode = 1;
my %wire = ( "CMM->RRM" => "w00" ,"RRM->CMM" => "w01",
"RRC->RRM" => "w02" ,"RRM->RRC" => "w03",
"PUSU->RRM" => "w06" ,"RRM->PUSU" => "w07"
);
my %old_value = ( "CMM->RRM" => "x" ,"RRM->CMM" => "x",
"PUSU->RRM" => "x" ,"RRM->PUSU" => "x",
"RRC->RRM" => "x" ,"RRM->RRC" => "x" );
my %value = ( "CMM->RRM" => "..." ,"RRM->CMM" => "...",
"PUSU->RRM" => "..." ,"RRM->PUSU" => "...",
"RRC->RRM" => "..." ,"RRM->RRC" => "..." );
open( FDOUT, ">wave.vcd" );
printf( FDOUT "\$comment
Affichage des echanges du RRM avec le RRC et le CMM
utiliser GTKwave pour visualiser ce fichier
-> http://linux-workshop.com/bybell/ver/wave/gtkwave9x.html
\$end
\$timescale
1us
\$end
\$version
timing simulation
\$end
\$var real 1 w00 CMM-->RRM \$end
\$var real 1 w01 RRM-->CCM \$end
\$var real 1 w02 RRC-->RRM \$end
\$var real 1 w03 RRM-->RRC \$end
\$var real 1 w04 transaction \$end
\$var real 1 w05 instance \$end
\$var real 1 w06 PUSU-->RRM \$end
\$var real 1 w07 RRM-->PUSU \$end
\$enddefinitions \$end
" );
#open( FDIN, "<toto.res" ) ;
open( FDIN, "cat cmm2rrm.txt rrc2rrm.txt pusu2rrm.txt rrm2cmm.txt rrm2rrc.txt rrm2pusu.txt | sort -n |" ) ;
while( <FDIN>)
{
chomp ;
( $t, $interf, $inst, $funct, $nfunc, $transid ) = split ;
$t_old = $t-0.1 if ($t_old ==0 ) ;
foreach my $k ( keys %old_value )
{
$value{$k} = "..." ;
}
$value{"$interf"}=$funct;
if ( $transaction_mode == 1)
{
printf( FDOUT "#%d\n", $tt *1e6 ) ;
}
else
{
printf( FDOUT "#%d\n", ( ($t -$t_old) *1e6) ) ;
}
printf( FDOUT "r%d w04\n", $transid ) ;
printf( FDOUT "r%d w05\n", $inst ) ;
foreach my $k ( keys %old_value )
{
if ( $value{$k} ne $old_value{$k})
{
printf( FDOUT "s%s %s\n", $value{$k}, $wire{$k} ) ;
}
$old_value{$k} = $value{$k} ;
}
$tt+=0.1;
}
foreach my $k ( keys %old_value )
{
$value{$k} = "..." ;
}
if ( $transaction_mode == 1)
{
printf( FDOUT "#%d\ns... w04\n", ($tt+0.1 )*1e6 ) ;
}
else
{
printf( FDOUT "#%d\ns... w04\n", int( ($t+0.1 -$t_old) *1e6 )) ;
}
foreach my $k ( keys %old_value )
{
if ( $value{$k} ne $old_value{$k})
{
printf( FDOUT "s%s %s\n", $value{$k}, $wire{$k} ) ;
}
}
if ( $transaction_mode == 1)
{
printf( FDOUT "#%d\ns... w04\n", ($tt+0.2 )*1e6 ) ;
}
else
{
printf( FDOUT "#%d\ns... w04\n", int( ($t+0.2 -$t_old) *1e6 )) ;
}
close(FDIN);
close(FDOUT);