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