byuccl / tincr

A Tcl-based CAD Tool Framework for Xilinx's Vivado Design Suite
GNU General Public License v2.0
39 stars 19 forks source link

TINCR Installation failed ! #53

Closed mospoly closed 7 years ago

mospoly commented 7 years ago

Dear all,

While I tried to install TINCR on my VIVADO 2015.4 installed on Windows 7-64-bit, it does not work. I did the following steps:

  1. Downloaded the tincr package and unzipped it on my local disk
  2. Created a TINCR_PATH environment in user variables and wrote the path as follows : (Note: in README file was mentioned to assign the path to the source folder ("src") in the Tincr distribution you downloaded, but I never found that "src" folder in the downloaded package ! However, I set the path as follows:

user environment for Me

TINCR_PATH D:\Xilinx\tincr-master\tincr-master

  1. Copied pkgIndex.tcl to the following destination folder where I have installed my Vivado2015.4 D:\Xilinx\Vivado2015.4\tps\tcl\tcl8.5

  2. Opened Vivado in Tcl mode and typed : package require tincr and I got the following message:

0.0 Vivado%

It seems weird ! It seems that it could not install pkgIndex.tcl file !!!!

Can anybody help me to solve this problem? I do no know where this problem does come??

Thanks and Regards, MOSPOLY

ttown523 commented 7 years ago

Hi mospoly,

The message you received from package require tincr is expected. It is telling you that the Tincr version you have installed is "0.0" (it is a little weird). Try typing the command tincr::refresh_packages to test that Tincr is installed correctly.

mospoly commented 7 years ago

Dear @ttown523

Thanks for your reply. Actually I have executed the tincr::refresh_packages command and I got the following return message:

Refreshing all Tincr packages: Refreshing tincr package...DONE Refreshing tincr.cad package...DONE Refreshing tincr.cad.cache package...DONE Refreshing tincr.cad.design package...DONE Refreshing tincr.cad.device package...DONE Refreshing tincr.cad.placer package...DONE Refreshing tincr.cad.router package...DONE Refreshing tincr.cad.util package...DONE Refreshing tincr.io package...DONE Refreshing tincr.io.design package...DONE Refreshing tincr.io.device package...DONE Refreshing tincr.io.library package...DONE

It seems that all packages have been installed correctly. Now, when I am trying to execute any of the tinct commands in this link I receive the following ERROR messages. For example: (the net's name is Inst_StartPoint_DFF/Qs)

tincr::nets::unroute Inst_StartPoint_DFF/Qs **ERROR: [Common 17-161] Invalid option value 'Inst_StartPoint_DFF/Qs' specified for 'object'.**

Another example: tincr::nets::manhattan_distance Inst_StartPoint_DFF/DOUT_reg ERROR: [Common 17-161] Invalid option value 'Inst_StartPoint_DFF/DOUT_reg' specified for 'of_objects'.

ONLY I could execute the two following tincr commands successfully in Tcl command line of Vivado 2015.4:

tincr::nets::rename tincr::nets::new

Can you please guide me how did happen? the tincr packages are installed? not installed?

Thanks and regards,

ttown523 commented 7 years ago

The functions you referenced are expecting Vivado netobjects and not net names, which is why the errors are occurring. Try these commands instead:

tincr::nets::unroute [get_nets Inst_StartPoint_DFF/Qs] and tincr::nets::manhattan_distance [get_nets Inst_StartPoint_DFF/DOUT_reg]

mospoly commented 7 years ago

Dear @ttown523

EXCELLENT ! Now it is working properly and both commands are working very well. Since I am newbie to TINCR tool, as aquestion please, Does the TINCR tool provides us something more that we can achieve by Tcl commands?

Thanks and Regards,

mospoly commented 7 years ago

Dear @ttown523 ,

Another issue is that some of the commands mentioned in the link in my initial post do not return anything and some of them give an ERROR message, like these commands:

tincr::nets::get_route_throughs [get_nets Inst_StartPoint_DFF/Qs]

That returns nothing !!!!

tincr::nets::list_pips [get_nets Inst_StartPoint_DFF/Qs]

that gives the error below: invalid command name "get_nodes_of_net"

Why does it happen?

Thanks and Regards,

ttown523 commented 7 years ago

The first command you referenced tincr::nets::get_route_throughs [get_nets Inst_StartPoint_DFF/Qs] returns a list of Bel objects that are being used as routethroughs. If the net you passed into the function has no routethroughs, then a empty list will be returned (which will look like nothing in Tcl).

The second command is probably a bug. I looked at the code and can't find where "get_nodes_of_net" is defined. I am going to reference @bradselw to answer this question since he is the one who wrote that part of the code.

To answer you previous question, yes Tincr provides several functions that are an extension to Vivado's Tcl interface. The function you referenced get_route_throughs is an example. Vivado does not offer a similar function, and finding these routethroughs is actually quite complicated. Tincr makes some things easier to do for users such as yourself. Also, using Tincr (in conjunction with RapidSmith2) you can extract designs from Vivado, and manipulate/analyze them in an external Java environment.

mospoly commented 7 years ago

Dear @ttown523 ,

Thank you for your clear explanation. Meanwhile that @bradselw looks to that function, could you please let me know what is exactly "routethroughs" by your definition? Do you mean the logics and pins that a path will through to complete a routing path? If so, using tincr, can we force the Tcl (or tincr) based script to navigate through a path a prepare all available PIPs and wires for each node of the path? Can we force the tool to pass through a specific logic or switch box without determining the source logic?

Thanks and Regards,

bradselw commented 7 years ago

@mospoly, we use the same definition of "routethrough" as in Xilinx's own XDL language. Basically, it is a LUT that has been repurposed as a PIP. I have opened issue #54 for the list_pips bug you mentioned above. Thanks for reporting it! I am closing this issue as your original question has been answered.