[synopsys] struggling

S

stefimke

Guest
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?
 
cant you do this:

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

Aditya
stefimke wrote:
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?
 
I meant

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


Aditya Ramachandran wrote:
cant you do this:

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

Aditya
stefimke wrote:
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, 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}
}
}
}


Aditya Ramachandran wrote:
I meant

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


Aditya Ramachandran wrote:
cant you do this:

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

Aditya
stefimke wrote:
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?
 

Welcome to EDABoard.com

Sponsor

Back
Top