-
Notifications
You must be signed in to change notification settings - Fork 19
Introduction
The Tincr Design Suite (or just "Tincr") is an application programming interface (API) for building computer aided design (CAD) tools on top of Xilinx's Vivado design environment. As a result, these tools can operate on hardware designs that target actual Xilinx field programmable gate arrays (FPGAs).
To provide the user with the most flexibility in how their CAD tools are implemented, Tincr offers two two libraries, referred to as TincrCAD and TincrIO. Both of these libraries are written in the tool command language (Tcl), but each facilitates a unique approach to CAD tool design.
TincrCAD is an API of high-level Tcl commands built on top of Vivado's Tcl interpreter and provides two primary benefits:
- It abstracts away the low-level nuances of Vivado's native Tcl command set
- It supplements Vivado with vital information that is otherwise unavailable
The API that realizes these benefits was implemented with two metrics in mind:
- Performance
- Simplicity
TincrCAD was designed to maximize performance. In the development of CAD tools that target FPGAs, shaving off a millisecond from a command that lies on the critical path of an inner loop can mean the difference of hours in runtime. Therefore TincrCAD utilizes a number of caching mechanisms to help commands fetch important data quickly. Aside from caching, a number of other tricks are used to speed up every command, even native Vivado commands.
TincrCAD's second goal was simplicity. While Vivado provides many of the commands needed to implement a number of CAD tools, these native commands can quickly become convoluted and verbose. A programmer could easily end up spending an hour to write a single command. TincrCAD remedies this by wrapping these low-level commands into sets of high-level functions. These functions are further organized into constructs called "ensembles" which offer the programmer some degree of encapsulation, similar to an object-oriented programming language.
While TincrCAD provides a framework for building CAD tools within the Vivado environment, TincrIO provides an interface for operating on designs outside of the Vivado sandbox. This enables existing FPGA CAD tool frameworks such as RapidSmith and Torc to interface with Vivado, allowing them to extend support to devices that are not supported by the Xilinx Design Language (XDL). This interface is expressed through just two files:
- Tincr checkpoint
- XDLRC report file
A Tincr checkpoint is an archive of files that express a design's netlist and its mapping to physical components on an FPGA. TincrIO provides functions for importing and exporting these checkpoints into and out from Vivado. Currently, the Tincr checkpoint is considered to be a strictly BETA feature, as it still has many bugs when importing into Vivado.
XDLRC files (or XDL report files) are a relic from previous Xilinx design tools. An XDLRC file contains a complete description of a device and its resources all the way down to the basic element (BEL) level. TincrIO is able to generate a near complete XDLRC file on its own. While it is unable to obtain a map of the routing resources within a site, TincrIO can be paired with a tool from RapidSmith to easily and quickly generate this information by hand.