您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术SOC时序分析中的跳变点 正文
SOC时序分析中的跳变点

SOC时序分析中的跳变点

点击数:7186 次   录入时间:03-04 11:33:32   整理:http://www.55dianzi.com   嵌入式系统-技术

  if ( abs($load_correct_value1_0{$instance_name2}) < $correct_value1_IOPATH[0] ) { ###the absolute value to negative delay is larger than the timing of load arc. ######

  $correct_value1_IOPATH[0] = $correct_value1_IOPATH[0] + $load_correct_value1_0{$instance_name2};

  } else { print "IOPATH delay for $load_pin{$instance_name2.$pin_name2} of $instance_name2 is smaller than the INTERCONNECT delay n";}

  }

  }

  if(exists $load_correct_value1_1{$instance_name2})

  { if( $load_correct_value1_1{$instance_name2} < 0.0) {

  if ( abs($load_correct_value1_1{$instance_name2}) < $correct_value1_IOPATH[1] ) {

  $correct_value1_IOPATH[1] = $correct_value1_IOPATH[1] + $load_correct_value1_1{$instance_name2};}

  else { print "IOPATH delay for $load_pin{$instance_name2.$pin_name2} of $instance_name2 is smaller than the INTERCONNECT delay n";}}}

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

  }

  elsif( $value_IOPATH[0] =~ ":[^:]") ####CORRECT OR ACCOMODATING THE NEG DELAY VALUES HERE #########

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

  @correct_value1_IOPATH = split(/:/,$value_IOPATH[0]);

  if(exists $load_correct_value1_0{$instance_name2}) {

  if($load_correct_value1_0{$instance_name2} < 0.0) { # So that only negative delay value triplet is changed in the IOPATH syntax

  if ( abs($load_correct_value1_0{$instance_name2}) < $correct_value1_IOPATH[0] ) {

  $correct_value1_IOPATH[0] = $correct_value1_IOPATH[0] + $load_correct_value1_0{$instance_name2};

  } else { print "IOPATH delay for $load_pin{$instance_name2.$pin_name2} of $instance_name2 is smaller than the INTERCONNECT delay n";}

  }

  }

  if(exists $load_correct_value1_1{$instance_name2}) {

  if($load_correct_value1_1{$instance_name2} < 0.0) { # So that only negative delay value triplet is changed in the IOPATH syntax

  if ( abs($load_correct_value1_1{$instance_name2}) < $correct_value1_IOPATH[1] ) {

  $correct_value1_IOPATH[1] = $correct_value1_IOPATH[1] + $load_correct_value1_1{$instance_name2};

  } else { print "IOPATH delay for $load_pin{$instance_name2.$pin_name2} of $instance_name2 is smaller than the INTERCONNECT delay n";}

  }

  }

  if(exists $load_correct_value1_2{$instance_name2}) {

  if($load_correct_value1_2{$instance_name2} < 0.0) { # So that only negative delay value triplet is changed in the IOPATH syntax

  if ( abs($load_correct_value1_2{$instance_name2}) < $correct_value1_IOPATH[2] ) {

  $correct_value1_IOPATH[2] = $correct_value1_IOPATH[2] + $load_correct_value1_2{$instance_name2};

  } else { print "IOPATH delay for $load_pin{$instance_name2.$pin_name2} of $instance_name2 is smaller than the INTERCONNECT delay n";}

  }

  }

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

  }

  else{print file1 "$value_IOPATH[0] ";} # This is to print empty brackets in case rise and fall triplets are empty

  if( $value_IOPATH[1] =~ "::")

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

  @correct_value2_IOPATH = split(/::/,$value_IOPATH[1]);

  if(exists $load_correct_value2_0{$instance_name2}) {

  if( $load_correct_value2_0{$instance_name2} < 0.0)

  { if ( abs($load_correct_value2_0{$instance_name2}) < $correct_value2_IOPATH[0] ) {

  $correct_value2_IOPATH[0] = $correct_value2_IOPATH[0] + $load_correct_value2_0{$instance_name2};}

  else { print "IOPATH delay for $load_pin{$instance_name2.$pin_name2} of $instance_name2 is smaller than the INTERCONNECT delay n";}}}

  if(exists $load_correct_value2_1{$instance_name2}) {

  if( $load_correct_value2_1{$instance_name2} < 0.0)

  { if ( abs($load_correct_value2_1{$instance_name2}) < $correct_value2_IOPATH[1] ) {

  $correct_value2_IOPATH[1] = $correct_value2_IOPATH[1] + $load_correct_value2_1{$instance_name2};}

  else { print "IOPATH delay for $load_pin{$instance_name2.$pin_name2} of $instance_name2 is smaller than the INTERCONNECT delay n";}}}

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

  } else {

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

  }

  }

  elsif( $value_IOPATH[1] =~ ":[^:]")

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

  @correct_value2_IOPATH = split(/:/,$value_IOPATH[1]);

  if(exists $load_correct_value2_0{$instance_name2}) {

  if( $load_correct_value2_0{$instance_name2} < 0.0) {

  if ( abs($load_correct_value2_0{$instance_name2}) < $correct_value2_IOPATH[0] ) {

  $correct_value2_IOPATH[0] = $correct_value2_IOPATH[0] + $load_correct_value2_0{$instance_name2};}

  else { print "IOPATH delay for $load_pin{$instance_name2.$pin_name2} of $instance_name2 is smaller than the INTERCONNECT delay n";}}}

  if(exists $load_correct_value2_1{$instance_name2}) {

  if( $load_correct_value2_1{$instance_name2} < 0.0) {

  if ( abs($load_correct_value2_1{$instance_name2}) < $correct_value2_IOPATH[1] ) {

  $correct_value2_IOPATH[1] = $correct_value2_IOPATH[1] + $load_correct_value2_1{$instance_name2};}

  else { print "IOPATH delay for $load_pin{$instance_name2.$pin_name2} of $instance_name2 is smaller than the INTERCONNECT delay n";}}}

  if(exists $load_correct_value2_2{$instance_name2}) {

  if( $load_correct_value2_2{$instance_name2} < 0.0) {

  if ( abs($load_correct_value2_2{$instance_name2}) < $correct_value2_IOPATH[2] ) {

  $correct_value2_IOPATH[2] = $correct_value2_IOPATH[2] + $load_correct_value2_2{$instance_name2};}

  else { print "IOPATH delay for $load_pin{$instance_name2.$pin_name2} of $instance_name2 is smaller than the INTERCONNECT delay n";}}}

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

  } else {

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

  }

  }

  else{print file1 "$value_IOPATH[1] ";} # This is to print empty brackets in case rise and fall triplets are empty

  for ($m=2;$m<=$value_IOPATH_width;$m++) {

  if (exists $value_IOPATH[$m]) {

  $value_IOPATH[$m] =~ s/)+/)/; # To account for the brackets

  print file1 " $value_IOPATH[$m]";

  }

  }

  if ($array4[0] =~ "COND" ) { ## Extra bracket for COND statements

  print file1 "))n";

  } else {print file1 ")n";}

  }

  }

  else

  {print file1 "$line1";} #######DUMPING OUT OF SDF IN FILE1######################

  }

  else

  {print file1 "$line1";}

  }

  close(file1);

  close(fileA);

  open(FILEA,$ARGV[0]) || die ("ERROR:: SDF file $ARGV[0] cannot be opened for readingn");

  print "nn#############REPORTING INSTANCES WHOSE DEFINITION IS NOT THERE IN THE SDF#############n";

  while(

上一页  [1] [2] [3] [4]  下一页


本文关键字:暂无联系方式嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术

《SOC时序分析中的跳变点》相关文章>>>