Lab 4 - Using TCL in Vivado Embedded Designs


This lab was pretty simple, the goal was to exercise the Vivado environment via the command line using TCL. TCL is the Tool Command Language. It was invented by John Ousterhout at UC Berkeley in 1998. It was intended to unify command languages. It grew in popularity when it was adopted by Sun Microsystems. I remember hearing about TCL and TK in the nineties as a way to add GUI functionality to command line programs. That kind of seems what they are doing here. TCL gives you a way to create all the devices available in the Vivado suite right from the command line. This would allow you to script the creation of the programmable device without having to open the GUI. As you can guess this gives quite a bit of control and freedom. You can batch create and automate your designs. How handy.


There is a little TCL console at the bottom of the editor that prints out every TCL command that gets executed as you are designing your device. I can see this as being a very powerful tool as you become an expert Programmable Device developer, but I don't see much utility in this class, but... I don't know what the future will bring. They had us open projects, close projects start the GUI, create a new device, and add a port to the device.


The commands look like:

create_bd_port -dir O -type rst Reset



write_bd_tcl basic_design.tcl


help write_project_tcl


to get help on the TCL commands.



You can see the start_gui TCL command in the lower TCL Console window.



The TCL commands are in blue and the responses are in black in this view.


It shows that it opened the project:

open_project /home/mconners/progs/E14-Zync/ZynqHW/2017_4/ZyncDesign/ZyncDesign.xpr


and apparently updated the compile order

update_compile_order -fileset sources_1


As I mentioned I'm not sure this will get explored in more depth as the labs go on, but it was nice that they pointed it out.


I'm going to close out this blog for now, it looks like Lab 5 is going to cover accessing the PL (Programmable Logic) section of the SOC, and isn't that really what we're all here for?


Until next time,