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.

Magma TCL scripting problem - violating path

Status
Not open for further replies.

syed_dawood

Newbie level 4
Joined
Oct 19, 2012
Messages
7
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,333
Hi All,

I am a new to user of magma and I need some help regarding scripting.

How do I get a list of cells in the violating path ( specifically data path ) ? So that I can replace them with a different down-model of any type ??
Is there any way of doing this ?

Thanks,
Syed
 

You can use the points attribute to query the cells in the timing path.

set list_points "" ; set list_cells ""
set f [get_timing_path -to <> -from <> ]
foreach_in_collection e $f {
set e [get_attr $e points]
foreach_in_collection m $e {
lappend list_points [get_object_name $m ]
}
}
foreach n $list_points {
set n [get_cell -of $n]
lappend list_cells [get_object_name $n]
}
echo $list_cells


This should give you all the cells in the timing path.
 
Last edited:
You can use the points attribute to query the cells in the timing path.

set list_points "" ; set list_cells ""
set f [get_timing_path -to <> -from <> ]
foreach_in_collection e $f {
set e [get_attr $e points]
foreach_in_collection m $e {
lappend list_points [get_object_name $m ]
}
}
foreach n $list_points {
set n [get_cell -of $n]
lappend list_cells [get_object_name $n]
}
echo $list_cells


This should give you all the cells in the timing path.


Thanks for your help.
I had certain queries the above tcl gives you the list of all the cells only if you specify the start and end points right ?
 

yes but you can use - max_path and -slack_lesser_than 0 option in the get_timing_path command to get all the violating paths.You will have to slightly modify the script to dump start point and endpoint and redirect the output to a file.
 

Please provide the same with the modifications to get start point and end point. I have been looking for it
 

Please provide the same with the modifications to get start point and end point. I have been looking for it


set list_points "" ; set list_cells ""
echo " list of cells in violating paths" > file.rpt
set f [ get_timing_paths -path_type summary -max_paths 10000 -slack_lesser_than 0 ]

foreach_in_collection e $f {
set list_points "" ; set list_cells ""
set e [get_attr $e points]
set strt [get_attr $e startpoint]
set end [get_attr $e endpoint]
set slk [get_attr $e slack]
foreach_in_collection m $e {
lappend list_points [get_object_name $m ]
}

echo "start point: $strt \n end point $end \n slack $slk \n" >> file.rpt
foreach l $list_points {
echo $l >> file.rpt
}
foreach n $list_points {
set n [get_cell -of $n]
lappend list_cells [get_object_name $n]
}
echo " cells in this path are: \n"
foreach l $list_cells {
echo $l >> file.rpt
}
}
This should give you a text file named "file.rpt" with all the data you need.
 
Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top