// zeta_rom.v - Precomputed Zeta ROM for ML-KEM NTT // // Stores 128 bit-reversed roots of unity for Z_q (q=3329). // Address 0..127, each entry is a 12-bit value. // Pure combinational, single continuous assignment. module zeta_rom ( input [6:0] addr, // 0..127 output [11:0] zeta ); assign zeta = (addr == 7'd0) ? 12'd1 : (addr == 7'd1) ? 12'd1729 : (addr == 7'd2) ? 12'd2580 : (addr == 7'd3) ? 12'd3289 : (addr == 7'd4) ? 12'd2642 : (addr == 7'd5) ? 12'd630 : (addr == 7'd6) ? 12'd1897 : (addr == 7'd7) ? 12'd848 : (addr == 7'd8) ? 12'd1062 : (addr == 7'd9) ? 12'd1919 : (addr == 7'd10) ? 12'd193 : (addr == 7'd11) ? 12'd797 : (addr == 7'd12) ? 12'd2786 : (addr == 7'd13) ? 12'd3260 : (addr == 7'd14) ? 12'd569 : (addr == 7'd15) ? 12'd1746 : (addr == 7'd16) ? 12'd296 : (addr == 7'd17) ? 12'd2447 : (addr == 7'd18) ? 12'd1339 : (addr == 7'd19) ? 12'd1476 : (addr == 7'd20) ? 12'd3046 : (addr == 7'd21) ? 12'd56 : (addr == 7'd22) ? 12'd2240 : (addr == 7'd23) ? 12'd1333 : (addr == 7'd24) ? 12'd1426 : (addr == 7'd25) ? 12'd2094 : (addr == 7'd26) ? 12'd535 : (addr == 7'd27) ? 12'd2882 : (addr == 7'd28) ? 12'd2393 : (addr == 7'd29) ? 12'd2879 : (addr == 7'd30) ? 12'd1974 : (addr == 7'd31) ? 12'd821 : (addr == 7'd32) ? 12'd289 : (addr == 7'd33) ? 12'd331 : (addr == 7'd34) ? 12'd3253 : (addr == 7'd35) ? 12'd1756 : (addr == 7'd36) ? 12'd1197 : (addr == 7'd37) ? 12'd2304 : (addr == 7'd38) ? 12'd2277 : (addr == 7'd39) ? 12'd2055 : (addr == 7'd40) ? 12'd650 : (addr == 7'd41) ? 12'd1977 : (addr == 7'd42) ? 12'd2513 : (addr == 7'd43) ? 12'd632 : (addr == 7'd44) ? 12'd2865 : (addr == 7'd45) ? 12'd33 : (addr == 7'd46) ? 12'd1320 : (addr == 7'd47) ? 12'd1915 : (addr == 7'd48) ? 12'd2319 : (addr == 7'd49) ? 12'd1435 : (addr == 7'd50) ? 12'd807 : (addr == 7'd51) ? 12'd452 : (addr == 7'd52) ? 12'd1438 : (addr == 7'd53) ? 12'd2868 : (addr == 7'd54) ? 12'd1534 : (addr == 7'd55) ? 12'd2402 : (addr == 7'd56) ? 12'd2647 : (addr == 7'd57) ? 12'd2617 : (addr == 7'd58) ? 12'd1481 : (addr == 7'd59) ? 12'd648 : (addr == 7'd60) ? 12'd2474 : (addr == 7'd61) ? 12'd3110 : (addr == 7'd62) ? 12'd1227 : (addr == 7'd63) ? 12'd910 : (addr == 7'd64) ? 12'd17 : (addr == 7'd65) ? 12'd2761 : (addr == 7'd66) ? 12'd583 : (addr == 7'd67) ? 12'd2649 : (addr == 7'd68) ? 12'd1637 : (addr == 7'd69) ? 12'd723 : (addr == 7'd70) ? 12'd2288 : (addr == 7'd71) ? 12'd1100 : (addr == 7'd72) ? 12'd1409 : (addr == 7'd73) ? 12'd2662 : (addr == 7'd74) ? 12'd3281 : (addr == 7'd75) ? 12'd233 : (addr == 7'd76) ? 12'd756 : (addr == 7'd77) ? 12'd2156 : (addr == 7'd78) ? 12'd3015 : (addr == 7'd79) ? 12'd3050 : (addr == 7'd80) ? 12'd1703 : (addr == 7'd81) ? 12'd1651 : (addr == 7'd82) ? 12'd2789 : (addr == 7'd83) ? 12'd1789 : (addr == 7'd84) ? 12'd1847 : (addr == 7'd85) ? 12'd952 : (addr == 7'd86) ? 12'd1461 : (addr == 7'd87) ? 12'd2687 : (addr == 7'd88) ? 12'd939 : (addr == 7'd89) ? 12'd2308 : (addr == 7'd90) ? 12'd2437 : (addr == 7'd91) ? 12'd2388 : (addr == 7'd92) ? 12'd733 : (addr == 7'd93) ? 12'd2337 : (addr == 7'd94) ? 12'd268 : (addr == 7'd95) ? 12'd641 : (addr == 7'd96) ? 12'd1584 : (addr == 7'd97) ? 12'd2298 : (addr == 7'd98) ? 12'd2037 : (addr == 7'd99) ? 12'd3220 : (addr == 7'd100) ? 12'd375 : (addr == 7'd101) ? 12'd2549 : (addr == 7'd102) ? 12'd2090 : (addr == 7'd103) ? 12'd1645 : (addr == 7'd104) ? 12'd1063 : (addr == 7'd105) ? 12'd319 : (addr == 7'd106) ? 12'd2773 : (addr == 7'd107) ? 12'd757 : (addr == 7'd108) ? 12'd2099 : (addr == 7'd109) ? 12'd561 : (addr == 7'd110) ? 12'd2466 : (addr == 7'd111) ? 12'd2594 : (addr == 7'd112) ? 12'd2804 : (addr == 7'd113) ? 12'd1092 : (addr == 7'd114) ? 12'd403 : (addr == 7'd115) ? 12'd1026 : (addr == 7'd116) ? 12'd1143 : (addr == 7'd117) ? 12'd2150 : (addr == 7'd118) ? 12'd2775 : (addr == 7'd119) ? 12'd886 : (addr == 7'd120) ? 12'd1722 : (addr == 7'd121) ? 12'd1212 : (addr == 7'd122) ? 12'd1874 : (addr == 7'd123) ? 12'd1029 : (addr == 7'd124) ? 12'd2110 : (addr == 7'd125) ? 12'd2935 : (addr == 7'd126) ? 12'd885 : 12'd2154; endmodule