Skip to content

OpenCompact v0.3.1

Latest

Choose a tag to compare

@rustyqt rustyqt released this 04 Nov 01:51
7956d5a

OpenCompact v0.3.1

A patch 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). It adds tools
only: the HDL, the testbenches, the compile order and the Open Logic pin are those of v0.3.0.

Changes since v0.3.0

  • Added: a resource and throughput estimate for any configuration (tools/estimate/, MIT licence), used by the
    Open Space Composer:

    • ocp_throughput.mjs: header length, image period in clock cycles and maximum length of a compressed image (the
      throughput model of the Composer, moved into the repository);
    • ocp_resources.mjs: the memories of ocp_core with depth, data width and stored SECDED codeword width and their
      bits, and LUT, flip-flops and clock frequency for PolarFire;
    • ocp_models.mjs: the fitted models, generated by tools/ocp_estimate_fit.py from the Libero calibration data
      (tools/tests/calibration_polarfire.json).

    tools/ocp_estimate.py is the same estimate in Python. Stable functions: headerBytes, imagePeriod,
    maxImageBytes, estimateResources.

  • Changed: user guide section 8.2 gives the resources and clock frequencies measured with the RTL of v0.3.0 and the
    estimate with its accuracy. The roadmap lists the predictor at the widest generic corner (c11) as an open item.

  • Changed: the scripts take the tool paths from the environment or the PATH only (VUNIT_MODELSIM_PATH,
    OCP_LIBERO, OCP_OOC_OUT or the corresponding options).

  • The CHANGELOG version rule now states that a release adding tools without changing the HDL, the testbenches or the
    interfaces is a patch release.

Designs using v0.3.0 need no change: the core is identical.

Accuracy of the estimate

Memories: exact for the generics. They equal the memories of the GHDL netlist of 126 configurations
(lint/memory_check.py, in the CI). The throughput model is exact as well: the predictor testbench checks it cycle by
cycle.

LUT, flip-flops and clock frequency for a PolarFire MPF100T (STD) with Libero SoC 2025.2 and a 32-bit interface: linear
models fitted to 61 synthesis runs and 16 place and route runs. Five configurations of the user guide table are kept
out of the fit as a check.

Quantity All runs (RMS, max) Check set (RMS, max)
LUT 7.5 %, 30.6 % (c11) 7.0 %, 13.5 %
Flip-flops 3.7 %, 14.4 % 8.4 %, 14.4 %
Clock frequency 4.4 %, 12.8 % 2.5 %, 3.7 %

LUT for the 11 configurations of the user guide table: RMS 11.9 %, max 30.6 % (c11); for the ten others RMS 7.8 %,
max 13.5 %.

Verification

  • git diff v0.3.0 v0.3.1 -- hdl tb compile_order.txt open-logic is empty: the core, the testbenches and the Open Logic
    pin are those of v0.3.0. The simulation evidence of v0.3.0 therefore applies unchanged: QuestaSim 613 of 613 in the
    optimised run and with code coverage, GHDL 613 of 613, CCSDS test data selection 1275 of 1275, AMD Vivado simulator
    167 of 167 top levels, and the code coverage of v0.3.0.
  • GHDL 6.0.0: the full regression in the CI of the release.
  • The checks of the estimate in the CI:
    • lint/memory_check.py;
    • python tools/ocp_estimate_fit.py --check and python tools/ocp_estimate_golden.py --check;
    • node --test (19 tests: the features, estimates and notes of every case are equal in Python and JavaScript);
    • the TypeScript 7.0.2 strict check of the JSDoc types;
    • python -m pytest tools/tests.
  • 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), unchanged.
  • VHDL-2008; verified with GHDL 6.0.0, QuestaSim 2024.3 and the AMD Vivado simulator 2025.2. The estimate needs Python 3
    or a browser (ES modules); its checks use Node.js 22 and TypeScript 7.0.2.

Known issues and open items

  • c11 (D = 32, Omega = 19, P = 15, R = 64) needs 81160 LUTs on PolarFire and reaches 75 MHz; area and clock frequency
    of the predictor at this corner are open (roadmap).
  • TRL 4 needs the hardware test of a reference system that contains the core (roadmap).