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

SOC时序分析中的跳变点介绍

时间:07-12 来源:互联网 点击:

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 ( $load_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 negativ

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

网站地图

Top