Discussion:
[synopsys] struggling
(too old to reply)
stefimke
2006-06-19 11:24:41 UTC
Permalink
I'm fighting with variable substitution in Synopsys DC-shell in tcl/xg
mode.

This is what I want to do:

#-----------------------------------------------------------------------------
# Setting FALSE paths for asynchronous interfacing between clock
domains
#-----------------------------------------------------------------------------
foreach_in_collection clk1 ${clk_lst} {
foreach_in_collection clk2 ${clk_lst} {
if { ${clk1} != ${clk2} } {
echo "Information: Setting false path from ${clk1} to ${clk2}"
query_objects ${clk1}
query_objects ${clk2}
set_false_path -from ${clk1} -to ${clk2}
}
}
}


This an output that is printed:

Information: Setting false path from _sel54 to _sel55
{abc_clk}
{abc_clk}

Completely wrong... I don't want to define false paths from flipflops
in the same clock domain.
So the "if" is already going wrong.... does it compare the "_sel54"
with the "_sel55" string?

Anybody?
Aditya Ramachandran
2006-06-20 13:16:08 UTC
Permalink
cant you do this:

foreach aClk $clk_lst {
set_false_path -from $aClk -to [remove_from_collection
$clk_lst $aClk]
}

Aditya
Post by stefimke
I'm fighting with variable substitution in Synopsys DC-shell in tcl/xg
mode.
#-----------------------------------------------------------------------------
# Setting FALSE paths for asynchronous interfacing between clock
domains
#-----------------------------------------------------------------------------
foreach_in_collection clk1 ${clk_lst} {
foreach_in_collection clk2 ${clk_lst} {
if { ${clk1} != ${clk2} } {
echo "Information: Setting false path from ${clk1} to ${clk2}"
query_objects ${clk1}
query_objects ${clk2}
set_false_path -from ${clk1} -to ${clk2}
}
}
}
Information: Setting false path from _sel54 to _sel55
{abc_clk}
{abc_clk}
Completely wrong... I don't want to define false paths from flipflops
in the same clock domain.
So the "if" is already going wrong.... does it compare the "_sel54"
with the "_sel55" string?
Anybody?
Aditya Ramachandran
2006-06-20 13:18:05 UTC
Permalink
I meant

foreach_in_collection aClk $clk_lst {
set_false_path -from $aClk -to [remove_from_collection
$clk_lst $aClk]
}
Post by Aditya Ramachandran
foreach aClk $clk_lst {
set_false_path -from $aClk -to [remove_from_collection
$clk_lst $aClk]
}
Aditya
Post by stefimke
I'm fighting with variable substitution in Synopsys DC-shell in tcl/xg
mode.
#-----------------------------------------------------------------------------
# Setting FALSE paths for asynchronous interfacing between clock
domains
#-----------------------------------------------------------------------------
foreach_in_collection clk1 ${clk_lst} {
foreach_in_collection clk2 ${clk_lst} {
if { ${clk1} != ${clk2} } {
echo "Information: Setting false path from ${clk1} to ${clk2}"
query_objects ${clk1}
query_objects ${clk2}
set_false_path -from ${clk1} -to ${clk2}
}
}
}
Information: Setting false path from _sel54 to _sel55
{abc_clk}
{abc_clk}
Completely wrong... I don't want to define false paths from flipflops
in the same clock domain.
So the "if" is already going wrong.... does it compare the "_sel54"
with the "_sel55" string?
Anybody?
stefimke
2006-06-21 06:01:54 UTC
Permalink
Aditya, thanks!

I'll try your suggestion as it looks very clean and short.

In the meanwhile I found this to work too:
foreach_in_collection clk1 ${clk_lst} {
foreach_in_collection clk2 ${clk_lst} {
set clk1_name [get_object_name $clk1]
set clk2_name [get_object_name $clk2]
if { ${clk1_name} != ${clk2_name} } {
echo "Information: Setting false path from ${clk1_name} to
${clk2_name}"
set_false_path -from ${clk1} -to ${clk2}
}
}
}
Post by Aditya Ramachandran
I meant
foreach_in_collection aClk $clk_lst {
set_false_path -from $aClk -to [remove_from_collection
$clk_lst $aClk]
}
Post by Aditya Ramachandran
foreach aClk $clk_lst {
set_false_path -from $aClk -to [remove_from_collection
$clk_lst $aClk]
}
Aditya
Post by stefimke
I'm fighting with variable substitution in Synopsys DC-shell in tcl/xg
mode.
#-----------------------------------------------------------------------------
# Setting FALSE paths for asynchronous interfacing between clock
domains
#-----------------------------------------------------------------------------
foreach_in_collection clk1 ${clk_lst} {
foreach_in_collection clk2 ${clk_lst} {
if { ${clk1} != ${clk2} } {
echo "Information: Setting false path from ${clk1} to ${clk2}"
query_objects ${clk1}
query_objects ${clk2}
set_false_path -from ${clk1} -to ${clk2}
}
}
}
Information: Setting false path from _sel54 to _sel55
{abc_clk}
{abc_clk}
Completely wrong... I don't want to define false paths from flipflops
in the same clock domain.
So the "if" is already going wrong.... does it compare the "_sel54"
with the "_sel55" string?
Anybody?
Loading...