SOC时序分析中的跳变点
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
- 在进行时序分析时为什么CPR操作得出的效果却是相反的?(02-07)
- 时序分析中的一些基本概念(02-11)
- 如何成为一名优秀的SoC设计工程师(06-19)
- 片上系统SoC设计流程(09-12)
- LT3751如何使高压电容器充电变得简单(08-12)
- 三路输出LED驱动器可驱动共阳极LED串(08-17)