Beruflich Dokumente
Kultur Dokumente
TCL Training
October, 2017
Note: RAK Testcase Database can be downloaded from the 'Attachments' section at the
bottom of this PDF on https://support.cadence.com.
Agenda
FIND
<-Module | -Instance | -Port [-Input | -Output | -Bidir]
| -Pin [ -Input | -Output| -Bidir]
| -Net | -Gate | -Id>
[-Single]
[-HIERarchical]
<object_name>
[-EXCLIB]
[-INDESIGN]
[-LEAF]
[-Golden | -Revised | -Both]
(TCL_SETUP/TCL_LEC mode)
find_cfm
<object_type>
[<patterns> | <object_list> | -of_objects <object_list>]
[-filter <condition>]
[-hierarchical]
[-regexp]
[-limit n]
[-scope <pathname>]
[-sensitive | -nosensitive]
• <obj_handle>
The specified obj_handle as one of the following types:
– MODULE: lists the nets of the specified module
– MODULE_INSTANCE: lists the nets that connect with the
specified instance
– MODULE_PORT: lists the nets that connect with the specified
port
– MODULE_INSTANCE_PIN: lists the nets that connect with the
specified pin
– MODULE_NET: lists the net that identifies itself
– HIERARCHY_INSTANCE: lists the nets that connect with the
specified instance in a hierarchical context
– HIERARCHY_PORT: lists the nets that connect with the specified
port in a hierarchical context
– HIERARCHY_INSTANCE_PIN: lists the nets that connect with
the specified pin in a hierarchical context
– HIERARCHY_NET: lists the net that identifies itself
– FLAT_GATE: lists the nets that connect with the specified
flattened gate in a hierarchical context
– MAP POINT: not applicable
The following example illustrates how to list the instance that identifies itself
{/syndrm/gen_synvalid1/del_regout/regout_reg[0]}
TCL_LEC> get_license_mode
Low_Power_GXL
TCL_SETUP> get_version
16.20-s180 26-Jan-2017 64 sjfhw537 Linux
TCL_LEC> puts $a
/DTMF_INST/PLLCLK_INST
• Situation
– Debug shows a library cell has issues
– Multiple versions of this library cell exist
– Challenge to find which library has the cell
– Use find_cfm to get information form get_attribute
Example(s):
• Use location to find which file:
TCL_SETUP> get_attribute [find_cfm -libcell RFRDX1] location
./library/tsmc90_normal.v
• continued
Example 3 – Find non-Leaf Cells in a design
TCL_SETUP> set list_of_instances [find_cfm -hierarchical -instance * -filter "is_leaf_cell ==0"]
/IOPADS_INST /DTMF_INST /DTMF_INST/TEST_CONTROL_INST
/DTMF_INST/RAM_128x16_TEST_INST /DTMF_INST/RAM_256x16_TEST_INST
/DTMF_INST/TDSP_DS_CS_INST /DTMF_INST/DATA_SAMPLE_MUX_INST ...
-design instance
-instance net pin
-library libcell
-libcell libpin lib instance
-libpin libcell pin
-net pin instance port
-pin net instance -port
{/DTMF_INST/SPI_INST/N$19} /DTMF_INST/SPI_INST/dflag_reset
/DTMF_INST/SPI_INST/clk /DTMF_INST/SPI_INST/n171
/DTMF_INST/SPI_INST/dflag
{/DTMF_INST/SPI_INST/N$19} /DTMF_INST/SPI_INST/dflag_reset
/DTMF_INST/SPI_INST/clk /DTMF_INST/SPI_INST/n171
/DTMF_INST/SPI_INST/dflag
TCL_SETUP> foreach pg $PG_PORTS { set gPG [get_attribute [find_cfm -port $pg -golden]
fanout] puts $gPG}
/ur3/u_iso1/VDD /ur3/s1/VDD /ur3/c1/VDD /ud1/s1/VDD /ud1/c1/VDD
//connect to VD1 /ur3/s1/VON /ud1/s1/VON
//connect to VD2 /ur2/s1/VDD /ur2/c1/VDD /ur1/s1/VDD /ur1/c1/VDD
//connect to VR1 /ur3/ur3/s1/VDD /ur3/ur3/c1/VDD /ur3/u_iso1/VDDC
//connect to VR2 /u_iso1/VDD
//connect to VDT
Example:
TCL_LEC> find -instance /DTMF_INST/SPI_INST/bit_cnt_reg\[0\]/* -leaf -revised
{/DTMF_INST/SPI_INST/bit_cnt_reg[0]/I1/__UU3}
{/DTMF_INST/SPI_INST/bit_cnt_reg[0]/I1/__UU2}
{/DTMF_INST/SPI_INST/bit_cnt_reg[0]/I1/__UU1}
{/DTMF_INST/SPI_INST/bit_cnt_reg[0]/I1/__UU0}
{/DTMF_INST/SPI_INST/bit_cnt_reg[0]/I0/U$1}
{/DTMF_INST/SPI_INST/bit_cnt_reg[0]/I0/__UU2}
{/DTMF_INST/SPI_INST/bit_cnt_reg[0]/I0/__UU1}
{/DTMF_INST/SPI_INST/bit_cnt_reg[0]/I0/__UU0}
TCL_LEC>
Notes:
The –leaf options is added to 17.10-d109 and later versions.
Be sure to add ‘/*’ or find will not search into the cell
Does not work with –hier option