( ESNUG 350 Item 2 ) --------------------------------------------- [4/27/00]
From: [ A Synopsys PhysOpt CAE ]
Subject: Two PhysOpt Scripts To Hand Place Specific Cells Near Each Other
Hi, John,
We're having PhysOpt users asking us how to place specific cells next to
each other. Typically they want to hand place specific clock tree cells
near specific register cells to minimize skew. Could you put this out on
ESNUG to reduce duplicate calls to our support guys?
First, you must query the location of the clockgate cell in question. The
following TCL procedure will get the location of the cell and create global
variables for the X and Y coordinates.
proc get_location {cell} {
global xdim ydim
redirect tmp_loc.txt { report_cell -physical $cell }
set in_file [open ./tmp_loc.txt r]
foreach line [split [read $in_file] \n] {
regexp {\(([0-9\.]*), ([0-9\.]*)\)} $line match xdim ydim
}
close $in_file
exec rm tmp_loc.txt
}
Using the following command along with cell_name gives the location of the
cell in form of a global variable {$xdim $ydim}.
psyn_shell-t> get_location cell_name
The user can take the global variables {$xdim $ydim}, and use these
locations in a script to place the register cells close to the clockgate.
All subsequent incremental PhysOpt compiles will then optimize the design
based on the new placement. The user can craft a script using the
following commands for each register of each clock gate:
set x_reg [expr $xdim + $offset_x]
set y_reg [expr $ydim + $offset_y]
echo "set_cell_location -coordinate {$x_reg $y_reg} $reg" >> set_loc.tcl
The execution of this custom script "set_loc.tcl" will change the locations
for the register and the PhysOpt incremental compile can then be performed.
- [ A Synopsys PhysOpt CAE ]
|
|