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

SOC时序分析中的跳变点

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

ad_pin{$instance_name2.$pin_name2} eq "$pin_name2" )

  {

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

  $count3 = @array3 ;

  @value_IOPATH = ""; # This is to initialize the array to blank

  if ($array3[0] =~ "COND" ) {

  for ($j=5; $j<=$count3 ; $j++) {

  $value_IOPATH[$j-5] = $array3[$j];

  $value_IOPATH_width = @value_IOPATH;

  if ($count3 == 6) { #### In case there is only one triplet for COND.*IOPATH

  $value_IOPATH[1] = $value_IOPATH[0];

  }

  #$value1_IOPATH = $array3[5];

  #$value2_IOPATH = $array3[6];

  }

  $constant_fields = 4;

  } elsif ($array3[0] =~ "IOPATH") {

  for ($k=3; $k<=$count3 ; $k++) {

  $value_IOPATH[$k-3] = $array3[$k];

  $value_IOPATH_width = @value_IOPATH;

  if ($count3 == 4) { #### In case there is only one triplet for IOPATH

  $value_IOPATH[1] = $value_IOPATH[0];

  }

  #$value1_IOPATH = $array3[3];

  #$value2_IOPATH = $array3[4];

  }

  $constant_fields = 2;

  }

  for($i=0;$i<= $constant_fields;$i++)

  {print file1 "$array3[$i] ";}

  if( $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] ) { ###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 I

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

网站地图

Top