Squashed 'libs/EXTERNAL/libtatum/' changes from 072337571..15296d1a4

15296d1a4 Add multiclock test with capture node specific constraints
88da6480e Tweak handling of per-capture node constraints to fix timing reports
e387a3f38 Fix --print_sizes option to tatum_test
099e52c26 Fix increment offset in timing reports
9578baa3e Update echo writers/loaders to support per-capture-node constraints
16ed6a760 Update traversals to support per-capture node constraints
7e8bc45cc Fix comment typo
b9aa2ab90 Add support for specifying per-capture node setup/hold constraints
68c291551 Simplify comparison operator

git-subtree-dir: libs/EXTERNAL/libtatum
git-subtree-split: 15296d1a47ecbd2f737db0f3148d870aeef0b01c
17 files changed
tree: 66fcdbaa85b3e2718433c707dc3d485d0f892ddc
  1. cmake/
  2. doc/
  3. libtatum/
  4. libtatumparse/
  5. scripts/
  6. tatum_test/
  7. tatumparse_test/
  8. test/
  9. .gitignore
  10. .travis.yml
  11. _config.yml
  12. CMakeLists.txt
  13. LICENSE.txt
  14. Makefile
  15. README.md
README.md

Tatum: A Fast, Flexible Static Timing Analysis (STA) Engine for Digital Circuits

Build Status

Overview

Tatum is a block-based Static Timing Analysis (STA) engine suitable for integration with Computer-Aided Design (CAD) tools, which analyze, implement and optimize digital circuits. Tatum supports both setup (max-delay) and hold (min-delay) analysis, clock skew, multiple clocks and a variety of timing exceptions.

Tatum is provided as a library (libtatum) which can be easily integrated into the host application. Tatum operates on an abstract timing graph constructed by the host application, and can be configured to use an application defined delay calculator.

Tatum is optimized for high performance, as required by optimizing CAD tools. In particular:

  • Tatum performs only a single set of graph traversals to calculate timing information for all clocks and analyses (setup and hold).
  • Tatum's data structures are cache optimized
  • Tatum supports parallel analysis using multiple CPU cores

How to Cite

If your work uses Tatum please cite the following as a general citation:

K. E. Murray and V. Betz, “Tatum: Parallel Timing Analysis for Faster Design Cycles and Improved Optimization”, IEEE International Conference on Field-Programmable Technology (FPT), 2018

Bibtex:

@inproceedings{c:tatum,
    author = {Murray, Kevin E. and Betz, Vaughn},
    title = {Tatum: Parallel Timing Analysis for Faster Design Cycles and Improved Optimization},
    booktitle = {IEEE International Conference on Field-Programmable Technology (FPT)},
    year = {2018}
}

Documentation

Comming soon.

Download

Comming soon.

Projects using Tatum

Tatum is designed to be re-usable in a variety of appliations.

Some of the known uses are:

  • The Verilog to Routing (VTR) project for Field-Programmable Gate Array (FPGA) Architecture and CAD research. Tatum is used as the STA engine in the VPR placement and routing tool.
  • The CGRA-ME framework for Coarse-Grained Reconfigurable Array (CGRA) Architecture research.

If your project is using Tatum please let us know!

History

Why was Tatum created?

I had need for a high performance, flexible STA engine for my research into FPGA architecture and CAD tools. I could find no suitable open source STA engines, and wrote my own.

Name Origin

A tatum is a unit of time used in the computational analysis of music [1], named after Jazz pianist Art Tatum.