+ Post New Thread
Results 1 to 4 of 4
  1. #1
    Full Member level 2
    Points: 1,282, Level: 8

    Join Date
    Jul 2013
    Posts
    135
    Helped
    1 / 1
    Points
    1,282
    Level
    8

    Problem with "find_routing_path" command in Tcl

    Deal all,

    I am using Vivado Design Suite 2016.1 on Linux machine and trying for manual routing activities.

    I am trying to use the find_routing_path command in Tcl to find a routing path between two nodes as described in page 380 / 1305 of UG835 (v2014.2) June 4, 2014 but it does not work in my case !

    In my design, I have a D flip-flop entitled "Inst_sync/DOUT1_reg placed in site SLICE_X1Y51 and tile CLBLL_L_X2Y51 and BEL A5FF that its Q output must be connected to another D flip-flop entitled "Inst_sync/DOUT2_reg located in the same SLICE and CLB but in BEL AFF. AS shown in the attached figure, there is a net connected between two mentioned flip-flops.

    I have defined the command as follows:

    Code:
    find_routing_path -from [get_bel_pins CLBLL_L_X2Y51/A5FF/Q] -to get_bel_pins[CLBLL_L_X2Y51/BFF/D]
    that did not work and once again like below:

    Code:
    find_routing_path -from [get_nodes -of [get_site_pins -of [get_nets Inst_sync/DOUT1_reg/Q]] 0] -to [get_nodes -of [get_site_pins -of [get_nets Inst_sync/DOUT2_reg/D]] 1]
    that did not work again ! Both trials returned the following error messages:

    Code:
    ERROR: [Common 17-56] '-from <node>' expects exactly one object got '0'.
    or
    Code:
    ERROR: [Common 17-161] Invalid option value 'Inst_sync_rst/DOUT2]' specified for 'from'.

    I have followed the command description in the link provided above but it does not work ! Can anybody help me to solve this problem? Kind replies and solutions are mostly appreciated.

    Thanks,

    •   Alt15th March 2017, 20:58

      advertising

        
       

  2. #2
    Super Moderator
    Points: 24,537, Level: 38
    ads-ee's Avatar
    Join Date
    Sep 2013
    Location
    USA
    Posts
    5,486
    Helped
    1375 / 1375
    Points
    24,537
    Level
    38

    Re: Problem with "find_routing_path" command in Tcl

    You should be using the slice name.

    e.g. selecting the D pin of a BFF bel shows the following General properties:
    capture.png
    If you use the following command in the Tcl console: get_bel_pins SLICE_X6Y55/BFF/* you will get the following back:
    SLICE_X6Y55/BFF/CE SLICE_X6Y55/BFF/CK SLICE_X6Y55/BFF/D SLICE_X6Y55/BFF/SR SLICE_X6Y55/BFF/Q

    You also seem to have a typo for the -to get_bel_pins command:
    Code:
    This:
    find_routing_path -from [get_bel_pins CLBLL_L_X2Y51/A5FF/Q] -to get_bel_pins[CLBLL_L_X2Y51/BFF/D]
    should be this:
    find_routing_path -from [get_bel_pins SLICE_X0Y51/A5FF/Q] -to [get_bel_pins SLICE_X0Y51/BFF/D]



    •   Alt15th March 2017, 21:51

      advertising

        
       

  3. #3
    Full Member level 2
    Points: 1,282, Level: 8

    Join Date
    Jul 2013
    Posts
    135
    Helped
    1 / 1
    Points
    1,282
    Level
    8

    Re: Problem with "find_routing_path" command in Tcl

    Quote Originally Posted by ads-ee View Post
    You should be using the slice name.

    e.g. selecting the D pin of a BFF bel shows the following General properties:
    Click image for larger version. 

Name:	Capture.PNG 
Views:	0 
Size:	5.8 KB 
ID:	136991
    If you use the following command in the Tcl console: get_bel_pins SLICE_X6Y55/BFF/* you will get the following back:
    SLICE_X6Y55/BFF/CE SLICE_X6Y55/BFF/CK SLICE_X6Y55/BFF/D SLICE_X6Y55/BFF/SR SLICE_X6Y55/BFF/Q

    You also seem to have a typo for the -to get_bel_pins command:
    Code:
    This:
    find_routing_path -from [get_bel_pins CLBLL_L_X2Y51/A5FF/Q] -to get_bel_pins[CLBLL_L_X2Y51/BFF/D]
    should be this:
    find_routing_path -from [get_bel_pins SLICE_X0Y51/A5FF/Q] -to [get_bel_pins SLICE_X0Y51/BFF/D]

    Dear @ads-ee

    Thanks for your reply and nice explanation. With the corrections, primarily I did the following command:

    Code:
    find_routing_path -from [get_bel_pins SLICE_X0Y51/A5FF/Q] -to [get_bel_pins SLICE_X0Y51/BFF/D]
    that returns the following error message:

    ERROR: [Vivado 12-2475] The list of nodes contains an object that is not recognized as a node.
    then, I tried with the following command:

    Code:
    find_routing_path -from [get_nodes SLICE_X0Y51/A5FF/Q] -to [get_nodes SLICE_X0Y51/BFF/D]
    that returns some warnings and 1 error message:

    WARNING: [Vivado 12-2677] 'get_nodes' without an -of_object switch is potentially runtime- and memory-intensive. Please consider supplying an -of_object switch. You can also press CTRL-C from the command prompt or click cancel in the Vivado IDE at any point to interrupt the command.
    WARNING: [Vivado 12-2683] No nodes matched 'get_nodes SLICE_X0Y51/A5FF/Q'

    get_nodes: Time (s): cpu = 00:00:14 ; elapsed = 00:00:14 . Memory (MB): peak = 9444.074 ; gain = 0.000 ; free physical = 4884 ; free virtual = 17277
    WARNING: [Vivado 12-2677] 'get_nodes' without an -of_object switch is potentially runtime- and memory-intensive. Please consider supplying an -of_object switch. You can also press CTRL-C from the command prompt or click cancel in the Vivado IDE at any point to interrupt the command.
    WARNING: [Vivado 12-2683] No nodes matched 'get_nodes SLICE_X0Y51/BFF/D'

    get_nodes: Time (s): cpu = 00:00:14 ; elapsed = 00:00:14 . Memory (MB): peak = 9444.074 ; gain = 0.000 ; free physical = 4884 ; free virtual = 17277
    ERROR: [Common 17-56] '-from <node>' expects exactly one object got '0'.


    It seems weird ! Do you have any idea?

    Thank in advance for your help !



    •   Alt15th March 2017, 22:18

      advertising

        
       

  4. #4
    Super Moderator
    Points: 24,537, Level: 38
    ads-ee's Avatar
    Join Date
    Sep 2013
    Location
    USA
    Posts
    5,486
    Helped
    1375 / 1375
    Points
    24,537
    Level
    38

    Re: Problem with "find_routing_path" command in Tcl

    A slice location that specifies down to a pin is not a node, which is why you have the error "got '0'".

    I suggest that you should try out the sub-commands before attempting to use them in a routing path query. First see if they produce a list of objects before even attempting to run the query.

    I also just took a look at the example of the query and it seems to have a lot more than just a simple -from some_site -to some_site.
    Code:
    find_routing_path -from [lindex [get_nodes -of [get_site_pins -of [get_nets wbOutputData_OBUF[14]]]] 0] \
    -to [lindex [get_nodes -of [get_site_pins -of [get_nets wbOutputData_OBUF[14]]]] 1]
    Specifically none of your attempts has a lindex query to pull the item from the lists produced by the get commands, which might result in issues as some of these queries come back with multiple items in the list.

    e.g. from a design I have open with a used BFF in a slice.
    Code:
    get_nets p_0_in[461]
    p_0_in[461]
    
    get_site_pins -of [get_nets p_0_in[461]]
    SLICE_X2Y1/BX SLICE_X1Y0/CX SLICE_X1Y0/BQ
    
    lindex used to extract the Q output (which you'll notice is BQ not Q)
    lindex [get_site_pins -of [get_nets p_0_in[461]]] 2
    SLICE_X1Y0/BQ
    
    get_nodes -of [lindex [get_site_pins -of [get_nets p_0_in[461]]] 2]
    CLBLL_L_X2Y0/CLBLL_L_BQ
    
    lindex [get_nodes -of [lindex [get_site_pins -of [get_nets p_0_in[461]]] 2] ] 0
    CLBLL_L_X2Y0/CLBLL_L_BQ
    As you can see I actually tested this by building up from the first command performed (get_nets).

    Note: looking back over my commands I think the example is wrong as the get_site_pins command will produce two items in the list and the next get_nodes query will fail due to the list object. I ran into the same issue when I was trying out the commands in my sequence above.


    1 members found this post helpful.

+ Post New Thread
Please login
--[[ ]]--