AR# 10822: EXEMPLAR - How do I instantiate a triple-module redundancy (TMR) register for Virtex in Leonardo Spectrum?
EXEMPLAR - How do I instantiate a triple-module redundancy (TMR) register for Virtex in Leonardo Spectrum?
Keywords: TMR, triple, redundancy, module, register, Leonardo, Spectrum, Exemplar, Leo
General Description: The Virtex series contains high-reliability parts called Virtex "RadHard" parts (or Virtex QPro). These parts should be used for implementing triple-module redundancy (TMR). For information on targeting radiation hardened parts, please refer to (Xilinx Answer 12618).
In Virtex architecture, 3-state buffers are not pass transistors; rather, they are actually hardwired AND-OR logic structure. In the examples below, the TMR register is using the wired-OR capability to implement triple-module redundancy. These elements are cross-coupled to produce the same Boolean function as that needed for the majority vote circuit.
The FD cell can be replaced by any other logic. The important aspect of this circuit is that the routing pips are controlled by SRAM cells; a single fault in that cell will affect only the BUFT input and not the output itself. To upset this circuit, routing pips for more than one flip-flop should be upset.
Leonardo Spectrum's Xilinx/Virtex library does not have cells that can implement TMR capability. However, you can do this by creating your own TMR. For example, if TMR capability is needed for a register, this can be done relatively easily in a Virtex device.