Line 943... |
Line 943... |
|
|
sub check_sample{
|
sub check_sample{
|
my ($emulate,$i,$info)=@_;
|
my ($emulate,$i,$info)=@_;
|
my $status=1;
|
my $status=1;
|
my $sof=$emulate->object_get_attribute ("sample$i","sof_file");
|
my $sof=$emulate->object_get_attribute ("sample$i","sof_file");
|
|
|
|
my $dir = Cwd::getcwd();
|
|
my $project_dir = abs_path("$dir/../../"); #mpsoc directory address
|
|
$sof= "$project_dir/$sof" if(!(-f $sof));
|
|
|
|
|
# ckeck if sample have sof file
|
# ckeck if sample have sof file
|
if(!defined $sof){
|
if(!defined $sof){
|
add_info($info, "Error: SoF file has not set for NoC$i!\n");
|
add_info($info, "Error: SoF file has not set for NoC$i!\n");
|
$emulate->object_add_attribute ("sample$i","status","failed");
|
$emulate->object_add_attribute ("sample$i","status","failed");
|
$status=0;
|
$status=0;
|
Line 1146... |
Line 1152... |
next if(!check_sample($emulate,$i,$info));
|
next if(!check_sample($emulate,$i,$info));
|
my $r= $emulate->object_get_attribute("sample$i","ratios");
|
my $r= $emulate->object_get_attribute("sample$i","ratios");
|
my @ratios=@{check_inserted_ratios($r)};
|
my @ratios=@{check_inserted_ratios($r)};
|
#$emulate->object_add_attribute ("sample$i","status","run");
|
#$emulate->object_add_attribute ("sample$i","status","run");
|
my $sof=$emulate->object_get_attribute ("sample$i","sof_file");
|
my $sof=$emulate->object_get_attribute ("sample$i","sof_file");
|
|
my $dir = Cwd::getcwd();
|
|
my $project_dir = abs_path("$dir/../../"); #mpsoc directory address
|
|
$sof= "$project_dir/$sof" if(!(-f $sof));
|
|
|
add_info($info, "Programe FPGA device using $sof\n");
|
add_info($info, "Programe FPGA device using $sof\n");
|
my $Quartus_bin= $ENV{QUARTUS_BIN};
|
my $Quartus_bin= $ENV{QUARTUS_BIN};
|
|
|
|
|
my $cmd = "$Quartus_bin/quartus_pgm -c \"$usb_blaster\" -m jtag -o \"p;$sof\"";
|
my $cmd = "$Quartus_bin/quartus_pgm -c \"$usb_blaster\" -m jtag -o \"p;$sof\"";
|
Line 1676... |
Line 1686... |
next if(!check_sample($simulate,$i,$info));
|
next if(!check_sample($simulate,$i,$info));
|
my $r= $simulate->object_get_attribute("sample$i","ratios");
|
my $r= $simulate->object_get_attribute("sample$i","ratios");
|
my @ratios=@{check_inserted_ratios($r)};
|
my @ratios=@{check_inserted_ratios($r)};
|
#$emulate->object_add_attribute ("sample$i","status","run");
|
#$emulate->object_add_attribute ("sample$i","status","run");
|
my $bin=$simulate->object_get_attribute ("sample$i","sof_file");
|
my $bin=$simulate->object_get_attribute ("sample$i","sof_file");
|
|
my $dir = Cwd::getcwd();
|
|
my $project_dir = abs_path("$dir/../../"); #mpsoc directory address
|
|
$bin= "$project_dir/$bin" if(!(-f $bin));
|
|
|
#load traffic configuration
|
#load traffic configuration
|
my $patern=$simulate->object_get_attribute ("sample$i",'traffic');
|
my $patern=$simulate->object_get_attribute ("sample$i",'traffic');
|
my $PCK_SIZE=$simulate->object_get_attribute ("sample$i","PCK_SIZE");
|
my $PCK_SIZE=$simulate->object_get_attribute ("sample$i","PCK_SIZE");
|
my $PCK_NUM_LIMIT=$simulate->object_get_attribute ("sample$i","PCK_NUM_LIMIT");
|
my $PCK_NUM_LIMIT=$simulate->object_get_attribute ("sample$i","PCK_NUM_LIMIT");
|
Line 1716... |
Line 1729... |
my $time_strg = localtime;
|
my $time_strg = localtime;
|
append_text_to_file($log,"started at:$time_strg\n"); #save simulation output
|
append_text_to_file($log,"started at:$time_strg\n"); #save simulation output
|
my ($stdout,$exit,$stderr)=run_cmd_in_back_ground_get_stdout("$cmd");
|
my ($stdout,$exit,$stderr)=run_cmd_in_back_ground_get_stdout("$cmd");
|
if($exit){
|
if($exit){
|
add_info($info, "Error in running simulation: $stderr \n");
|
add_info($info, "Error in running simulation: $stderr \n");
|
|
$simulate->object_add_attribute ("sample$i","status","failed");
|
|
$simulate->object_add_attribute('status',undef,'ideal');
|
return;
|
return;
|
}
|
}
|
|
|
append_text_to_file($log,$stdout); #save simulation output
|
append_text_to_file($log,$stdout); #save simulation output
|
$time_strg = localtime;
|
$time_strg = localtime;
|