Skip to content

Open Logic FT

Open Logic FT is the fault-tolerant fork of Open Logic, the VHDL standard library of FPGA building blocks. It adds the ft area: building blocks for designs in radiation environments such as spacecraft, where single event upsets flip bits in RAM cells and registers. The RAMs and FIFOs of the area are protected by a SECDED code (single error correction, double error detection); the clock domain crossings, the reset generator and the synchronizer are triplicated with majority voting (TMR).

The fork is maintained by Open Space HDL. Finished entities go to upstream Open Logic, one pull request at a time; everything else in the fork is identical to Open Logic.

What the fork adds

The cross-cutting concepts (codeword layout, error injection, status flags, ECC pipeline) are described once in the fault-tolerance principles. The entity list describes every entity in one line.

Group Entities Upstream Open Logic
ECC package and codec olo_ft_pkg_ecc, olo_ft_ecc_encode, olo_ft_ecc_decode Since 4.7.0
RAMs olo_ft_ram_sp, olo_ft_ram_sdp, olo_ft_ram_tdp Since 4.7.0
RAMs with background scrubbing olo_ft_ram_sp_scrub, olo_ft_ram_sdp_scrub Since 4.7.0
FIFOs olo_ft_fifo_sync, olo_ft_fifo_packet Since 4.7.0
Asynchronous FIFO olo_ft_fifo_async Fork only
Clock crossings (TMR) olo_ft_cc_reset, olo_ft_cc_bits, olo_ft_cc_pulse, olo_ft_cc_simple, olo_ft_cc_status, olo_ft_cc_handshake Fork only
Reset generator and synchronizer (TMR) olo_ft_reset_gen, olo_ft_sync Fork only
Delays olo_ft_delay, olo_ft_delay_cfg Fork only
AXI masters olo_ft_axi_master_simple, olo_ft_axi_master_full Fork only
EDAC monitoring olo_ft_ecc_monitor, olo_ft_ecc_monitor_axi Fork only

Where an ft entity has a base or intf counterpart, it keeps that interface and adds only what fault tolerance needs: the ECC-protected entities add error injection inputs, single and double error status outputs and the ECC pipeline settings, the TMR entities add only TMR-specific generics. Besides the ft area, the fork gives the state machines of several base, intf, fix and axi entities a safe recovery state.

Using the fork

The fork replaces Open Logic in a project; the library name (olo), the compile order and the tool scripts are the same, see How to. Projects include it as a git submodule and pin a tag. Tags are named <upstream version>-ft.<n> and mark a state of the branch fault-tolerant whose checks passed; the first is 4.7.0-ft.1.

git submodule add -b fault-tolerant https://github.com/open-space-hdl/open-logic-ft.git open-logic
git -C open-logic checkout 4.7.0-ft.1
git add open-logic
Branch Content
fault-tolerant Default branch: upstream develop plus all ft entities as a linear series of commits
feature/<name> One upstream pull request each, cut from upstream develop
main, develop Unchanged mirrors of upstream Open Logic

Verification

Every push to fault-tolerant runs the workflow FT-Backlog-Check: GHDL simulation of all configurations of the ft area and the minimal set of the other areas, VSG linting, markdownlint and the check that every ft entity is part of the synthesis inference test. The tests of the TMR entities force upsets into the registers of single chains and check that the voted outputs are not affected. The tag 4.7.0-ft.1 passed the full regression of the library (7784 tests) with GHDL.

Used by

Project Content
OpenWire Open SpaceWire implementation based on the Open Logic VHDL library
OpenFibre Open SpaceFibre implementation based on the Open Logic VHDL library
OpenRMAP Open implementation of the Remote Memory Access Protocol for SpaceWire and SpaceFibre networks

Licence

Open Logic FT is licensed under the PSI HDL Library License, Version 1.0, the licence of Open Logic (LGPL 2.1 with an exception for binaries, see LGPL2_1.txt). The other pages of this site are the documentation of Open Logic, rendered from the branch fault-tolerant; About Open Logic introduces the library and its maintainer.