YARDstick (http://www.nkavvadias.com/yardstick ) is a design automation tool for custom processor development flows that focuces on the hard part: generating and evaluating application-specific hardware extensions. YARDstick is a powerful building block for ASIP (Application-Specific Instruction-set Processor) development, since it integrates application analysis, ultra-fast algorithms for custom instruction generation and selection with user-defined compiler intermediate representations. It integrates retargetable compiler features for the targeted IRs/architectures.
Important features of YARDstick are as follows:
YARDstick comes along with a cross-platform GUI written in Tcl/Tk 8.5 (http://wiki.tcl.tk).
The ultimate goal of YARDstick is to liberate the designer's development infrastructure from compiler and simulator idiosyncrasies. With YARDstick, the ASIP designer is empowered with the freedom of specifying the target architecture of choice and adding new implementations of analyses and custom instruction generation/selection methods.
Typically, 2x to 15x speedups for benchmark applications (ANSI C optimized source code) can be fully automatically obtained by using YARDstick depending on the target architecture. Speedups are evaluated against a scalar RISC architecture.
- Data types
- Operation-level statistics
- Basic block statistics (ranking)
- Performance estimations with/without custom instructions.
- ANSI C
- dot (Graphviz)
- VCG (GDL, aiSee)
- XML (GGX for the AGG graph rewriting tool): http://www.user.tu-berlin.de/o.runge/AGG/
- Retargetable assembly emitter for entire translation units
- CDFG formats for various RTL synthesis tools
- Full-parameterized MIMO custom instruction generation algorithm
- Fast heuristic
- Configurable number of inputs
- Configurable number of outputs
- Based on priority metrics
- Code selector for MIMO instructions (tested with large cases).
- Virtual register assignment (allocation for a VM).
- Hard register allocator in the works.
- single constant multiplication optimizer
- elimination of false data-dependences in assembly-level CDFGs.
- beautification options for visualization
- interfacing (co-operation) with external tools such as peephole optimizers, profilers, code generators etc.
- features related to the custom processor architecture named ByoRISC: (http://arxiv.org/abs/1403.6632 )
Here is a list of application benchmarks that have been tested with YARDstick:
At the YARDstick homepage (http://www.nkavvadias.com/yardstick/ ) you can find some additional materials: