I know FPGA design using VHDL and I came up some new topic recently that usage of triplication in FPGA but I am not confident about its understanding.

How can we use triplication in FPGA design and how do we verify this.

  • 2
    \$\begingroup\$ i don"t know what it is either, but why do you need to use it if you don't know what it is? \$\endgroup\$
    – jsotola
    May 31, 2019 at 6:22
  • \$\begingroup\$ This is the enhancement to the current design strategy. \$\endgroup\$
    – srihari
    May 31, 2019 at 6:50
  • 2
    \$\begingroup\$ @srihari we'll need more context. "Triplication" is an English word and means "to make everything be there three times". But it's not clear how this would apply to VHDL design; if you just put the same VHDL modules there three times and then combined the results, the synthesizer will just optimize away two of them, because that's what synthesizers do: analyze the logic of a circuit and reduce it to the correct minimal amount of logic elements necessary to produce the same result. \$\endgroup\$ May 31, 2019 at 7:06
  • 1
    \$\begingroup\$ The Ramans did everything in threes... \$\endgroup\$ May 31, 2019 at 20:41

1 Answer 1


Triplication means (as noted) to make 3 of everything.

It is used in space and safety critical designs, and data results are voted; a disagreement in the vote has to be designed such that the erroneous result circuit is reset. For this to work within a single device, partial reconfiguration in the FPGA is required.

The reason this is necessary in SRAM based FPGA devices is that they are susceptible to single event effects (such as SEUs) which can flip a configuration bit from 0 to 1 or vice versa and therefore changing the effective circuit.

SEUs are caused primarily by high energy free neutrons and cosmic radiation (in space applications) although the lead in SnPb solder (in particular those on BGA devices) can also emit alpha particles as some of the lead is \$Pb ^{210}\$ which decays via \$Bi^{210}\$ and \$Po^{210}\$ to \$Pb^{206}\$ (Uranium decay chain) which is the stable state for lead.

Flash based devices are immune to configuration state changes from free neutrons although they can be susceptible to X-Ray, and the data path can be protected by parity or ECC.

Configuration CRC readback is also available for newer devices.

The implementation is vendor specific; Xilinx has an excellent application note on the subject.

Adam Taylor has a how to guide.

  • 1
    \$\begingroup\$ This is clear as per the SEU effect on the semiconductor chip but how do we design in code and how to verify triplicate modular redundancy.. \$\endgroup\$
    – srihari
    May 31, 2019 at 9:57
  • 1
    \$\begingroup\$ Application note on implementation added. \$\endgroup\$ May 31, 2019 at 10:42
  • \$\begingroup\$ There is no information on the verification information of triplicate modular redundancy. \$\endgroup\$
    – srihari
    May 31, 2019 at 11:08
  • \$\begingroup\$ Added a how to guide (from hackster.io) \$\endgroup\$ May 31, 2019 at 11:38
  • \$\begingroup\$ Flash based devices are also susceptible. SEE can affect a wide range of semi-conductor devices... 1000A IGBT's can experience SEB due to neutron's at altitude. The susceptability might not exist at the configuration BUT it does exist at flip-flops. If you do no design your system to cope with the event (ie safe state machines, PLL reconfigure, filter/control-loop hickups) higher system failures can and do occur \$\endgroup\$
    – user16222
    May 31, 2019 at 16:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.