The deliverable
What you’re licensing
mlkempack is the byte-packing glue of post-quantum ML-KEM (Kyber, It is delivered as a licensable soft-IP block engineered as an ASIL-B Safety Element out of Context — not just RTL, but the complete functional-safety work package needed to carry it into an ISO 26262 program:
Synthesizable RTL
Portable, vendor-neutral SystemVerilog that drops onto your existing SoC fabric — no foundry or EDA-tool lock-in.
Per-IP FMEDA report
SPFM / LFM / PMHF computed against the ASIL target per ISO 26262-5 — the quantitative analysis your assessor asks for.
Safety manual
Assumptions of use, the safety mechanisms and their diagnostic coverage — written to drop straight into your safety case.
IP-XACT + integration docs
A machine-readable descriptor plus register and integration documentation for fast, low-risk bring-up.
Self-checking testbench
A self-checking (crypto: bit-exact) testbench and a one-command build, so you can reproduce every claim on day one.
mlkem_pack is the byte-packing glue of post-quantum ML-KEM (Kyber, FIPS 203): it turns polynomials into the compact byte strings that travel on the wire (public keys, secret keys, ciphertext) and back.
Key Features
- Both directions in one core: ENCODE (Compress_d + ByteEncode_d, LSB-first bit-packing) and DECODE (ByteDecode_d + Decompress_d), one coefficient per cycle, selected by the encode input
- Parameterized by d ∈ {1,4,5,10,11,12} at run time, no re-synthesis needed: d=12 raw public/secret-key polynomial (384 B), d=10/11 ciphertext u, d=4/5 ciphertext v, d=1 shared-secret message
- Bare load/command/status/readback wiring (wr_en/wr_kind/wr_addr/wr_data, d/encode/start, busy/done/out_len, rd_addr→rd_cdata/rd_bdata) — drops behind any host sequencer or DMA engine with no bus-wrapper overhead
- Bit-exact against the pq-crystals compress/decompress + ByteEncode/ByteDecode golden for every supported d — the same reference vectors a FIPS 203 software implementation is checked against
- Control-FSM duplicate-DMR (err_code 9) plus element-count parity (err_code 1) into one shared safety_monitor — an ISO 26262 ASIL-B SEooC building block
- Drop-in engine inside the catalog’s mlkem_kem KeyGen/Encaps/Decaps orchestrator — one of five time-multiplexed compute engines (shake_xof/sample_ntt/mlkem_cbd/mlkem_ntt/mlkem_pack) behind a shared LOAD→RUN→READ driver
- Published FMEDA: SPFM 92.01%, LFM 94.66%, PMHF 1.35×10⁻⁸/h — PASS against the ASIL-B target (informational Technology-Preview; coefficient/byte-RAM SECDED is an integrator Assumption-of-Use)
Standards & Compliance
FIPS 203 ML-KEM (Kyber) Compress_d/ByteEncode_d/ByteDecode_d/Decompress_d; ISO 26262 ASIL-B SEooC (SPFM 92.01%, LFM 94.66%, PMHF 1.35×10⁻⁸/h, informational Technology-Preview)
Functional Safety
ASIL-B (SEooC) · SPFM 92.01% · LFM 94.66% · PASS
ISO 26262:2018 · FMEDA available · Safety Manual included
Register Map
See datasheet for full register reference.
Getting Started
// Minimal instantiation
mlkem_pack #(
.ADDR_W(6)
) u_mlkem_pack (
.clk (clk),
.rst_n (rst_n),
// APB4
.p_paddr (paddr),
.p_psel (psel),
.p_penable (penable),
.p_pwrite (pwrite),
.p_pwdata (pwdata),
.p_prdata (prdata),
.p_pready (pready),
// Safety
.err_clear (1'b0),
.err_valid (err_valid),
.err_code (err_code)
);
Configure via the CTRL register after reset to enable the IP and set operating parameters. Monitor err_valid / err_code for any safety faults reported by the built-in safety monitor.
Applications
Where it fits
Typically deployed in secure boot, firmware authentication, key storage, and confidential on-board communication.
Figures are pre-silicon engineering-grade estimates for a Safety Element out of Context (SEooC); final ASIL sign-off is the integrator’s, supported under NDA. FMEDA and Safety Manual available under NDA.