module_name="hpu_regif_core"
description="Hpu top-level register interface. Used by the host to retrieved RTL information, configure it and issue commands."
word_size_b = 32
offset = 0x00
range = 0x2000
ext_pkg = ["axi_if_common_param_pkg", "axi_if_shell_axil_pkg"]
[section.Xrt]
description="Vitis Required registers"
offset= 0x0
[section.Xrt.register.reserved]
description="Xrt reserved"
default={Cst=0x00}
owner="User"
read_access="Read"
write_access="Write"
[section.Info]
description="Contain all the RTL parameters used that have impact on associated SW"
offset= 0x10
[section.Info.register.Version]
description="RTL version"
owner="Parameter"
read_access="Read"
write_access="None"
default={Param="VERSION"}
[section.Info.register.NttInternal]
description="Ntt internal parameters"
owner="Parameter"
read_access="Read"
write_access="None"
field.radix = { size_b=8, offset_b=0 , default={Param="R"}, description="Ntt radix"}
field.psi = { size_b=8, offset_b=8 , default={Param="PSI"}, description="Ntt Psi"}
field.div = { size_b=8, offset_b=16, default={Param="BWD_PSI_DIV"}, description="Ntt backward div"}
field.delta = { size_b=8, offset_b=24, default={Param="DELTA"}, description="Ntt network delta"}
[section.Info.register.NttRdxCut]
description="Ntt radix cuts, in log2 unit"
owner="Parameter"
read_access="Read"
write_access="None"
field.radix_cut0 = { size_b=4, offset_b=0 , default={Param="NTT_RDX_CUT_S_0"}, description="Ntt radix cut #0"}
field.radix_cut1 = { size_b=4, offset_b=4 , default={Param="NTT_RDX_CUT_S_1"}, description="Ntt radix cut #1"}
field.radix_cut2 = { size_b=4, offset_b=8 , default={Param="NTT_RDX_CUT_S_2"}, description="Ntt radix cut #2"}
field.radix_cut3 = { size_b=4, offset_b=12, default={Param="NTT_RDX_CUT_S_3"}, description="Ntt radix cut #3"}
field.radix_cut4 = { size_b=4, offset_b=16, default={Param="NTT_RDX_CUT_S_4"}, description="Ntt radix cut #4"}
field.radix_cut5 = { size_b=4, offset_b=20, default={Param="NTT_RDX_CUT_S_5"}, description="Ntt radix cut #5"}
field.radix_cut6 = { size_b=4, offset_b=24, default={Param="NTT_RDX_CUT_S_6"}, description="Ntt radix cut #6"}
field.radix_cut7 = { size_b=4, offset_b=28, default={Param="NTT_RDX_CUT_S_7"}, description="Ntt radix cut #7"}
[section.Info.register.NttArch]
description="Ntt architecture"
owner="Parameter"
read_access="Read"
write_access="None"
default={Param="NTT_CORE_ARCH"}
[section.Info.register.NttPbsNb]
description="Maximum number of PBS in the Ntt pipeline"
owner="Parameter"
read_access="Read"
write_access="None"
field.batch_pbs_nb = { size_b=8, offset_b=0 , default={Param="BATCH_PBS_NB"}, description="Maximum number of PBS in the NTT pipe"}
field.total_pbs_nb = { size_b=8, offset_b=8 , default={Param="TOTAL_PBS_NB"}, description="Maximum number of PBS stored in PEP"}
[section.Info.register.NttModulo]
description="Code associated with the prime number used in Ntt"
owner="Parameter"
read_access="Read"
write_access="None"
default={Param="MOD_NTT_NAME"}
[section.Info.register.Appli]
description="Code associated with the application"
owner="Parameter"
read_access="Read"
write_access="None"
default={Param="APPLICATION_NAME"}
[section.Info.register.KsShape]
description="Shape of Keyswitch computation kernel"
owner="Parameter"
read_access="Read"
write_access="None"
field.x = { size_b=8, offset_b=0 , default={Param="LBX"}, description="Nb coef. on X dim"}
field.y = { size_b=8, offset_b=8 , default={Param="LBY"}, description="Nb coef. on Y dim"}
field.z = { size_b=8, offset_b=16, default={Param="LBZ"}, description="Nb coef. on Z dim"}
[section.Info.register.KsInfo]
description="Properties of Keyswitch computation kernel"
owner="Parameter"
read_access="Read"
write_access="None"
field.mod_ksk_w = { size_b=8, offset_b=0 , default={Param="MOD_KSK_W"}, description="Width of ksk modulo"}
field.ks_l = { size_b=8, offset_b=8 , default={Param="KS_L"}, description="Nb of ks level"}
field.ks_b = { size_b=8, offset_b=16, default={Param="KS_B_W"}, description="Width of ks decomp"}
[section.Info.register.RegfInfo]
description="Properties of register file"
owner="Parameter"
read_access="Read"
write_access="None"
field.reg_nb = { size_b=8, offset_b=0 , default={Param="REGF_REG_NB"}, description="Number of registers in regfile"}
field.coef_nb = { size_b=8, offset_b=8 , default={Param="REGF_COEF_NB"}, description="Number of coefficients at regfile interface"}
[section.Info.register.IscInfo]
description="Properties of instruction scheduler"
owner="Parameter"
read_access="Read"
write_access="None"
field.min_iop_size = { size_b=8, offset_b=0 , default={Param="MIN_IOP_SIZE"}, description="#DOp per IOp to prevent sync_id overflow."}
[section.Info.register.PEInfo]
description="Properties of process elements"
owner="Parameter"
read_access="Read"
write_access="None"
field.alu_nb = { size_b=8, offset_b=24 , default={Param="PEA_ALU_NB"}, description="Number of coefficients processed in parallel in pe_alu"}
field.pep_regf_period = { size_b=8, offset_b=16 , default={Param="PEP_REGF_PERIOD"}, description="Number of cycles between 2 consecutive data transfer between PEP and regfile"}
field.pem_regf_period = { size_b=8, offset_b=8 , default={Param="PEM_REGF_PERIOD"}, description="Number of cycles between 2 consecutive data transfer between PEM and regfile"}
field.pea_regf_period = { size_b=8, offset_b=0 , default={Param="PEA_REGF_PERIOD"}, description="Number of cycles between 2 consecutive data transfer between PEA and regfile"}
[section.Info.register.HbmPc]
description="HBM pseudo channel properties"
owner="Parameter"
read_access="Read"
write_access="None"
field.bsk_pc = { size_b=8, offset_b=0 , default={Param="BSK_PC"}, description="Bsk pc"}
field.bsk_cut_nb = { size_b=8, offset_b=8 , default={Param="BSK_CUT_NB"}, description="Bsk cut nb"}
field.ksk_pc = { size_b=8, offset_b=16, default={Param="KSK_PC"}, description="Ksk pc"}
field.ksk_cut_nb = { size_b=8, offset_b=24, default={Param="KSK_CUT_NB"}, description="Ksk cut nb"}
[section.Info.register.HbmPc_2]
description="HBM pseudo channel properties (2)"
owner="Parameter"
read_access="Read"
write_access="None"
field.pem_pc = { size_b=8, offset_b=0, default={Param="PEM_PC"}, description="pem_pc"}
[section.Info.register.pem_axi4_data_w]
description="Ciphertext AXI4 bus data width"
owner="Parameter"
read_access="Read"
write_access="None"
default={Param="AXI4_PEM_DATA_W"}
[section.Info.register.glwe_axi4_data_w]
description="GLWE AXI4 bus data width"
owner="Parameter"
read_access="Read"
write_access="None"
default={Param="AXI4_GLWE_DATA_W"}
[section.Info.register.bsk_axi4_data_w]
description="BSK AXI4 bus data width"
owner="Parameter"
read_access="Read"
write_access="None"
default={Param="AXI4_BSK_DATA_W"}
[section.Info.register.ksk_axi4_data_w]
description="KSK AXI4 bus data width"
owner="Parameter"
read_access="Read"
write_access="None"
default={Param="AXI4_KSK_DATA_W"}
[section.LdSt]
description="Define some properties of CT buffers in board-memory"
duplicate=["_bank0","_bank1","_bank2","_bank3"]
[section.LdSt.register.addr]
description="Ciphertext buffer addr"
owner="User"
read_access="Read"
write_access="Write"
duplicate=["_pc0_lsb", "_pc0_msb","_pc1_lsb", "_pc1_msb"]
[section.PbsLut]
description="Define PBS Lut offset in board-memory"
[section.PbsLut.register.addr]
description="Pbs Lut gid offset"
owner="User"
read_access="Read"
write_access="Write"
duplicate=["_lsb", "_msb"]
[section.Keys]
description="Define keys location properties"
duplicate=["_Bsk", "_Ksk"]
[section.Keys.register.addr_pc]
description="Key address for PC#"
owner="User"
read_access="Read"
write_access="Write"
duplicate=["_pc0_lsb", "_pc0_msb", "_pc1_lsb", "_pc1_msb", "_pc2_lsb", "_pc2_msb", "_pc3_lsb", "_pc3_msb", "_pc4_lsb", "_pc4_msb", "_pc5_lsb", "_pc5_msb", "_pc6_lsb", "_pc6_msb", "_pc7_lsb", "_pc7_msb"]
[section.Keys.register.avail]
description="Key available bit"
owner="User"
read_access="Read"
write_access="Write"
field.avail = { size_b=1, offset_b=0 , default={Cst=0}, description="avail"}
[section.Keys.register.reset]
description="Key reset sequence"
owner="Kernel"
read_access="Read"
write_access="WriteNotify"
field.request = { size_b=1, offset_b=0 , default={Cst=0}, description="request"}
field.done = { size_b=1, offset_b=31 , default={Cst=0}, description="done"}
[section.Bpip]
description="Define BPIP configuration"
[section.Bpip.register.use]
description="(1) Use BPIP mode, (0) use IPIP mode (default)"
owner="User"
read_access="Read"
write_access="Write"
field.use_bpip = { size_b=1, offset_b=0 , default={Cst=0}, description="use"}
[section.Bpip.register.timeout]
description="Timeout for BPIP mode"
owner="User"
read_access="Read"
write_access="Write"
default={Cst=0xffffffff}
[section.Trace]
description="Define Trace offset in board-memory"
[section.Trace.register.addr]
description="Trace address offset"
owner="User"
read_access="Read"
write_access="Write"
duplicate=["_lsb", "_msb"]
[section.WorkAck]
description="Purpose of this section"
offset= 0x800
[section.WorkAck.register.workq]
description="Insert work in workq and read status"
owner="Kernel"
read_access="Read"
write_access="WriteNotify"
[section.WorkAck.register.ackq]
description="Pop ack from in ackq"
owner="Kernel"
read_access="ReadNotify"
write_access="None"
field.bsk_pc = { size_b=8, offset_b=0 , default={Cst=0}, description="Bsk pc"}
field.bsk_cut_nb = { size_b=8, offset_b=8 , default={Cst=0}, description="Bsk cut nb"}
[section.Runtime]
description="Contains all runtimes information exposed by the RTL"
offset= 0x1000
[section.Runtime.register.errors]
description="Error register (Could be reset by user)"
owner="Kernel"
read_access="Read"
write_access="WriteNotify"
field.pbs = { size_b=13, offset_b=0 , default={Cst=0}, description="HPU error"}
[section.Runtime.register.infos_loop]
description="Information register : iteration loop"
owner="Kernel"
read_access="Read"
write_access="None"
field.br_loop = { size_b=15, offset_b=0 , default={Cst=0}, description="PBS current BR-loop"}
field.br_loop_c = { size_b=1, offset_b=15 , default={Cst=0}, description="PBS current BR-loop parity"}
field.ks_loop = { size_b=15, offset_b=16 , default={Cst=0}, description="KS current KS-loop"}
field.ks_loop_c = { size_b=1, offset_b=31 , default={Cst=0}, description="KS current KS-loop parity"}
[section.Runtime.register.infos_pointer0]
description="Information register : PEP pointers 0"
owner="Kernel"
read_access="Read"
write_access="None"
field.pool_rp = { size_b=8, offset_b=0 , default={Cst=0}, description="PEP pool_rp"}
field.pool_wp = { size_b=8, offset_b=8 , default={Cst=0}, description="PEP pool_wp"}
field.ldg_pt = { size_b=8, offset_b=16 , default={Cst=0}, description="PEP ldg_pt"}
field.ldb_pt = { size_b=8, offset_b=24 , default={Cst=0}, description="PEP ldb_pt"}
[section.Runtime.register.infos_pointer1]
description="Information register : PEP pointers 1"
owner="Kernel"
read_access="Read"
write_access="None"
field.ks_in_rp = { size_b=8, offset_b=0 , default={Cst=0}, description="PEP ks_in_rp"}
field.ks_in_wp = { size_b=8, offset_b=8 , default={Cst=0}, description="PEP ks_in_wp"}
field.ks_out_rp = { size_b=8, offset_b=16 , default={Cst=0}, description="PEP ks_out_rp"}
field.ks_out_wp = { size_b=8, offset_b=24 , default={Cst=0}, description="PEP ks_out_wp"}
[section.Runtime.register.infos_pointer2]
description="Information register : PEP pointers 2"
owner="Kernel"
read_access="Read"
write_access="None"
field.pbs_in_rp = { size_b=8, offset_b=0 , default={Cst=0}, description="PEP pbs_in_rp"}
field.pbs_in_wp = { size_b=8, offset_b=8 , default={Cst=0}, description="PEP pbs_in_wp"}
[section.Runtime.register.isc_info]
description="ISC 4 latest instructions received ([0] is the most recent)"
owner="Kernel"
read_access="Read"
write_access="None"
duplicate=["_0","_1","_2","_3"]
[section.Runtime.register.pep_seq_bpip_batch_cnt]
description="PEP BPIP batch counter (Could be reset by user)"
owner="Kernel"
read_access="Read"
write_access="WriteNotify"
[section.Runtime.register.pep_seq_bpip_batch_flush_cnt]
description="PEP BPIP batch triggered with a flush counter (Could be reset by user)"
owner="Kernel"
read_access="Read"
write_access="WriteNotify"
[section.Runtime.register.pep_seq_bpip_batch_timeout_cnt]
description="PEP BPIP batch triggered with a timeout counter (Could be reset by user)"
owner="Kernel"
read_access="Read"
write_access="WriteNotify"
[section.Runtime.register.pep_seq_ld_ack_cnt]
description="PEP load blwe ack counter (Could be reset by user)"
owner="Kernel"
read_access="Read"
write_access="WriteNotify"
[section.Runtime.register.pep_seq_cmux_not_full_batch_cnt]
description="PEP not full batch CMUX counter (Could be reset by user)"
owner="Kernel"
read_access="Read"
write_access="WriteNotify"
[section.Runtime.register.pep_ldb_rcp_dur]
description="PEP load BLWE reception max duration (Could be reset by user)"
owner="Kernel"
read_access="Read"
write_access="WriteNotify"
[section.Runtime.register.pep_ldg_req_dur]
description="PEP load GLWE request max duration (Could be reset by user)"
owner="Kernel"
read_access="Read"
write_access="WriteNotify"
[section.Runtime.register.pep_ldg_rcp_dur]
description="PEP load GLWE reception max duration (Could be reset by user)"
owner="Kernel"
read_access="Read"
write_access="WriteNotify"
[section.Runtime.register.pep_mmacc_sxt_rcp_dur]
description="PEP MMACC SXT reception duration (Could be reset by user)"
owner="Kernel"
read_access="Read"
write_access="WriteNotify"
[section.Runtime.register.pep_mmacc_sxt_req_dur]
description="PEP MMACC SXT request duration (Could be reset by user)"
owner="Kernel"
read_access="Read"
write_access="WriteNotify"
[section.Runtime.register.pep_mmacc_sxt_cmd_wait_b_dur]
description="PEP MMACC SXT command without b duration (Could be reset by user)"
owner="Kernel"
read_access="Read"
write_access="WriteNotify"
[section.Runtime.register.pep_inst_cnt]
description="PEP input instruction counter (Could be reset by user)"
owner="Kernel"
read_access="Read"
write_access="WriteNotify"
[section.Runtime.register.pep_ack_cnt]
description="PEP instruction acknowledge counter (Could be reset by user)"
owner="Kernel"
read_access="Read"
write_access="WriteNotify"
[section.Runtime.register.pem_load_inst_cnt]
description="PEM load input instruction counter (Could be reset by user)"
owner="Kernel"
read_access="Read"
write_access="WriteNotify"
[section.Runtime.register.pem_load_ack_cnt]
description="PEM load instruction acknowledge counter (Could be reset by user)"
owner="Kernel"
read_access="Read"
write_access="WriteNotify"
[section.Runtime.register.pem_store_inst_cnt]
description="PEM store input instruction counter (Could be reset by user)"
owner="Kernel"
read_access="Read"
write_access="WriteNotify"
[section.Runtime.register.pem_store_ack_cnt]
description="PEM store instruction acknowledge counter (Could be reset by user)"
owner="Kernel"
read_access="Read"
write_access="WriteNotify"
[section.Runtime.register.pea_inst_cnt]
description="PEA input instruction counter (Could be reset by user)"
owner="Kernel"
read_access="Read"
write_access="WriteNotify"
[section.Runtime.register.pea_ack_cnt]
description="PEA instruction acknowledge counter (Could be reset by user)"
owner="Kernel"
read_access="Read"
write_access="WriteNotify"
[section.Runtime.register.isc_inst_cnt]
description="ISC input instruction counter (Could be reset by user)"
owner="Kernel"
read_access="Read"
write_access="WriteNotify"
[section.Runtime.register.isc_ack_cnt]
description="ISC instruction acknowledge sample counter (Could be reset by user)"
owner="Kernel"
read_access="Read"
write_access="WriteNotify"
[section.Runtime.register.pem_load_info_0]
description="PEM load first data)"
owner="Kernel"
read_access="Read"
write_access="None"
duplicate=["_pc0_0","_pc0_1","_pc0_2","_pc0_3","_pc1_0","_pc1_1","_pc1_2","_pc1_3"]
[section.Runtime.register.pem_load_info_1]
description="PEM load first address"
owner="Kernel"
read_access="Read"
write_access="None"
duplicate=["_pc0_lsb","_pc0_msb","_pc1_lsb","_pc1_msb"]
[section.Runtime.register.pem_store_info_0]
description="PEM store info 0)"
owner="Kernel"
read_access="Read"
write_access="None"
field.cmd_vld = { size_b=1, offset_b=0 , default={Cst=0}, description="PEM_ST cmd vld"}
field.cmd_rdy = { size_b=1, offset_b=1 , default={Cst=0}, description="PEM_ST cmd rdy"}
field.pem_regf_rd_req_vld = { size_b=1, offset_b=2 , default={Cst=0}, description="PEM_ST pem_regf_rd_req_vld"}
field.pem_regf_rd_req_rdy = { size_b=1, offset_b=3 , default={Cst=0}, description="PEM_ST pem_regf_rd_req_rdy"}
field.brsp_fifo_in_vld = { size_b=4, offset_b=4 , default={Cst=0}, description="PEM_ST brsp_fifo_in_vld"}
field.brsp_fifo_in_rdy = { size_b=4, offset_b=8 , default={Cst=0}, description="PEM_ST brsp_fifo_in_rdy"}
field.rcp_fifo_in_vld = { size_b=4, offset_b=12 , default={Cst=0}, description="PEM_ST rcp_fifo_in_vld"}
field.rcp_fifo_in_rdy = { size_b=4, offset_b=16 , default={Cst=0}, description="PEM_ST rcp_fifo_in_rdy"}
field.r2_axi_vld = { size_b=4, offset_b=20 , default={Cst=0}, description="PEM_ST r2_axi_vld"}
field.r2_axi_rdy = { size_b=4, offset_b=24 , default={Cst=0}, description="PEM_ST r2_axi_rdy"}
field.c0_enough_location = { size_b=4, offset_b=28 , default={Cst=0}, description="PEM_ST c0_enough_location"}
[section.Runtime.register.pem_store_info_1]
description="PEM store info 1"
owner="Kernel"
read_access="Read"
write_access="None"
field.s0_cmd_vld = { size_b=4, offset_b=0 , default={Cst=0}, description="PEM_ST s0_cmd_vld"}
field.s0_cmd_rdy = { size_b=4, offset_b=4 , default={Cst=0}, description="PEM_ST s0_cmd_rdy"}
field.m_axi_bvalid = { size_b=4, offset_b=8 , default={Cst=0}, description="PEM_ST m_axi_bvalid"}
field.m_axi_bready = { size_b=4, offset_b=12 , default={Cst=0}, description="PEM_ST m_axi_bready"}
field.m_axi_wvalid = { size_b=4, offset_b=16 , default={Cst=0}, description="PEM_ST m_axi_wvalid"}
field.m_axi_wready = { size_b=4, offset_b=20 , default={Cst=0}, description="PEM_ST m_axi_wready"}
field.m_axi_awvalid = { size_b=4, offset_b=24 , default={Cst=0}, description="PEM_ST m_axi_awvalid"}
field.m_axi_awready = { size_b=4, offset_b=28 , default={Cst=0}, description="PEM_ST m_axi_awready"}
[section.Runtime.register.pem_store_info_2]
description="PEM store info 2"
owner="Kernel"
read_access="Read"
write_access="None"
field.c0_free_loc_cnt = { size_b=16, offset_b=0 , default={Cst=0}, description="PEM_ST c0_free_loc_cnt"}
field.brsp_bresp_cnt = { size_b=16, offset_b=16 , default={Cst=0}, description="PEM_ST brsp_bresp_cnt"}
[section.Runtime.register.pem_store_info_3]
description="PEM store info 3"
owner="Kernel"
read_access="Read"
write_access="None"
field.brsp_ack_seen = { size_b=16, offset_b=0 , default={Cst=0}, description="PEM_ST brsp_ack_seen"}
field.c0_cmd_cnt = { size_b=8, offset_b=16 , default={Cst=0}, description="PEM_ST c0_cmd_cnt"}