Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

How To Disable Bidirectional Feedback Paths?

Status
Not open for further replies.

xiongdh

Member level 4
Joined
Jul 18, 2002
Messages
76
Helped
2
Reputation
4
Reaction score
1
Trophy points
1,288
Location
china mainland
Activity points
682
The following is copied from synopsys.com
question is :
1)This program only find cells that connect to inout pins directly ,Is it enough and correct just only set_false_path with these cells.
2)From SOLD,just only four path exist ,input to output,input to FF/D,FF/clk to output and FF/CLK to FF/D. the path set by the following tcl is not one of the four aboves.
3)For a hierarchy design. if it's submodule have inout ports .how to use this tcl script.Can anyone give me a complete tcl to deal this situation?
thanks all.





How To Disable Bidirectional Feedback Paths




Question:


How do I disable bidirectional feedback paths?
Answer:


Bidirectionnal feedback paths can introduce long paths in the design.
These long paths will be timed by Design Compiler and Physical Compiler and
also optimized. In general these paths do not have to be optimized because
they are false. In PrimeTime, in order to disable these paths we have these
two variables:

timing_disable_internal_inout_cell_paths = "true"
timing_disable_internal_inout_net_arcs = "true"

In releases prior to version T-2002.05, Design Compiler and Physical Compiler do
not have any variable to mimic this behavior. It means the user needs to manually
identify and disable these paths.
Starting with version T-2002.05, the two variables are supported in Design Compiler
and Physical Compiler and are set to the default value of true. You will get the
desired behavior automatically and you do not need to apply this script.

The script provided in this article will automatically identify these paths
and create a script file that can be used in Design Compiler and Physical
Compiler to apply all the false path commands needed.

#
#
# Description :
# This script identifies all inout ports in the top level design.
# Then, for each port it creates the list of output pins attached to it and the list of input pins.
# Finally the script apply a false path over the two lists.
#
# Goal : Have a way to emulate in DC/PC the behavior of the Primetime variables
# timing_disable_internal_inout_cell_paths = "true"
# timing_disable_internal_inout_net_arcs = "true"
#
# Warning :
# This script is not supported and can be used at your own risk. It can only be used in TCL mode.
#
#
# Usage :
# a) load the database in Primetime
# b) source this script
# c) run the script : create_false_path_for_bidir <script_name_to_create>
# d) use the generated script in DC-tcl or PC
#


proc create_false_path_for_bidir { filename } {

redirect $filename { echo " "}
set count_bidir 0
set count_fp 0

set count_bidi_port [ sizeof_collection [ filter_collection [ get_port "*"] "@port_direction == inout " ] ]

if {$count_bidi_port == 0} { echo "# Warning !! : This desing does not contain any bidirectionnal ports"
} else {

echo " -----------------Begining Process------------- "
set collection_of_nets_name_on_bidiport [ get_nets -of_object [ filter_collection [ get_port "*"] "@port_direction == inout " ] ]

foreach_in_collection one_net_name_on_bidiport $collection_of_nets_name_on_bidiport {
set net_name_bidi_port [get_attribute $one_net_name_on_bidiport full_name]
incr count_bidir

echo " "
echo " "
echo "Processing bidirectionnal Port $net_name_bidi_port"
echo "----------------------------------------------------------------"


set pins_in [filter_collection [ get_pins -leaf -of_object $net_name_bidi_port] "@pin_direction == in" ]

echo "List of input pins on Bidirectionnal port $net_name_bidi_port"
que $pins_in


set pins_out [filter_collection [ get_pins -leaf -of_object $net_name_bidi_port] "@pin_direction == out" ]

echo "List of output pins on Bidirectionnal port $net_name_bidi_port"
que $pins_out

foreach_in_collection one_pin_out $pins_out {
foreach_in_collection one_pin_in $pins_in {
set a_pin [get_attribute $one_pin_out full_name ]
set b_pin [get_attribute $one_pin_in full_name ]
incr count_fp
redirect -append $filename { echo "set_false_path -through $a_pin -through $b_pin " }
echo "Recording False Path -through $a_pin and -through $b_pin "
}
}

}


}

echo " "
echo " "
echo " "
echo "********************End of Process*******************************"
echo "Process Terminated successfully."
echo "Summary : "
echo "$count_bidir bidirectionnal port were processed"
echo "$count_fp false path have been written out"
if {$count_bidi_port > 0} { echo "False path commands have written out to : $filename"
} else {
echo "No False path command have been written out"
}
echo "## Thank you for using this script. ##"


}
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top