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.