From 0a8b3dae69e29b7d39e6197a945f21453b53466b Mon Sep 17 00:00:00 2001 From: FallenSigh Date: Mon, 29 Jun 2026 01:00:47 +0800 Subject: [PATCH] feat(enc): Encaps E0 - op_i/msg_i/ek-load scaffold + H(ek)+G(m||H(ek)) Extend mlkem_top with a runtime op_i select (0=KeyGen, 1=Encaps) and the first Encaps stages, reusing the shared keccak_core and the ST_H multi-block SHA3-256 machinery: ST_ENC_H: H(ek) over preloaded ek_bram (same FSM as KeyGen ST_H) ST_ENC_G: (K,r) = G(m||H(ek)) via new 64-byte single-block SHA3-512 - sha3_top_shared: add mode=2'b11 = SHA3-512 over a full 512-bit message (g512_pad). Standalone tb_sha3_g512 confirms it byte-exact. - mlkem_top: new ports op_i, msg_i, ek_in_{we,addr,byte} (ek preload), ss_o, dbg_ct_*, dbg_r_o/dbg_hek_o. st widened 4->5 bits; ST_ENC_* states added. Renamed message port to msg_i to avoid collision with ST_M counter m_i. - TB tb_mlkem_enc_katK + gen_encaps_vectors.py (per-byte ek/m/ct/ss vectors). Verified ss==KAT.ss for K=2/3/4, cases 0-2 (all PASS). KeyGen unaffected (K=2 c0 still ek==pk, dk==sk byte-exact). --- .claude/plans/encaps_plan.md | 90 ++ sync_rtl/sha3/TB/tb_sha3_g512.v | 50 + sync_rtl/sha3/sha3_top_shared.v | 6 +- sync_rtl/top/TB/gen_encaps_vectors.py | 76 ++ sync_rtl/top/TB/tb_mlkem_enc_katK_xsim.v | 97 ++ sync_rtl/top/TB/tb_mlkem_kg_katK_xsim.v | 8 +- sync_rtl/top/TB/vectors/enc_k2_c0_ct.hex | 768 +++++++++++ sync_rtl/top/TB/vectors/enc_k2_c0_ek.hex | 800 +++++++++++ sync_rtl/top/TB/vectors/enc_k2_c0_m.hex | 32 + sync_rtl/top/TB/vectors/enc_k2_c0_ss.hex | 32 + sync_rtl/top/TB/vectors/enc_k2_c1_ct.hex | 768 +++++++++++ sync_rtl/top/TB/vectors/enc_k2_c1_ek.hex | 800 +++++++++++ sync_rtl/top/TB/vectors/enc_k2_c1_m.hex | 32 + sync_rtl/top/TB/vectors/enc_k2_c1_ss.hex | 32 + sync_rtl/top/TB/vectors/enc_k2_c2_ct.hex | 768 +++++++++++ sync_rtl/top/TB/vectors/enc_k2_c2_ek.hex | 800 +++++++++++ sync_rtl/top/TB/vectors/enc_k2_c2_m.hex | 32 + sync_rtl/top/TB/vectors/enc_k2_c2_ss.hex | 32 + sync_rtl/top/TB/vectors/enc_k3_c0_ct.hex | 1088 +++++++++++++++ sync_rtl/top/TB/vectors/enc_k3_c0_ek.hex | 1184 ++++++++++++++++ sync_rtl/top/TB/vectors/enc_k3_c0_m.hex | 32 + sync_rtl/top/TB/vectors/enc_k3_c0_ss.hex | 32 + sync_rtl/top/TB/vectors/enc_k3_c1_ct.hex | 1088 +++++++++++++++ sync_rtl/top/TB/vectors/enc_k3_c1_ek.hex | 1184 ++++++++++++++++ sync_rtl/top/TB/vectors/enc_k3_c1_m.hex | 32 + sync_rtl/top/TB/vectors/enc_k3_c1_ss.hex | 32 + sync_rtl/top/TB/vectors/enc_k3_c2_ct.hex | 1088 +++++++++++++++ sync_rtl/top/TB/vectors/enc_k3_c2_ek.hex | 1184 ++++++++++++++++ sync_rtl/top/TB/vectors/enc_k3_c2_m.hex | 32 + sync_rtl/top/TB/vectors/enc_k3_c2_ss.hex | 32 + sync_rtl/top/TB/vectors/enc_k4_c0_ct.hex | 1568 ++++++++++++++++++++++ sync_rtl/top/TB/vectors/enc_k4_c0_ek.hex | 1568 ++++++++++++++++++++++ sync_rtl/top/TB/vectors/enc_k4_c0_m.hex | 32 + sync_rtl/top/TB/vectors/enc_k4_c0_ss.hex | 32 + sync_rtl/top/TB/vectors/enc_k4_c1_ct.hex | 1568 ++++++++++++++++++++++ sync_rtl/top/TB/vectors/enc_k4_c1_ek.hex | 1568 ++++++++++++++++++++++ sync_rtl/top/TB/vectors/enc_k4_c1_m.hex | 32 + sync_rtl/top/TB/vectors/enc_k4_c1_ss.hex | 32 + sync_rtl/top/TB/vectors/enc_k4_c2_ct.hex | 1568 ++++++++++++++++++++++ sync_rtl/top/TB/vectors/enc_k4_c2_ek.hex | 1568 ++++++++++++++++++++++ sync_rtl/top/TB/vectors/enc_k4_c2_m.hex | 32 + sync_rtl/top/TB/vectors/enc_k4_c2_ss.hex | 32 + sync_rtl/top/mlkem_top.v | 155 ++- 43 files changed, 21956 insertions(+), 30 deletions(-) create mode 100644 .claude/plans/encaps_plan.md create mode 100644 sync_rtl/sha3/TB/tb_sha3_g512.v create mode 100644 sync_rtl/top/TB/gen_encaps_vectors.py create mode 100644 sync_rtl/top/TB/tb_mlkem_enc_katK_xsim.v create mode 100644 sync_rtl/top/TB/vectors/enc_k2_c0_ct.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k2_c0_ek.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k2_c0_m.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k2_c0_ss.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k2_c1_ct.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k2_c1_ek.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k2_c1_m.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k2_c1_ss.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k2_c2_ct.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k2_c2_ek.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k2_c2_m.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k2_c2_ss.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k3_c0_ct.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k3_c0_ek.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k3_c0_m.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k3_c0_ss.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k3_c1_ct.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k3_c1_ek.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k3_c1_m.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k3_c1_ss.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k3_c2_ct.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k3_c2_ek.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k3_c2_m.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k3_c2_ss.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k4_c0_ct.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k4_c0_ek.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k4_c0_m.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k4_c0_ss.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k4_c1_ct.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k4_c1_ek.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k4_c1_m.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k4_c1_ss.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k4_c2_ct.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k4_c2_ek.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k4_c2_m.hex create mode 100644 sync_rtl/top/TB/vectors/enc_k4_c2_ss.hex diff --git a/.claude/plans/encaps_plan.md b/.claude/plans/encaps_plan.md new file mode 100644 index 0000000..eaab2e3 --- /dev/null +++ b/.claude/plans/encaps_plan.md @@ -0,0 +1,90 @@ +# ML-KEM Encaps 顶层集成 — 实现计划 + +> 在现有 `mlkem_top`(KeyGen 已 KAT 通过)基础上扩展 Encaps(FIPS 203 Alg 17 + K-PKE.Encrypt Alg 14)。 +> 决策(已与用户确认):**(1) 统一进 mlkem_top(加 op_i 选择 + ST_ENC_* 状态,复用同一套叶子 + BRAM 银行);(2) 一上来就做全 K(2/3/4);(3) golden 只做端到端 KAT(ct==KAT.ct, ss==KAT.ss),逐级用 dbg tap 在 bring-up 时对拍。** + +## 算法(Encaps,全 K) +输入:ek(=KAT.pk,384K+32 B)、m(=KAT.msg,32 B)。输出:K=ss(32 B)、c=ct(32·(du·K+dv) B)。 +1. `h = H(ek)` = SHA3-256(ek),多块。 +2. `(K_ss, r) = G(m ‖ h)` = SHA3-512(64 B,单块)。`K_ss = hash[255:0]`,`r = hash[511:256]`。**ss 即 K_ss,无 KDF/J。** +3. `t̂[i] = byteDecode₁₂(ek[i·384 .. (i+1)·384])`,i∈0..K-1;`rho = ek[384K .. 384K+32]`。 +4. `Â[i][j] = SampleNTT(rho‖j‖i)` —— 与 KeyGen ST_A 完全相同。 +5. `y[i] = CBD_η1(PRF(r, i))`,i=0..K-1(nonce 0..K-1)。 +6. `e1[i] = CBD_η2(PRF(r, K+i))`,i=0..K-1(nonce K..2K-1)。**η2 恒=2。** +7. `e2 = CBD_η2(PRF(r, 2K))`(nonce 2K)。 +8. `ŷ[i] = NTT(y[i])`(mode=0)。 +9. `u[i] = INTT(Σⱼ Â[j][i]∘ŷ[j]) + e1[i]`,i=0..K-1。**注意转置:用 Â[j][i](slot=j·K+i),不是 KeyGen 的 Â[i][j]。** INTT = ntt_core mode=1(内置 ×3303 缩放)。 +10. `mu[c] = Decompress₁(byteDecode₁(m)[c])` = m 第 c bit ? 1665 : 0(无需存储,m 寄存器逐 bit 算)。 +11. `v = INTT(Σⱼ t̂[j]∘ŷ[j]) + e2 + mu`。 +12. `c1 = byteEncode_du(Compress_du(u[i]))` 拼 K 个;`c2 = byteEncode_dv(Compress_dv(v))`;`ct = c1 ‖ c2`。 +13. du/dv:K=2/3 → (10,4);K=4 → (11,5)。ct 长度:K=2→768,K=3→1088,K=4→1568。 + +## 复用与新增 + +### 直接复用(零改动或仅加 phase mux) +- `u_sha3`(sha3_top_shared):H(ek) 多块 + G 单块 —— 与 KeyGen ST_H/ST_G 同。 +- 共享 `u_keccak`:扩 sel_* 4-way mux,加 Encaps phase 选择。 +- `u_snt`(sample_ntt):A 再生 —— 与 ST_A 同。 +- `u_cbd`(sample_cbd):y/e1/e2 —— **新增 η2=2 驱动**(eta_i 现仅接 eta1_rt;Encaps 的 e1/e2 phase 驱动 2)。 +- `u_ntt`(ntt_core):ŷ 用 mode=0;u/v 的 INTT 用 **mode=1**(缩放已内置)。 +- `u_pmul`(poly_mul):点乘 Â[j][i]∘ŷ[j] 与 t̂[j]∘ŷ[j];累加在顶层逐系数 modQ(同 ST_M)。 +- 3 个系数银行 bank_a/bank_se/bank_t:**容量够,见存储编排**,只加 Encaps 的读写 phase mux。 + +### 新增 RTL +- `byteDecode₁₂`:ek 3 字节 → 2 系数。`c0=b0|((b1&0xF)<<8); c1=(b1>>4)|(b2<<4)`。组合逻辑,流式写 bank_t。 +- `Compress` 实例:实例化现有 `comp_decomp_sync`(mode=0,d=du/dv),top 当前未用。 +- `byteEncode_d` 通用位打包器(d∈{4,5,10,11}):把 d-bit 压缩值 LSB-first 流式打包成字节写 ct_bram。**新增**(现有 byteEncode12 是 2→3 硬编码,不通用)。 +- `mu` 流内生成:INTT v 输出时按 m 寄存器对应 bit 加 1665。 +- `ct_bram`(sd_bram W=8 D=2048 A=11):ct 字节缓冲(≤1568 B)。 +- ek 载入路径:`m_i[255:0]` 端口 + ek 流式载入接口(valid/ready 写入 ek_bram),Encaps 前预填。 +- 输出:`ss_o`(寄存器 + dbg tap);ct 经 dbg tap 读 ct_bram(对齐现有"无流式输出、靠 readback"的风格)。 +- `op_i`(KeyGen/Encaps 选择) + 新 FSM 状态。 + +## 存储编排(关键 — 全 K 用现有 28 slot 银行不扩容) +- bank_a (D=4096, 16 slot):Â[i][j],K=4 用满 16。 +- bank_se (D=2048, 8 slot):y_hat[0..K-1] + e1[0..K-1] = 2K slot(K=4→8,刚好用满)。 +- bank_t (D=1024, 4 slot):**E0 先放 t̂[0..K-1](从 ek 解码),也用作 e2 的临时家**。 +- **e2 落点**:e2 只在算 v 时需要,算 u 时 bank_t 空闲 → e2 暂存 bank_t[K..](K=2/3 有空 slot)。K=4 时 bank_t 4 slot 被 t̂ 占满 → e2 先存 bank_se 某 slot(算 u 阶段 e1 仍在用,故 e2 需独立 slot)。 + - **解法(全 K 统一,避免分支)**:算 u 时 t̂ 尚未需要 → **先做 u(用 A+y_hat+e1),u 全部算完压缩进 ct 后,e1 已用完** → 复用 bank_se 的 e1 区放 e2,再从 ek 解码 t̂ 进 bank_t 算 v。峰值 slot = 16(A)+ 2K(se)+ 0(t 尚未填)= K=4 时 24 ≤ 28。✅ + - 时序:E_A(填 A)→ E_CBD(y/e1/e2... e2 先丢 bank_t[0])→ E_NTT(y→y_hat)→ E_U(算 u[i],压缩写 ct c1 区)→ E_V_PREP(t̂ 解码进 bank_t,e2 从 bank_t[0] 搬到 bank_se 空 slot 或就地)→ E_V(算 v,+e2+mu,压缩写 ct c2 区)。 + - **简化**:e2 在 E_CBD 阶段先存 bank_se 的 e1 区**之后**的 slot 不够(K=4)。改为 e2 存 bank_t[0](此时 t̂ 未填),E_V_PREP 时 t̂ 从 ek 流式解码覆盖 bank_t,但 e2 要先读出暂存(单 poly 256×12b 可进一个小 reg 阵列,或搬到 bank_se 算完 u 后的空位)。bring-up 时定稿,以 dbg tap 验证。 + +## 运行时参数(新增) +``` +eta2_rt = 2'd2; // 恒定 +du_rt = (k==4) ? 5'd11 : 5'd10; +dv_rt = (k==4) ? 5'd5 : 5'd4; +c1_bytes_rt = 32*du_rt*k_r; // K2:640 K3:960 K4:1408 +c2_bytes_rt = 32*dv_rt; // K2:128 K3:128 K4:160 +ct_bytes_rt = c1_bytes_rt + c2_bytes_rt; // 768 / 1088 / 1568 +``` + +## 顶层接口新增 +- `op_i` (1b):0=KeyGen(现有),1=Encaps。在 start_i 锁存为 op_r。 +- `m_i [255:0]`:Encaps 消息(byte0 在低)。 +- ek 载入:`ek_in_valid_i/ek_in_byte_i[7:0]/ek_in_ready_o`(或复用 dbg 写口),Encaps 前把 ek 流进 ek_bram。 +- `ss_o [255:0]` + `done_o`(复用);ct 经 `dbg_ct_idx_i[10:0] → dbg_ct_o[7:0]` readback。 + +## 实现阶段(逐阶段 KAT/dbg 对拍) +- **E0 — 脚手架 + ek 载入 + H/G**:加 op_i/m_i/ek 载入,ST_ENC_LOAD→ST_ENC_H(H(ek))→ST_ENC_G(G(m‖h))。dbg 验证 ss=K_ss、r(对 ml-kem-r logging::Encaps 的 K/r/H(ek))。 +- **E1 — A 再生 + t̂ 解码**:ST_ENC_A 复用 snt 写 bank_a;byteDecode12 把 ek 解码进 bank_t。dbg 读系数对 KeyGen golden 的 Ahat / 对 KAT pk 解码的 t̂。 +- **E2 — y/e1/e2 采样 (η1/η2)**:ST_ENC_C,nonce 0..2K,eta 在 e1/e2 切 2。dbg 验证 y/e1/e2(对 ml-kem-r)。 +- **E3 — ŷ = NTT(y)**:ST_ENC_N,mode=0,就地。dbg 对 y_hat。 +- **E4 — u = INTT(Σ Â[j][i]∘ŷ[j]) + e1**:ST_ENC_U,poly_mul + 累加 + INTT(mode=1) + 加 e1。**转置寻址 slot=j·K+i**。dbg 对 u。 +- **E5 — Compress_du + byteEncode_du → c1**:comp_decomp + 通用打包器写 ct_bram c1 区。dbg 对 ct[0..c1_bytes]==KAT.ct 前缀。 +- **E6 — v = INTT(Σ t̂[j]∘ŷ[j]) + e2 + mu**:ST_ENC_V,mu 流内由 m bit 生成。dbg 对 v。 +- **E7 — Compress_dv + byteEncode_dv → c2 + 端到端 KAT**:写 ct c2 区。干净 TB 喂 ek/m,比 ct(全长)==KAT.ct 且 ss==KAT.ss,K=2/3/4 各 count=0..N。 + +## 验证 +- TB `tb_mlkem_enc_katK_xsim.v`:从 `~/Dev/ml-kem-r/test_data/kat_MLKEM_{512,768,1024}.rsp` 取 pk(→ek)、msg(→m)、ct、ss,逐字节比 ct + 比 ss。 +- bring-up 中间对拍:`cargo run --example logging`(已有 Encaps log::debug,输出 K/r/H(ek)/|c|),或临时加 dump_encaps.rs 出 256-coeff 中间量(仅工作树,不提交 ml-kem-r)。 +- XSIM 环境同 KeyGen:`source settings64.sh; export LD_PRELOAD=libtinfo.so.5; rm -rf xsim.dir .Xil`。 + +## 风险 / 注意 +- **转置**:Encrypt 用 Â[j][i],KeyGen 用 Â[i][j]。slot = j*K+i(列优先)。最易错,E4 单列 dbg 对拍。 +- **G 字节序**:KeyGen G 输入 d 原序无翻转(keygen_plan 已确认);但 xcheck 发现 KAT 文件 d/z 存的是翻转序。**m 喂入字节序需 E0 用 KAT.msg 实测确认**(很可能与 d 同约定)。 +- **INTT 缩放**:ntt_core mode=1 已内置 ×3303,不要再缩放。 +- **e2 落点(K=4)**:见存储编排,bring-up 定稿,dbg 验证不踩 t̂/e1。 +- **byteEncode_d 通用打包**:d=10/11 跨字节,位序 LSB-first(同 byte_encode)。新写、单独 TB 或 E5 dbg 即验。 +- **共享 keccak 4-way mux**:加 Encaps phase 的 sel_ + kc_valid_o 门控,勿与 KeyGen phase 冲突(op_r 已区分)。 + diff --git a/sync_rtl/sha3/TB/tb_sha3_g512.v b/sync_rtl/sha3/TB/tb_sha3_g512.v new file mode 100644 index 0000000..2df5d09 --- /dev/null +++ b/sync_rtl/sha3/TB/tb_sha3_g512.v @@ -0,0 +1,50 @@ +// tb_sha3_g512.v - isolate sha3_top_shared mode=11 (64-byte SHA3-512). +`timescale 1ns/1ps +module tb_sha3_g512; + reg clk=0, rst_n=0; + reg [1:0] mode; + reg [511:0] data_i; + reg valid_i, ready_i; + wire ready_o, valid_o; + wire [511:0] hash_o; + // shared keccak + wire [1599:0] kc_state_i, kc_state_o; + wire kc_valid_i, kc_valid_o, kc_ready_o, kc_ready_i; + + sha3_top_shared u_sha3 ( + .clk(clk), .rst_n(rst_n), .mode(mode), .data_i(data_i), + .valid_i(valid_i), .ready_o(ready_o), .hash_o(hash_o), .valid_o(valid_o), + .ready_i(ready_i), + .mb_en(1'b0), .mb_block_i(1088'd0), .mb_valid_i(1'b0), .mb_last_i(1'b0), .mb_ready_o(), + .kc_state_o(kc_state_o), .kc_valid_o(kc_valid_o), .kc_ready_o(kc_ready_o), + .kc_state_i(kc_state_i), .kc_valid_i(kc_valid_i), .kc_ready_i(kc_ready_i) + ); + keccak_core #(.ROUNDS(24)) u_kc ( + .clk(clk), .rst_n(rst_n), .state_i(kc_state_i), .valid_i(kc_valid_i), + .ready_o(kc_ready_o), .state_o(kc_state_o), .valid_o(kc_valid_o), .ready_i(1'b1) + ); + always #5 clk=~clk; + + integer j; + initial begin + // m || hek (byte0 in [7:0]); m=20a7..ffff, hek=ca87..aac6 + // build little-endian-in-register: byte0 at [7:0] + data_i = 512'd0; + // m bytes 0..31 + data_i[ 0 +: 256] = 256'hffff80fc331b2ca1904ccf554ed114bf99f6de44b92082c36c49700fe1b7a720; + // hek bytes 32..63 + data_i[256 +: 256] = 256'hc6aa5100ed06d0c2db8cc3d1a36a62055b182f8d51ea71602501857e7c5d87ca; + mode=2'b11; valid_i=0; ready_i=1; + rst_n=0; repeat(4) @(posedge clk); rst_n=1; @(posedge clk); + valid_i=1; @(posedge clk); + while(!(valid_i && ready_o)) @(posedge clk); + valid_i=0; + while(!valid_o) @(posedge clk); + $write("K_ss = "); for(j=0;j<32;j=j+1) $write("%02x", hash_o[8*j +: 8]); $write("\n"); + $write("r = "); for(j=0;j<32;j=j+1) $write("%02x", hash_o[256+8*j +: 8]); $write("\n"); + $display("want K_ss = 2b5c52ee72946331983ba050be0f435055c0547901e03559b356517889ea27c5"); + $display("want r = 08cd245f59e6cb6e3687c6632749b6c0737d183701f0b0492b843358893c6a24"); + $finish; + end + initial begin #100000; $display("timeout"); $finish; end +endmodule diff --git a/sync_rtl/sha3/sha3_top_shared.v b/sync_rtl/sha3/sha3_top_shared.v index b62ce97..101aff2 100644 --- a/sync_rtl/sha3/sha3_top_shared.v +++ b/sync_rtl/sha3/sha3_top_shared.v @@ -63,6 +63,7 @@ module sha3_top_shared ( // Absorb state: message || suffix || pad10*1 into rate bits // ================================================================ wire [575:0] g_pad; + wire [575:0] g512_pad; wire [1087:0] h_pad; wire [1087:0] j_pad; @@ -70,12 +71,15 @@ module sha3_top_shared ( assign h_pad = {1'b1, {828{1'b0}}, 1'b1, 2'b10, data_i[255:0]}; // J: SHAKE suffix is "1111" — all ones, order irrelevant assign j_pad = {1'b1, {570{1'b0}}, 1'b1, 4'b1111, data_i[511:0]}; + // mode 11 = G over a full 64-byte (512-bit) message (Encaps: G(m||H(ek))). + // SHA3-512 rate=576; suffix 01 + pad10*1: 1 + 60 zeros + 1 + 2'b10 + 512 = 576. + assign g512_pad = {1'b1, {60{1'b0}}, 1'b1, 2'b10, data_i[511:0]}; wire [1599:0] absorb_state; assign absorb_state = (mode == 2'b00) ? {{(1600-576){1'b0}}, g_pad} : (mode == 2'b01) ? {{(1600-1088){1'b0}}, h_pad} : (mode == 2'b10) ? {{(1600-1088){1'b0}}, j_pad} : - 1600'd0; + {{(1600-576){1'b0}}, g512_pad}; // ================================================================ // Multi-block SHA3-256 absorb FSM (active only when mb_en=1) diff --git a/sync_rtl/top/TB/gen_encaps_vectors.py b/sync_rtl/top/TB/gen_encaps_vectors.py new file mode 100644 index 0000000..f596084 --- /dev/null +++ b/sync_rtl/top/TB/gen_encaps_vectors.py @@ -0,0 +1,76 @@ +#!/usr/bin/env python3 +"""gen_encaps_vectors.py - Emit per-byte Encaps KAT vectors for the XSIM TB. + +For ML-KEM-512/768/1024, parse the NIST .rsp and write, per case: + enc_k{K}_c{N}_ek.hex : ek (=pk) bytes, one hex byte per line, byte 0 first + enc_k{K}_c{N}_m.hex : msg bytes, one per line, byte 0 first + enc_k{K}_c{N}_ct.hex : ct bytes, one per line, byte 0 first (golden) + enc_k{K}_c{N}_ss.hex : ss bytes, one per line, byte 0 first (golden) + +Per-byte layout removes all endianness ambiguity: the TB preloads ek_bram with +addr i = line i, builds m_i[8*i +: 8] = m byte i, and compares ct/ss byte-wise. + +Run: python3 gen_encaps_vectors.py [num_cases] +""" + +import os +import re +import sys + +ML_KEM_R = os.environ.get("ML_KEM_R", os.path.expanduser("~/Dev/ml-kem-r")) +OUT_DIR = os.path.join(os.path.dirname(__file__), "vectors") +KATS = {2: "kat_MLKEM_512.rsp", 3: "kat_MLKEM_768.rsp", 4: "kat_MLKEM_1024.rsp"} + + +def parse_kat(path, n): + """Return list of dicts {count, msg, pk, ct, ss} (hex strings) for first n.""" + vecs, cur = [], {} + with open(path) as f: + for line in f: + line = line.strip() + m = re.match(r"^count\s*=\s*(\d+)$", line) + if m: + if cur: + vecs.append(cur) + if len(vecs) >= n: + break + cur = {"count": int(m.group(1))} + continue + # exact-key match so "ct =" doesn't catch "ct_n =" + m = re.match(r"^(msg|pk|ct|ss)\s*=\s*([0-9a-fA-F]+)$", line) + if m and cur: + cur[m.group(1)] = m.group(2).lower() + if cur and len(vecs) < n: + vecs.append(cur) + return vecs + + +def write_bytes(path, hexstr): + """Write hex string as one byte per line (byte 0 = first 2 hex chars).""" + with open(path, "w") as f: + for i in range(0, len(hexstr), 2): + f.write(hexstr[i:i + 2] + "\n") + + +def main(): + ncases = int(sys.argv[1]) if len(sys.argv) > 1 else 3 + os.makedirs(OUT_DIR, exist_ok=True) + for k, fname in KATS.items(): + path = os.path.join(ML_KEM_R, "test_data", fname) + if not os.path.exists(path): + print(f"skip K={k}: {path} not found", file=sys.stderr) + continue + vecs = parse_kat(path, ncases) + for v in vecs: + n = v["count"] + base = os.path.join(OUT_DIR, f"enc_k{k}_c{n}") + write_bytes(f"{base}_ek.hex", v["pk"]) + write_bytes(f"{base}_m.hex", v["msg"]) + write_bytes(f"{base}_ct.hex", v["ct"]) + write_bytes(f"{base}_ss.hex", v["ss"]) + print(f"K={k}: wrote {len(vecs)} cases " + f"(ek={len(vecs[0]['pk'])//2}B ct={len(vecs[0]['ct'])//2}B)") + + +if __name__ == "__main__": + main() diff --git a/sync_rtl/top/TB/tb_mlkem_enc_katK_xsim.v b/sync_rtl/top/TB/tb_mlkem_enc_katK_xsim.v new file mode 100644 index 0000000..11f8c49 --- /dev/null +++ b/sync_rtl/top/TB/tb_mlkem_enc_katK_xsim.v @@ -0,0 +1,97 @@ +// tb_mlkem_enc_katK_xsim.v - ML-KEM Encaps vs NIST KAT, parametric K (KP) + CASE. +// E0 stage: verify H(ek), G(m||H(ek)) -> (ss=K, r). Preloads ek into ek_bram, +// pulses start with op=1, waits for done, checks ss == KAT.ss and dumps H(ek)/r. +// +// xelab -generic_top KP=2|3|4 ; xsim -testplusarg CASE=n +// ek/m/ct/ss vectors: sync_rtl/top/TB/vectors/enc_k{K}_c{N}_{ek,m,ct,ss}.hex +// (per-byte hex, byte 0 first). +`timescale 1ns/1ps +module tb_mlkem_enc_katK_xsim; + parameter KP = 2; + localparam EKB = 384*KP + 32; // ek (=pk) bytes + localparam CTB = (KP==4) ? 1568 : (32*(10*KP+4)); // ct bytes: K2 768,K3 1088,K4 1568 + + reg clk=0, rst_n=0, start_i=0; + reg [2:0] k_i; + reg [255:0] d_i, z_i, m_i; + wire busy_o, done_o; + // ek preload port + reg ek_in_we=0; reg [10:0] ek_in_addr=0; reg [7:0] ek_in_byte=0; + wire [255:0] ss_o; + reg [10:0] dbg_ct_idx_i=0; wire [7:0] dbg_ct_o; + reg [3:0] dbg_slot_i=0; reg [7:0] dbg_idx_i=0; wire [11:0] dbg_coeff_o; + reg dbg_byte_sel_i=0; reg [10:0] dbg_byte_idx_i=0; wire [7:0] dbg_byte_o; + reg [11:0] dbg_dk_idx_i=0; wire [7:0] dbg_dk_o; + wire [255:0] dbg_rho_o, dbg_sigma_o, dbg_r_o, dbg_hek_o; + + mlkem_top dut ( + .clk(clk), .rst_n(rst_n), .k_i(k_i), .op_i(1'b1), + .d_i(d_i), .z_i(z_i), .msg_i(m_i), .start_i(start_i), + .busy_o(busy_o), .done_o(done_o), + .ek_in_we(ek_in_we), .ek_in_addr(ek_in_addr), .ek_in_byte(ek_in_byte), + .ss_o(ss_o), .dbg_ct_idx_i(dbg_ct_idx_i), .dbg_ct_o(dbg_ct_o), + .dbg_slot_i(dbg_slot_i), .dbg_idx_i(dbg_idx_i), .dbg_coeff_o(dbg_coeff_o), + .dbg_byte_sel_i(dbg_byte_sel_i), .dbg_byte_idx_i(dbg_byte_idx_i), .dbg_byte_o(dbg_byte_o), + .dbg_dk_idx_i(dbg_dk_idx_i), .dbg_dk_o(dbg_dk_o), + .dbg_rho_o(dbg_rho_o), .dbg_sigma_o(dbg_sigma_o), + .dbg_r_o(dbg_r_o), .dbg_hek_o(dbg_hek_o) + ); + always #5 clk = ~clk; + + reg [7:0] ek_b [0:EKB-1]; + reg [7:0] m_b [0:31]; + reg [7:0] ss_b [0:31]; + integer c, i, errors, casenum, j; + reg [8*80-1:0] tag, ekfile, mfile, ssfile; + + initial begin + if (!$value$plusargs("CASE=%d", casenum)) casenum = 0; + $sformat(tag, "k%0d", KP); + $sformat(ekfile, "sync_rtl/top/TB/vectors/enc_%0s_c%0d_ek.hex", tag, casenum); + $sformat(mfile, "sync_rtl/top/TB/vectors/enc_%0s_c%0d_m.hex", tag, casenum); + $sformat(ssfile, "sync_rtl/top/TB/vectors/enc_%0s_c%0d_ss.hex", tag, casenum); + $readmemh(ekfile, ek_b); + $readmemh(mfile, m_b); + $readmemh(ssfile, ss_b); + + // build m_i: byte i in m_i[8*i +: 8] + m_i = 256'd0; + for (j = 0; j < 32; j = j + 1) m_i[8*j +: 8] = m_b[j]; + k_i = KP[2:0]; + + $display("=== ML-KEM K=%0d Encaps KAT case %0d (E0) ===", KP, casenum); + $write(" m = "); for (j=0;j<32;j=j+1) $write("%02x", m_b[j]); $write("\n"); + + rst_n=0; repeat(4) @(posedge clk); rst_n=1; @(posedge clk); + + // ---- preload ek into ek_bram (1 byte/cycle) ---- + for (i = 0; i < EKB; i = i + 1) begin + ek_in_we = 1'b1; ek_in_addr = i[10:0]; ek_in_byte = ek_b[i]; + @(posedge clk); + end + ek_in_we = 1'b0; @(posedge clk); + + // ---- run Encaps ---- + start_i=1; @(posedge clk); start_i=0; + c=0; while(!done_o && c<2000000) begin @(posedge clk); c=c+1; end + if(!done_o) begin $display("FAIL K=%0d case %0d: timeout", KP, casenum); $finish; end + $display("=== Encaps E0 done in %0d cyc ===", c); + + $write(" H(ek) = "); for (j=0;j<32;j=j+1) $write("%02x", dbg_hek_o[8*j +: 8]); $write("\n"); + $write(" r = "); for (j=0;j<32;j=j+1) $write("%02x", dbg_r_o[8*j +: 8]); $write("\n"); + $write(" ss = "); for (j=0;j<32;j=j+1) $write("%02x", ss_o[8*j +: 8]); $write("\n"); + + // ---- check ss == KAT.ss ---- + errors = 0; + for (j = 0; j < 32; j = j + 1) + if (ss_o[8*j +: 8] !== ss_b[j]) begin + if (errors < 8) $display(" SS[%0d] got=%02x exp=%02x", j, ss_o[8*j +: 8], ss_b[j]); + errors = errors + 1; + end + + if (errors == 0) $display("K=%0d CASE %0d PASS (E0): ss == KAT.ss", KP, casenum); + else $display("K=%0d CASE %0d FAIL (E0): %0d ss mismatches", KP, casenum, errors); + $finish; + end + initial begin #120000000; $display("FAIL: global timeout"); $finish; end +endmodule diff --git a/sync_rtl/top/TB/tb_mlkem_kg_katK_xsim.v b/sync_rtl/top/TB/tb_mlkem_kg_katK_xsim.v index d9e5699..a0562ea 100644 --- a/sync_rtl/top/TB/tb_mlkem_kg_katK_xsim.v +++ b/sync_rtl/top/TB/tb_mlkem_kg_katK_xsim.v @@ -19,12 +19,16 @@ module tb_mlkem_kg_katK_xsim; // KMAX defaults to 4 (worst-case sizing); KP selects the runtime k value. mlkem_top dut ( - .clk(clk), .rst_n(rst_n), .k_i(k_i), .d_i(d_i), .z_i(z_i), .start_i(start_i), + .clk(clk), .rst_n(rst_n), .k_i(k_i), .op_i(1'b0), + .d_i(d_i), .z_i(z_i), .msg_i(256'd0), .start_i(start_i), .busy_o(busy_o), .done_o(done_o), + .ek_in_we(1'b0), .ek_in_addr(11'd0), .ek_in_byte(8'd0), + .ss_o(), .dbg_ct_idx_i(11'd0), .dbg_ct_o(), .dbg_slot_i(dbg_slot_i), .dbg_idx_i(dbg_idx_i), .dbg_coeff_o(dbg_coeff_o), .dbg_byte_sel_i(dbg_byte_sel_i), .dbg_byte_idx_i(dbg_byte_idx_i), .dbg_byte_o(dbg_byte_o), .dbg_dk_idx_i(dbg_dk_idx_i), .dbg_dk_o(dbg_dk_o), - .dbg_rho_o(dbg_rho_o), .dbg_sigma_o(dbg_sigma_o) + .dbg_rho_o(dbg_rho_o), .dbg_sigma_o(dbg_sigma_o), + .dbg_r_o(), .dbg_hek_o() ); always #5 clk = ~clk; diff --git a/sync_rtl/top/TB/vectors/enc_k2_c0_ct.hex b/sync_rtl/top/TB/vectors/enc_k2_c0_ct.hex new file mode 100644 index 0000000..0059d6c --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k2_c0_ct.hex @@ -0,0 +1,768 @@ +91 +7e +59 +d1 +e1 +82 +a2 +96 +48 +a6 +19 +55 +a1 +54 +b3 +04 +a8 +42 +f4 +58 +eb +a5 +93 +f3 +06 +5f +b7 +d7 +44 +fb +a2 +4f +a3 +a0 +d5 +38 +85 +4e +32 +84 +4d +b2 +48 +d4 +81 +00 +c3 +89 +c4 +c4 +b3 +ca +6c +23 +4f +2f +61 +a6 +79 +32 +ae +ee +80 +8d +bf +e9 +8d +89 +6d +1e +96 +68 +82 +09 +65 +c6 +34 +3b +bb +4a +4d +e6 +4b +7a +99 +fb +53 +b5 +26 +4e +31 +99 +d5 +87 +ff +a5 +e0 +47 +9f +6b +73 +86 +b2 +3c +b9 +c2 +43 +fa +6f +54 +57 +fc +97 +db +c9 +6d +cc +03 +9b +d6 +c4 +e7 +e8 +5a +90 +b5 +c5 +23 +24 +16 +43 +4e +a9 +42 +cc +71 +13 +4b +b9 +a2 +f4 +99 +1e +05 +95 +e3 +48 +7f +ea +ba +c4 +79 +ca +b9 +51 +0d +57 +b8 +62 +50 +ee +7c +96 +a6 +7a +9f +2c +61 +21 +f7 +da +a0 +2c +5c +fa +3b +23 +b0 +c7 +32 +c2 +b1 +56 +94 +e1 +cc +ba +c8 +2b +78 +7c +f2 +11 +8d +08 +42 +5c +bb +a1 +21 +88 +22 +17 +94 +0c +89 +4c +be +47 +aa +e2 +54 +1f +5c +6e +0b +d1 +ba +ab +31 +fd +2b +2e +cb +34 +b9 +e6 +93 +f6 +fc +0f +de +ea +90 +67 +16 +d0 +88 +18 +f5 +1d +f0 +c4 +69 +40 +29 +e8 +c3 +23 +4b +e0 +b6 +24 +71 +b2 +76 +9d +9a +c4 +ce +b9 +47 +60 +23 +80 +f3 +a4 +97 +b2 +a0 +1f +f7 +b8 +74 +6c +1c +7a +e8 +19 +83 +e0 +16 +bd +65 +c7 +cd +17 +62 +c1 +91 +85 +7e +41 +c2 +32 +19 +81 +f6 +c7 +aa +8d +7a +fa +aa +9f +a0 +b5 +57 +ec +1e +c1 +28 +5f +8b +4d +6c +78 +8a +ff +15 +9e +a5 +86 +2e +81 +4d +08 +25 +c8 +83 +4b +7c +a4 +5d +b7 +c8 +ed +a3 +fa +6a +6a +7b +8a +40 +51 +95 +29 +bf +74 +b6 +a0 +f8 +0c +48 +49 +17 +f4 +0c +10 +7d +18 +2b +ce +3e +34 +4f +d3 +6d +1b +37 +7a +98 +2f +6b +f2 +36 +1b +8d +66 +28 +75 +c1 +66 +dc +ca +73 +24 +0b +86 +df +5e +e0 +fa +42 +31 +b3 +56 +f0 +cd +d6 +b3 +17 +0f +f8 +91 +13 +db +0b +1b +9d +d2 +64 +33 +57 +83 +22 +2c +be +7b +e8 +44 +64 +2b +0b +19 +88 +d1 +8b +26 +8d +a6 +f7 +8c +c9 +44 +f4 +3b +82 +71 +43 +c4 +dc +5e +e1 +f0 +d6 +58 +b8 +7b +9c +00 +86 +2f +26 +3d +6f +57 +98 +fc +82 +e8 +be +07 +9a +11 +08 +de +fd +d4 +c7 +86 +3c +31 +47 +e9 +bd +f0 +fb +c8 +4d +eb +a2 +15 +fd +fb +9c +a4 +23 +7a +84 +19 +b2 +6f +de +ff +63 +a7 +f9 +5c +44 +2b +ce +67 +96 +6e +be +6b +5f +9a +f1 +fd +2a +7c +be +d6 +48 +ea +72 +76 +db +74 +2d +ac +3e +47 +0f +6c +c7 +41 +d8 +2e +77 +e9 +c0 +dd +01 +9b +54 +58 +17 +75 +51 +97 +5b +59 +63 +3b +e6 +7b +35 +c0 +d4 +30 +b7 +25 +52 +4d +ea +fd +eb +a6 +d3 +64 +3c +5c +82 +eb +b5 +24 +79 +66 +9c +41 +1b +b5 +6b +39 +7f +8d +37 +b8 +f7 +fa +4c +ed +03 +16 +54 +6c +aa +ee +41 +9c +0e +7f +1d +96 +a0 +ec +61 +4c +6c +9c +8e +03 +e0 +10 +03 +17 +65 +12 +1f +1e +b8 +fd +54 +9f +de +04 +6a +50 +44 +3e +ba +b9 +fe +a2 +e7 +8a +29 +f4 +96 +44 +55 +92 +8d +b1 +f9 +e7 +82 +0e +53 +3c +57 +12 +98 +9b +3a +36 +37 +ea +00 +a1 +de +3e +46 +9a +80 +0c +43 +1d +4d +f2 +43 +c1 +dc +7d +6a +89 +ba +79 +00 +d5 +2b +78 +bc +c1 +03 +47 +4f +9d +2c +21 +28 +02 +5c +31 +93 +c4 +d1 +a0 +9f +50 +90 +5a +d2 +de +7f +e8 +e0 +9f +04 +7e +0e +72 +e6 +da +b0 +ed +f7 +e3 +b0 +8e +d1 +31 +6a +cf +85 +72 +54 +b6 +c1 +fb +f6 +4c +e5 +82 +f2 +99 +0c +ce +cf +95 +05 +fd +7e +85 +17 +99 +8a +af +58 +3b +e1 +aa +64 +1e +9b +54 +db +b9 +1c +a9 +d0 +70 +09 +13 +96 +7f +b0 +34 +92 +01 +b5 +d6 +79 +b3 +2d diff --git a/sync_rtl/top/TB/vectors/enc_k2_c0_ek.hex b/sync_rtl/top/TB/vectors/enc_k2_c0_ek.hex new file mode 100644 index 0000000..8f46a8f --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k2_c0_ek.hex @@ -0,0 +1,800 @@ +80 +b7 +01 +00 +83 +1d +7e +e1 +68 +f4 +73 +92 +48 +31 +19 +f9 +38 +63 +ec +b0 +bc +60 +53 +12 +d3 +57 +28 +87 +6b +00 +f5 +f5 +7a +f4 +c8 +5e +da +97 +28 +1d +57 +43 +90 +bc +72 +56 +19 +36 +68 +dc +98 +62 +53 +54 +ab +52 +b9 +bc +e7 +81 +c5 +77 +1c +c2 +60 +99 +f6 +fb +ac +be +e1 +78 +4d +19 +48 +87 +73 +1f +09 +7c +87 +e0 +82 +cb +ea +c5 +7d +30 +b7 +b9 +a2 +93 +87 +2c +84 +14 +66 +f2 +24 +4c +c6 +5f +f4 +ba +65 +3d +67 +51 +df +a2 +20 +51 +d5 +53 +36 +99 +42 +c3 +1c +29 +f9 +13 +07 +af +57 +32 +92 +d6 +97 +a8 +c3 +16 +12 +e0 +7b +53 +35 +cf +08 +32 +9f +d2 +46 +bf +2a +32 +20 +0a +8c +b0 +c4 +b0 +3b +9d +09 +c5 +ba +1c +39 +19 +53 +9e +92 +29 +c6 +96 +92 +43 +48 +28 +2f +69 +6b +15 +25 +e5 +60 +38 +06 +b4 +db +61 +8b +3d +c8 +63 +0c +b2 +86 +e4 +31 +17 +21 +bc +50 +31 +f2 +57 +aa +92 +5b +f8 +09 +60 +44 +5a +a8 +d8 +e6 +97 +88 +e9 +9d +a9 +5c +1d +10 +cc +3b +e8 +58 +52 +8d +b0 +cf +ea +00 +3c +74 +69 +37 +80 +a6 +5a +36 +e6 +28 +43 +b3 +be +15 +40 +65 +43 +d2 +2d +83 +50 +7c +87 +b2 +78 +67 +92 +c8 +0f +a5 +62 +84 +54 +a3 +10 +39 +4d +da +4c +2a +b5 +94 +93 +85 +02 +57 +d6 +d3 +bc +10 +71 +86 +d9 +06 +27 +07 +f3 +54 +e8 +1a +1a +10 +fc +b7 +63 +d3 +1a +4e +c4 +09 +aa +24 +3e +d2 +e5 +9b +b1 +89 +85 +5e +b1 +65 +62 +66 +bb +37 +50 +07 +85 +ea +08 +cd +88 +c2 +22 +a8 +c5 +3a +87 +77 +ca +b4 +2c +9c +23 +8a +00 +d5 +93 +69 +42 +50 +26 +e9 +9d +2a +e6 +04 +0a +f6 +70 +90 +29 +ca +87 +89 +c8 +97 +b3 +29 +fb +a7 +48 +d6 +9c +8a +71 +48 +c9 +5a +bb +0c +71 +78 +7c +58 +f1 +2f +21 +f2 +21 +3e +38 +92 +42 +aa +7f +bd +32 +0c +12 +ac +42 +c6 +11 +60 +6c +b8 +c1 +d1 +b4 +62 +58 +86 +a1 +45 +a5 +35 +bd +65 +bd +0d +99 +6b +33 +0c +16 +57 +d6 +1a +87 +e9 +04 +17 +00 +32 +25 +75 +98 +20 +a3 +bb +ec +50 +5c +da +f1 +11 +93 +22 +9a +ae +17 +3c +d1 +2b +ad +22 +a7 +a3 +0a +76 +a9 +fa +76 +36 +c3 +d5 +aa +48 +e1 +78 +40 +12 +a0 +12 +f1 +41 +68 +b7 +85 +3d +2a +16 +f9 +0c +a0 +2c +c3 +3b +20 +06 +c0 +8f +26 +c1 +5f +ca +29 +61 +2c +c7 +92 +e1 +cf +02 +e1 +32 +1a +75 +a8 +10 +89 +19 +86 +66 +7d +41 +48 +af +36 +e6 +5e +1a +59 +25 +89 +02 +96 +17 +73 +4c +31 +5c +0e +39 +b7 +51 +8c +86 +60 +cd +c2 +65 +d0 +c8 +13 +ef +20 +a0 +43 +31 +7f +ae +5b +8e +40 +54 +6e +ec +f7 +1d +6c +05 +4f +a6 +6b +49 +40 +13 +09 +be +f3 +0f +d5 +1a +55 +19 +75 +5d +a9 +10 +46 +89 +b2 +6f +08 +39 +15 +4c +84 +7b +ef +23 +65 +94 +3c +02 +49 +48 +3a +ad +9a +73 +67 +c9 +80 +a3 +d1 +ce +46 +d2 +00 +8a +15 +27 +5c +a3 +bc +a4 +83 +4e +6f +9a +30 +36 +c0 +cd +80 +ba +22 +8d +34 +b9 +78 +02 +44 +d5 +c0 +cb +e9 +07 +c6 +fb +43 +82 +4a +9c +07 +46 +47 +16 +39 +cb +86 +18 +8c +60 +c3 +b2 +53 +21 +5c +c9 +16 +92 +bc +d1 +49 +3d +6a +44 +4d +53 +64 +46 +e0 +29 +68 +13 +80 +01 +cc +28 +7e +0e +51 +8f +3a +a2 +5d +8c +3b +95 +b3 +c3 +5c +59 +f4 +81 +9d +48 +49 +76 +02 +9a +f0 +5a +26 +3c +35 +33 +6b +26 +1f +77 +b2 +cd +c2 +93 +89 +f0 +84 +c0 +4c +bb +37 +0c +48 +56 +2b +5b +50 +77 +1c +0f +b8 +16 +90 +8e +19 +8d +d6 +d5 +3f +76 +e4 +8b +f0 +42 +c2 +b1 +f8 +2a +3a +40 +b8 +da +f5 +1f +46 +d7 +6f +a4 +bc +c9 +d3 +c8 +94 +ff +85 +0c +0f +aa +32 +e0 +ac +33 +90 +1a +4c +79 +13 +9f +5f +20 +41 +7e +c1 +a1 +90 +60 +70 +44 +f1 +8b +b8 +24 +cf +35 +0c +78 +ab +3d +df +3c +2c +86 +ca +55 +43 +f7 +15 diff --git a/sync_rtl/top/TB/vectors/enc_k2_c0_m.hex b/sync_rtl/top/TB/vectors/enc_k2_c0_m.hex new file mode 100644 index 0000000..9df0430 --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k2_c0_m.hex @@ -0,0 +1,32 @@ +20 +a7 +b7 +e1 +0f +70 +49 +6c +c3 +82 +20 +b9 +44 +de +f6 +99 +bf +14 +d1 +4e +55 +cf +4c +90 +a1 +2c +1b +33 +fc +80 +ff +ff diff --git a/sync_rtl/top/TB/vectors/enc_k2_c0_ss.hex b/sync_rtl/top/TB/vectors/enc_k2_c0_ss.hex new file mode 100644 index 0000000..12be592 --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k2_c0_ss.hex @@ -0,0 +1,32 @@ +2b +5c +52 +ee +72 +94 +63 +31 +98 +3b +a0 +50 +be +0f +43 +50 +55 +c0 +54 +79 +01 +e0 +35 +59 +b3 +56 +51 +78 +89 +ea +27 +c5 diff --git a/sync_rtl/top/TB/vectors/enc_k2_c1_ct.hex b/sync_rtl/top/TB/vectors/enc_k2_c1_ct.hex new file mode 100644 index 0000000..34e28af --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k2_c1_ct.hex @@ -0,0 +1,768 @@ +1c +43 +de +77 +0e +9c +d5 +98 +46 +b6 +f8 +1f +9c +61 +cc +d8 +37 +97 +8e +26 +d3 +2c +33 +0d +50 +9d +8e +29 +d9 +e7 +fb +1a +4f +ba +52 +10 +1e +48 +88 +0d +80 +61 +6e +53 +3a +ac +59 +1f +eb +d3 +93 +cb +b1 +28 +2d +e1 +53 +56 +0d +43 +73 +cb +88 +2c +66 +d3 +07 +32 +95 +97 +91 +0e +d3 +ff +10 +58 +40 +96 +4a +64 +0b +c7 +62 +e6 +32 +9b +9f +3b +a4 +1a +9e +c3 +1e +04 +c8 +c9 +ef +ec +96 +35 +e0 +a9 +b4 +56 +f6 +19 +f1 +06 +58 +be +d3 +6a +13 +3c +ed +0c +23 +0b +3c +fd +d8 +07 +37 +75 +d7 +59 +49 +2a +7e +3b +e0 +ce +27 +72 +5e +b7 +c2 +47 +4c +56 +8d +03 +92 +43 +fe +81 +0b +31 +db +2f +ce +8e +e4 +03 +73 +06 +a5 +a9 +bb +ee +1b +a7 +45 +c2 +b4 +fc +11 +11 +65 +9f +5d +e9 +19 +94 +1c +89 +c8 +cc +66 +1e +ca +aa +e3 +e9 +61 +0e +ac +66 +cd +41 +28 +e3 +d4 +bb +5a +bb +38 +83 +7d +99 +6d +b7 +e5 +c3 +1f +d0 +92 +22 +f2 +2f +85 +4c +25 +fa +d8 +ae +12 +de +d3 +e3 +37 +c3 +24 +14 +68 +ee +eb +ec +da +5d +d6 +82 +e6 +e5 +7f +51 +ad +35 +28 +58 +d0 +40 +48 +a4 +70 +3a +dc +13 +52 +63 +c4 +7b +3a +5d +6e +6c +59 +5b +a1 +ea +06 +02 +bd +34 +35 +3e +19 +1b +fd +f3 +6d +56 +b2 +05 +39 +74 +8a +d6 +1c +66 +c2 +50 +e0 +7f +2e +3c +6d +60 +89 +44 +72 +fe +7e +67 +7c +35 +3f +70 +a1 +75 +f0 +4c +60 +f6 +9d +d9 +21 +e9 +b9 +24 +9b +d6 +29 +14 +40 +58 +29 +ae +fa +05 +2c +92 +9c +f2 +3a +ba +06 +7a +7e +b7 +fe +d0 +c1 +5f +40 +1e +f5 +08 +4a +97 +a6 +1c +ed +6f +bf +87 +91 +48 +72 +31 +c0 +5f +c2 +3a +38 +7c +77 +c0 +31 +65 +38 +ad +09 +be +82 +b1 +0e +e8 +f8 +d6 +a9 +d9 +79 +f6 +3a +2e +c2 +36 +4f +08 +67 +30 +6e +9b +f6 +e3 +c0 +38 +84 +96 +be +c8 +ad +16 +15 +15 +b0 +16 +e9 +1b +5a +b4 +e4 +ee +9c +48 +f0 +de +49 +50 +aa +49 +6b +3b +ac +3a +bf +a8 +6b +9c +be +27 +a9 +2a +c8 +a8 +17 +65 +0b +2c +4c +53 +6e +da +1d +2a +b5 +81 +95 +cd +42 +3e +0f +4a +fb +5b +ae +71 +01 +43 +88 +21 +b8 +9a +99 +20 +6b +a5 +fd +d9 +d0 +6c +39 +df +d6 +f0 +6f +ba +8c +71 +94 +21 +3d +0e +86 +f8 +0e +4e +5a +24 +97 +7e +fa +ac +f7 +eb +c0 +2b +02 +8c +fc +96 +73 +de +6c +8a +0c +c6 +ae +1e +57 +73 +50 +93 +5c +91 +2c +e1 +d5 +6c +67 +08 +75 +c4 +d6 +be +d8 +75 +0a +9e +fb +b4 +50 +79 +1c +3d +56 +0c +e5 +10 +21 +32 +74 +f7 +d4 +b3 +b8 +8a +d9 +96 +70 +34 +75 +10 +68 +58 +0a +9d +ed +f0 +ab +3c +ad +bb +2f +3b +bf +37 +19 +ce +73 +e9 +38 +66 +6f +2a +7f +e8 +2f +10 +f0 +8d +32 +5d +20 +3e +c0 +b0 +58 +5b +58 +22 +16 +b7 +fc +05 +a7 +29 +14 +81 +d1 +22 +27 +91 +38 +5b +64 +16 +e8 +07 +e6 +97 +02 +6b +e2 +18 +c5 +19 +c1 +b2 +15 +84 +2a +fa +0e +58 +f9 +88 +f8 +8f +3d +90 +cf +6c +f4 +21 +87 +87 +6b +db +d7 +be +0b +2c +26 +1b +0d +d3 +6d +16 +dd +e6 +ed +83 +54 +bd +74 +32 +b6 +6d +10 +bc +ac +cb +69 +c8 +94 +47 +78 +90 +2f +c3 +6d +c7 +0f +4e +63 +85 +b9 +d5 +9a +ec +c6 +44 +5c +e4 +ad +65 +bc +c9 +58 +e8 +86 +a9 +2a +1d +4d +17 +5c +f3 +54 +b4 +fe +e8 +89 +0e +a4 +ce +21 +f5 +e8 +31 +f6 +90 +5a +e5 +28 +db +39 +91 +83 +4a +24 +52 +f5 +91 +c3 +ea +88 +d7 +61 +2a +59 +9a +30 +14 +fc +8e +10 +b3 +0d +48 +39 +8b +b8 +99 +1c +0f +f1 +2a +73 +56 +64 +50 +32 +53 +0d +81 +8d +8a +a2 +50 +0b +25 +21 +a7 +3e +18 +59 +1e +c6 +ef +42 +2d +ae +ed +66 +d2 diff --git a/sync_rtl/top/TB/vectors/enc_k2_c1_ek.hex b/sync_rtl/top/TB/vectors/enc_k2_c1_ek.hex new file mode 100644 index 0000000..d03174a --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k2_c1_ek.hex @@ -0,0 +1,800 @@ +de +e7 +89 +22 +bb +8d +a2 +f4 +76 +4d +ca +45 +f8 +ea +4c +1f +53 +0a +1c +57 +1d +3a +d1 +92 +4b +58 +96 +98 +cb +27 +19 +e0 +69 +fd +94 +3c +14 +52 +c5 +d1 +68 +b2 +b3 +57 +b2 +65 +83 +1c +01 +9c +b3 +55 +7a +0b +f7 +18 +7e +4d +10 +8b +f7 +70 +c7 +4d +b4 +03 +89 +cc +71 +8f +3b +c1 +1c +e3 +ab +a8 +43 +66 +ab +24 +51 +94 +b9 +41 +f8 +1b +7a +e7 +02 +41 +9b +b9 +8d +73 +ba +00 +37 +83 +30 +6c +7b +3a +36 +77 +a5 +43 +a0 +10 +0c +31 +75 +e8 +c0 +20 +ca +26 +65 +12 +90 +9c +35 +50 +c4 +f6 +5c +0e +a3 +e2 +4a +47 +23 +7d +9a +4a +0b +5a +e5 +88 +f9 +83 +31 +1f +aa +36 +e8 +91 +af +8e +a1 +b3 +08 +c8 +31 +79 +24 +61 +54 +c7 +65 +ac +5b +5a +15 +45 +6e +19 +33 +08 +00 +28 +37 +d1 +43 +54 +e0 +66 +a3 +4a +44 +09 +af +bb +15 +08 +5a +ad +c9 +e2 +2b +8d +b5 +58 +3d +45 +b0 +a4 +ac +72 +47 +4a +2a +b9 +4b +79 +2e +53 +1a +b0 +cb +88 +2c +13 +a4 +13 +9a +71 +ff +a3 +78 +3b +53 +71 +78 +f3 +4e +11 +1b +6c +3f +12 +0a +76 +d4 +cd +ce +c4 +61 +84 +30 +35 +ac +d2 +85 +ed +62 +7d +8b +d2 +b0 +b9 +97 +cc +ce +b4 +ad +ae +36 +15 +a7 +3b +ba +0a +7c +7b +b9 +b1 +33 +58 +bb +51 +ff +8a +57 +4d +86 +b5 +00 +02 +72 +cd +27 +0a +0a +1b +24 +bb +91 +75 +06 +70 +1c +2f +44 +1f +c5 +b7 +9d +d4 +51 +cb +3c +ac +c7 +40 +12 +7b +d4 +11 +60 +4b +da +c4 +64 +da +1a +2f +83 +91 +8c +5b +2f +b6 +e5 +28 +4c +97 +2b +93 +35 +7a +83 +78 +28 +b1 +13 +26 +32 +bb +6f +7b +fb +be +c3 +d9 +47 +bd +40 +3d +86 +99 +00 +66 +db +65 +53 +72 +24 +34 +c7 +c0 +e3 +99 +2f +00 +9b +b2 +38 +f7 +a6 +b3 +e5 +25 +1e +da +94 +3a +77 +03 +fb +a2 +89 +aa +20 +53 +a8 +57 +79 +6c +2c +b9 +45 +49 +4c +0b +a7 +91 +a9 +e3 +cb +fa +80 +0d +89 +88 +c8 +12 +19 +97 +d9 +75 +b3 +d0 +35 +95 +ad +d6 +4a +3e +ac +b8 +ba +36 +a4 +d8 +b3 +bf +dc +11 +b7 +d5 +62 +39 +08 +7c +90 +f3 +52 +c0 +ee +c4 +08 +57 +f0 +89 +cc +fa +7c +9a +68 +3a +1d +e3 +cd +8f +f2 +8b +22 +15 +3d +de +23 +1e +5f +74 +80 +5d +68 +3e +b8 +c3 +46 +ba +16 +c7 +fe +68 +06 +4b +20 +59 +c8 +73 +8e +5a +c1 +9b +64 +d4 +34 +3f +5c +9d +8b +f9 +78 +03 +02 +b0 +67 +6c +20 +2a +21 +29 +2c +c1 +5f +c1 +58 +9a +69 +83 +8a +d1 +ea +3d +0c +37 +06 +f8 +e1 +b0 +11 +f6 +12 +99 +a5 +6e +c2 +51 +50 +51 +fb +94 +73 +4b +30 +8a +f3 +c3 +5e +45 +ab +fa +dc +12 +8f +e6 +98 +38 +aa +37 +08 +05 +14 +d6 +c3 +74 +8c +91 +6b +d6 +55 +08 +0a +10 +35 +ff +1a +76 +3e +45 +0b +56 +86 +4c +c2 +32 +af +ee +53 +91 +9f +f8 +89 +a8 +20 +a7 +a6 +55 +86 +31 +b8 +8f +73 +18 +c0 +33 +80 +0f +30 +7c +19 +b2 +d0 +a8 +b6 +58 +82 +d8 +77 +09 +79 +a5 +70 +1a +c6 +02 +f7 +1b +72 +a2 +6b +82 +52 +5a +a6 +7d +77 +c7 +5e +b6 +87 +1d +c0 +19 +b4 +65 +58 +3a +25 +0d +b4 +70 +49 +06 +18 +7e +8d +fb +3b +70 +72 +69 +88 +f9 +c5 +2c +12 +26 +6c +63 +91 +d4 +92 +6c +b7 +99 +78 +00 +7c +a4 +6e +f6 +08 +82 +80 +6f +fd +59 +c6 +4e +d7 +03 +33 +98 +9a +ac +51 +86 +99 +04 +40 +b8 +9c +3c +d1 +36 +3b +e4 +04 +70 +6d +bb +63 +a5 +a0 +07 +a0 +fa +c2 +61 +a0 +28 +8f +91 +6f +af +0a +a4 +e9 +44 +55 +2f +10 +80 +1a +3a +5d +de +26 +33 +98 +01 +5c +c3 +52 +27 +bd +17 +11 +35 +62 +51 +aa +93 +5a +89 +bc +2e +3d +2c +08 +e1 +c9 +a8 +c1 +e4 +41 +6f +30 +3b +b7 +3b +31 +48 +58 +ca +4c +21 +0c +95 +92 +83 +fc +86 +5b +02 +77 +68 +c5 +d6 +04 +7f +d3 +6d +bc +bc +4e +df +3e +a5 +cc +6a +50 +cb +05 +2b +cd +31 diff --git a/sync_rtl/top/TB/vectors/enc_k2_c1_m.hex b/sync_rtl/top/TB/vectors/enc_k2_c1_m.hex new file mode 100644 index 0000000..ceab0d1 --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k2_c1_m.hex @@ -0,0 +1,32 @@ +01 +21 +cb +32 +ac +d1 +87 +11 +35 +cb +34 +e2 +9c +1a +0e +26 +cc +c0 +01 +b9 +39 +ea +fa +ac +c2 +8f +13 +f1 +93 +8d +bf +91 diff --git a/sync_rtl/top/TB/vectors/enc_k2_c1_ss.hex b/sync_rtl/top/TB/vectors/enc_k2_c1_ss.hex new file mode 100644 index 0000000..69967ce --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k2_c1_ss.hex @@ -0,0 +1,32 @@ +63 +df +b8 +42 +bf +76 +7f +89 +71 +78 +39 +64 +2a +9b +92 +fc +cf +82 +bf +46 +a9 +f3 +9b +a1 +a3 +29 +29 +95 +f3 +f9 +34 +dc diff --git a/sync_rtl/top/TB/vectors/enc_k2_c2_ct.hex b/sync_rtl/top/TB/vectors/enc_k2_c2_ct.hex new file mode 100644 index 0000000..64d5ff5 --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k2_c2_ct.hex @@ -0,0 +1,768 @@ +55 +33 +60 +42 +56 +12 +0d +54 +80 +65 +76 +94 +13 +b8 +2f +b5 +ab +d0 +01 +4e +7e +9f +10 +49 +2f +f1 +5f +d4 +5d +c7 +82 +b2 +dc +4c +55 +32 +5f +cc +57 +68 +5f +13 +4f +f7 +e1 +23 +cf +02 +8f +a7 +b4 +5d +cc +71 +7c +f2 +d7 +b2 +74 +d8 +f2 +a8 +b7 +d1 +ac +d6 +63 +53 +a5 +63 +35 +f4 +82 +ec +3d +04 +50 +4d +2e +05 +2d +ed +28 +11 +2a +c7 +41 +0f +a8 +e4 +7f +0d +7c +5e +b1 +d6 +a2 +9e +94 +87 +81 +db +38 +63 +76 +7b +7e +a8 +7a +59 +1e +0d +7e +a4 +13 +0c +1c +9f +a5 +e8 +14 +2d +ab +f7 +ee +8c +02 +19 +1c +df +1b +8c +80 +4d +38 +e2 +b6 +e4 +44 +5c +d8 +fd +34 +1a +63 +ec +00 +01 +b9 +d8 +82 +9d +4c +8f +5e +53 +dc +6e +87 +86 +df +67 +f4 +ac +0b +b9 +d1 +88 +f0 +64 +da +50 +c1 +fa +b3 +96 +55 +10 +a0 +48 +eb +6b +4a +a7 +8a +85 +1c +47 +b1 +06 +42 +9b +30 +f8 +a9 +a3 +b5 +46 +48 +c8 +b4 +3d +cf +76 +19 +0b +bc +8c +66 +a6 +a3 +6d +f7 +b9 +5a +e3 +d9 +78 +4a +dd +87 +58 +23 +5b +29 +1c +0a +1d +b1 +ba +80 +54 +12 +e8 +b9 +2c +14 +16 +fb +e6 +4c +42 +db +12 +38 +30 +ed +1b +d9 +7e +69 +e5 +22 +e4 +82 +e8 +33 +25 +e9 +e8 +8a +d9 +40 +3f +7e +86 +d8 +8d +53 +5e +39 +1a +e4 +cd +33 +0e +e0 +58 +92 +a1 +14 +e4 +43 +9b +59 +b3 +06 +02 +d9 +d9 +87 +04 +aa +55 +30 +5f +a1 +f8 +5b +23 +d7 +c3 +b0 +f3 +06 +54 +c8 +b7 +cb +4c +e0 +29 +85 +e6 +cb +e9 +a8 +7c +f0 +e9 +99 +a5 +65 +41 +30 +99 +fd +fa +f5 +77 +84 +5a +40 +7c +d6 +c2 +ea +5e +de +db +04 +ba +43 +4d +80 +e1 +13 +24 +67 +08 +88 +61 +d6 +51 +99 +81 +8e +d4 +ba +3a +09 +5e +06 +63 +39 +f3 +53 +39 +48 +77 +e3 +bf +79 +26 +28 +8c +dd +37 +ac +31 +cd +b4 +99 +b5 +eb +8c +a0 +68 +59 +be +b5 +c6 +60 +73 +0f +a7 +93 +cf +11 +34 +7f +bf +ed +73 +a8 +2e +1d +2b +22 +9a +09 +59 +32 +79 +ad +04 +45 +bc +11 +b4 +f1 +64 +d0 +15 +ec +51 +41 +da +dc +10 +d3 +22 +c9 +28 +3e +5a +64 +11 +57 +df +e5 +3b +da +4c +3c +a7 +36 +46 +99 +df +0b +f7 +94 +d4 +68 +3f +b1 +fd +ec +e8 +e3 +18 +da +3f +f0 +28 +b6 +3a +a7 +d9 +f5 +0b +58 +78 +53 +78 +be +79 +fc +7e +8a +2b +12 +73 +a8 +d7 +87 +74 +85 +33 +57 +ae +c5 +23 +ef +7d +92 +76 +44 +b0 +7d +3d +0f +28 +76 +bf +0b +55 +d4 +59 +2e +33 +a6 +58 +c4 +61 +c9 +6c +8b +81 +cc +c2 +b1 +d4 +8c +39 +29 +ad +99 +4d +01 +5a +e6 +dc +4c +98 +a7 +54 +16 +76 +7c +7b +a1 +60 +bf +74 +91 +b4 +a0 +aa +db +5e +43 +a3 +97 +f6 +3c +e1 +cf +7f +91 +64 +79 +f7 +63 +35 +0c +54 +dc +29 +6a +22 +31 +4b +4f +48 +4c +8c +22 +e3 +64 +fc +e5 +a6 +ca +6e +15 +0b +81 +02 +1b +44 +b5 +f4 +9f +91 +49 +27 +89 +64 +37 +21 +3d +0a +bc +ae +a2 +80 +62 +db +28 +54 +13 +8d +0e +0b +ec +84 +1e +6b +e8 +e0 +39 +b8 +a0 +d7 +62 +e6 +0e +c8 +b6 +41 +6d +fe +7c +7c +8e +d9 +b7 +41 +59 +08 +b8 +dd +9a +69 +89 +50 +69 +7f +a5 +fa +a5 +b1 +92 +6a +54 +de +98 +6a +00 +93 +da +97 +6c +89 +ed +bf +83 +71 +1a +4b +aa +bc +2c +21 +c7 +4f +2b +7f +e9 +6a +aa +9e +b0 +82 +dd +66 +e3 +40 +8c +d3 +00 +02 +cd +bd +57 +3d +27 +f6 +6a +80 +6e +b0 +b3 +14 +4c +42 +7e +07 +ef +7a +39 +67 +f0 +4f +0a +43 +36 +f5 +5e +8e +12 +c6 +3a +67 +80 +25 +18 +44 +80 +22 +73 +ac +90 +1d +4f +6a +55 +65 +02 +db +49 +6d +4b +b4 +61 +09 +be +1f +90 +b7 +ef +a7 +6d +34 +03 +a3 +bb +ec +6a +32 +e8 +e5 +cf +4e +db +a3 diff --git a/sync_rtl/top/TB/vectors/enc_k2_c2_ek.hex b/sync_rtl/top/TB/vectors/enc_k2_c2_ek.hex new file mode 100644 index 0000000..749a246 --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k2_c2_ek.hex @@ -0,0 +1,800 @@ +f5 +e2 +4e +4e +14 +b6 +65 +36 +65 +ca +02 +89 +a3 +72 +8c +bb +a2 +28 +fe +11 +67 +26 +c1 +25 +1e +99 +92 +a9 +f0 +06 +09 +34 +64 +5b +26 +23 +24 +ac +b5 +c6 +b5 +7d +26 +e3 +92 +26 +e2 +2c +f0 +c3 +3f +7f +f5 +a4 +d9 +79 +23 +4f +2b +79 +49 +f5 +66 +db +66 +c3 +5b +27 +3d +c9 +77 +8a +64 +f2 +bc +fe +91 +4c +0d +81 +52 +7d +41 +8a +11 +25 +79 +e5 +d0 +8b +1c +42 +95 +87 +32 +34 +25 +d7 +a7 +83 +51 +45 +34 +57 +cd +86 +83 +45 +af +a1 +62 +18 +33 +20 +02 +c9 +5d +84 +06 +c1 +49 +38 +c0 +39 +69 +3d +6c +12 +16 +af +b9 +98 +30 +99 +03 +11 +09 +be +01 +93 +a1 +b6 +e1 +24 +36 +10 +3f +dd +08 +4a +7b +84 +38 +0a +cc +35 +81 +78 +31 +c0 +55 +8d +4f +80 +82 +ba +58 +b9 +17 +48 +41 +a8 +40 +c2 +96 +48 +53 +65 +6c +23 +27 +f7 +95 +21 +32 +c6 +dd +12 +9d +bf +50 +23 +ce +1b +3a +92 +f7 +73 +6f +c1 +95 +28 +b7 +1d +21 +a2 +7c +3d +7b +74 +51 +d5 +a8 +fc +02 +a7 +86 +f7 +55 +45 +d2 +45 +15 +49 +bc +95 +db +bb +87 +72 +4f +72 +d2 +ad +f1 +d6 +19 +b1 +b9 +43 +86 +c1 +4c +37 +12 +8c +2c +1c +60 +f4 +c0 +2b +28 +cc +53 +6c +50 +8a +37 +0b +a9 +a2 +f4 +61 +8c +f1 +c6 +4f +35 +56 +84 +f2 +5a +6e +e9 +9d +3f +89 +ce +01 +36 +b4 +7d +7b +26 +f0 +e6 +a6 +0c +c9 +4f +c4 +57 +38 +34 +17 +2a +3e +fb +84 +c9 +fb +66 +40 +1b +76 +c9 +00 +07 +e8 +f7 +b1 +9b +51 +32 +92 +13 +8b +79 +14 +7a +36 +46 +80 +db +cb +21 +17 +62 +35 +8c +d3 +2a +3c +44 +72 +0d +f6 +ba +22 +dc +8d +30 +19 +c0 +c4 +80 +3f +2a +56 +7d +9e +bc +6a +5b +c0 +12 +d1 +f6 +34 +71 +98 +91 +da +13 +24 +ea +f2 +28 +37 +92 +64 +b3 +da +95 +5d +aa +3a +2f +b8 +83 +68 +94 +c8 +e8 +00 +06 +78 +21 +41 +25 +7c +25 +4d +90 +5a +23 +8a +6b +41 +ac +3c +76 +cb +87 +ea +34 +27 +28 +ea +6e +48 +bc +66 +81 +68 +42 +ff +24 +55 +e8 +5c +67 +f8 +c4 +88 +74 +f4 +69 +bd +a5 +6f +dd +83 +a5 +7d +d4 +07 +67 +98 +a3 +d8 +54 +ce +40 +bc +c6 +b3 +49 +a1 +98 +fc +6f +a4 +71 +3c +94 +79 +49 +46 +e2 +49 +20 +17 +79 +70 +9a +b7 +51 +04 +59 +e2 +fa +32 +5b +b3 +c8 +16 +b2 +af +3d +9c +af +36 +fa +5c +21 +73 +79 +cf +eb +79 +7a +90 +80 +fe +23 +37 +4f +a0 +2f +04 +7c +77 +5c +b4 +60 +2b +78 +59 +f7 +d7 +9c +0a +f7 +3f +11 +b4 +28 +47 +91 +5b +3d +32 +46 +e1 +04 +40 +31 +f6 +1b +aa +d9 +87 +f3 +c6 +cc +93 +28 +0b +23 +c8 +39 +0e +48 +a2 +10 +80 +92 +c7 +b4 +19 +ba +e1 +3a +e5 +00 +67 +81 +3a +99 +b5 +da +80 +e5 +80 +05 +c6 +96 +5f +fe +45 +3a +e5 +73 +50 +1b +24 +21 +24 +51 +52 +57 +c4 +06 +27 +8c +2f +7f +39 +45 +74 +89 +44 +45 +c6 +12 +e4 +11 +4f +0a +60 +40 +4c +da +97 +6f +a6 +3b +9a +28 +57 +81 +e0 +ab +3d +77 +ad +2b +00 +2f +1c +88 +5e +f7 +46 +61 +02 +43 +b7 +51 +ab +4b +ce +a3 +88 +02 +7c +41 +06 +3b +01 +67 +91 +36 +08 +73 +64 +cf +db +13 +92 +fa +ab +b9 +e2 +0a +51 +77 +b9 +4b +f5 +a3 +93 +b7 +bd +d8 +3a +7d +82 +34 +31 +73 +b8 +78 +1b +44 +33 +44 +84 +35 +4b +71 +79 +b2 +25 +aa +be +e9 +9f +23 +07 +95 +d1 +fb +24 +8a +a5 +61 +5e +85 +c0 +ad +b4 +9b +7f +51 +04 +71 +2b +86 +d4 +03 +4d +45 +79 +75 +d4 +1b +7c +88 +c0 +66 +4e +09 +1e +47 +e9 +79 +83 +03 +c3 +90 +15 +83 +c1 +36 +06 +ee +d7 +88 +3a +53 +7a +c0 +e1 +47 +06 +8b +8c +4a +c0 +56 +fb +a1 +08 +ff +10 +83 +a9 +18 +6e +c0 +5b +33 +86 +27 +a8 +dc +e4 +3e +5c +41 +41 +0c +d6 +bb +35 +a3 +30 +d2 +0b +77 +bb +3a +90 +34 +b4 +e3 +c4 +43 +bb +eb +41 +b6 +69 +1f +11 +ab +11 diff --git a/sync_rtl/top/TB/vectors/enc_k2_c2_m.hex b/sync_rtl/top/TB/vectors/enc_k2_c2_m.hex new file mode 100644 index 0000000..168e054 --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k2_c2_m.hex @@ -0,0 +1,32 @@ +34 +b9 +61 +af +5d +62 +54 +af +72 +c0 +d5 +0e +70 +dd +9b +49 +91 +15 +0c +cc +09 +19 +2a +a4 +6f +19 +53 +d5 +c2 +9a +33 +ec diff --git a/sync_rtl/top/TB/vectors/enc_k2_c2_ss.hex b/sync_rtl/top/TB/vectors/enc_k2_c2_ss.hex new file mode 100644 index 0000000..524f510 --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k2_c2_ss.hex @@ -0,0 +1,32 @@ +13 +5b +97 +48 +c6 +aa +6d +1a +e9 +b5 +42 +0c +72 +67 +9f +f6 +5c +ae +62 +2b +8a +7d +f5 +4c +d7 +65 +01 +31 +b5 +fd +77 +f8 diff --git a/sync_rtl/top/TB/vectors/enc_k3_c0_ct.hex b/sync_rtl/top/TB/vectors/enc_k3_c0_ct.hex new file mode 100644 index 0000000..23b1d06 --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k3_c0_ct.hex @@ -0,0 +1,1088 @@ +16 +a6 +1f +f8 +47 +87 +fd +4a +5f +19 +ca +59 +b3 +65 +7d +b3 +a1 +06 +a7 +32 +9e +2d +62 +74 +7a +2e +f8 +51 +49 +16 +31 +09 +be +ff +f6 +bc +b3 +3d +f6 +62 +30 +b8 +f6 +72 +5c +e7 +19 +f5 +8f +71 +19 +6e +89 +5b +ef +c9 +75 +4d +9f +04 +24 +94 +64 +8c +88 +a6 +ed +4c +4c +f1 +3f +2f +af +9f +65 +1d +e7 +9d +ae +07 +77 +33 +cb +23 +5f +9d +ce +44 +89 +77 +fd +42 +d5 +48 +6b +7d +fd +f6 +d7 +bd +91 +72 +b1 +42 +47 +65 +5d +34 +f1 +05 +24 +d4 +69 +47 +8d +9a +96 +39 +f3 +4d +2a +cd +e6 +e3 +c0 +48 +d5 +2b +30 +8b +66 +24 +5f +e9 +a2 +8c +de +79 +83 +b9 +d1 +4c +03 +b3 +77 +15 +fe +39 +70 +cd +35 +73 +47 +71 +ad +d7 +aa +9b +58 +cf +b0 +ad +f8 +c6 +13 +de +af +b2 +b3 +1f +6e +5c +83 +64 +d4 +33 +4e +93 +af +8e +49 +43 +fa +94 +7c +c6 +76 +67 +44 +7c +ff +d0 +36 +23 +5a +fa +ea +7f +60 +3c +b2 +ea +27 +7b +97 +da +df +82 +ea +74 +6f +6b +27 +39 +6d +d0 +8c +85 +cf +f9 +30 +4a +2e +5c +e0 +57 +1f +de +2e +92 +67 +16 +bc +9f +8e +4d +47 +4b +4e +8f +d3 +4b +0d +c2 +83 +76 +20 +4e +a3 +06 +d3 +0e +9a +6d +d8 +82 +50 +b7 +98 +23 +e7 +73 +19 +f2 +ef +3a +77 +70 +4f +40 +9d +de +8b +eb +6d +b1 +be +4a +9f +25 +ae +2e +15 +93 +9d +ed +f1 +b1 +1a +5a +a5 +1f +cf +f0 +40 +68 +b4 +6d +42 +fb +ba +fd +24 +98 +26 +4c +ca +4f +b7 +8b +0f +2a +b1 +62 +c7 +ef +56 +98 +75 +a1 +31 +48 +b9 +a4 +b0 +b9 +da +17 +87 +ca +0a +70 +33 +e3 +ec +a1 +34 +71 +db +cb +be +15 +e3 +4f +2b +50 +65 +b9 +95 +fe +22 +1c +2b +7a +c1 +50 +33 +4d +14 +e6 +8e +dc +5e +04 +96 +63 +de +36 +2f +ae +8d +35 +e2 +4c +20 +2c +5f +ad +21 +53 +cd +04 +4e +a9 +62 +a3 +88 +f0 +30 +cd +c5 +de +c1 +c3 +42 +31 +83 +b1 +73 +c3 +2b +22 +f5 +80 +0a +e4 +5e +8e +89 +c8 +ee +46 +17 +ce +24 +e6 +0f +27 +8b +fd +1e +a0 +f8 +fa +92 +48 +6b +6f +84 +91 +27 +da +99 +be +7b +e4 +c6 +61 +e2 +ba +26 +66 +9d +6a +cf +61 +9a +33 +05 +68 +09 +68 +3e +24 +a2 +f2 +9e +33 +be +7f +5f +9a +c6 +68 +69 +7e +59 +48 +8e +9b +86 +85 +95 +6c +d8 +7b +7c +47 +10 +9d +60 +32 +02 +c2 +01 +47 +2e +c8 +29 +ea +64 +92 +2e +4d +0e +ad +d4 +a4 +b5 +a8 +fb +06 +e0 +f4 +bf +25 +a5 +9c +ed +54 +55 +73 +88 +dc +d9 +1b +38 +7c +b6 +14 +85 +97 +ed +f8 +4a +22 +59 +58 +01 +85 +1c +a4 +b9 +e9 +e0 +96 +fd +fc +96 +f2 +44 +4a +c9 +f1 +24 +7a +5e +64 +07 +87 +fc +a2 +3e +3e +b2 +1e +c1 +05 +9c +42 +a6 +58 +03 +44 +1d +f0 +12 +79 +01 +3c +44 +8d +fc +3e +ed +fc +33 +55 +ee +e1 +f5 +10 +08 +6a +11 +5f +85 +4c +36 +db +79 +7a +85 +ed +e1 +9a +47 +3a +33 +e7 +9a +80 +f6 +f7 +f6 +46 +7e +1b +0d +86 +6f +e0 +e5 +7a +8a +bd +37 +99 +34 +a6 +a6 +a4 +92 +f5 +f3 +25 +94 +d4 +3d +e2 +ec +2e +ea +81 +48 +79 +81 +bb +63 +94 +bf +a6 +df +54 +98 +d7 +4c +6d +b2 +20 +2a +63 +48 +a3 +25 +fb +c9 +06 +b8 +e8 +20 +bb +00 +65 +9a +2e +e1 +27 +40 +b1 +4b +2e +36 +f4 +c5 +da +b4 +11 +c0 +cd +09 +6c +5e +63 +ba +4d +48 +aa +9e +92 +b3 +1f +44 +dc +97 +c0 +fe +f6 +61 +bc +f4 +db +89 +5f +17 +46 +13 +d9 +d5 +ed +9e +83 +66 +57 +74 +5e +c9 +de +ec +7a +f2 +73 +ce +c8 +7e +f0 +ea +f8 +05 +da +1b +c8 +40 +16 +08 +81 +0b +8a +86 +f9 +52 +c6 +32 +6d +09 +fc +8d +1d +7f +d8 +3b +4e +86 +2e +05 +05 +8e +87 +7c +05 +6c +c5 +46 +5e +c3 +19 +2b +03 +a4 +c3 +3c +c6 +b1 +65 +58 +d2 +48 +2d +5f +84 +51 +8c +bb +c5 +26 +aa +e6 +e8 +84 +03 +17 +ef +b3 +a1 +98 +2c +3d +17 +19 +ef +15 +d1 +0f +8b +07 +7c +5c +68 +68 +0b +e6 +d3 +d9 +2e +86 +aa +a6 +eb +37 +8c +f0 +55 +9d +49 +32 +57 +14 +7b +55 +73 +0f +49 +a0 +42 +32 +5a +f0 +66 +b4 +f9 +74 +1b +9f +ff +5d +47 +97 +2d +5a +ca +f5 +2b +6b +ea +4e +9e +35 +4e +f9 +44 +8b +62 +f6 +d2 +a1 +31 +76 +75 +a9 +22 +e1 +4e +31 +57 +8d +6c +ab +5a +09 +a7 +1a +b2 +70 +d8 +65 +15 +1b +8a +b4 +c6 +12 +b5 +fd +5d +cc +97 +e4 +54 +19 +a1 +cf +b6 +b8 +b9 +ae +c6 +0f +62 +60 +20 +98 +f9 +1f +07 +c2 +38 +18 +66 +57 +94 +1c +7a +18 +e4 +d7 +ee +22 +0f +02 +2d +5f +ff +d2 +91 +85 +3b +9c +06 +3e +56 +1b +71 +76 +f7 +a2 +35 +ce +45 +bc +86 +ce +47 +18 +08 +6d +f9 +53 +6c +5a +5f +0a +bf +04 +c0 +a8 +4d +82 +bd +f6 +95 +52 +ad +e3 +13 +54 +33 +c1 +0a +1b +a6 +9d +68 +89 +69 +e6 +d9 +dc +e5 +4d +3b +3a +ae +3a +7f +2a +b9 +04 +e6 +57 +e3 +fb +05 +24 +1f +ac +11 +0a +a0 +7e +62 +cc +39 +91 +d7 +d0 +d6 +32 +9b +5a +b9 +d6 +9d +73 +36 +c0 +d1 +48 +58 +8c +9f +09 +21 +32 +5b +85 +df +5f +d3 +0d +b8 +0a +56 +a3 +72 +43 +72 +15 +36 +41 +96 +1a +a7 +e0 +42 +bf +26 +46 +ff +46 +02 +2c +05 +9d +57 +94 +c3 +a4 +b7 +f9 +0c +41 +0d +e7 +1a +52 +31 +dd +9b +83 +bb +d0 +e6 +bd +ab +1b +f9 +e6 +2f diff --git a/sync_rtl/top/TB/vectors/enc_k3_c0_ek.hex b/sync_rtl/top/TB/vectors/enc_k3_c0_ek.hex new file mode 100644 index 0000000..c1e5265 --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k3_c0_ek.hex @@ -0,0 +1,1184 @@ +01 +f6 +0a +f1 +dc +8e +63 +60 +ae +78 +b5 +9d +4a +50 +42 +eb +91 +45 +a2 +69 +04 +6d +62 +36 +b8 +30 +4f +30 +5c +2d +9d +cb +18 +9f +e5 +a6 +2d +f8 +9b +2f +5a +7b +ce +3b +bc +75 +3c +1e +78 +f7 +30 +a9 +98 +69 +f8 +09 +ab +a8 +56 +b6 +76 +b7 +07 +b2 +66 +01 +d1 +d9 +09 +ba +b3 +24 +51 +49 +4e +b7 +d0 +a2 +15 +3a +63 +50 +b7 +97 +89 +a9 +b1 +15 +f8 +3e +a1 +20 +37 +25 +65 +62 +f0 +6a +1d +5a +ba +37 +8d +a7 +70 +39 +d3 +bd +ec +ac +a8 +e6 +a2 +2a +49 +05 +0a +76 +30 +0a +02 +67 +cd +b3 +8b +7a +c7 +79 +03 +c5 +0c +a5 +3b +99 +28 +3c +ac +6b +95 +fb +a6 +51 +b1 +1a +4d +1a +69 +2e +40 +72 +96 +50 +60 +58 +76 +69 +f2 +53 +b1 +bb +18 +2e +66 +14 +46 +16 +8a +c6 +02 +21 +89 +46 +60 +02 +0e +9b +b5 +f5 +b7 +12 +4a +03 +03 +e2 +54 +3e +a3 +ea +6c +e9 +7a +24 +82 +b2 +55 +ca +34 +6f +b2 +7a +84 +7b +33 +b9 +3f +3a +b2 +d3 +30 +64 +c6 +e6 +63 +2d +1a +23 +f1 +14 +4e +90 +7b +24 +6b +47 +9f +4a +5c +92 +89 +29 +a1 +e2 +41 +50 +f5 +24 +12 +58 +a5 +b6 +77 +66 +a6 +6f +6a +33 +84 +64 +95 +90 +78 +28 +eb +e4 +4e +cc +5b +73 +12 +40 +71 +ba +47 +90 +73 +91 +04 +10 +a1 +6d +5d +56 +96 +b4 +8b +19 +47 +52 +97 +97 +95 +77 +2a +91 +c3 +48 +f5 +02 +b3 +7a +a6 +50 +98 +3e +bb +89 +bf +3c +08 +1f +f2 +73 +54 +41 +29 +c9 +13 +7a +6e +18 +34 +c8 +f2 +e7 +ce +14 +c7 +87 +0c +53 +c0 +5b +9b +94 +ec +d3 +8e +66 +45 +91 +1b +09 +12 +33 +68 +63 +ec +16 +88 +31 +f8 +11 +88 +10 +75 +cf +38 +a5 +9d +e4 +b5 +c7 +38 +aa +6e +f0 +3d +77 +9b +29 +55 +88 +cf +b6 +24 +91 +cc +7b +3e +08 +b4 +84 +73 +35 +4f +9a +c8 +06 +1c +15 +2a +9e +20 +59 +97 +49 +9b +97 +0b +69 +bc +e6 +6f +e4 +2b +ca +29 +24 +cc +df +01 +03 +d0 +a4 +c3 +91 +93 +c2 +df +25 +11 +8d +72 +b1 +7a +ab +26 +b0 +c6 +0d +4c +d2 +c3 +06 +ca +46 +96 +c1 +85 +de +05 +03 +5f +4a +09 +cf +97 +0a +ec +c8 +cc +93 +43 +6f +83 +b1 +ae +af +45 +2c +41 +92 +9a +2e +ab +c1 +51 +93 +8f +74 +c9 +3b +85 +85 +46 +df +22 +64 +ee +ea +b6 +02 +e0 +4a +85 +c5 +22 +f8 +fb +1a +52 +14 +af +d8 +d4 +ca +e5 +7a +47 +b6 +f3 +81 +a2 +31 +26 +bd +99 +17 +17 +31 +28 +af +91 +7f +1d +48 +36 +91 +c4 +50 +d1 +15 +1c +fe +9a +14 +92 +d4 +73 +ed +86 +2e +27 +da +92 +50 +0c +86 +a2 +00 +19 +e9 +f9 +75 +e4 +f5 +4a +d3 +19 +ba +2c +56 +30 +c4 +01 +42 +19 +d7 +ba +23 +54 +56 +fe +53 +01 +40 +19 +3d +66 +24 +45 +e6 +a9 +41 +d1 +e2 +38 +56 +7b +a8 +d4 +d9 +5a +b1 +c7 +44 +7d +69 +08 +21 +87 +6d +01 +72 +70 +cf +b1 +69 +f2 +d7 +92 +f0 +3c +80 +07 +20 +69 +7b +41 +0a +b4 +1c +66 +f2 +b2 +45 +85 +12 +56 +55 +eb +10 +aa +10 +87 +ff +cb +77 +50 +cb +88 +7a +d4 +46 +73 +77 +50 +0a +6a +7d +3a +82 +97 +6b +41 +5a +54 +46 +95 +77 +b4 +13 +8d +91 +9b +03 +f4 +c9 +a4 +d3 +39 +0b +dc +b6 +f1 +71 +7a +5f +a4 +ab +25 +a3 +4f +4b +a5 +03 +9b +b2 +2c +7f +3c +23 +4e +a4 +42 +73 +47 +aa +72 +51 +46 +4e +63 +19 +04 +d7 +ca +c4 +78 +4f +78 +b4 +9d +5f +4a +10 +4a +30 +18 +09 +a7 +79 +f6 +46 +61 +31 +f9 +c6 +2b +b6 +71 +47 +f4 +cd +49 +73 +a6 +aa +1c +29 +ae +6a +86 +47 +b6 +26 +8b +e0 +89 +fe +04 +8c +e9 +90 +cd +63 +87 +43 +d2 +85 +c8 +89 +a7 +07 +f5 +81 +b6 +3a +f4 +17 +31 +f0 +24 +6b +05 +4b +c4 +b4 +7a +ab +01 +b6 +84 +2a +27 +09 +d0 +2e +81 +58 +ab +90 +f4 +8b +69 +d1 +36 +08 +2b +34 +cb +06 +73 +b7 +4a +a3 +f5 +45 +08 +ed +02 +9f +b8 +f5 +04 +5e +e0 +63 +9e +15 +0e +e3 +b3 +c8 +5f +68 +a3 +10 +ec +04 +41 +98 +01 +00 +b4 +2a +bf +2b +ad +10 +d4 +a9 +e0 +c7 +b2 +bc +5b +bc +af +73 +cb +cd +c4 +9d +c2 +c9 +49 +11 +19 +36 +77 +9b +17 +89 +74 +a0 +39 +29 +47 +74 +5a +47 +18 +9b +c3 +fa +8a +67 +9c +80 +af +96 +4a +9f +9b +1b +56 +57 +72 +74 +a2 +a6 +69 +d2 +da +67 +04 +aa +49 +6a +f4 +07 +fa +1a +a9 +64 +cc +3d +c3 +14 +0f +5f +95 +9a +7e +a9 +74 +bd +b1 +b8 +3e +48 +a9 +9c +0a +3e +2d +75 +b0 +66 +9b +5c +12 +78 +96 +25 +40 +60 +91 +66 +26 +6d +a1 +88 +86 +fc +23 +7a +f3 +0c +ef +d5 +69 +db +e3 +99 +e6 +65 +2e +45 +f0 +6a +5d +fc +9a +75 +8a +49 +87 +08 +8f +f8 +e3 +8a +3c +f3 +6b +9d +98 +8f +0e +07 +0b +68 +d0 +b8 +8f +7b +cc +41 +30 +60 +80 +d8 +89 +78 +0c +7e +23 +88 +95 +cc +aa +4f +35 +77 +22 +5c +ca +4c +8a +93 +30 +ce +61 +3e +71 +77 +98 +c9 +67 +09 +24 +b2 +71 +ac +40 +2b +51 +53 +8b +8b +59 +67 +ac +49 +0d +ca +b5 +30 +0e +6c +54 +d6 +a3 +63 +2f +3b +97 +3e +41 +86 +ee +1a +7e +2e +85 +64 +91 +85 +b2 +63 +70 +c3 +87 +23 +5c +4d +f2 +8a +99 +37 +a4 +9d +40 +78 +bf +88 +3f +4e +63 +46 +cb +32 +51 +d9 +e1 +3f +1b +da +08 +7b +28 +5a +fa +a8 +0e +26 +26 +41 +c5 +52 +7b +0a +18 +4b +8b +c8 +4a +62 +e5 +77 +31 +46 +58 +e2 +02 +9d +85 +00 +64 +f7 +a7 +b8 +1f +25 +3e +7c +c1 +24 +a9 +c5 +b0 +39 +dc +9b +17 +9a +80 +c2 +f6 +ae +e6 +ea +08 +15 +17 +25 +37 +33 +1a +57 +b5 +05 +ba +a7 +6f +f5 +b4 +c1 +f0 +da +75 +4b +61 +94 +f4 +b3 +9a +9b +18 +73 +0d +3c +da +b9 +25 +d6 +91 +ed +77 +a8 +db +99 +27 +ea +23 +3a +c2 +a1 +27 +44 +fd +c2 +7e +5d +22 +1b +93 +69 +ad +b3 +25 +d8 diff --git a/sync_rtl/top/TB/vectors/enc_k3_c0_m.hex b/sync_rtl/top/TB/vectors/enc_k3_c0_m.hex new file mode 100644 index 0000000..9df0430 --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k3_c0_m.hex @@ -0,0 +1,32 @@ +20 +a7 +b7 +e1 +0f +70 +49 +6c +c3 +82 +20 +b9 +44 +de +f6 +99 +bf +14 +d1 +4e +55 +cf +4c +90 +a1 +2c +1b +33 +fc +80 +ff +ff diff --git a/sync_rtl/top/TB/vectors/enc_k3_c0_ss.hex b/sync_rtl/top/TB/vectors/enc_k3_c0_ss.hex new file mode 100644 index 0000000..d0438db --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k3_c0_ss.hex @@ -0,0 +1,32 @@ +b4 +08 +d5 +d1 +15 +71 +3f +0a +93 +04 +7d +bb +ea +83 +2e +43 +40 +78 +76 +86 +d5 +9a +9a +2d +10 +6b +d6 +62 +ba +0a +a0 +35 diff --git a/sync_rtl/top/TB/vectors/enc_k3_c1_ct.hex b/sync_rtl/top/TB/vectors/enc_k3_c1_ct.hex new file mode 100644 index 0000000..bef2d67 --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k3_c1_ct.hex @@ -0,0 +1,1088 @@ +4c +fd +0f +0b +e1 +5d +db +62 +05 +86 +44 +6e +43 +51 +18 +2f +64 +aa +ac +3a +ff +a1 +3b +24 +65 +2b +87 +d6 +ed +91 +f6 +0c +d3 +d3 +17 +91 +2c +19 +84 +cb +98 +d5 +a3 +93 +b0 +b5 +75 +f2 +0a +5a +fe +bc +58 +db +8a +a8 +c7 +94 +76 +18 +7f +8f +ea +07 +2f +ff +d2 +6f +12 +00 +61 +59 +51 +86 +61 +da +a4 +65 +4f +60 +e3 +8a +5e +ec +79 +63 +83 +df +04 +57 +82 +8a +a3 +29 +73 +18 +7c +19 +a6 +47 +92 +85 +8a +de +46 +c7 +7a +53 +d1 +b6 +a9 +ae +e2 +c4 +db +23 +7b +e3 +52 +34 +e1 +80 +bf +01 +06 +80 +4c +08 +a3 +d9 +61 +78 +87 +82 +86 +96 +ea +61 +36 +59 +40 +31 +d1 +b6 +8e +f5 +74 +5e +61 +8a +9c +3b +07 +d0 +fb +00 +f4 +81 +c4 +7d +12 +15 +4c +57 +9d +00 +2f +f6 +9b +8f +5b +32 +08 +b6 +2b +ec +8b +5d +46 +fc +94 +b1 +2a +31 +11 +55 +5d +cd +ac +be +25 +48 +d3 +3b +f2 +4a +b2 +37 +ab +06 +65 +43 +e2 +ad +47 +ba +16 +58 +53 +ac +d7 +07 +fc +5a +19 +55 +d4 +ad +83 +38 +4d +d9 +36 +af +95 +eb +00 +7a +84 +23 +aa +35 +36 +2f +d7 +35 +01 +d6 +89 +09 +cf +8d +37 +7a +4b +8b +02 +15 +51 +27 +65 +47 +ba +d2 +6b +da +1f +73 +51 +35 +a6 +66 +2c +6c +e0 +47 +bf +3e +14 +6f +ca +5a +f3 +ff +d7 +b7 +5c +86 +45 +d8 +52 +5d +4a +22 +b0 +50 +61 +79 +78 +68 +ad +b5 +14 +c5 +f9 +e8 +fa +e5 +fc +27 +38 +0c +7e +f0 +2e +67 +19 +41 +fb +ef +f6 +3b +3e +7e +b5 +5b +b5 +e0 +0e +a3 +f3 +4d +6b +ad +fa +24 +bc +c2 +bf +80 +3e +44 +34 +dc +de +27 +12 +c9 +51 +ec +83 +a6 +44 +54 +d5 +56 +5a +d1 +48 +8b +1a +78 +05 +1b +9f +72 +b6 +8d +55 +81 +af +29 +49 +d1 +63 +00 +98 +f4 +8b +4f +a7 +e5 +95 +22 +3c +e7 +30 +9d +7f +79 +d2 +50 +dc +2a +91 +ba +c5 +13 +87 +14 +97 +3e +93 +f6 +70 +44 +a7 +3c +86 +ea +3a +29 +ad +56 +32 +27 +7b +65 +96 +50 +9d +64 +4e +1d +cb +55 +d3 +a8 +fd +1d +91 +99 +6f +2d +9f +f4 +71 +b4 +f1 +e3 +1a +75 +9a +f4 +87 +51 +48 +b4 +d4 +f1 +f8 +dc +6c +79 +2c +c8 +ed +9a +29 +93 +5b +d0 +4f +3a +c1 +28 +01 +57 +4e +c2 +9f +3b +60 +1a +8d +75 +d3 +f4 +4d +55 +e8 +a1 +4c +5b +63 +b1 +ef +7f +ba +cd +aa +80 +fd +73 +70 +b8 +dc +7a +16 +18 +58 +1b +fb +83 +27 +f2 +62 +a3 +03 +70 +15 +ae +c3 +48 +6a +8b +3a +e1 +15 +04 +52 +0d +dd +50 +9b +98 +6f +a2 +20 +35 +cb +b2 +fd +24 +2a +cb +ca +7a +ae +a5 +f8 +98 +e6 +10 +13 +37 +b5 +0e +c7 +cf +ec +e1 +c2 +f2 +dc +cd +d4 +64 +e5 +76 +06 +e4 +48 +77 +f9 +6c +27 +20 +65 +23 +83 +7b +4d +ca +5a +2f +65 +ff +b3 +97 +16 +69 +ca +9d +98 +3b +ad +15 +4d +1b +11 +f8 +6a +3a +37 +6e +69 +81 +e3 +ec +2e +e4 +20 +86 +43 +81 +03 +56 +78 +ad +18 +c1 +3c +38 +25 +87 +b2 +ff +b6 +7b +3c +56 +06 +8a +3d +53 +90 +77 +94 +1a +68 +76 +74 +5d +5a +1c +b2 +5f +1e +89 +7a +59 +46 +7e +fc +f8 +86 +ef +1d +71 +22 +87 +4e +54 +b2 +4e +d5 +24 +94 +68 +72 +3d +dc +54 +19 +88 +80 +e9 +40 +5f +0f +0b +94 +e6 +dd +95 +02 +60 +46 +a6 +0d +b1 +cf +3a +1d +92 +08 +3f +b8 +10 +4a +ea +74 +70 +15 +78 +57 +08 +59 +25 +96 +8d +78 +ca +35 +25 +8b +8e +7a +2b +c4 +d3 +e1 +4f +40 +4a +2d +5e +dd +fe +fb +aa +b1 +83 +6a +25 +a6 +44 +4c +31 +84 +2e +8f +56 +39 +5b +33 +5d +a8 +83 +0c +91 +a8 +10 +6a +53 +13 +c8 +00 +20 +91 +5c +e0 +c7 +9c +30 +32 +66 +93 +3d +87 +6e +85 +40 +96 +cf +6b +ac +83 +51 +81 +a3 +87 +95 +71 +1c +fc +1e +97 +3d +c7 +c4 +12 +ce +50 +37 +60 +49 +91 +90 +2f +3f +81 +ac +36 +36 +0b +37 +18 +71 +06 +da +a0 +44 +af +03 +de +0a +45 +4b +7b +3f +39 +96 +f3 +e4 +85 +8e +20 +f8 +7f +d9 +8c +a6 +63 +ce +21 +a9 +b5 +30 +9b +27 +73 +7b +9d +f7 +32 +53 +2b +0f +c9 +b2 +a2 +de +6c +de +4e +05 +97 +db +d6 +ab +9c +cc +ce +d9 +f7 +ce +2c +4c +72 +7c +9a +a4 +35 +8e +4f +5d +a2 +51 +13 +8f +10 +4f +66 +89 +1f +cc +67 +1c +64 +e5 +50 +0c +e3 +d3 +ad +27 +a6 +27 +2e +ed +5b +fd +44 +91 +ea +e6 +dc +1d +e6 +e7 +69 +6f +38 +0d +89 +aa +a6 +53 +57 +1a +a3 +13 +2c +a5 +48 +06 +f9 +30 +8c +41 +4b +db +28 +97 +cb +b6 +b8 +44 +e8 +e0 +4f +d9 +47 +32 +fa +9c +3d +e0 +f6 +47 +2c +bd +0f +d7 +4f +98 +d4 +9b +0d +5f +c5 +77 +2d +21 +3e +e8 +bb +ec +2e +85 +93 +02 +4d +03 +57 +6e +85 +16 +96 +63 +58 +22 +b9 +80 +b1 +34 +5d +5d +f9 +b9 +38 +6e +93 +9a +2f +8e +32 +4f +ba +84 +c1 +2f +8d +e6 +e2 +7f +b0 +70 +9d +57 +7a +e6 +ee +48 +aa +3f +2e +7a +70 +94 +86 +bd +f6 +8c +ba +12 +84 +cd +e4 +b3 +e3 +a4 +7b +51 +0f +a6 +a6 +ac +ca +a0 +60 +9e +82 +2c +0c +cc +9f +d5 +10 +00 +cd +d5 +78 +30 +b3 +75 +90 +ac +9b +3b +29 +d3 +be +01 +40 +0d +6e +7b +db +64 +0d +1e +22 +1c +26 +ff +7b +24 +fd +67 +a6 +ee +0a +56 +52 +ad +5d +50 +d4 +ea +40 +8b +1e +10 +c9 +74 +e8 +60 +94 +e5 +b4 +0e +08 +b6 +6e +7c diff --git a/sync_rtl/top/TB/vectors/enc_k3_c1_ek.hex b/sync_rtl/top/TB/vectors/enc_k3_c1_ek.hex new file mode 100644 index 0000000..920f646 --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k3_c1_ek.hex @@ -0,0 +1,1184 @@ +3f +1b +8a +5c +f5 +aa +0c +b1 +48 +cf +ac +76 +6a +30 +a7 +82 +09 +a3 +ce +97 +cb +42 +7a +9e +81 +32 +54 +e0 +b6 +a9 +9a +e2 +53 +70 +b5 +83 +c2 +75 +35 +7c +e3 +b4 +d6 +c6 +0a +af +da +03 +e9 +97 +34 +e0 +e9 +8e +ba +56 +ae +ef +82 +1e +92 +b8 +c1 +db +43 +94 +2a +7c +37 +c9 +97 +7d +79 +94 +6f +e0 +47 +4d +f2 +7b +9c +f3 +b1 +2c +a9 +4b +b0 +64 +01 +d0 +91 +50 +53 +0b +f8 +2a +df +c4 +62 +3b +d7 +af +97 +42 +59 +84 +b8 +c5 +3f +51 +96 +9e +bc +02 +d9 +b4 +1a +ac +e7 +95 +36 +e3 +28 +2a +f5 +ad +ed +b6 +36 +3d +4a +7b +db +b0 +6a +69 +e2 +4c +89 +28 +88 +f6 +71 +00 +55 +bb +64 +4d +b6 +0b +a3 +b8 +84 +20 +4c +03 +b0 +7c +2a +8a +ca +02 +49 +ac +29 +ea +d7 +7d +5c +87 +9a +79 +0a +09 +b8 +50 +a5 +5e +f6 +14 +cc +73 +cf +7f +72 +72 +23 +ba +0d +63 +53 +29 +5c +00 +8c +98 +6a +a9 +20 +03 +49 +a0 +ac +50 +0e +34 +7e +e1 +79 +5a +1a +83 +69 +ab +61 +51 +c2 +7b +13 +41 +ca +ce +56 +85 +2e +e7 +6c +6d +3c +cb +83 +31 +b2 +3c +de +8b +22 +4a +f9 +b2 +de +e4 +02 +d9 +60 +5b +bf +a8 +40 +19 +76 +41 +9c +57 +ab +16 +86 +bd +a0 +96 +b2 +8c +b6 +54 +cd +4a +5d +b7 +c3 +25 +98 +e0 +14 +91 +e2 +1b +8c +d5 +44 +97 +f6 +0f +e2 +bc +31 +d7 +83 +92 +8e +38 +2b +fb +f3 +33 +2b +75 +4c +f9 +69 +b1 +2a +a5 +8f +43 +8b +4a +57 +06 +41 +29 +d4 +45 +60 +09 +a1 +72 +a5 +9a +b3 +b7 +7c +c8 +4c +76 +94 +4b +99 +a5 +34 +45 +a5 +29 +ac +0a +62 +ad +49 +01 +74 +a4 +73 +24 +a5 +d3 +4b +81 +a6 +82 +a6 +9c +0a +8d +d7 +5f +0d +e9 +3c +20 +e4 +30 +26 +6c +23 +b0 +0c +48 +69 +f5 +3c +6f +d0 +85 +4e +d3 +ca +f4 +54 +49 +52 +b0 +5e +d3 +b3 +b0 +d6 +ca +34 +f0 +f2 +97 +f2 +e9 +a7 +c1 +18 +78 +04 +a3 +7a +12 +1a +6a +d2 +ab +50 +da +f4 +75 +aa +3a +25 +e6 +c9 +a0 +d6 +a2 +9d +ef +62 +cb +d2 +98 +05 +0f +5b +30 +7c +05 +3a +5c +88 +38 +b4 +c3 +35 +7f +33 +76 +65 +3c +33 +66 +fa +6f +e1 +02 +5d +19 +60 +c7 +5b +a6 +43 +26 +5c +15 +7a +84 +c9 +14 +d5 +59 +f5 +40 +c6 +7e +c1 +58 +73 +94 +af +7b +d1 +78 +30 +d5 +08 +9d +50 +59 +06 +fa +9f +76 +6a +9b +93 +90 +9f +5b +66 +27 +cc +05 +a0 +b2 +19 +2c +bf +c2 +27 +1b +0b +22 +d7 +7a +07 +ce +55 +1e +da +a6 +52 +2d +40 +2b +00 +00 +37 +23 +c1 +15 +93 +6c +97 +f5 +4c +88 +aa +51 +34 +82 +a0 +55 +54 +c6 +28 +e6 +94 +48 +eb +6a +0e +f6 +f3 +46 +34 +1c +80 +2b +da +b9 +b0 +3b +a0 +af +29 +7d +9e +8b +93 +8b +9c +ab +ef +a4 +67 +22 +42 +1a +33 +8a +87 +2d +9a +88 +b8 +8c +9f +0e +ec +46 +93 +2c +36 +7c +c5 +8b +83 +57 +3d +26 +03 +6a +af +52 +76 +e5 +15 +b0 +f2 +30 +59 +b4 +0c +84 +8f +63 +8a +ce +37 +03 +ee +6c +27 +d9 +66 +99 +0c +77 +02 +ed +23 +a0 +cd +9b +a4 +cf +61 +69 +a6 +68 +a1 +f0 +bb +58 +6b +07 +66 +92 +e1 +c2 +15 +75 +4f +f6 +78 +4b +d9 +1a +24 +8c +b9 +0f +00 +8a +3e +ca +59 +85 +2c +05 +79 +66 +93 +3a +1a +86 +b6 +e0 +5b +2f +ad +91 +b2 +8b +c6 +16 +48 +b0 +41 +a7 +ac +04 +6a +b8 +11 +2b +6a +c2 +cb +90 +0f +b5 +c0 +98 +21 +dc +4b +07 +16 +b5 +09 +e1 +22 +dc +97 +c6 +ed +73 +42 +f6 +f4 +9f +b6 +55 +59 +72 +9c +38 +47 +63 +ba +2d +2b +b8 +cf +56 +ae +36 +f3 +b2 +69 +97 +0a +c5 +48 +41 +21 +3b +24 +b7 +92 +c9 +49 +f3 +c7 +75 +e7 +0a +c8 +f7 +cc +53 +76 +3f +f6 +38 +ad +c5 +11 +3e +c6 +00 +75 +c1 +a7 +92 +76 +ca +47 +3c +11 +38 +32 +95 +4a +be +20 +7b +eb +f0 +cd +04 +26 +c0 +e2 +97 +33 +94 +72 +56 +c7 +75 +6b +f9 +b5 +0d +82 +19 +1a +07 +f0 +ba +5d +5a +15 +4b +08 +66 +e2 +93 +47 +3b +40 +76 +a1 +e9 +95 +f9 +d0 +86 +a4 +72 +c1 +18 +ac +22 +c2 +16 +a8 +39 +92 +06 +60 +a3 +31 +ee +e1 +98 +df +5b +1a +15 +95 +23 +9d +57 +80 +cd +a7 +5f +73 +c6 +76 +5a +46 +ae +4a +a3 +40 +01 +93 +9d +fa +d9 +2f +7e +12 +4a +5f +2c +62 +8b +25 +9d +e9 +56 +0b +bf +47 +0c +c6 +9c +c6 +52 +dc +29 +b9 +3b +a8 +6a +49 +90 +dc +e0 +af +1a +45 +24 +c1 +99 +a6 +92 +67 +0c +af +74 +8d +16 +61 +2f +ee +d7 +11 +f8 +8a +50 +5d +55 +2a +64 +40 +aa +04 +22 +62 +6f +18 +5f +69 +21 +a8 +2e +f9 +25 +08 +60 +28 +ae +85 +62 +fc +76 +10 +e1 +b1 +64 +9e +f0 +09 +4d +96 +b5 +05 +fb +b7 +f1 +12 +89 +6e +fa +c0 +d1 +92 +af +45 +d9 +03 +ac +79 +92 +bb +e9 +bf +30 +e2 +57 +7e +24 +58 +1c +bc +4f +73 +b1 +80 +d0 +4a +69 +f5 +40 +b3 +9e +19 +a4 +ae +36 +ae +c4 +f2 +1a +de +77 +49 +65 +39 +1b +ca +eb +c0 +af +86 +9c +b6 +36 +31 +32 +7b +42 +1b +ec +67 +26 +65 +1b +87 +58 +bf +ee +73 +c5 +91 +21 +2d +4f +f9 +81 +f6 +68 +4c +58 +b3 +59 +c2 +d0 +7f +a1 +e6 +01 +d6 +c5 +cb +fd +c9 +64 +b3 +19 +09 +cc +a3 +7f +ff +96 +20 +4f +b5 +68 +8d +92 +ca +5a +85 +75 +8c +f1 +60 +e9 +b0 +6e +d1 +83 +20 +a4 +b1 +b0 +c8 +e8 +19 +6a +e7 +6a +6f +62 +19 +72 +d1 +7a +4d +64 +a7 +df +04 +c5 +a4 +c3 +33 +c3 +bc +1a +ca +ab +37 +70 +91 +49 +a3 +b8 +ca +08 +2a +8f +bc +a1 +32 +68 +a1 +b0 +22 +23 +0e +2d +63 +02 +72 +cb +9f +f2 +e6 +65 +5a +f1 +73 +27 +f3 +b9 +80 +70 +95 +f5 +82 +be +18 +bd +3f +4e +0b +b7 +23 +ec +ed +69 +b0 +58 +56 +29 +98 +65 +48 +d7 +22 +b0 +3b +5b +bd +15 +7a +c9 +9d +ee +1c +0a +9a +a1 diff --git a/sync_rtl/top/TB/vectors/enc_k3_c1_m.hex b/sync_rtl/top/TB/vectors/enc_k3_c1_m.hex new file mode 100644 index 0000000..ceab0d1 --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k3_c1_m.hex @@ -0,0 +1,32 @@ +01 +21 +cb +32 +ac +d1 +87 +11 +35 +cb +34 +e2 +9c +1a +0e +26 +cc +c0 +01 +b9 +39 +ea +fa +ac +c2 +8f +13 +f1 +93 +8d +bf +91 diff --git a/sync_rtl/top/TB/vectors/enc_k3_c1_ss.hex b/sync_rtl/top/TB/vectors/enc_k3_c1_ss.hex new file mode 100644 index 0000000..df503b0 --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k3_c1_ss.hex @@ -0,0 +1,32 @@ +8c +97 +02 +42 +40 +61 +11 +e2 +63 +68 +ad +87 +60 +c4 +d0 +2a +8b +28 +d1 +7d +13 +82 +10 +ad +c1 +27 +19 +7b +50 +96 +81 +40 diff --git a/sync_rtl/top/TB/vectors/enc_k3_c2_ct.hex b/sync_rtl/top/TB/vectors/enc_k3_c2_ct.hex new file mode 100644 index 0000000..4b55566 --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k3_c2_ct.hex @@ -0,0 +1,1088 @@ +0d +ad +92 +35 +27 +46 +60 +11 +95 +10 +23 +1d +62 +82 +e3 +d8 +62 +ce +ea +53 +65 +b9 +c7 +f7 +83 +07 +88 +91 +f3 +35 +85 +68 +ff +b1 +00 +86 +d0 +68 +5a +ac +86 +8c +39 +23 +5a +e9 +09 +ab +7f +4c +65 +df +e1 +49 +b5 +f6 +9e +b0 +c9 +40 +80 +94 +79 +58 +d7 +1d +b2 +62 +b5 +fd +c0 +5a +1a +d8 +81 +13 +1e +cf +c1 +c7 +89 +86 +18 +7f +39 +41 +40 +d3 +92 +35 +9a +64 +56 +fc +ea +0e +e1 +ce +08 +93 +98 +5b +7b +61 +4c +46 +f0 +44 +5d +12 +3e +58 +76 +24 +63 +31 +ad +74 +23 +45 +c2 +f7 +4e +1d +a0 +92 +35 +a1 +01 +12 +2f +b7 +8b +73 +e8 +f1 +b5 +2c +d8 +19 +1d +6f +a7 +80 +e5 +5b +89 +25 +7c +fb +58 +14 +43 +e5 +ac +a5 +21 +49 +c4 +23 +d7 +65 +8c +6a +ac +77 +43 +d5 +c3 +18 +8e +61 +39 +7a +74 +08 +f9 +c5 +2a +8c +c8 +e8 +ef +18 +37 +06 +74 +c5 +cf +c0 +f0 +3c +51 +c5 +89 +e7 +9e +2f +26 +31 +ff +81 +bc +85 +1e +eb +57 +89 +24 +7a +d3 +a0 +f9 +56 +d2 +a7 +4c +17 +f9 +35 +ae +7d +c9 +a4 +63 +f3 +ee +15 +0c +8f +34 +85 +52 +38 +99 +18 +2b +84 +01 +1d +a1 +fd +40 +58 +a6 +6b +e3 +10 +2a +08 +18 +24 +6d +93 +e9 +87 +d2 +7e +27 +98 +01 +37 +7d +31 +7b +ed +6e +f9 +ce +cb +74 +5c +96 +d3 +48 +50 +1b +e3 +e4 +d5 +36 +4f +27 +ad +73 +74 +13 +2c +58 +e3 +db +e6 +5b +18 +01 +48 +2a +89 +43 +2f +d4 +fc +da +08 +50 +ea +b1 +c7 +5b +03 +5b +4b +8f +0e +cc +d0 +f5 +61 +61 +e6 +1e +0b +5a +1e +43 +b9 +95 +f8 +eb +dc +0a +92 +ff +29 +97 +19 +b6 +ab +22 +3e +84 +f1 +bd +81 +6c +de +c0 +5e +35 +12 +64 +41 +e4 +c3 +f0 +97 +d8 +c6 +a9 +8f +49 +c1 +37 +b3 +7f +ce +1d +24 +58 +7f +81 +0d +50 +0c +bd +ec +5a +18 +7d +36 +96 +7c +5f +22 +02 +b4 +b7 +ff +b4 +a2 +1a +87 +51 +89 +0e +cf +4c +72 +2f +f4 +6b +11 +3c +d7 +89 +32 +de +35 +a7 +aa +61 +4b +dc +df +27 +6b +e1 +f0 +36 +74 +83 +4e +7d +c7 +54 +39 +ea +8a +af +1c +88 +17 +3b +c7 +ff +b8 +52 +7d +d8 +5f +a4 +4c +1c +8c +4a +50 +b2 +46 +cd +e6 +30 +16 +92 +45 +a8 +7e +68 +b0 +da +e6 +92 +54 +05 +cd +fc +4e +09 +56 +d5 +3e +a7 +ec +f7 +67 +dc +5d +ad +a2 +4f +d9 +9f +6e +89 +a8 +47 +2b +fe +9d +25 +ce +88 +07 +bd +93 +da +5b +1f +22 +68 +36 +88 +47 +d7 +76 +57 +ac +6c +ba +ec +6d +e7 +d4 +87 +b2 +c7 +ad +c1 +f8 +66 +d7 +69 +fe +ed +31 +9f +4a +71 +f5 +56 +4f +f9 +b4 +62 +db +d7 +31 +eb +81 +b6 +03 +f0 +51 +14 +74 +25 +d4 +a9 +1c +08 +1f +34 +97 +06 +cb +76 +d8 +c7 +02 +ab +90 +2f +29 +f3 +37 +b3 +b6 +4b +06 +38 +81 +f5 +8f +d8 +94 +10 +59 +68 +80 +ea +32 +b2 +c4 +6f +ce +45 +8e +22 +40 +34 +23 +07 +45 +c5 +e8 +93 +3c +aa +77 +b8 +d4 +f0 +97 +0a +58 +2e +cf +c3 +db +d7 +41 +78 +be +d3 +f7 +f4 +7a +41 +f8 +e5 +a4 +3e +74 +e6 +9f +01 +47 +1b +8c +af +7c +49 +ef +75 +df +ef +9b +b2 +c8 +02 +06 +f1 +ad +25 +47 +64 +0b +6b +3b +33 +5e +06 +f2 +52 +f0 +8a +7a +ef +02 +20 +2b +6a +43 +60 +4e +b3 +51 +7a +04 +26 +ab +50 +e5 +ef +ee +d9 +47 +9f +62 +f0 +b3 +a6 +03 +08 +19 +79 +a0 +e8 +30 +cf +08 +be +33 +40 +cc +45 +27 +00 +ca +dc +ca +e3 +cb +b2 +31 +63 +72 +85 +67 +b1 +ce +2f +34 +0a +1d +f9 +43 +84 +36 +6a +06 +1c +13 +73 +ce +ab +aa +f8 +98 +8e +10 +fd +20 +49 +33 +34 +73 +27 +7c +87 +18 +5a +6a +1a +d0 +74 +99 +f8 +ce +b2 +9d +11 +d5 +04 +be +e7 +fb +0d +6e +58 +5f +b8 +12 +bc +b6 +aa +91 +e0 +cc +18 +ca +ad +07 +1b +8b +3d +1f +30 +7f +e8 +72 +b1 +31 +07 +c8 +f2 +4c +f9 +47 +31 +00 +0a +1b +a1 +92 +3f +32 +02 +1f +12 +79 +00 +f8 +f7 +23 +8f +a9 +59 +88 +29 +98 +79 +a4 +5d +56 +0a +32 +94 +79 +a4 +68 +c0 +10 +1b +34 +99 +1c +f6 +00 +c5 +04 +3e +d8 +b3 +ed +22 +50 +61 +5c +a3 +fd +50 +18 +f7 +04 +60 +3c +f6 +dc +53 +f2 +5e +2e +84 +ec +64 +f5 +e4 +2c +d8 +b9 +ae +db +80 +11 +d3 +a0 +21 +0b +20 +d9 +7b +68 +e8 +84 +84 +50 +da +cf +44 +91 +6a +9c +b7 +85 +d8 +04 +c4 +44 +e9 +e7 +d3 +07 +d7 +58 +70 +c2 +25 +83 +ba +39 +56 +79 +f1 +92 +72 +36 +c5 +70 +f4 +0d +b0 +dc +2a +90 +c1 +62 +b4 +fc +66 +cf +31 +55 +6d +6c +d0 +a0 +2c +80 +c6 +d4 +22 +b7 +54 +5c +68 +6c +a5 +02 +37 +71 +d9 +b0 +74 +9c +6d +1d +c1 +e9 +3e +a0 +aa +99 +1b +1a +05 +e7 +26 +78 +26 +23 +a5 +2f +10 +fe +4d +d5 +34 +58 +be +8a +2d +66 +0b +95 +dd +bd +93 +0d +67 +ff +5b +8e +ab +d9 +61 +e6 +8a +2b +d5 +1b +ee +93 +5c +a8 +bc +c7 +9d +b1 +fd +ba +2c +78 +84 +dd +ee +00 +61 +5d +a8 +9c +07 +f8 +95 +c4 +18 +59 +93 +c6 +7d +43 +26 +84 +90 +e7 +78 +ba +ba +6e +3e +9b +02 +b6 +e6 +8e +91 +19 +78 +84 +97 +f9 +49 +de +3e +37 +69 +60 +c2 +20 +35 +47 +84 +92 +9c +c2 +79 +7d +84 +1a +b2 +79 +ee +39 +32 +b8 +47 +0b +d2 +85 +74 +36 +3d +1b +ad +87 +f7 +2b +69 +48 +85 +3e +91 +96 +58 +db +44 +7c +08 +08 diff --git a/sync_rtl/top/TB/vectors/enc_k3_c2_ek.hex b/sync_rtl/top/TB/vectors/enc_k3_c2_ek.hex new file mode 100644 index 0000000..37984d6 --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k3_c2_ek.hex @@ -0,0 +1,1184 @@ +d0 +06 +0a +40 +91 +0a +30 +ba +32 +6e +78 +4a +d3 +74 +76 +10 +7b +c9 +4d +f3 +6a +d4 +d8 +60 +27 +98 +1a +83 +4c +6b +eb +42 +25 +e6 +29 +49 +db +e9 +29 +70 +cb +82 +e1 +40 +72 +e5 +4a +6e +bb +46 +2f +20 +e3 +28 +1d +b1 +b9 +26 +44 +a0 +21 +cb +48 +89 +5c +66 +5b +44 +55 +71 +a7 +6a +ad +13 +30 +ad +f7 +ce +7a +01 +2d +a8 +d4 +c8 +cf +66 +5d +1b +a1 +bb +f5 +12 +68 +7e +ac +a3 +9b +62 +c4 +4b +b7 +8b +42 +01 +8c +16 +98 +9c +4e +53 +83 +38 +e9 +83 +b3 +11 +63 +64 +6b +a1 +08 +63 +29 +e1 +9a +64 +85 +73 +4f +af +d5 +37 +6a +07 +69 +65 +75 +79 +24 +03 +97 +5b +54 +89 +20 +a5 +0d +d3 +23 +57 +cd +60 +ca +69 +1a +16 +19 +5a +a0 +6e +b4 +09 +b5 +01 +54 +f5 +9c +43 +46 +f7 +1a +c6 +ea +9b +e5 +4b +07 +98 +39 +0d +79 +30 +a2 +3e +0b +06 +6a +f5 +c5 +67 +77 +08 +f6 +e8 +c9 +2d +b2 +af +44 +d7 +0c +64 +03 +c4 +af +9c +53 +05 +bb +89 +b3 +ac +7f +69 +5b +26 +ec +db +b7 +57 +79 +6c +3f +c9 +6d +97 +57 +7b +c5 +66 +7d +75 +06 +a7 +46 +95 +07 +6f +1a +97 +e0 +e2 +53 +bf +aa +9a +12 +d0 +11 +41 +4c +1f +05 +bc +37 +2e +54 +80 +4b +d7 +3e +3d +dc +52 +3c +11 +59 +4b +f5 +64 +2b +98 +43 +b1 +cc +16 +ce +13 +93 +7d +66 +cd +6f +40 +08 +07 +10 +ba +9e +74 +7a +cb +0a +66 +96 +b9 +3e +c6 +6a +a4 +7d +72 +77 +24 +b1 +ce +e2 +97 +66 +19 +08 +28 +41 +a3 +a2 +9b +85 +90 +c9 +21 +96 +76 +cc +75 +36 +63 +42 +83 +8a +9e +df +57 +3b +57 +e4 +bf +23 +54 +2d +6a +21 +07 +e6 +56 +2d +16 +f0 +30 +e2 +c1 +9a +fa +08 +70 +ed +12 +46 +14 +a2 +85 +b8 +2b +40 +b8 +4a +13 +1c +bb +10 +0c +a6 +2d +1b +62 +3a +07 +f0 +57 +5c +78 +62 +bc +cc +9e +6f +f4 +02 +fb +c8 +9f +d2 +c1 +ca +62 +06 +8e +0a +e8 +8f +ce +a6 +cd +8f +a2 +ab +cd +e1 +8f +4b +38 +87 +d9 +82 +32 +ad +dc +3a +4f +24 +13 +c3 +74 +43 +10 +23 +c1 +6e +f6 +5b +8e +c3 +c8 +85 +a0 +99 +0d +61 +89 +b4 +cc +1a +14 +5a +c3 +d8 +93 +2a +2d +78 +57 +83 +6a +65 +46 +bc +58 +a7 +cb +37 +45 +c1 +a8 +fc +41 +ba +3a +2c +3b +e5 +72 +5f +5b +92 +48 +61 +0c +cf +5d +f4 +45 +41 +78 +a8 +48 +56 +81 +d5 +bb +c4 +84 +db +48 +79 +97 +cc +49 +97 +5e +7c +92 +3f +76 +54 +45 +75 +30 +b2 +e8 +79 +6a +e1 +5c +c6 +db +f6 +96 +7a +04 +96 +ec +16 +ce +29 +2c +9b +1b +6c +8f +35 +4b +27 +b9 +b5 +31 +1d +b7 +1a +f3 +70 +c1 +3f +51 +0e +55 +ba +5a +49 +69 +0c +8e +76 +c0 +92 +5c +5f +43 +b7 +67 +9b +e2 +bc +9a +fa +c6 +7b +a8 +a2 +58 +ac +c8 +d2 +28 +4f +49 +07 +79 +d0 +e6 +34 +ee +f4 +76 +2d +d7 +9d +a8 +c1 +90 +80 +e6 +b0 +5a +5c +02 +26 +91 +03 +72 +67 +14 +29 +ab +0c +c8 +88 +8a +6e +7b +99 +69 +72 +7f +49 +5c +af +d8 +2a +cc +92 +a8 +36 +1e +23 +4b +11 +60 +0c +d7 +c9 +27 +5f +14 +82 +b4 +01 +8e +7b +44 +03 +1c +30 +57 +74 +95 +2a +26 +63 +48 +76 +c5 +78 +bf +7a +24 +d1 +64 +98 +05 +fa +bf +2c +7c +cd +af +57 +66 +19 +db +78 +47 +99 +bd +f0 +92 +20 +d5 +c3 +72 +9e +d0 +ca +fc +86 +39 +93 +c2 +90 +b5 +50 +c1 +7e +ac +6d +ef +28 +a0 +2a +f4 +31 +e5 +15 +a2 +cc +8c +59 +4b +b4 +ce +72 +6b +c9 +64 +f4 +c0 +7c +05 +15 +31 +f6 +17 +db +1b +b0 +97 +0a +0d +5c +1a +7c +33 +12 +68 +1f +71 +91 +09 +40 +b7 +58 +13 +24 +09 +08 +7d +e3 +ec +b7 +ce +c6 +92 +1d +a7 +0f +46 +f5 +7f +db +34 +a9 +0a +c1 +1b +7e +71 +7b +44 +16 +a7 +5a +70 +3c +e0 +30 +61 +12 +cb +34 +03 +05 +00 +a6 +65 +15 +13 +b7 +76 +b3 +25 +29 +63 +8c +c5 +9f +79 +29 +ef +17 +2c +72 +a7 +40 +e5 +c7 +33 +8a +ba +ca +58 +f0 +89 +dc +8a +ae +dd +26 +54 +68 +1b +4e +a1 +fb +42 +ba +c7 +a1 +c1 +79 +17 +bd +a9 +a0 +10 +81 +b1 +8e +05 +45 +86 +0a +1a +76 +08 +44 +08 +16 +5e +63 +60 +6c +99 +65 +8e +2d +f2 +41 +dd +d8 +39 +97 +79 +4e +40 +79 +29 +b7 +5b +ac +2f +17 +76 +33 +e2 +79 +fd +28 +17 +ec +2b +7f +a2 +39 +a6 +13 +a0 +a4 +96 +c1 +9f +01 +fa +5a +96 +a8 +6c +66 +ec +34 +58 +f0 +86 +b0 +1b +2e +60 +f3 +96 +d7 +56 +24 +98 +85 +84 +c2 +75 +5c +0a +13 +05 +08 +c9 +82 +a6 +93 +32 +eb +f8 +ca +92 +a9 +23 +0d +c9 +5f +5d +96 +64 +6a +c2 +46 +d2 +70 +35 +d0 +0b +9d +ba +45 +6a +62 +15 +72 +e3 +4c +6a +f3 +6b +14 +c0 +10 +00 +02 +a8 +92 +b5 +20 +b5 +58 +65 +29 +a0 +76 +02 +5a +33 +2e +01 +d8 +02 +cc +10 +81 +0f +c7 +9a +eb +13 +7d +b6 +1b +88 +b3 +e6 +71 +48 +e8 +47 +36 +43 +6a +c6 +9a +5c +f6 +50 +2c +e7 +f8 +4a +09 +c7 +a6 +dd +17 +97 +c1 +31 +00 +a0 +65 +74 +61 +10 +5c +19 +7c +92 +b6 +d4 +7e +bf +67 +24 +e8 +4b +00 +a1 +d2 +a5 +59 +74 +ac +18 +f5 +9f +1e +b2 +71 +9e +d4 +9d +46 +4a +4f +41 +82 +3f +16 +94 +92 +d5 +94 +10 +0a +4a +8b +8a +d7 +19 +95 +f7 +30 +a9 +34 +c5 +e8 +e9 +cc +b8 +0c +54 +b4 +53 +c0 +3c +f3 +7b +8c +c9 +89 +35 +c2 +4f +35 +d4 +1b +d0 +09 +0f +c2 +9c +04 +dc +b8 +c0 +6c +6c +08 +cf +29 +9c +08 +4a +71 +32 +b3 +8f +f8 +c8 +27 +40 +f0 +66 +be +b6 +c5 +b9 +4a +b3 +6b +d6 +8a +04 +90 +a4 +57 +cb +a7 +8b +d5 +90 +5e +5b +a1 +8a +8a +49 +6a +e5 +26 +55 +8a +a7 +43 +67 +db +2c +cc +ac +95 +8f +84 +10 +f8 +83 +20 +a5 +a7 +3e +82 +0e +5d +81 +78 +ad +72 +8b +a7 +ff +67 +ca +c5 +07 +75 +c3 diff --git a/sync_rtl/top/TB/vectors/enc_k3_c2_m.hex b/sync_rtl/top/TB/vectors/enc_k3_c2_m.hex new file mode 100644 index 0000000..168e054 --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k3_c2_m.hex @@ -0,0 +1,32 @@ +34 +b9 +61 +af +5d +62 +54 +af +72 +c0 +d5 +0e +70 +dd +9b +49 +91 +15 +0c +cc +09 +19 +2a +a4 +6f +19 +53 +d5 +c2 +9a +33 +ec diff --git a/sync_rtl/top/TB/vectors/enc_k3_c2_ss.hex b/sync_rtl/top/TB/vectors/enc_k3_c2_ss.hex new file mode 100644 index 0000000..479ea86 --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k3_c2_ss.hex @@ -0,0 +1,32 @@ +c0 +d4 +57 +64 +e3 +db +f0 +94 +8b +91 +4d +6f +65 +c9 +2b +d0 +eb +d2 +15 +56 +e5 +07 +67 +53 +af +48 +df +8f +ff +d6 +ba +dc diff --git a/sync_rtl/top/TB/vectors/enc_k4_c0_ct.hex b/sync_rtl/top/TB/vectors/enc_k4_c0_ct.hex new file mode 100644 index 0000000..95b63bf --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k4_c0_ct.hex @@ -0,0 +1,1568 @@ +70 +7d +18 +ca +bc +f8 +96 +70 +c8 +00 +03 +b4 +7d +2b +86 +78 +ad +0d +a4 +aa +ad +78 +1a +33 +51 +e8 +2a +c3 +e4 +47 +e7 +01 +9a +f5 +cb +86 +02 +0f +b2 +ac +72 +7e +79 +65 +41 +55 +83 +5b +45 +de +9b +8a +f5 +e5 +c7 +ef +a0 +12 +95 +da +89 +88 +13 +1d +c8 +d6 +ed +b0 +64 +5c +3e +41 +16 +aa +b0 +80 +c5 +a5 +71 +e7 +60 +41 +6f +e8 +e2 +99 +c8 +98 +11 +96 +3c +f9 +77 +6e +0c +82 +87 +51 +70 +1f +90 +e2 +64 +35 +89 +7f +8f +df +7a +7a +fa +ad +98 +70 +09 +c0 +eb +12 +fb +91 +4d +fa +ab +1f +ce +92 +64 +f5 +5e +e0 +cb +4d +89 +44 +93 +85 +dd +08 +1b +02 +da +ce +9b +17 +9a +54 +51 +3d +28 +15 +29 +b8 +fd +61 +c5 +3e +3b +cf +c9 +e2 +c3 +ae +72 +33 +9a +61 +97 +11 +9f +97 +d4 +4b +05 +d3 +f3 +6a +5a +be +0a +3f +7c +cb +db +b9 +1d +24 +b2 +58 +56 +46 +2a +64 +9b +6c +1d +46 +ae +6e +05 +e9 +99 +27 +4d +a9 +23 +9e +67 +45 +25 +a5 +22 +f6 +14 +1c +b9 +5d +e9 +6b +93 +b3 +9f +0f +7d +09 +0d +4b +1c +05 +46 +ef +6f +c3 +fd +08 +e9 +0b +22 +8f +65 +7a +f3 +1e +b9 +33 +c9 +cf +ce +63 +4a +f6 +bf +82 +0d +5e +18 +5f +31 +57 +ef +bc +92 +6a +8a +e4 +20 +f2 +93 +00 +51 +3b +af +30 +23 +6c +c1 +14 +47 +e7 +4a +ed +4e +26 +27 +99 +d7 +7a +5c +f2 +2b +0a +7d +a1 +26 +42 +25 +fc +d6 +8c +f0 +76 +70 +bb +f5 +b0 +4f +31 +73 +d6 +14 +2d +c9 +42 +6d +90 +06 +dd +ed +c5 +d5 +94 +43 +a1 +1c +8d +20 +45 +3c +28 +67 +c1 +04 +34 +ab +6b +05 +b4 +f0 +b4 +67 +b6 +7a +42 +03 +03 +7c +16 +ea +72 +09 +45 +de +47 +41 +02 +e1 +68 +d5 +f7 +9d +7f +53 +0f +61 +d6 +b7 +97 +3e +d6 +45 +7e +87 +7f +b2 +b4 +5e +32 +1d +ed +8f +fd +30 +36 +82 +59 +b3 +ea +60 +b4 +cf +9d +11 +c5 +a0 +08 +7f +27 +ed +40 +d5 +36 +5c +3d +0b +8b +a2 +e8 +cd +ea +59 +af +a3 +51 +49 +97 +04 +88 +ce +a9 +e0 +7c +94 +34 +92 +3e +96 +e6 +a9 +9c +f3 +a0 +be +11 +01 +6a +86 +dc +9e +aa +53 +9f +ec +bd +dc +6c +fd +59 +7a +28 +ae +ca +e2 +75 +72 +34 +34 +01 +94 +f4 +fa +c7 +e5 +a2 +04 +82 +13 +82 +d5 +92 +8c +8e +03 +58 +33 +c7 +ca +d4 +9b +ba +43 +04 +e8 +26 +d5 +c0 +24 +c7 +cc +a2 +ac +f9 +5c +6c +bb +d6 +8c +38 +48 +55 +4a +85 +56 +95 +c2 +48 +ad +d5 +0c +87 +da +e4 +a4 +9d +11 +cd +bc +7c +75 +7a +b1 +e0 +0b +8f +d2 +1e +78 +54 +a8 +97 +dc +21 +b4 +0f +08 +7b +3d +fb +13 +17 +73 +d9 +d8 +74 +01 +e5 +d5 +01 +7a +b1 +f8 +64 +30 +f8 +89 +ff +66 +cc +9e +04 +be +86 +3e +7e +38 +ad +52 +7e +76 +44 +c8 +ce +93 +d0 +bc +2e +25 +5c +dc +3b +e2 +d3 +78 +4e +d0 +c1 +26 +49 +f5 +fe +bb +ab +ac +0c +8e +4c +91 +7c +8b +ef +29 +77 +5f +a3 +db +1e +a2 +3f +ed +dc +60 +95 +39 +c2 +33 +54 +dc +e7 +22 +ae +e7 +1c +45 +40 +7b +34 +da +00 +6f +24 +45 +2e +a0 +5e +76 +6e +6b +5d +ca +c9 +37 +ef +74 +3a +a9 +08 +a7 +b7 +cf +2f +3e +d8 +93 +1c +61 +cd +d3 +43 +df +df +6c +58 +8d +1b +1f +40 +99 +ba +5b +e5 +3e +76 +91 +09 +96 +60 +87 +74 +63 +c4 +31 +0a +36 +76 +7e +e2 +7e +0d +bd +31 +32 +ac +f6 +88 +84 +21 +e1 +01 +2e +df +38 +3d +4e +ec +96 +43 +e8 +a1 +0b +50 +e1 +05 +27 +c5 +a1 +47 +44 +58 +b3 +5e +54 +b8 +41 +fc +02 +59 +9e +d0 +7c +19 +01 +54 +52 +5c +47 +b8 +5e +69 +b0 +9e +82 +08 +dc +f3 +6f +7e +38 +d9 +f1 +09 +0b +8d +af +0a +32 +4d +7c +b4 +8a +ce +08 +da +c1 +1b +e4 +60 +58 +5d +ba +90 +61 +ab +e7 +ef +72 +43 +43 +a4 +ba +f1 +c7 +40 +90 +e8 +d7 +91 +86 +48 +d0 +dd +c4 +37 +43 +bc +03 +1e +ec +9e +3a +29 +12 +d8 +70 +f5 +0e +dc +db +6e +29 +24 +56 +c4 +00 +00 +6e +f6 +5e +b2 +c2 +4e +03 +8c +a3 +dd +f9 +75 +e2 +a2 +61 +1a +8b +18 +7e +33 +e5 +2a +ad +dc +11 +9e +f9 +e6 +40 +3c +61 +92 +4a +7c +f2 +29 +f6 +61 +9e +f9 +ba +ce +ee +7c +04 +f2 +67 +59 +96 +17 +4c +93 +80 +78 +f5 +0c +ca +f6 +d6 +58 +0f +ce +d0 +15 +64 +72 +3d +29 +79 +b3 +3b +77 +f6 +89 +95 +1b +7c +77 +b6 +50 +e4 +8a +84 +08 +53 +93 +26 +12 +c0 +80 +f9 +b5 +5b +fc +78 +de +64 +1e +09 +02 +c5 +50 +3b +2f +6c +c4 +50 +66 +47 +71 +b9 +4d +55 +90 +95 +7b +66 +9e +a0 +8b +96 +f3 +68 +e1 +1e +b9 +05 +42 +7e +26 +50 +ed +18 +5d +60 +03 +ab +70 +4e +23 +88 +93 +00 +cd +d9 +20 +06 +0d +39 +34 +b4 +40 +74 +78 +3d +b3 +97 +17 +28 +38 +c9 +be +31 +8b +5f +89 +20 +58 +e6 +7d +9e +c9 +40 +19 +87 +0d +75 +82 +29 +e6 +30 +18 +cd +85 +d4 +49 +2e +0e +b8 +c0 +a9 +0d +3a +66 +6e +76 +16 +dd +ab +33 +16 +01 +ec +96 +11 +57 +29 +29 +ee +74 +bc +e8 +d3 +bf +b8 +a7 +08 +85 +8f +db +f6 +61 +be +a1 +f0 +92 +7f +6e +51 +92 +a8 +61 +51 +fd +03 +b0 +01 +93 +6c +82 +da +6d +8c +14 +7a +1a +f2 +e9 +1b +22 +a4 +02 +ce +75 +8f +d7 +43 +22 +6a +87 +0f +3e +36 +35 +23 +1a +39 +0a +20 +c6 +ae +e1 +72 +81 +89 +79 +dc +c4 +db +5e +8b +d9 +80 +2b +c5 +c0 +bf +fd +a3 +5c +28 +8d +02 +7c +ba +de +7d +61 +59 +96 +87 +9a +09 +29 +2b +b3 +ca +2c +97 +20 +e7 +41 +e5 +19 +59 +d8 +18 +c9 +df +69 +03 +bb +71 +1a +93 +ba +67 +b8 +45 +39 +7d +d1 +d5 +78 +c6 +b9 +37 +f8 +c3 +ee +e4 +67 +50 +46 +f3 +c3 +00 +4a +b1 +04 +a4 +36 +c5 +51 +35 +2e +70 +d5 +17 +9c +43 +ce +48 +c5 +ee +71 +07 +44 +de +45 +96 +b3 +c4 +cd +b1 +21 +81 +d0 +d9 +6a +c0 +ec +69 +aa +14 +51 +15 +9f +ab +cf +3f +b8 +89 +98 +09 +ae +cc +4d +4f +09 +7e +86 +b4 +b7 +35 +21 +5c +89 +d1 +3b +0d +af +e7 +5d +f0 +02 +0b +22 +be +f4 +97 +3b +45 +7f +54 +8b +4a +89 +98 +df +f7 +92 +32 +ec +44 +69 +51 +aa +7e +bc +92 +21 +2b +ae +1a +06 +f7 +82 +be +99 +25 +a5 +32 +e1 +0d +d0 +2a +ad +a8 +94 +87 +66 +c4 +27 +ed +5a +57 +99 +36 +eb +bf +5c +7a +2c +97 +62 +fd +bf +e1 +4c +70 +b2 +c0 +11 +83 +78 +ac +d6 +44 +05 +6f +ec +83 +c7 +74 +b5 +48 +67 +e3 +88 +9c +2a +f1 +17 +66 +10 +86 +aa +5a +bd +c1 +bd +1b +e4 +1c +0f +66 +34 +3e +0e +c5 +17 +a7 +a5 +98 +49 +b2 +b5 +a3 +7a +99 +0c +e4 +48 +7b +09 +8d +bd +d9 +17 +8b +28 +84 +11 +f4 +37 +36 +54 +c8 +73 +ee +8e +d0 +18 +15 +6b +b3 +40 +11 +53 +b0 +96 +f8 +53 +aa +14 +c3 +65 +b2 +c3 +21 +54 +13 +eb +ce +8d +c0 +7c +4b +af +dd +02 +61 +3e +16 +59 +05 +6a +4d +01 +0e +97 +0b +38 +dc +7e +10 +07 +24 +03 +d8 +c9 +62 +2e +eb +f4 +03 +0b +6a +b6 +40 +f7 +02 +2d +5c +2c +93 +8c +0c +a2 +15 +6b +c1 +61 +64 +b2 +32 +06 +63 +de +1f +90 +4a +5c +0d +9f +63 +d4 +6e +b4 +13 +08 +1c +80 +9a +f2 +cb +c2 +47 +d2 +6b +b6 +cb +74 +c5 +80 +22 +cb +c9 +b7 +d6 +0b +17 +d0 +32 +55 +e7 +36 +02 +4b +61 +46 +ab +9f +1c +1c +6d +64 +8b +9f +df +25 +6a +60 +2b +7c +46 +9d +a0 +4b +ff +b6 +b7 +35 +57 +28 +a0 +53 +08 +b9 +33 +6a +49 +a1 +52 +2d +7e +7e +e0 +ad +2f +d2 +47 +2b +b9 +cf +88 +2a +48 +51 +f5 +ba +5b +43 +3d +ef +66 +6f +b0 +bf +ed +43 +58 +af +df +5b +60 +05 +05 +1e +74 +c1 +62 +44 +f4 +57 +92 +88 +a0 +da +8c +2f +49 +59 +8f +74 diff --git a/sync_rtl/top/TB/vectors/enc_k4_c0_ek.hex b/sync_rtl/top/TB/vectors/enc_k4_c0_ek.hex new file mode 100644 index 0000000..e4a4a81 --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k4_c0_ek.hex @@ -0,0 +1,1568 @@ +a8 +12 +2f +37 +6b +3f +5d +35 +52 +63 +eb +a5 +22 +c4 +39 +95 +04 +4b +ec +a7 +8b +9b +a9 +92 +4b +87 +03 +54 +90 +ae +78 +a9 +4d +52 +3c +7b +a5 +88 +a3 +86 +eb +49 +bf +65 +2f +df +12 +71 +63 +73 +18 +7a +1c +a0 +47 +cc +61 +38 +62 +7a +ae +ab +8f +6c +eb +bf +87 +a1 +76 +b8 +6c +9f +7f +09 +3c +8f +5b +0b +dc +14 +73 +99 +e8 +39 +ae +73 +70 +38 +d0 +bd +01 +42 +36 +9f +9c +9d +46 +b2 +5b +9a +e5 +40 +b8 +00 +23 +d5 +d7 +57 +e7 +6b +3f +dd +30 +64 +dd +2b +44 +cd +06 +b4 +43 +69 +27 +71 +47 +b6 +15 +65 +4b +32 +50 +44 +e1 +bc +60 +6f +a6 +29 +05 +5a +2e +6a +4b +02 +b2 +f1 +b1 +aa +98 +a6 +93 +91 +c9 +1b +d9 +8f +10 +58 +aa +18 +d9 +01 +9d +db +b6 +dc +e6 +0a +07 +0b +ad +4b +ec +3d +f3 +7a +0d +4d +da +84 +10 +28 +88 +30 +e9 +ae +50 +98 +80 +a0 +2b +24 +8e +1b +ba +8e +db +1c +c5 +20 +51 +7c +11 +b6 +4d +68 +cc +00 +c6 +94 +75 +a2 +a2 +d9 +c5 +6a +27 +73 +a0 +24 +24 +b2 +be +f1 +7d +df +b4 +c4 +cc +50 +3d +05 +c8 +88 +94 +65 +79 +e4 +02 +7d +bf +8a +89 +37 +0c +74 +fa +66 +c8 +a3 +25 +c2 +34 +29 +63 +99 +4c +20 +2f +a0 +51 +79 +35 +2f +92 +a1 +86 +30 +82 +28 +92 +15 +1a +7b +8b +16 +3e +ea +68 +5c +2c +4f +02 +60 +15 +fe +e7 +82 +f1 +c5 +3c +a5 +73 +80 +7a +fc +6b +c7 +66 +be +00 +87 +96 +fb +b9 +06 +e9 +e1 +ab +d1 +cc +84 +5f +60 +42 +3f +09 +78 +df +89 +92 +4a +a1 +18 +a2 +b4 +1c +7f +45 +83 +08 +e8 +7b +19 +0a +27 +00 +2b +a7 +f7 +73 +cb +65 +ec +87 +16 +5a +65 +30 +a0 +97 +1a +75 +20 +69 +a4 +2a +fb +d2 +71 +e1 +e2 +36 +fc +15 +5a +ef +f7 +59 +ec +76 +25 +51 +e5 +bc +df +3a +66 +d6 +a9 +af +92 +b4 +ce +14 +a2 +9e +d4 +10 +cf +72 +a8 +08 +e9 +0c +81 +a4 +60 +74 +61 +10 +59 +80 +23 +91 +00 +6c +52 +c5 +99 +45 +19 +71 +8a +84 +f4 +45 +e8 +d9 +c3 +c6 +61 +6e +02 +68 +b2 +e1 +d5 +af +48 +b0 +91 +c6 +05 +3b +74 +77 +74 +0f +ea +36 +18 +53 +36 +4d +e6 +42 +a4 +4b +83 +36 +42 +35 +b6 +a8 +65 +03 +78 +78 +07 +4b +37 +40 +0c +82 +59 +17 +94 +a0 +90 +55 +d5 +b3 +4a +9f +18 +6e +15 +74 +cc +b3 +84 +8f +4b +62 +00 +16 +d8 +07 +b9 +45 +48 +5b +c4 +c9 +e1 +76 +44 +fe +a6 +5f +53 +45 +c8 +62 +d8 +3a +a1 +a4 +cd +1b +67 +64 +09 +fa +54 +5c +57 +12 +61 +3c +26 +7b +80 +44 +7d +f0 +8c +87 +e5 +32 +bd +77 +50 +0c +14 +b0 +8d +7a +c0 +0d +c7 +c2 +fa +50 +b1 +b5 +c2 +6d +27 +dc +a7 +4a +d4 +1f +9b +07 +61 +42 +63 +21 +a9 +b3 +a9 +92 +a4 +c3 +fa +15 +10 +21 +bc +2d +17 +c8 +8f +aa +b7 +27 +4e +65 +cc +23 +d2 +83 +ab +55 +a9 +51 +49 +58 +72 +45 +5b +cc +e8 +06 +a9 +e8 +03 +c2 +d9 +b5 +66 +a6 +ad +de +bb +78 +12 +0b +a9 +36 +1c +a9 +b8 +b1 +03 +23 +f6 +82 +cc +5b +91 +31 +d4 +4f +26 +25 +01 +ed +86 +1c +86 +6c +9e +31 +d0 +97 +89 +f8 +1d +c3 +c7 +73 +a4 +46 +4c +4c +c9 +c4 +cb +83 +8b +9b +db +16 +ff +26 +22 +7a +98 +71 +c5 +77 +34 +b5 +c5 +9c +27 +e7 +7f +06 +1a +7b +56 +96 +32 +96 +f4 +8a +e5 +8a +85 +e3 +40 +63 +aa +f6 +44 +fe +e4 +17 +8b +3a +96 +47 +19 +1c +4f +02 +23 +56 +cc +5b +17 +e2 +47 +64 +4a +80 +9b +e0 +c0 +4c +a5 +7d +f1 +db +bc +af +1c +2b +16 +45 +21 +7a +61 +5b +98 +aa +04 +8c +a4 +8a +d7 +25 +4f +5b +85 +92 +49 +06 +6a +bf +6a +33 +d5 +95 +21 +b0 +7c +c6 +84 +a1 +ac +23 +08 +91 +01 +c8 +0d +fa +cb +82 +09 +44 +45 +d3 +35 +8e +6e +b6 +46 +1c +f6 +14 +cb +c2 +22 +48 +25 +9e +d1 +9a +b0 +d6 +49 +8f +3f +20 +c6 +60 +e9 +aa +5a +e8 +77 +d2 +97 +36 +11 +a3 +77 +b1 +48 +60 +f9 +39 +84 +08 +57 +5a +f5 +18 +19 +93 +68 +83 +d0 +80 +21 +8a +b0 +ac +af +bb +63 +9a +30 +19 +a3 +88 +78 +a4 +5a +12 +64 +b3 +0f +70 +9c +46 +a3 +fa +5e +2d +57 +1f +8f +59 +4d +3b +a9 +0c +43 +28 +13 +b7 +80 +05 +e1 +d2 +0b +72 +55 +1f +87 +e9 +78 +fc +d8 +48 +7b +b5 +84 +a4 +e9 +7a +66 +a0 +58 +a9 +a7 +50 +d1 +5c +47 +99 +19 +c8 +1e +d2 +35 +80 +3b +8a +65 +7a +8e +08 +80 +4f +8c +10 +9f +8d +d1 +60 +74 +12 +4d +f2 +2b +0c +4b +27 +6d +2a +c8 +65 +b5 +5a +53 +8d +73 +82 +62 +26 +21 +6b +a2 +1e +c7 +36 +8f +30 +c6 +38 +e3 +f2 +01 +28 +8a +23 +c2 +86 +1c +3c +88 +59 +9f +90 +27 +12 +0b +0d +d7 +57 +5a +88 +55 +c5 +41 +15 +54 +f6 +99 +b4 +7e +c6 +67 +a3 +b2 +a6 +2f +82 +8b +24 +58 +96 +51 +30 +12 +6f +29 +b7 +52 +52 +05 +ef +33 +5d +47 +40 +02 +0a +61 +c9 +c7 +42 +aa +3b +e0 +04 +8e +ac +3a +a6 +9b +7d +9a +18 +84 +6e +54 +98 +e6 +6b +8e +d5 +50 +cd +bd +91 +bb +e0 +d0 +48 +23 +47 +bf +c3 +99 +64 +f3 +f6 +3c +f4 +96 +7e +a9 +32 +14 +18 +c3 +77 +b8 +26 +2e +63 +22 +5e +17 +62 +1f +fe +a4 +66 +a6 +33 +5e +82 +20 +59 +e4 +6a +8a +5e +b1 +6f +f3 +21 +b3 +a0 +43 +58 +8c +0b +b6 +e5 +d2 +b4 +f3 +a8 +c1 +00 +b0 +5b +f2 +71 +55 +23 +43 +3d +ba +b5 +04 +91 +21 +6b +9c +dc +2d +52 +6a +ae +3b +d2 +18 +40 +4c +33 +be +ba +95 +97 +19 +b4 +8c +c9 +ae +47 +53 +51 +2b +17 +1c +75 +76 +3b +38 +fb +4d +dc +a8 +27 +50 +ab +b5 +05 +b8 +c3 +fc +51 +9e +75 +36 +56 +0d +63 +9e +f2 +47 +69 +53 +b7 +bd +79 +66 +c1 +3b +d0 +9e +8a +f1 +7a +54 +2a +b4 +92 +71 +51 +ad +4a +46 +e8 +84 +3c +05 +55 +91 +e7 +8c +a8 +b4 +e5 +95 +68 +22 +81 +5a +3c +98 +ef +f1 +b9 +cc +49 +ae +a0 +6b +cd +24 +f9 +c7 +09 +41 +a3 +d3 +f0 +81 +0d +e2 +5a +fc +15 +4d +d7 +60 +69 +f2 +c2 +c3 +67 +bb +52 +a2 +c3 +09 +cc +f1 +70 +8d +51 +4d +3f +87 +1c +c4 +e3 +ba +fe +91 +54 +9b +44 +bb +f4 +b2 +4c +55 +25 +a1 +9b +b6 +ab +d5 +0c +69 +34 +07 +85 +1e +1a +76 +32 +88 +3f +78 +3a +08 +e5 +48 +3e +7c +a7 +87 +6e +4b +28 +89 +41 +7d +7e +c1 +47 +e8 +62 +4e +4c +83 +b8 +bb +56 +bd +ef +29 +aa +47 +a5 +73 +50 +34 +b4 +8b +eb +8c +36 +c6 +22 +3f +18 +45 +02 +ec +b3 +f8 +07 +2d +61 +e4 +1c +c8 +a2 +17 +84 +a2 +4b +e3 +c6 +52 +f2 +d6 +97 +a5 +a2 +8a +d6 +05 +cb +f0 +cb +1f +92 +8a +25 +a1 +3a +99 +33 +70 +04 +81 +f3 +41 +b2 +a3 +c2 +79 +02 +1e +d2 +d7 +01 +30 +36 +99 +aa +b1 +2d +f4 +88 +63 +03 +d3 +b3 +e2 +94 +93 +41 +b5 +77 +f8 +5a +c3 +26 +28 +4a +85 +f2 +49 +49 +76 +79 +0e +76 +2e +c5 +1c +1a +88 +fa +a2 +f5 +e0 +3c +0f +ab +44 +e3 +99 +73 +53 +74 +50 +2f +00 +29 +cf +db +74 +e9 +e1 +51 +72 +63 +65 +42 +62 +32 +0f +f3 +c1 +5f +f4 +80 +67 +c7 +01 +df +84 +36 +50 +73 +73 +fd +c7 +a4 +75 +f1 +3d +96 +1a +45 +71 +8b +a1 +a4 +b5 +6f +02 +d0 +09 +50 +30 +19 +4a +5c +b3 +48 +38 +72 +83 +87 +a3 +3a +31 +05 +61 +e7 +3d +18 +c2 +af +34 +11 +63 +84 +87 +9c +fd +2c +70 +aa +e0 +40 +0e +ec +2b +d6 +67 +c2 +a4 +c5 +a0 +51 +e6 +43 +c7 +d8 +ae +8d +1b +ab +43 +52 +b9 +bd +27 +b3 +e6 +47 +25 +9b +b1 +cc +cb +23 +04 +d7 +25 +cb +2e +73 +c6 +71 +8b +5a +bc +88 +80 +09 +49 +b2 +c1 +d0 +3f +15 +9f +bf +39 +6a +dc +a8 +52 +6f +1b +47 +6f +80 +fe +91 +c1 +33 +08 +d6 +45 diff --git a/sync_rtl/top/TB/vectors/enc_k4_c0_m.hex b/sync_rtl/top/TB/vectors/enc_k4_c0_m.hex new file mode 100644 index 0000000..9df0430 --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k4_c0_m.hex @@ -0,0 +1,32 @@ +20 +a7 +b7 +e1 +0f +70 +49 +6c +c3 +82 +20 +b9 +44 +de +f6 +99 +bf +14 +d1 +4e +55 +cf +4c +90 +a1 +2c +1b +33 +fc +80 +ff +ff diff --git a/sync_rtl/top/TB/vectors/enc_k4_c0_ss.hex b/sync_rtl/top/TB/vectors/enc_k4_c0_ss.hex new file mode 100644 index 0000000..02a4b82 --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k4_c0_ss.hex @@ -0,0 +1,32 @@ +23 +f2 +11 +b8 +4a +6e +e2 +0c +8c +29 +f6 +e5 +31 +4c +91 +b4 +14 +e9 +40 +51 +3d +38 +0a +dd +17 +bd +72 +4a +b3 +a1 +3a +52 diff --git a/sync_rtl/top/TB/vectors/enc_k4_c1_ct.hex b/sync_rtl/top/TB/vectors/enc_k4_c1_ct.hex new file mode 100644 index 0000000..583ba92 --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k4_c1_ct.hex @@ -0,0 +1,1568 @@ +fc +06 +34 +59 +b7 +ba +4d +7a +97 +70 +21 +e6 +1c +26 +e6 +4c +0c +5d +e2 +e0 +8d +72 +f5 +8c +35 +67 +05 +28 +6a +36 +b1 +23 +ba +da +21 +d2 +06 +7f +91 +e5 +13 +55 +46 +31 +d6 +8f +b3 +14 +ce +44 +37 +93 +e1 +2a +cc +a0 +b5 +ad +d2 +e0 +d5 +16 +c7 +6f +9a +4b +21 +71 +65 +75 +aa +ae +1f +8f +86 +8a +97 +fc +65 +4b +e4 +d6 +2c +02 +74 +6a +59 +61 +fd +5c +94 +80 +a4 +23 +c2 +49 +f8 +10 +a9 +1b +c5 +bf +97 +83 +3b +57 +2e +f5 +d7 +bc +87 +77 +9c +19 +80 +aa +9e +84 +4f +11 +f0 +b9 +a9 +fc +52 +1d +c9 +c3 +88 +f8 +21 +d8 +dc +61 +52 +9c +d5 +e8 +b9 +08 +2a +4a +9f +48 +7a +df +db +70 +28 +3c +15 +82 +b9 +85 +96 +7c +97 +34 +20 +cb +67 +71 +c5 +9f +74 +e7 +65 +80 +8c +ae +6a +5f +0c +bc +14 +8e +d1 +65 +ef +2a +cd +16 +15 +74 +df +fc +e4 +83 +cb +f4 +b9 +71 +13 +ca +90 +d2 +00 +56 +6b +93 +44 +49 +ec +f0 +84 +7d +3b +95 +e7 +fa +8f +3a +a9 +2e +68 +a8 +31 +3d +90 +17 +81 +c9 +a6 +fd +83 +2d +99 +1d +5f +02 +c1 +46 +b0 +f6 +ab +c7 +e5 +f0 +7c +5e +3a +d9 +96 +59 +01 +c0 +77 +68 +05 +01 +0a +5c +10 +e1 +90 +15 +39 +76 +2d +56 +5c +c7 +e6 +46 +fa +60 +0c +2d +75 +2f +f7 +9f +0f +9c +32 +af +c9 +2d +c7 +25 +b4 +97 +79 +a5 +61 +00 +54 +db +a7 +13 +ae +84 +39 +f6 +52 +7b +b6 +88 +6d +da +ae +07 +1a +b1 +59 +ea +b1 +87 +a4 +19 +6e +4e +b0 +55 +37 +4e +eb +4c +76 +3e +d3 +b0 +c7 +7e +d5 +b4 +a9 +72 +c4 +8d +f7 +3e +c5 +5c +51 +a6 +ed +90 +bc +0a +7d +b4 +6e +8e +ac +e0 +89 +66 +7a +1e +57 +42 +63 +c8 +6f +4d +ae +a6 +73 +dc +68 +ca +4f +24 +a8 +cb +c1 +6b +b4 +02 +e7 +a7 +5f +1e +79 +b7 +39 +24 +71 +65 +b2 +95 +fb +9f +67 +82 +89 +da +6f +3e +a5 +ff +64 +40 +cb +b0 +39 +de +ed +50 +ca +18 +81 +b1 +56 +c6 +e7 +6c +04 +69 +4a +c9 +2b +fc +64 +f0 +60 +34 +73 +8c +11 +6c +8a +83 +e4 +d0 +39 +2e +1e +ce +fb +e4 +3c +17 +7f +98 +01 +6f +74 +e1 +68 +42 +a9 +2c +76 +9c +de +c7 +54 +34 +b8 +5f +77 +61 +12 +28 +da +b3 +e1 +e2 +3c +6d +98 +d2 +4a +1f +eb +84 +e2 +2b +91 +bc +da +32 +c1 +a9 +d2 +5e +b3 +10 +4d +35 +68 +ec +0b +cf +22 +d5 +3b +ce +95 +56 +08 +f6 +d5 +9f +f0 +f1 +e2 +7a +27 +a5 +71 +c8 +1e +55 +45 +07 +74 +0f +9e +33 +41 +65 +f2 +14 +3d +ad +50 +57 +b3 +a0 +fb +84 +ba +57 +12 +38 +eb +95 +24 +d3 +bb +d5 +99 +b1 +dd +5c +fb +a6 +3a +95 +19 +72 +31 +55 +a9 +16 +30 +92 +bc +d0 +c0 +c0 +d2 +bd +d1 +fc +6b +4f +b6 +30 +b3 +f6 +74 +f6 +57 +54 +b6 +0a +9f +e2 +38 +d3 +c8 +b9 +7e +74 +58 +36 +67 +99 +10 +07 +cd +2c +27 +14 +bf +a1 +5b +93 +9f +1d +4b +01 +70 +f3 +9d +fa +95 +4c +9f +4b +d9 +ee +6d +bb +19 +64 +17 +f9 +a8 +66 +61 +c3 +3f +1f +2e +e9 +3f +9f +3f +ee +3a +9b +3a +a8 +a4 +2b +ba +e0 +1d +92 +fe +59 +36 +d1 +96 +78 +0f +31 +88 +5e +2c +15 +16 +ab +a7 +ba +a1 +3f +01 +88 +32 +b4 +28 +50 +23 +b5 +3b +11 +53 +bc +c8 +44 +bf +35 +7e +18 +a0 +c2 +3d +3f +88 +57 +db +10 +70 +25 +a3 +cd +f2 +c1 +33 +8c +3b +87 +2e +f5 +3f +bc +a7 +4e +25 +78 +32 +b7 +0d +18 +66 +ff +b6 +1f +4a +e6 +d8 +4c +2a +59 +92 +50 +de +a3 +8f +a3 +65 +b0 +45 +c3 +99 +cf +57 +a0 +b3 +55 +cb +eb +b1 +a5 +ab +b2 +bc +21 +03 +55 +04 +04 +70 +d1 +59 +45 +02 +3b +61 +96 +bf +4e +6e +8e +39 +c7 +21 +69 +af +d1 +21 +92 +c1 +a2 +e8 +1f +4d +99 +b4 +a8 +90 +8f +4d +fc +a3 +86 +9a +e2 +d5 +9d +70 +ff +4d +f1 +0e +b2 +ba +7f +86 +2b +f5 +fb +a1 +b6 +ff +20 +50 +f6 +c4 +f9 +02 +9f +07 +e9 +3b +01 +f4 +10 +d3 +c0 +1f +a8 +dc +1b +26 +10 +98 +42 +c8 +fe +c6 +17 +54 +34 +48 +fc +38 +b6 +7d +62 +ad +2c +9d +8f +40 +ed +40 +0f +b1 +e2 +c1 +28 +5f +c8 +07 +07 +5a +7b +29 +de +be +51 +e7 +7d +55 +d3 +2f +2c +eb +2e +da +0a +df +24 +ab +89 +55 +67 +85 +18 +b8 +df +b7 +38 +ff +a5 +d2 +16 +dc +74 +fa +24 +b9 +5a +13 +65 +e9 +80 +59 +cc +de +90 +67 +3a +c1 +8d +dc +7c +51 +58 +3f +b0 +10 +23 +f1 +ed +42 +27 +10 +1b +ae +46 +95 +2d +33 +c1 +d6 +1a +05 +ce +13 +0e +0e +d0 +96 +77 +b1 +15 +48 +66 +bc +19 +0d +e0 +ff +74 +08 +41 +12 +63 +67 +53 +72 +3b +7f +fa +29 +57 +93 +f3 +8b +1d +a6 +af +99 +a6 +26 +46 +f4 +a2 +34 +ab +da +5a +3e +18 +e0 +f7 +6f +64 +35 +b8 +e2 +44 +5d +41 +9b +d2 +e3 +92 +34 +ba +21 +f1 +f5 +6e +37 +29 +94 +83 +eb +d4 +b4 +49 +5d +f6 +e4 +ce +20 +46 +eb +37 +b1 +5c +8c +60 +55 +7f +2f +86 +aa +63 +eb +70 +3f +aa +28 +03 +d6 +4f +97 +d9 +f3 +f7 +de +3b +f2 +13 +94 +b9 +79 +be +6e +c1 +70 +7a +fd +e3 +6c +6c +23 +4c +ad +9f +49 +74 +88 +45 +af +ca +60 +b8 +17 +1f +f6 +1e +7a +7b +af +5c +b5 +28 +a9 +0d +8d +27 +d2 +65 +03 +90 +18 +a7 +7e +9a +64 +36 +03 +29 +1b +86 +99 +14 +9c +d1 +9f +6e +4c +1c +54 +8e +cf +17 +3f +6b +03 +09 +7e +d3 +e6 +68 +67 +ae +b6 +ea +cf +17 +93 +0a +c9 +0c +8c +da +e4 +d8 +09 +a9 +ed +76 +19 +f2 +5c +95 +2e +ba +38 +6a +b8 +e9 +0a +3f +9d +da +86 +6b +51 +43 +10 +e3 +8c +39 +bb +3c +b8 +63 +e0 +1e +ce +b4 +9f +c9 +83 +9a +74 +f0 +0f +e0 +3b +11 +51 +22 +f1 +9d +bb +99 +5c +9d +28 +38 +ce +c6 +5b +bc +1b +6d +eb +d1 +86 +95 +66 +f9 +3a +43 +be +fd +49 +aa +39 +de +ff +63 +ee +19 +0e +7e +41 +ee +f6 +b1 +c5 +24 +c8 +72 +8c +09 +86 +a8 +31 +71 +1c +97 +26 +e4 +05 +ca +a3 +c2 +5a +d6 +81 +99 +63 +ee +a7 +47 +49 +40 +6d +1f +fd +1c +ce +1d +9d +e6 +fd +37 +09 +0e +e2 +3f +cc +9b +3a +ed +4e +6d +12 +00 +8b +09 +04 +67 +9e +5c +62 +0f +9b +4c +70 +06 +2b +d1 +d4 +3c +51 +9e +aa +a3 +b1 +57 +cc +52 +bd +e0 +bb +b9 +6d +25 +c5 +f1 +62 +5c +7b +4d +b8 +52 +e8 +c3 +f8 +a2 +c8 +e3 +12 +ae +0a +2c +48 +10 +14 +72 +3c +0b +8a +88 +e3 +c1 +36 +59 +1b +15 +2c +77 +cf +52 +10 +39 +31 +ae +8d +79 +09 +7b +bb +b1 +63 +7d +69 +f4 +67 +6a +78 +4b +b8 +ef +00 +9e +49 +a7 +8d +66 +a7 +0f +0f +e6 +b4 +63 +7e +9d +46 +f2 +a4 +e5 +1b +aa +a6 +64 +58 +d9 +41 +ae +90 +d0 +13 +0b +7c +92 +ff +0c +35 +4b +16 +57 +64 +6b +5f +03 +3f +6a +01 +02 +47 +6e +e2 +fd +c7 +72 +34 +d9 +fd +05 +0e +92 +59 +d6 +85 +22 +c5 +2b +c4 +d8 +0b +ca +72 +e5 +63 +86 +0d +18 +32 +af +bd +00 +23 +ac +94 +23 +64 +a8 +9f +b4 +a2 +6e +15 +47 +45 +ca +93 +55 +b9 +02 +be +ef +b3 +05 +57 +b4 +85 +1f +fd +b6 +21 +86 +42 +18 +bf +a4 +fd +51 +92 +14 +14 +04 +35 +e1 +d1 +4c +5f +b5 +94 +ee +be +67 +47 +56 +ca +c4 +56 +df +9b +d1 +b7 +28 +25 +4f +b4 +56 +44 +5e +6d +99 +d1 +1d +cd +7c +43 +c9 +14 +fb +3d +80 +12 +da +13 +74 +70 +63 +3d +9f +e8 +fb +e9 +48 +29 +ea +fc +9c +40 +99 +ec +3a +55 +81 +59 +92 +f1 +52 +85 +db +50 +eb +d8 +e5 +a4 +f4 +fc +72 +a9 +63 +bd +23 +9c +b4 +66 +05 +5c +93 +03 +e7 +13 +a4 +a6 +ca +99 +19 +1f +bf +66 +ca +ee +cc +3d +5e +a6 +60 +38 +e0 +c5 +d8 +6a +da +e8 +c8 +58 +1c +79 +62 +38 +49 +6a +92 +d1 +f5 diff --git a/sync_rtl/top/TB/vectors/enc_k4_c1_ek.hex b/sync_rtl/top/TB/vectors/enc_k4_c1_ek.hex new file mode 100644 index 0000000..51a3aa6 --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k4_c1_ek.hex @@ -0,0 +1,1568 @@ +f3 +e0 +43 +e5 +aa +7e +4e +62 +cb +d5 +11 +75 +48 +83 +20 +92 +eb +70 +91 +94 +2b +9a +81 +c9 +d7 +07 +39 +ff +68 +16 +42 +f6 +3f +97 +ec +48 +2a +56 +4a +0c +14 +4d +44 +90 +1d +30 +2c +cf +0d +1b +34 +17 +5b +ba +d9 +c6 +4e +15 +39 +9a +c0 +b4 +bb +95 +95 +76 +ba +b3 +cd +cb +8a +6e +c7 +83 +49 +d1 +85 +6a +f8 +78 +bb +65 +01 +53 +c2 +a0 +29 +b6 +a0 +b8 +9b +a5 +84 +a3 +e4 +3e +48 +26 +50 +c9 +15 +88 +3a +c0 +1f +8a +50 +78 +49 +39 +72 +cf +e8 +a4 +b5 +26 +0f +64 +bc +41 +d9 +3c +4d +4d +b9 +3c +43 +b7 +91 +c8 +04 +7a +6e +d0 +7b +ec +f7 +08 +ce +f2 +7b +40 +14 +c5 +9e +b8 +bb +83 +17 +7d +bf +72 +84 +ae +30 +22 +86 +ab +0b +af +a8 +09 +83 +79 +0b +e1 +2b +0c +46 +13 +76 +34 +29 +cb +7f +8c +b1 +6e +80 +0f +5b +96 +c8 +4e +40 +3f +e9 +8a +41 +4b +9c +60 +db +b9 +61 +47 +b7 +aa +61 +28 +b4 +4b +e9 +c8 +d2 +10 +68 +24 +05 +56 +bc +7c +94 +ad +0c +a2 +73 +32 +91 +13 +dc +42 +a4 +64 +ad +62 +c4 +32 +3a +17 +88 +f0 +27 +49 +40 +b2 +6a +2c +c2 +63 +f1 +08 +89 +92 +94 +3a +b7 +b3 +b0 +ea +e5 +20 +65 +ec +b7 +cb +91 +78 +39 +04 +19 +6a +69 +32 +51 +41 +60 +b7 +92 +9f +50 +06 +8a +61 +57 +9d +1b +a6 +09 +e2 +b2 +45 +ad +48 +56 +45 +ea +58 +03 +d3 +77 +25 +52 +5b +7b +31 +ac +80 +c8 +a1 +71 +02 +72 +7b +08 +34 +36 +94 +48 +64 +1a +38 +ed +e9 +89 +6b +88 +2b +7a +6b +a2 +39 +33 +75 +73 +c8 +5d +c2 +35 +5f +3e +cc +8b +af +28 +5d +c9 +40 +97 +93 +58 +44 +49 +8b +ce +09 +27 +cc +5b +18 +4f +83 +d0 +43 +ce +7b +02 +7e +07 +44 +f7 +67 +c5 +40 +65 +2f +e1 +13 +26 +68 +b4 +a3 +f0 +98 +3d +63 +0a +90 +46 +39 +a9 +7e +3a +2a +4e +d8 +1e +7c +31 +01 +3e +a7 +a4 +27 +38 +81 +34 +16 +3c +94 +21 +11 +37 +c0 +18 +5f +d7 +6f +4f +6b +a7 +24 +b4 +cb +0e +b9 +57 +ca +1a +6d +8b +ea +4e +93 +23 +a9 +23 +c2 +88 +1a +a1 +78 +a9 +a9 +95 +f2 +75 +71 +13 +02 +92 +6a +0c +9c +0a +d6 +93 +83 +61 +2a +58 +b7 +a9 +79 +cb +39 +8b +18 +b1 +f5 +d1 +7c +9b +88 +1c +50 +f4 +be +f4 +17 +20 +f7 +d3 +8e +dd +32 +74 +f6 +fa +8b +e5 +93 +5b +1e +f3 +37 +39 +d8 +07 +7c +d7 +59 +35 +24 +0d +37 +b1 +b2 +09 +a0 +62 +09 +f4 +89 +fd +f2 +c3 +f8 +b5 +73 +85 +58 +ca +2d +24 +44 +eb +cb +4e +88 +9c +a0 +14 +33 +25 +05 +51 +9b +fd +ab +36 +ca +20 +65 +fd +a8 +92 +87 +32 +62 +4e +03 +5d +12 +68 +3c +dc +d5 +18 +6b +96 +12 +32 +d1 +5b +46 +78 +c5 +1b +2b +21 +12 +a9 +38 +20 +39 +85 +e9 +a0 +b0 +e7 +01 +b5 +2a +8c +53 +86 +24 +60 +8b +51 +bd +66 +f0 +29 +8c +79 +8f +4a +d2 +3a +c9 +d9 +58 +f6 +44 +17 +cd +69 +45 +e8 +b7 +ae +cd +48 +94 +30 +d3 +33 +37 +79 +03 +69 +e6 +59 +e9 +06 +c9 +f4 +0b +93 +54 +ea +29 +7f +dc +36 +97 +59 +19 +55 +17 +05 +a5 +9b +69 +51 +01 +36 +2f +b0 +a9 +4a +d2 +8e +d1 +32 +bd +55 +21 +58 +4f +b7 +6a +43 +f1 +c4 +a7 +45 +47 +d9 +16 +7d +9c +88 +b7 +b2 +c0 +a2 +18 +1c +4a +eb +08 +a8 +cd +4b +60 +d8 +a7 +bd +71 +67 +c0 +16 +e1 +a8 +fd +8b +38 +00 +46 +30 +12 +44 +78 +d4 +c0 +15 +3d +5b +5f +94 +09 +98 +ae +c7 +4a +43 +f3 +37 +ae +d4 +bf +cb +13 +5a +8a +9a +0f +b8 +6a +1a +ca +94 +b9 +b1 +c6 +35 +e5 +a3 +09 +a4 +07 +2b +94 +43 +2b +b4 +1a +67 +69 +05 +47 +4f +ea +54 +95 +64 +4f +24 +31 +44 +b6 +46 +ad +15 +45 +80 +ec +00 +5f +f8 +c3 +8a +eb +66 +0b +ff +d9 +0d +2a +7a +8c +b2 +e0 +85 +8b +e3 +1b +be +76 +28 +9b +66 +9e +23 +c9 +ca +2f +bc +bb +79 +59 +65 +ca +55 +1b +28 +76 +88 +71 +84 +95 +5f +b8 +9f +c0 +b7 +47 +0d +60 +95 +9d +6b +13 +b1 +42 +0b +7e +51 +88 +49 +db +35 +8b +0a +2e +76 +44 +5a +ad +72 +9e +b0 +d5 +bf +29 +17 +95 +26 +09 +77 +9e +72 +2f +80 +db +82 +d3 +55 +43 +14 +65 +8f +ff +42 +25 +78 +fa +b7 +fd +59 +29 +8d +2a +b8 +77 +f6 +ad +b3 +40 +be +8c +37 +a5 +11 +33 +7f +63 +82 +48 +dd +e4 +af +80 +b9 +b0 +0f +f9 +3f +2e +0c +ae +d6 +13 +c1 +9a +ab +52 +df +73 +c2 +09 +d9 +20 +29 +d3 +77 +52 +53 +c7 +eb +f4 +01 +78 +4b +3e +a7 +d1 +78 +d8 +92 +14 +3e +79 +a5 +9b +15 +37 +da +d2 +ca +21 +e9 +ce +05 +e2 +ab +00 +09 +57 +61 +e3 +50 +87 +3b +0f +48 +d9 +ca +0b +29 +96 +b1 +94 +7b +00 +77 +07 +24 +6b +38 +f7 +f9 +8d +9c +90 +04 +12 +87 +77 +db +aa +3b +01 +a7 +7b +a5 +00 +c1 +08 +f8 +b5 +79 +52 +43 +c8 +c1 +ae +38 +50 +2e +7e +d3 +01 +d4 +82 +c1 +4b +e2 +9b +c0 +08 +2c +cd +c8 +b8 +3c +5b +cb +a6 +c0 +37 +3b +b6 +7c +7c +2a +74 +49 +d5 +8e +b7 +c0 +1b +e6 +5b +81 +fa +a3 +19 +a8 +f3 +09 +5b +45 +a3 +b8 +e9 +be +f0 +86 +b2 +57 +10 +9b +9a +30 +c3 +f6 +63 +0f +c5 +87 +71 +b0 +b7 +93 +83 +f9 +1a +5e +b5 +18 +03 +36 +73 +db +a1 +7a +59 +79 +68 +25 +0b +0a +87 +31 +89 +0d +00 +87 +1a +7c +41 +a7 +f7 +29 +70 +30 +be +f0 +96 +07 +92 +fa +13 +87 +75 +3e +c9 +e8 +31 +21 +17 +74 +cf +05 +54 +ce +5c +41 +98 +18 +6e +e5 +9a +8e +a4 +f5 +b4 +80 +51 +ce +e4 +c3 +57 +83 +e7 +40 +56 +46 +28 +a6 +10 +c0 +0c +35 +ae +dc +35 +4e +19 +c1 +87 +26 +c1 +73 +80 +a1 +9a +3e +61 +c7 +f6 +c2 +35 +73 +a7 +6e +46 +20 +35 +49 +e5 +7b +63 +9a +3b +f2 +78 +33 +b6 +ea +85 +ee +53 +09 +30 +1a +bd +27 +a4 +4f +14 +65 +11 +af +5a +83 +3f +ac +2a +8d +32 +2c +4b +fa +97 +d4 +47 +59 +07 +e1 +1d +2b +25 +18 +4f +ca +62 +eb +b9 +a7 +14 +2a +af +65 +16 +87 +37 +c5 +ba +e7 +e8 +10 +9c +f7 +21 +04 +e6 +b2 +63 +ac +7b +d2 +2a +43 +f2 +87 +a4 +85 +43 +aa +9a +09 +70 +eb +3b +6b +b5 +29 +1e +0d +96 +81 +31 +a8 +8c +d7 +27 +b7 +d4 +c1 +b7 +5d +fc +56 +9f +a8 +96 +75 +e8 +46 +a0 +39 +54 +9b +86 +39 +a8 +e6 +3b +52 +e0 +89 +80 +06 +6f +81 +da +72 +96 +52 +b1 +43 +85 +05 +32 +24 +04 +97 +27 +9d +5c +18 +7e +d9 +a3 +84 +da +d9 +9e +c0 +6b +3c +eb +79 +3e +99 +b2 +26 +e9 +89 +0c +30 +2a +53 +35 +ca +6f +fd +79 +02 +e0 +fc +03 +39 +09 +bd +57 +49 +97 +cd +b5 +10 +d7 +b0 +6a +b9 +36 +2e +38 +01 +02 +d4 +f9 +4a +72 +31 +c4 +d4 +d2 +82 +2b +02 +27 +fc +c2 +88 +16 +f5 +77 +27 +85 +04 +99 +d7 +4e +0d +a1 +5f +79 +23 +49 +ba +bc +6c +68 +3a +c0 +2a +97 +32 +47 +c2 +45 +d3 +bc +4e +06 +45 +51 +79 +c6 +8e +20 +73 +78 +92 +c6 +4c +25 +91 +64 +c6 +13 +2e +50 +08 +4c +94 +11 +57 +3a +8b +cc +76 +33 +52 +54 +46 +53 +0f +44 +43 +95 +ba +06 +d8 +02 +57 +17 +a7 +a4 +09 +49 +10 +de +08 +5a +9e +19 +03 +fa +79 +6c +8d +9b +3e +57 +06 +0e +00 +7d +b2 +b5 +bb +7f +d2 +36 +16 +1e +ec +4d +a0 +90 +6e +26 +32 +72 +ab +05 +22 +cc +87 +0f +8b +7c +2c +60 +33 +64 +68 +39 +1b +79 +65 +38 +44 +88 +01 +eb +23 +8d +bd +50 +98 +4f +f9 +ce +47 +14 +b0 +2a +66 +13 +88 +42 +6b +92 +2a +0e +55 +d4 +af +dd +c3 +1b +7b +48 +91 +cb +53 +8f +e2 +b8 +cc +51 +01 +fb +23 +68 +69 +dc +43 +3d +6d +28 +f0 +30 +0c +d2 +8f +2f +37 +e3 +f4 +2f +5a +e0 +f3 +41 +5f +97 +66 +60 diff --git a/sync_rtl/top/TB/vectors/enc_k4_c1_m.hex b/sync_rtl/top/TB/vectors/enc_k4_c1_m.hex new file mode 100644 index 0000000..ceab0d1 --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k4_c1_m.hex @@ -0,0 +1,32 @@ +01 +21 +cb +32 +ac +d1 +87 +11 +35 +cb +34 +e2 +9c +1a +0e +26 +cc +c0 +01 +b9 +39 +ea +fa +ac +c2 +8f +13 +f1 +93 +8d +bf +91 diff --git a/sync_rtl/top/TB/vectors/enc_k4_c1_ss.hex b/sync_rtl/top/TB/vectors/enc_k4_c1_ss.hex new file mode 100644 index 0000000..a02f7cc --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k4_c1_ss.hex @@ -0,0 +1,32 @@ +26 +22 +50 +3a +2a +54 +4f +35 +83 +92 +90 +3e +6f +2a +dc +5a +2d +94 +fe +01 +05 +83 +b5 +74 +a5 +4d +9a +7e +6d +22 +3a +24 diff --git a/sync_rtl/top/TB/vectors/enc_k4_c2_ct.hex b/sync_rtl/top/TB/vectors/enc_k4_c2_ct.hex new file mode 100644 index 0000000..0772b1a --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k4_c2_ct.hex @@ -0,0 +1,1568 @@ +b9 +b6 +c3 +b6 +8f +90 +1e +11 +43 +f4 +fa +61 +d5 +89 +64 +54 +55 +39 +1a +09 +40 +19 +16 +ac +70 +d1 +ca +d9 +b4 +2e +5b +d6 +1d +cf +4b +b6 +2d +b4 +54 +f5 +80 +af +65 +a8 +cf +07 +d8 +48 +bc +85 +c8 +f4 +62 +2f +9d +bf +ca +42 +40 +57 +b6 +36 +fe +56 +58 +ee +bb +2c +52 +83 +9a +43 +13 +5a +ac +ca +f1 +98 +f1 +38 +6e +d5 +a7 +00 +bf +cc +ed +d5 +6b +29 +88 +9e +75 +9d +6c +32 +cb +b9 +ca +99 +49 +5e +d2 +65 +66 +31 +48 +d0 +9d +41 +cb +35 +9b +16 +c8 +d3 +5e +ee +9e +a3 +6c +0e +1d +3c +2f +25 +82 +54 +7f +0f +14 +54 +3d +f9 +89 +55 +9b +ad +d2 +27 +42 +99 +06 +61 +b7 +30 +fa +6e +33 +5a +35 +5d +e5 +40 +31 +be +57 +9f +8a +e9 +20 +1e +69 +05 +fd +ba +02 +00 +10 +59 +11 +82 +e9 +e2 +69 +81 +cf +21 +80 +3c +d1 +ad +f3 +45 +b3 +ec +22 +01 +b5 +1b +09 +83 +12 +a5 +a5 +8c +81 +69 +99 +40 +42 +22 +42 +82 +40 +ae +93 +af +75 +bc +81 +58 +37 +1a +aa +a3 +bf +2b +65 +a6 +bf +d2 +05 +55 +ca +05 +2c +e2 +f6 +0a +1f +e2 +2f +85 +e5 +01 +0b +81 +1c +6b +3b +fb +00 +58 +85 +5b +db +41 +de +67 +a1 +ac +2e +be +61 +45 +d3 +f1 +7a +ec +c7 +74 +85 +26 +c7 +e8 +7c +43 +18 +de +ad +3e +a4 +7c +a8 +45 +3c +c7 +ee +a4 +25 +a0 +e7 +e6 +99 +a6 +44 +28 +5f +a7 +88 +7e +aa +46 +68 +14 +ad +25 +3c +0e +b0 +44 +e4 +a5 +82 +fc +ba +56 +f1 +ac +13 +f3 +d9 +12 +7d +32 +30 +63 +cc +2f +c0 +2e +71 +e4 +83 +23 +b9 +b6 +84 +25 +70 +c8 +48 +25 +19 +93 +b0 +d9 +99 +7a +8c +d2 +23 +23 +8f +b6 +29 +08 +65 +b0 +fa +0d +b0 +08 +25 +56 +4f +cf +72 +a5 +fd +23 +b9 +b0 +fa +43 +84 +47 +9d +aa +d8 +f7 +af +a8 +a2 +1f +fc +bc +ca +2a +4e +f7 +92 +08 +dc +45 +e6 +e4 +70 +61 +30 +2b +c1 +77 +20 +e7 +a3 +5b +e5 +c5 +b6 +8c +db +45 +bb +fd +fd +aa +52 +5f +e9 +fc +af +0d +12 +c8 +2f +8d +0a +45 +73 +f7 +c4 +0b +45 +3e +f8 +cb +e9 +1e +ff +96 +d6 +de +be +da +fe +81 +c3 +8c +ec +14 +be +cb +bc +17 +cf +d0 +02 +aa +59 +c4 +25 +d4 +b1 +01 +16 +6b +36 +6d +c0 +5f +f3 +11 +9d +f9 +b1 +44 +e0 +d8 +f1 +80 +db +bd +fc +35 +64 +00 +d4 +55 +79 +28 +12 +3d +e3 +9c +29 +34 +95 +c5 +e0 +ef +3f +fe +ce +5b +c5 +e0 +b3 +59 +2a +bf +2d +72 +1d +9c +b5 +23 +fd +17 +9b +3d +f3 +9c +73 +28 +ef +14 +c1 +f3 +99 +60 +65 +ae +a8 +3b +1b +0c +4d +83 +c6 +96 +7d +9d +bb +e6 +bc +fc +d6 +0a +d6 +0f +71 +1e +ed +37 +01 +1b +5b +84 +b5 +94 +ca +b9 +0a +81 +79 +94 +5e +3e +b4 +09 +5e +5a +5f +57 +4b +6e +ee +52 +5e +67 +28 +1b +d5 +a4 +e1 +26 +be +55 +e7 +2f +18 +03 +9b +2b +81 +9b +7a +a5 +9d +9b +7c +e0 +d6 +3d +89 +e0 +2a +88 +14 +ff +93 +8e +dd +15 +3c +9b +f9 +bb +56 +2c +04 +ad +41 +48 +58 +7c +80 +53 +7c +b0 +3d +2f +83 +35 +1d +60 +43 +5a +72 +a3 +9e +9a +32 +81 +10 +d4 +8d +05 +f0 +80 +00 +03 +1c +71 +84 +b7 +ab +5e +6d +0d +32 +7e +32 +11 +e9 +67 +da +de +f7 +11 +5f +5c +26 +d4 +3b +b1 +15 +b5 +92 +87 +50 +19 +67 +5d +75 +7b +a5 +00 +12 +a6 +c9 +9a +1a +87 +34 +d7 +ee +73 +1b +3a +c4 +b0 +f1 +4b +a7 +14 +21 +7a +29 +4e +3a +30 +9d +c0 +94 +86 +50 +7b +ea +ad +37 +c7 +d5 +0b +06 +41 +53 +55 +ba +eb +30 +21 +9a +3e +50 +fa +b7 +fd +e9 +3d +a8 +8c +4a +8e +f9 +1f +42 +7f +86 +ac +7f +15 +46 +ae +55 +71 +c8 +92 +9b +ad +17 +59 +c8 +c9 +b3 +df +ea +69 +a0 +d4 +ef +94 +76 +76 +33 +a8 +1e +c8 +91 +9c +6d +f9 +47 +9a +45 +d3 +7c +82 +78 +cd +d2 +94 +35 +e1 +5c +6b +e2 +ac +57 +42 +05 +0e +a9 +62 +54 +d7 +01 +3a +cb +b0 +4b +de +44 +13 +0f +f7 +f9 +7d +d8 +09 +55 +16 +c3 +7c +6c +60 +8f +6b +bd +f2 +10 +51 +aa +18 +ce +87 +a8 +31 +0a +d4 +dd +00 +49 +ca +b6 +ba +9c +0f +23 +63 +c7 +59 +d7 +c4 +b8 +b0 +5e +be +02 +02 +12 +bb +5b +65 +e1 +a8 +f6 +f0 +73 +bc +2d +cc +e9 +c2 +1e +38 +f4 +f6 +04 +65 +4f +17 +1a +74 +0c +9b +e2 +91 +65 +ad +bc +73 +98 +a4 +8b +74 +17 +3f +e7 +46 +7a +6f +42 +65 +f8 +92 +4e +3b +60 +84 +73 +1e +19 +53 +f4 +11 +46 +b9 +0c +f4 +de +be +61 +b1 +ce +4a +4c +33 +ca +8b +06 +90 +37 +01 +26 +7c +7a +a5 +18 +3c +52 +fa +09 +28 +9b +74 +d4 +ad +37 +53 +73 +a0 +4e +ee +8e +8f +78 +d0 +1f +51 +43 +a4 +cf +9a +d9 +ff +e6 +73 +82 +97 +79 +90 +0c +51 +d8 +a2 +a3 +2e +28 +12 +e4 +99 +d9 +bc +d8 +7f +bc +f3 +9e +f1 +5b +c0 +a7 +f8 +68 +98 +9b +68 +60 +10 +d1 +02 +ab +17 +b6 +9d +fe +8d +e3 +ff +58 +f3 +ab +3a +86 +3a +79 +64 +9f +fe +e0 +92 +7e +3f +08 +1e +6c +4e +08 +52 +88 +84 +a4 +03 +50 +47 +bc +e2 +60 +64 +5e +99 +21 +67 +3f +8b +c5 +62 +ee +aa +7f +ab +c9 +52 +54 +3b +cb +25 +57 +ed +32 +69 +5a +98 +11 +25 +88 +2a +ac +01 +c0 +ef +fb +43 +59 +7b +5f +3d +8b +f3 +49 +5a +17 +c7 +af +4b +bb +1e +96 +43 +1d +4d +6f +27 +8e +25 +e7 +90 +5a +49 +e8 +83 +e1 +d7 +f2 +0c +16 +3b +35 +55 +65 +37 +2b +32 +18 +2c +2a +c5 +e6 +11 +08 +7f +7b +53 +88 +49 +68 +72 +ef +24 +94 +2d +22 +b1 +6c +4d +04 +ee +62 +c7 +9c +c3 +23 +1c +d0 +be +c4 +e6 +f9 +8e +ab +53 +fc +af +62 +10 +1b +79 +fe +ac +77 +7c +5f +95 +40 +7c +32 +e8 +df +54 +50 +9a +47 +c4 +dd +0c +5a +21 +96 +57 +3e +9d +5d +1d +79 +56 +80 +96 +c3 +6e +96 +31 +f7 +ea +97 +37 +e8 +d3 +5f +27 +fe +70 +b1 +00 +47 +92 +d5 +b9 +f7 +4a +3d +a4 +71 +08 +cf +13 +5a +22 +45 +d5 +b2 +ca +80 +28 +0b +4a +74 +80 +11 +4e +c6 +5a +c0 +70 +ae +01 +df +fd +6b +6d +65 +b3 +fd +d0 +d1 +2c +55 +f6 +8c +1b +8f +b5 +56 +75 +e4 +e7 +38 +ae +c6 +8a +e4 +04 +03 +3f +87 +f3 +83 +cf +0d +af +82 +f9 +46 +00 +31 +75 +fb +30 +0e +09 +ac +17 +15 +ec +b1 +18 +0f +c2 +6e +10 +a2 +5e +b1 +b2 +3e +5c +d5 +20 +b0 +58 +a3 +5c +3c +dd +8b +07 +e1 +f4 +4d +fb +a7 +09 +1b +43 +a6 +cd +dc +eb +77 +ca +0c +ab +57 +eb +b7 +a8 +25 +c9 +d7 +be +55 +8b +89 +75 +b7 +b0 +c2 +6b +de +0d +3c +fe +53 +37 +b9 +9e +46 +f6 +65 +9e +82 +29 +b6 +19 +d8 +b5 +39 +3b +65 +1c +71 +fd +87 +9d +7c +29 +a1 +c7 +8a +9d +0f +3a +71 +ad +a5 +62 +84 +68 +56 +5c +c9 +21 +fe +9c +a7 +6d +d8 +86 +71 +79 +f8 +77 +53 +7e +06 +77 +3e +83 +78 +0b +58 +c4 +a8 +cc +80 +8d +a2 +58 +77 +aa +f1 +b2 +0b +43 +c9 +4c +22 +20 +d7 +45 +65 +15 +f7 +c8 +16 +12 +f5 +0d +cc +e4 +32 +7b +fd +97 +ad +5f +4e +9d +7c +6c +29 +c9 +03 +b6 +1c +c4 +a9 +ba +8c +54 +bf +1a +d4 +6e +ad +b5 +e4 +f7 +19 +98 +c4 +13 +c1 +15 +d6 +f5 +85 +1c +fe +a0 +1d +c7 +ea +91 +ed +31 +9a +0f +44 +8d +d0 +66 +cd +26 +df +9e +3f +83 +6a +0c +7b +c0 +90 +d9 +50 +d3 +5d +e3 +86 +2e +7f +59 +e9 +43 +aa +4b +ec +5c +66 +13 +e3 +ee +70 +11 +d1 +95 +04 +2b +d8 +18 +b0 +99 +7a +9e +33 +bd +1f +6a +43 +29 +4e +7b +45 +c0 +41 +13 +fb +99 +83 +dd +26 +d6 +a9 +81 +29 +25 +c1 +31 +1b +19 +5b +43 +e1 +59 +93 +01 +52 +b1 +b5 +52 +cd +66 +19 +21 +65 +7a +28 +78 +10 +b1 +94 +0c +cb +ce +f1 +5b diff --git a/sync_rtl/top/TB/vectors/enc_k4_c2_ek.hex b/sync_rtl/top/TB/vectors/enc_k4_c2_ek.hex new file mode 100644 index 0000000..314b8c8 --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k4_c2_ek.hex @@ -0,0 +1,1568 @@ +ff +ea +9b +3f +cb +10 +23 +e9 +b8 +38 +bb +48 +50 +33 +83 +1c +55 +64 +28 +6c +90 +cf +d8 +0b +d8 +e8 +95 +f6 +10 +78 +e5 +a9 +2f +73 +f4 +82 +91 +37 +c5 +05 +48 +c9 +bc +1b +09 +f2 +fc +47 +6a +70 +74 +4d +e2 +35 +45 +db +42 +ee +c1 +aa +26 +38 +43 +e0 +00 +59 +07 +c1 +a1 +fe +5a +b9 +f6 +8a +ab +d0 +7b +3c +0a +e8 +33 +a1 +05 +87 +1d +54 +9d +8b +34 +64 +b5 +3c +66 +e5 +d1 +65 +fc +75 +c9 +b8 +66 +44 +55 +26 +c2 +f8 +14 +13 +ce +fc +26 +2a +36 +5d +2f +5b +be +e5 +b9 +7b +21 +87 +6c +03 +45 +16 +bf +ec +68 +a3 +25 +7b +9a +72 +94 +68 +e5 +9b +3e +8b +cb +39 +65 +38 +48 +58 +2b +08 +41 +91 +83 +ab +39 +85 +ca +97 +aa +98 +67 +ee +8a +12 +19 +47 +2f +d2 +43 +3f +26 +57 +88 +ee +14 +ab +5f +69 +92 +69 +03 +62 +84 +d8 +71 +71 +bc +2c +cd +74 +bd +9a +79 +76 +8d +14 +59 +39 +51 +16 +c7 +2c +c3 +87 +9c +94 +f1 +66 +05 +19 +3c +96 +3a +c3 +c1 +ce +84 +5f +fe +e0 +93 +2c +e8 +7b +ff +f1 +4a +7f +b0 +81 +9d +31 +22 +02 +42 +c8 +57 +d0 +35 +df +f0 +00 +3c +e7 +48 +b7 +88 +ae +34 +0c +38 +3e +f3 +6b +f5 +3a +7b +dd +8a +03 +81 +f2 +84 +64 +30 +17 +7d +87 +04 +27 +88 +40 +f9 +76 +a7 +de +c9 +6f +17 +59 +b4 +0a +31 +28 +6e +48 +73 +0b +99 +bd +e0 +82 +3e +09 +29 +5d +44 +37 +c5 +da +78 +73 +03 +20 +5f +6e +16 +17 +52 +a1 +53 +13 +00 +d0 +e4 +28 +97 +8a +5a +ca +20 +79 +3b +ec +30 +b5 +77 +6c +3a +61 +59 +ba +90 +5b +1f +c9 +89 +cf +ea +8b +22 +a1 +99 +c2 +80 +15 +0e +9f +e4 +cc +01 +fc +3f +47 +e8 +89 +67 +d1 +69 +cc +41 +26 +09 +9c +3a +ff +63 +31 +66 +53 +38 +04 +a2 +57 +e8 +c7 +98 +86 +a1 +1a +09 +35 +06 +2e +db +3c +a5 +4c +98 +5f +d2 +20 +76 +83 +68 +a0 +4a +c0 +93 +6a +b1 +5d +94 +7e +10 +24 +2d +ef +9b +5a +28 +a6 +73 +18 +81 +a7 +2d +fb +07 +97 +38 +9e +a8 +85 +b6 +55 +d6 +9c +24 +9b +3f +c5 +63 +02 +a3 +d8 +07 +7f +79 +07 +63 +45 +3b +c5 +75 +2f +93 +a8 +bd +b5 +2a +22 +68 +b3 +21 +bc +86 +24 +36 +49 +0b +5f +08 +a6 +7d +a6 +29 +9b +f2 +00 +42 +41 +6e +46 +38 +31 +dd +e9 +56 +ec +d2 +64 +34 +31 +6a +d5 +b7 +13 +0e +71 +88 +27 +97 +b2 +26 +93 +b1 +9f +8a +27 +b2 +e8 +57 +25 +f8 +95 +08 +ba +02 +25 +5c +7a +ac +3c +1b +39 +59 +4e +e6 +ca +24 +ab +32 +77 +47 +25 +68 +fc +91 +25 +c2 +4a +25 +1a +9a +b2 +94 +7c +4e +04 +8a +5c +25 +46 +ae +f2 +47 +99 +b2 +65 +c4 +a6 +76 +95 +c2 +82 +62 +1c +8b +1e +c0 +ab +5b +de +3a +3e +51 +95 +36 +9d +55 +55 +09 +e6 +38 +64 +12 +12 +cc +e0 +92 +9e +0b +0e +b6 +42 +8b +3d +33 +4d +78 +c5 +77 +5d +e6 +24 +d2 +10 +af +6d +96 +1d +2c +f1 +87 +b3 +18 +a3 +05 +0c +7b +0b +02 +62 +9e +33 +1f +d9 +16 +17 +17 +0c +52 +35 +66 +ad +8c +44 +33 +49 +a3 +cf +3b +c8 +aa +a7 +13 +7c +c1 +37 +05 +35 +3c +69 +e6 +a6 +5b +a6 +a0 +7e +cf +41 +af +4e +2c +93 +46 +c0 +15 +fa +f5 +14 +91 +d5 +1e +d3 +c3 +69 +2d +27 +02 +71 +65 +b6 +fb +01 +9d +89 +c6 +09 +9c +b4 +8f +43 +aa +50 +52 +61 +0f +71 +ac +20 +c2 +61 +80 +79 +7c +c1 +d3 +da +52 +12 +ab +b6 +b2 +b3 +0c +5f +f5 +34 +33 +88 +48 +26 +26 +9d +6f +cb +6b +9f +cb +ca +48 +97 +1f +1a +0a +d0 +1a +fc +76 +6b +24 +05 +a9 +23 +9d +20 +46 +2b +41 +d4 +00 +15 +a4 +ba +81 +14 +14 +9e +33 +63 +14 +14 +90 +40 +22 +c9 +fe +b9 +07 +bf +c6 +97 +e5 +68 +3f +17 +93 +57 +88 +c3 +bb +a0 +d7 +62 +b7 +79 +89 +18 +5b +75 +87 +09 +92 +0c +53 +9e +4e +ec +58 +ed +fb +19 +88 +b1 +9d +c2 +f8 +c9 +5b +b9 +ad +40 +44 +79 +f9 +c7 +23 +f0 +67 +b5 +88 +06 +0c +55 +78 +77 +1f +67 +13 +ba +47 +c0 +95 +f0 +5e +c5 +92 +25 +fc +c2 +3e +09 +a5 +64 +53 +fc +99 +ba +84 +0d +d8 +1c +61 +9f +3c +6f +42 +83 +12 +cc +aa +be +d7 +a2 +7c +9b +bc +24 +2e +d7 +ac +14 +e2 +0d +e7 +1a +85 +f9 +39 +80 +09 +55 +51 +9b +9b +2d +a2 +36 +2f +39 +d6 +04 +6e +48 +66 +a6 +0b +80 +8a +8a +06 +fb +db +c3 +37 +34 +4e +5d +cb +73 +8b +4c +1d +6b +c4 +af +c9 +18 +bd +fd +9c +08 +e7 +44 +89 +fa +18 +a6 +7d +42 +4c +62 +99 +7c +ed +22 +b8 +25 +d4 +12 +cd +f4 +11 +a8 +7c +03 +5a +12 +27 +63 +fb +be +cc +b4 +7f +c2 +84 +56 +9f +2a +59 +c0 +54 +6d +b1 +dc +b5 +4c +ac +34 +97 +85 +49 +2a +d7 +07 +d4 +26 +2a +d2 +3b +75 +d7 +89 +0a +8a +c0 +11 +97 +03 +79 +bd +69 +90 +a6 +6c +71 +f3 +00 +60 +78 +37 +4d +90 +54 +6d +48 +d0 +08 +b4 +92 +cf +6a +4c +62 +2b +c5 +39 +47 +c8 +69 +6a +b7 +0a +04 +22 +09 +c7 +29 +34 +33 +e4 +88 +49 +da +66 +9f +93 +1a +58 +57 +0c +a3 +91 +2a +12 +33 +31 +ea +d3 +48 +60 +15 +73 +55 +ca +68 +28 +1a +95 +6e +00 +8a +5f +d8 +58 +9b +61 +05 +d2 +37 +5e +91 +67 +17 +c9 +15 +61 +5c +e0 +37 +c5 +cc +93 +c6 +63 +43 +2f +54 +82 +7c +fa +60 +f7 +b7 +3b +24 +74 +9a +53 +0a +32 +d7 +85 +31 +8c +12 +3f +69 +f6 +18 +03 +45 +a3 +0e +b5 +7d +2e +22 +a4 +aa +e5 +94 +34 +31 +77 +d7 +36 +71 +31 +f2 +1a +6c +72 +02 +7f +f1 +7e +51 +b2 +6a +5e +94 +b0 +d1 +a4 +1f +a3 +d2 +4c +ec +20 +91 +02 +18 +76 +cb +b3 +49 +3c +3b +55 +91 +e6 +95 +34 +a7 +2c +97 +e6 +1a +bd +89 +04 +9c +75 +89 +0a +e6 +bd +9c +f7 +ba +73 +d0 +37 +8a +e9 +44 +14 +c5 +45 +c2 +f4 +20 +30 +d4 +b0 +4f +bc +96 +18 +c3 +88 +75 +24 +a9 +e6 +34 +44 +a8 +b9 +87 +29 +a9 +23 +5c +02 +5b +43 +da +ca +54 +75 +b8 +85 +c7 +94 +f3 +17 +94 +fb +d8 +53 +d5 +11 +9e +0a +c5 +02 +f6 +fb +91 +16 +21 +c7 +30 +6a +98 +09 +63 +71 +fe +f1 +34 +fc +97 +73 +5a +c5 +1e +88 +b1 +a4 +7b +62 +64 +11 +26 +63 +7f +e9 +1c +4b +09 +4c +b9 +31 +52 +0f +69 +82 +9d +80 +0c +e8 +f6 +48 +5f +42 +3c +85 +b2 +cb +f0 +5b +40 +b8 +64 +a4 +a6 +d1 +bc +23 +f1 +ad +b6 +67 +90 +4f +13 +13 +46 +bc +ae +cf +08 +29 +e9 +67 +4d +ac +42 +ae +81 +a1 +1f +26 +f0 +42 +2c +63 +5e +85 +6b +2f +04 +da +41 +ae +2c +ce +11 +5a +a3 +f9 +fb +9c +26 +a3 +0c +7c +10 +32 +b5 +eb +b5 +13 +24 +6e +dc +e2 +05 +08 +f6 +7d +eb +3c +a1 +8e +c9 +46 +a2 +83 +95 +5c +5b +72 +65 +c6 +77 +7a +49 +6b +d1 +93 +53 +22 +26 +0b +33 +11 +7c +14 +b7 +8b +c7 +67 +1d +db +d0 +a2 +f9 +99 +85 +fb +fc +c2 +ff +9b +16 +ff +96 +be +a7 +41 +25 +a2 +a0 +9e +93 +10 +b1 +0c +a9 +9e +81 +13 +ad +e4 +db +84 +2f +ac +11 +c6 +71 +98 +3e +db +25 +55 +15 +26 +c4 +78 +88 +2b +64 +aa +5a +4b +08 +61 +95 +5e +06 +a2 +2c +ea +f2 +85 +70 +b2 +b2 +c6 +7a +8c +b1 +d9 +5a +2a +aa +3e +f4 +ba +81 +15 +97 +27 +cf +5b +a1 +6d +a0 +3a +b1 +74 +b4 +35 +f8 +93 +55 +2c +1a +ed +d9 +51 +c2 +aa +46 +9a +6b +7d +bd +49 +c4 +ec +b3 +23 +10 +f5 +91 +71 +24 +68 +9a +dc +c5 +e2 +89 +81 +1f +2a +ce +c4 +e0 +bb +89 +22 +2e +a3 +eb +41 +90 +87 +2d +e5 +e1 +17 +26 +c4 +10 +b8 +03 +56 +5d +db +dc +03 +f9 +82 +92 +0c +fe +3b +b7 +f5 +5b +96 +f2 +5b +0a +9e +d0 +71 +f3 +b0 +42 +d0 +51 +9b +41 +9a +87 +be +db +9e diff --git a/sync_rtl/top/TB/vectors/enc_k4_c2_m.hex b/sync_rtl/top/TB/vectors/enc_k4_c2_m.hex new file mode 100644 index 0000000..168e054 --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k4_c2_m.hex @@ -0,0 +1,32 @@ +34 +b9 +61 +af +5d +62 +54 +af +72 +c0 +d5 +0e +70 +dd +9b +49 +91 +15 +0c +cc +09 +19 +2a +a4 +6f +19 +53 +d5 +c2 +9a +33 +ec diff --git a/sync_rtl/top/TB/vectors/enc_k4_c2_ss.hex b/sync_rtl/top/TB/vectors/enc_k4_c2_ss.hex new file mode 100644 index 0000000..5f0c4f8 --- /dev/null +++ b/sync_rtl/top/TB/vectors/enc_k4_c2_ss.hex @@ -0,0 +1,32 @@ +72 +3a +b6 +2b +92 +58 +0b +3d +ef +8c +e8 +87 +00 +1e +ef +e4 +d9 +05 +65 +aa +ca +f5 +43 +0e +e2 +aa +b7 +de +cf +99 +db +76 diff --git a/sync_rtl/top/mlkem_top.v b/sync_rtl/top/mlkem_top.v index 9c07daf..27df6f9 100644 --- a/sync_rtl/top/mlkem_top.v +++ b/sync_rtl/top/mlkem_top.v @@ -28,12 +28,25 @@ module mlkem_top #( input clk, input rst_n, input [2:0] k_i, // RUNTIME ML-KEM param: 2=512, 3=768, 4=1024 + input op_i, // 0 = KeyGen, 1 = Encaps (captured at start_i) input [255:0] d_i, // KeyGen seed d (byte 0 in d_i[7:0]) input [255:0] z_i, // implicit-rejection seed z + input [255:0] msg_i, // Encaps message m (byte 0 in msg_i[7:0]) input start_i, // pulse to begin KeyGen output busy_o, // high while running output done_o, // pulse when ek/dk ready + // Encaps ek input: stream ek bytes (=pk) into ek_bram before start_i with + // op_i=1. ek_in_we writes byte ek_in_byte at address ek_in_addr. + input ek_in_we, // write one ek byte (only honored in ST_IDLE for Encaps preload) + input [10:0] ek_in_addr, // ek byte address 0..ek_bytes-1 + input [7:0] ek_in_byte, // ek byte value + // Encaps shared secret output (= K), valid at done_o + output [255:0] ss_o, + // Encaps ciphertext readback tap: ct byte by index 0..ct_bytes-1 + input [10:0] dbg_ct_idx_i, + output [7:0] dbg_ct_o, + // Debug readback tap: read one stored coefficient by (poly slot, index). // Lets stage TBs verify intermediates without wide buses. input [3:0] dbg_slot_i, // poly slot (see localparams below) @@ -49,7 +62,10 @@ module mlkem_top #( output [7:0] dbg_dk_o, // Debug taps for hash outputs output [255:0] dbg_rho_o, - output [255:0] dbg_sigma_o + output [255:0] dbg_sigma_o, + // Encaps debug taps: r (G high half) and H(ek) + output [255:0] dbg_r_o, + output [255:0] dbg_hek_o ); localparam Q = `Q; // 3329 @@ -70,6 +86,27 @@ module mlkem_top #( wire [3:0] h_nblk_rt = (k_r == 3'd2) ? 4'd6 : (k_r == 3'd3) ? 4'd9 : 4'd12; wire [11:0] h_last_rt = {6'b0, h_nblk_rt} * 12'd136 - 12'd1; // final padded byte index + // ---- Encaps runtime params ---- + reg op_r; // 0=KeyGen 1=Encaps (captured at start) + reg [255:0] m_r; // Encaps message m (captured at start) + reg [255:0] ss_r; // Encaps shared secret K (= G output low half) + reg [255:0] r_r; // Encaps PRF seed r (= G output high half) + // FIPS 203: eta2 = 2 for all parameter sets. + wire [1:0] eta2_rt = 2'd2; + // Compression params: (du,dv) = (10,4) for k=2/3, (11,5) for k=4. + wire [4:0] du_rt = (k_r == 3'd4) ? 5'd11 : 5'd10; + wire [4:0] dv_rt = (k_r == 3'd4) ? 5'd5 : 5'd4; + // Ciphertext byte sizes: c1 = 32*du*k, c2 = 32*dv, ct = c1+c2. + wire [11:0] c1_bytes_rt = 12'd32 * {7'b0, du_rt} * {9'b0, k_r}; // 640/960/1408 + wire [11:0] c2_bytes_rt = 12'd32 * {7'b0, dv_rt}; // 128/128/160 + wire [11:0] ct_bytes_rt = c1_bytes_rt + c2_bytes_rt; // 768/1088/1568 + assign ss_o = ss_r; + // ct readback tap (ct_bram added in E5/E7); tied off until then. + /* verilator lint_off UNUSEDSIGNAL */ + wire [10:0] dbg_ct_idx_unused = dbg_ct_idx_i; + /* verilator lint_on UNUSEDSIGNAL */ + assign dbg_ct_o = 8'd0; + // ================================================================ // Polynomial storage, sized for KMAX (worst case). Runtime k uses a // sub-range. Slot layout (each slot = 256 coeffs): @@ -203,10 +240,17 @@ module mlkem_top #( reg [10:0] ek_wa, dkp_wa; reg [7:0] ek_wd, dkp_wd; + // ek BRAM write port: KeyGen ST_E drives ek_we/ek_wa/ek_wd; Encaps preloads + // ek from the external ek_in_* port (TB streams ek=pk before start_i). The + // two never overlap (preload happens in ST_IDLE before an Encaps run). + wire ek_we_mux = ek_in_we ? 1'b1 : ek_we; + wire [10:0] ek_wa_mux = ek_in_we ? ek_in_addr : ek_wa; + wire [7:0] ek_wd_mux = ek_in_we ? ek_in_byte : ek_wd; + sd_bram #(.W(8), .D(2048), .A(11)) u_ek_bram ( .clk(clk), .rd_addr(ek_rd_addr), .rd_data(ek_rd_data), - .wr_en(ek_we), .wr_addr(ek_wa), .wr_data(ek_wd) + .wr_en(ek_we_mux), .wr_addr(ek_wa_mux), .wr_data(ek_wd_mux) ); sd_bram #(.W(8), .D(2048), .A(11)) u_dkp_bram ( .clk(clk), @@ -236,17 +280,29 @@ module mlkem_top #( // ================================================================ // Top-level FSM (built incrementally). Stage 2a: G only. // ================================================================ - localparam ST_IDLE = 4'd0; - localparam ST_G = 4'd1; // run G(d||K), capture rho/sigma - localparam ST_A = 4'd2; // generate A_hat[i][j] via SampleNTT - localparam ST_C = 4'd3; // generate s[i],e[i] via CBD - localparam ST_N = 4'd4; // forward NTT of s[i],e[i] in place - localparam ST_M = 4'd5; // matrix accumulate t_hat = e_hat + sum A o s_hat - localparam ST_E = 4'd6; // byteEncode12 -> ek/dk BRAM - localparam ST_H = 4'd7; // H(ek) via multi-block SHA3-256 - localparam ST_DONE = 4'd15; + localparam ST_IDLE = 5'd0; + localparam ST_G = 5'd1; // run G(d||K), capture rho/sigma + localparam ST_A = 5'd2; // generate A_hat[i][j] via SampleNTT + localparam ST_C = 5'd3; // generate s[i],e[i] via CBD + localparam ST_N = 5'd4; // forward NTT of s[i],e[i] in place + localparam ST_M = 5'd5; // matrix accumulate t_hat = e_hat + sum A o s_hat + localparam ST_E = 5'd6; // byteEncode12 -> ek/dk BRAM + localparam ST_H = 5'd7; // H(ek) via multi-block SHA3-256 + // ---- Encaps states ---- + localparam ST_ENC_LOAD = 5'd8; // ek already preloaded; placeholder/settle + localparam ST_ENC_H = 5'd9; // H(ek) via multi-block SHA3-256 (reuses ST_H logic) + localparam ST_ENC_G = 5'd10; // (K,r) = G(m || H(ek)), 64-byte single block + localparam ST_ENC_A = 5'd11; // regenerate A_hat (transpose used in U) + localparam ST_ENC_TDEC = 5'd12; // byteDecode12: ek -> t_hat (bank_t) + localparam ST_ENC_C = 5'd13; // sample y,e1,e2 via CBD (eta1/eta2) + localparam ST_ENC_N = 5'd14; // forward NTT of y in place + localparam ST_ENC_U = 5'd15; // u = INTT(sum A^T o y_hat) + e1 + localparam ST_ENC_C1 = 5'd16; // Compress_du + byteEncode_du -> ct c1 + localparam ST_ENC_V = 5'd17; // v = INTT(sum t_hat o y_hat) + e2 + mu + localparam ST_ENC_C2 = 5'd18; // Compress_dv + byteEncode_dv -> ct c2 + localparam ST_DONE = 5'd31; - reg [3:0] st, st_next; + reg [4:0] st, st_next; reg [255:0] rho_r, sigma_r; // A-generation bookkeeping: explicit i/j counters (avoid runtime divide) @@ -270,6 +326,8 @@ module mlkem_top #( assign done_o = (st == ST_DONE); assign dbg_rho_o = rho_r; assign dbg_sigma_o = sigma_r; + assign dbg_r_o = r_r; + assign dbg_hek_o = hek_r; // ---- sha3_top in G mode: data_i = {K_byte, d} (d byte0 in [7:0]) ---- reg sha3_valid; @@ -277,7 +335,9 @@ module mlkem_top #( wire [511:0] sha3_hash; wire sha3_vo; reg sha3_ack; // consumer ready for hash - wire [511:0] g_data = {248'b0, 5'b0, k_r, d_i}; // data_i[263:256]=k, [255:0]=d + wire [511:0] kg_g_data = {248'b0, 5'b0, k_r, d_i}; // KeyGen G: [263:256]=k, [255:0]=d + wire [511:0] enc_g_data = {hek_r, m_r}; // Encaps G: m || H(ek), 64 bytes + wire [511:0] g_data = (st == ST_ENC_G) ? enc_g_data : kg_g_data; // ================================================================ // Shared keccak_core + phase mux (3 consumers -> 1 core) @@ -301,10 +361,12 @@ module mlkem_top #( wire sha3_kc_ready_i, snt_kc_ready_i, cbd_kc_ready_i; // all 1'b1 /* verilator lint_on UNUSEDSIGNAL */ - // phase selects (mutually exclusive) - wire sel_sha3 = (st == ST_G) || (st == ST_H); - wire sel_snt = (st == ST_A); - wire sel_cbd = (st == ST_C); + // phase selects (mutually exclusive). Encaps adds ST_ENC_H/G (sha3), + // ST_ENC_A (snt), ST_ENC_C (cbd). + wire sel_sha3 = (st == ST_G) || (st == ST_H) || + (st == ST_ENC_H) || (st == ST_ENC_G); + wire sel_snt = (st == ST_A) || (st == ST_ENC_A); + wire sel_cbd = (st == ST_C) || (st == ST_ENC_C); // gated output-valid: only the active consumer sees kc_valid_o wire kc_valid_o_sha3 = kc_valid_o & sel_sha3; @@ -334,10 +396,13 @@ module mlkem_top #( // multi-block absorb path (mb_en=1). These phases are disjoint in the // top FSM, so one sha3_top (one keccak_core) is sufficient. mb_en and // ready_i are muxed by phase; data_i/mode only matter while mb_en=0. - wire sha3_mb_en = (st == ST_H); + wire sha3_mb_en = (st == ST_H) || (st == ST_ENC_H); + // sha3 single-block mode: 2'b00 = G(33B) for KeyGen, 2'b11 = G(64B) for + // Encaps (m||H(ek)). mode only matters when mb_en=0. + wire [1:0] sha3_mode = (st == ST_ENC_G) ? 2'b11 : 2'b00; sha3_top_shared u_sha3 ( .clk(clk), .rst_n(rst_n), - .mode(2'b00), // G = SHA3-512 (only used when mb_en=0) + .mode(sha3_mode), // G = SHA3-512 (only used when mb_en=0) .data_i(g_data), .valid_i(sha3_valid), .ready_o(sha3_ready), @@ -408,7 +473,7 @@ module mlkem_top #( // dbg_dk ek-region takes priority (its loop runs after the ek loop), so the // single read port serves dbg_byte_o (ek loop) then dbg_dk_o (dk loop). wire [11:0] dbgdk_ek_off = dbg_dk_idx_i - dk_bytes_rt; // offset within ek region - assign ek_rd_addr = (st == ST_H) ? h_g_addr[10:0] : + assign ek_rd_addr = (st == ST_H || st == ST_ENC_H) ? h_g_addr[10:0] : dbgdk_in_ek ? dbgdk_ek_off[10:0] : dbg_byte_idx_i; // dkp BRAM read-address mux: dbg_byte (sel=1) or dbg_dk (dkp region). @@ -600,7 +665,7 @@ module mlkem_top #( always @(*) begin st_next = st; case (st) - ST_IDLE: if (start_i) st_next = ST_G; + ST_IDLE: if (start_i) st_next = op_i ? ST_ENC_H : ST_G; ST_G: if (sha3_vo) st_next = ST_A; ST_A: if (a_pair >= kk_rt) st_next = ST_C; ST_C: if (c_poly >= {1'b0, k_r, 1'b0}) st_next = ST_N; @@ -608,6 +673,9 @@ module mlkem_top #( ST_M: if (m_i >= k_r) st_next = ST_E; ST_E: if (e_done) st_next = ST_H; ST_H: if (h_phase == 2'd3) st_next = ST_DONE; + // ---- Encaps ---- + ST_ENC_H: if (h_phase == 2'd3) st_next = ST_ENC_G; + ST_ENC_G: if (sha3_vo) st_next = ST_DONE; // E0: stop here (K,r captured) ST_DONE: st_next = ST_IDLE; default: st_next = ST_IDLE; endcase @@ -617,6 +685,10 @@ module mlkem_top #( if (!rst_n) begin st <= ST_IDLE; k_r <= 3'd0; + op_r <= 1'b0; + m_r <= 256'd0; + ss_r <= 256'd0; + r_r <= 256'd0; rho_r <= 256'd0; sigma_r <= 256'd0; sha3_valid <= 1'b0; @@ -680,11 +752,25 @@ module mlkem_top #( ek_we <= 1'b0; dkp_we <= 1'b0; - // Kick off G when entering ST_G + // Kick off when entering from IDLE: KeyGen starts G; Encaps captures + // op/m and arms the H(ek) machinery (ST_ENC_H reuses the ST_H FSM). if (st == ST_IDLE && start_i) begin - k_r <= k_i; // capture runtime ML-KEM param - sha3_valid <= 1'b1; - sha3_ack <= 1'b1; + k_r <= k_i; // capture runtime ML-KEM param + op_r <= op_i; + if (op_i) begin + m_r <= msg_i; // capture Encaps message + // arm H(ek) (same fields the ST_E->ST_H arming sets) + h_blk <= 3'd0; + h_byte <= 8'd0; + h_phase <= 2'd0; // assemble + h_mbvalid<= 1'b0; + h_mblast <= 1'b0; + h_ack <= 1'b1; // ready to consume final digest + h_wb_vld <= 1'b0; + end else begin + sha3_valid <= 1'b1; + sha3_ack <= 1'b1; + end end // Drop valid once accepted if (sha3_valid && sha3_ready) sha3_valid <= 1'b0; @@ -954,8 +1040,10 @@ module mlkem_top #( h_wb_vld <= 1'b0; // no pending writeback yet end - // ---- ST_H: H(ek) via multi-block SHA3-256 (6/9/12 pre-padded blocks) ---- - if (st == ST_H) begin + // ---- ST_H / ST_ENC_H: H(ek) via multi-block SHA3-256 ---- + // Same logic for KeyGen (ek just written by ST_E) and Encaps (ek + // preloaded into ek_bram by the TB). hek_r captures H(ek) either way. + if (st == ST_H || st == ST_ENC_H) begin case (h_phase) // assemble 136 bytes of block h_blk into h_block_r. // ek BRAM read is registered: present addr for h_byte this @@ -1005,6 +1093,19 @@ module mlkem_top #( default: ; // 2'd3 done: hold endcase end + + // Arm Encaps G when H(ek) finishes: fire the 64-byte single-block + // G(m||H(ek)). hek_r now holds H(ek); enc_g_data = {hek_r, m_r}. + if (st == ST_ENC_H && st_next == ST_ENC_G) begin + sha3_valid <= 1'b1; + sha3_ack <= 1'b1; + end + // Capture (K, r) when Encaps G completes. ss = K = low half, r = high. + if (st == ST_ENC_G && sha3_vo) begin + ss_r <= sha3_hash[255:0]; // K (shared secret) = G bytes 0..31 + r_r <= sha3_hash[511:256]; // r = G bytes 32..63 + sha3_ack <= 1'b0; + end end end