Repository navigation
OpenCompact 0.2.0
OpenCompact v0.2.0
A minor release of OpenCompact, the CCSDS 123.0-B-2 hyperspectral and multispectral image compression core, at
technology readiness level 3 (fully verified by simulation; not tested on hardware, no flight heritage).
Changes since v0.1.1
- Added: runtime configuration (
RuntimeConfig_g, default false). The image dimensions NX, NY, NZ (from 1 up to
the maxima of the generics) and the band-independent absolute and relative error limit values can change from image
to image, through new configuration ports ofocp_core(Cfg_*,Cfg_Taken,Act_*) or, inocp_channel,
through new AXI4-Lite registers ofocp_mib(CONTROL, STATUS, NEXT_X, NEXT_Y, NEXT_Z, NEXT_LIMITS). A COMMIT checks
the values and takes them at the start of the next image; values outside their ranges are taken as the nearest valid
values. With the generic false the compressed images and the throughput are unchanged, and the logic added for the
runtime configuration has no loads. User guide section 4.4. - Added: LIMITS register and GENERICS.RUNTIME_CONFIG; register map version 2 (ID 0x4F435002).
- Added:
lint/xsim_smoke.pyalso elaborates and simulates the runtime configurations (161 top levels). - Fixed: throughput model (
tools/ocp_throughput.py): the tail of the hybrid coder holds back the next image once
the output FIFO of the predictor is full; the compressed images were not affected. - Changed: the test end compares the alert counters of every level and ends the simulation with a failure,
whatever the stop limits of the test. - Changed: Open Logic 4.7.0-ft.9 (from 4.7.0-ft.6); no port or generic of OpenCompact changes.
Designs using v0.1.1 need no change: the new generic defaults to the previous behaviour, the new ports have defaults
or are unused with it, and the register map only adds registers (the existing ones keep their offsets and fields).
Verification
- QuestaSim (Questa Pro Microchip Edition 2024.3, time resolution 1 fs), full regression of 565 tests: 565 of 565
pass in the optimised run without code coverage and with code coverage. The RTL of the release equals that of the
commit of the full regression; the tests added by the coverage review ran again in both modes. - Code coverage: statements 2054 / 2073 (99.1 %), branches 923 / 934 (98.8 %), conditions 202 / 231 (87.4 %),
expressions 186 / 193 (96.4 %), every state of the state machines and every transition except the recovery
transition of the image-start sequencer; every remaining miss is justified indocs/coverage.md. - GHDL 6.0.0: the full regression of 565 tests in the CI.
- CCSDS test data selection: 1275 of 1275 tests pass in GHDL.
- AMD Vivado simulator 2025.2: 161 of 161 top levels of
lint/xsim_smoke.pyelaborate and run without an error. - Mutations of the runtime configuration: 10 of 10 make their test fail; the queue-full condition of the
configuration queue and its hybrid term are each caught by the queue test (TC-CO-58). - VSG, markdownlint, compliance matrix and register map checks are clean.
Dependencies
- Open Logic 4.7.0-ft.9 (open-space-hdl/open-logic-ft, submodule
open-logic). - VHDL-2008; verified with GHDL 6.0.0, QuestaSim 2024.3 and the AMD Vivado simulator 2025.2.
Known issues and open items
- With
RuntimeConfig_gfalse the GHDL netlist differs from v0.1.1 only by logic without loads; the equal
utilisation after FPGA synthesis is to be confirmed with the out-of-context Vivado flow (lint/vivado_ooc.pyc01
before and after; core verification report, section 5).