微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > SOC时序分析中的跳变点

SOC时序分析中的跳变点

时间:08-15 来源:本站整理 点击:

e_name} = $correct_value1[0];

  $load_correct_value1_1{$instance_name} = $correct_value1[1];

  $load_correct_value1_2{$instance_name} = $correct_value1[2];

  if($correct_value1[0] <= -0.0) #####NEGATIVE CHANGED TO ZERO DELAY######

  {$correct_value1[0] = "0.000";}

  if($correct_value1[1] <= -0.0)

  {$correct_value1[1] = "0.000";}

  if($correct_value1[2] <= -0.0)

  {$correct_value1[2] = "0.000";}

  print file1 "($correct_value1[0]:$correct_value1[1]:$correct_value1[2])";

  }

  else{print file1 "$value1 ";}

  if( $value2 =~ "::")

  { $value2 =~ s/[()]//g;

  @correct_value2 = split(/::/,$value2);

  $load_correct_value2_0{$instance_name} = $correct_value2[0]; ########NEGATIVE CHANGED TO ZERO DELAY#####

  $load_correct_value2_1{$instance_name} = $correct_value2[1];

  if($correct_value2[0] <= -0.0)

  {$correct_value2[0] = "0.000";}

  if($correct_value2[1] <= -0.0)

  {$correct_value2[1] = "0.000";}

  if ($correct_value1[0] == $correct_value2[0] && $correct_value1[1] == $correct_value2[1] ) { # Print these values only if they are differnet from the already printed values for the INTERCONNECT

  print file1 ")\n";

  } else {

  print file1 " ($correct_value2[0]::$correct_value2[1]))\n";

  }

  }

  elsif( $value2 =~ ":[^:]")

  { $value2 =~ s/[()]//g;

  @correct_value2 = split(/:/,$value2);

  $load_correct_value2_0{$instance_name} = $correct_value2[0]; ########NEGATIVE CHANGED TO ZERO DELAY#####

  $load_correct_value2_1{$instance_name} = $correct_value2[1];

  $load_correct_value2_2{$instance_name} = $correct_value2[2];

  if($correct_value2[0] <= -0.0)

  {$correct_value2[0] = "0.000";}

  if($correct_value2[1] <= -0.0)

  {$correct_value2[1] = "0.000";}

  if($correct_value2[2] <= -0.0)

  {$correct_value2[2] = "0.000";}

  if ($correct_value1[0] == $correct_value2[0] && $correct_value1[1] == $correct_value2[1] && $correct_value1[2] == $correct_value2[2]) { # Print these values only if they are differnet from the already printed values for the INTERCONNECT

  print file1 ")\n";

  } else {

  print file1 " ($correct_value2[0]:$correct_value2[1]:$correct_value2[2]))\n";

  }

  }

  $load_instance{$instance_name} = $instance_name; ##SAVE ALL LOAD INSTACES FOR NEG DELAY IN THE ASSOCIATIVE ARRAY##

  $load_pin{$instance_name.$pin_name} = $pin_name; ##SAVE ALL LOAD PINS FOR NEG DELAY IN THE ASSOCIATIVE ARRAY##

  }

  elsif ($line =~ "CELL" ) {

  print file1 "$line";

  $find = 0;

  }

  elsif($line =~ "INSTANCE ") ##CHECKING CORRESPONDING INSTANCES AND FIND FLAG = 1 IF FOUND######

  {

  print file1 "$line1";

  @array2 = split(/\s+/,$line);

  $instance_name2 = $array2[1]; ##GETTING THE LOAD INSTANCE NAME FOUND HERE##########

  $instance_name2 =~ s/[()]//g;

  $instance_definition{$instance_name2} = "$instance_name2" ;

  if(exists $load_instance{$instance_name2}) ####COMPARE INSTANCE NAME WITH THAT SAVED IN ASSO ARRAY#####

  {

  if($load_instance{$instance_name2} eq "$instance_name2")

  {$find = 1;}

  }

  }

  elsif($line =~ "IOPATH" && $find == 1) ##AFTER INSTANCES ARE FOUND CHECKING FOR CORRSPONDING PINS######

  {

  @array4 = split(/\s+/,$line);

  if ($array4[0] =~ "COND" ) { ## Take care of COND statements

  $pin_name2 = $array4[3];

  } else {

  $pin_name2 = $array4[1];

  }

  if($line =~ "IOPATH" && exists $load_pin{$instance_name2.$pin_name2} ) {

if ( $lo

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top