When writing a Tcl script, the emphasis must be, whenever possible, on providing
code that can enhance the user experience. This means writing scripts that provide the
same type of user experience as the embedded Vivado
commands such as providing embedded Help and interactive command line argument. It is
also critical to consider all the corner cases that could happen, whether Vivado objects are empty or not after using the get_* commands and so forth. It is also common when writing
Tcl code, to create some lower-level procedures that are used in the code. To avoid name
collision of procedures and global variables, it is recommended that you develop the
code within its own namespace so that name collisions are minimized.