|
|
|
|
@@ -1,622 +0,0 @@
|
|
|
|
|
# This is a sample example of register-map definition
|
|
|
|
|
|
|
|
|
|
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 = 0x10000
|
|
|
|
|
ext_pkg = ["axi_if_common_param_pkg", "axi_if_shell_axil_pkg"]
|
|
|
|
|
|
|
|
|
|
# =====================================================================================================================
|
|
|
|
|
[section.Xrt]
|
|
|
|
|
description="Vitis Required registers"
|
|
|
|
|
offset= 0x0
|
|
|
|
|
|
|
|
|
|
# Currently not in used -> Placeholder only
|
|
|
|
|
[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.ntt_architecture]
|
|
|
|
|
description="NTT architecture"
|
|
|
|
|
owner="Parameter"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="None"
|
|
|
|
|
default={Param="NTT_CORE_ARCH"}
|
|
|
|
|
|
|
|
|
|
[section.info.register.ntt_structure]
|
|
|
|
|
description="NTT structure 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 (for wmm arch)"}
|
|
|
|
|
|
|
|
|
|
[section.info.register.ntt_rdx_cut]
|
|
|
|
|
description="NTT radix cuts, in log2 unit (for gf64 arch)"
|
|
|
|
|
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.ntt_pbs]
|
|
|
|
|
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 buffer"}
|
|
|
|
|
|
|
|
|
|
[section.info.register.ntt_modulo]
|
|
|
|
|
description="Code associated to the NTT prime"
|
|
|
|
|
owner="Parameter"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="None"
|
|
|
|
|
default={Param="MOD_NTT_NAME"}
|
|
|
|
|
|
|
|
|
|
[section.info.register.application]
|
|
|
|
|
description="Code associated with the application"
|
|
|
|
|
owner="Parameter"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="None"
|
|
|
|
|
default={Param="APPLICATION_NAME"}
|
|
|
|
|
|
|
|
|
|
[section.info.register.ks_structure]
|
|
|
|
|
description="Key-switch structure parameters"
|
|
|
|
|
owner="Parameter"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="None"
|
|
|
|
|
field.x = { size_b=8, offset_b=0 , default={Param="LBX"}, description="Number of coefficients on X dimension"}
|
|
|
|
|
field.y = { size_b=8, offset_b=8 , default={Param="LBY"}, description="Number of coefficients on Y dimension"}
|
|
|
|
|
field.z = { size_b=8, offset_b=16, default={Param="LBZ"}, description="Number of coefficients on Z dimension"}
|
|
|
|
|
|
|
|
|
|
[section.info.register.ks_crypto_param]
|
|
|
|
|
description="Key-switch crypto parameters"
|
|
|
|
|
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="Number of KS decomposition level"}
|
|
|
|
|
field.ks_b = { size_b=8, offset_b=16, default={Param="KS_B_W"}, description="Width of KS decomposition base"}
|
|
|
|
|
|
|
|
|
|
[section.info.register.regf_structure]
|
|
|
|
|
description="Register file structure parameters"
|
|
|
|
|
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.isc_structure]
|
|
|
|
|
description="Instruction scheduler structure parameters"
|
|
|
|
|
owner="Parameter"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="None"
|
|
|
|
|
field.depth = { size_b=8, offset_b=0 , default={Param="ISC_DEPTH"}, description="Number of slots in ISC lookahead buffer."}
|
|
|
|
|
field.min_iop_size = { size_b=8, offset_b=8 , default={Param="MIN_IOP_SIZE"}, description="Minimum number of DOp per IOp to prevent sync_id overflow."}
|
|
|
|
|
|
|
|
|
|
[section.info.register.pe_properties]
|
|
|
|
|
description="Processing elements parameters"
|
|
|
|
|
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.bsk_structure]
|
|
|
|
|
description="BSK manager structure parameters"
|
|
|
|
|
owner="Parameter"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="None"
|
|
|
|
|
field.bsk_cut_nb = { size_b=8, offset_b=8 , default={Param="BSK_CUT_NB"}, description="BSK cut nb"}
|
|
|
|
|
|
|
|
|
|
[section.info.register.ksk_structure]
|
|
|
|
|
description="KSK manager structure parameters"
|
|
|
|
|
owner="Parameter"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="None"
|
|
|
|
|
field.ksk_cut_nb = { size_b=8, offset_b=8 , default={Param="KSK_CUT_NB"}, description="KSK cut nb"}
|
|
|
|
|
|
|
|
|
|
[section.info.register.hbm_axi4_nb]
|
|
|
|
|
description="Number of AXI4 connections to HBM"
|
|
|
|
|
owner="Parameter"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="None"
|
|
|
|
|
field.bsk_pc = { size_b=8, offset_b=0 , default={Param="BSK_PC"}, description="Number of HBM connections for BSK"}
|
|
|
|
|
field.ksk_pc = { size_b=8, offset_b=8, default={Param="KSK_PC"}, description="Number of HBM connections for KSK"}
|
|
|
|
|
field.pem_pc = { size_b=8, offset_b=16, default={Param="PEM_PC"}, description="Number of HBM connections for ciphertexts (PEM)"}
|
|
|
|
|
field.glwe_pc = { size_b=8, offset_b=24, default={Param="GLWE_PC"}, description="Number of HBM connections for GLWE"}
|
|
|
|
|
|
|
|
|
|
[section.info.register.hbm_axi4_dataw_pem]
|
|
|
|
|
description="Ciphertext HBM AXI4 connection data width"
|
|
|
|
|
owner="Parameter"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="None"
|
|
|
|
|
default={Param="AXI4_PEM_DATA_W"}
|
|
|
|
|
|
|
|
|
|
[section.info.register.hbm_axi4_dataw_glwe]
|
|
|
|
|
description="GLWE HBM AXI4 connection data width"
|
|
|
|
|
owner="Parameter"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="None"
|
|
|
|
|
default={Param="AXI4_GLWE_DATA_W"}
|
|
|
|
|
|
|
|
|
|
[section.info.register.hbm_axi4_dataw_bsk]
|
|
|
|
|
description="BSK HBM AXI4 connection data width"
|
|
|
|
|
owner="Parameter"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="None"
|
|
|
|
|
default={Param="AXI4_BSK_DATA_W"}
|
|
|
|
|
|
|
|
|
|
[section.info.register.hbm_axi4_dataw_ksk]
|
|
|
|
|
description="KSK HBM AXI4 connection data width"
|
|
|
|
|
owner="Parameter"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="None"
|
|
|
|
|
default={Param="AXI4_KSK_DATA_W"}
|
|
|
|
|
|
|
|
|
|
# =====================================================================================================================
|
|
|
|
|
[section.bpip]
|
|
|
|
|
offset= 0x200
|
|
|
|
|
description="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=1}, description="use"}
|
|
|
|
|
field.use_opportunism = { size_b=1, offset_b=1 , default={Cst=0}, description="use opportunistic PBS flush"}
|
|
|
|
|
|
|
|
|
|
[section.bpip.register.timeout]
|
|
|
|
|
description="Timeout for BPIP mode"
|
|
|
|
|
owner="User"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="Write"
|
|
|
|
|
default={Cst=0xffffffff}
|
|
|
|
|
|
|
|
|
|
# =====================================================================================================================
|
|
|
|
|
[section.hbm_axi4_addr_1in3]
|
|
|
|
|
offset= 0x400
|
|
|
|
|
description="HBM AXI4 connection address offset"
|
|
|
|
|
|
|
|
|
|
[section.hbm_axi4_addr_1in3.register.ct]
|
|
|
|
|
description="Address offset for each ciphertext HBM AXI4 connection"
|
|
|
|
|
owner="User"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="Write"
|
|
|
|
|
duplicate=["_pc0_lsb", "_pc0_msb","_pc1_lsb", "_pc1_msb"]
|
|
|
|
|
|
|
|
|
|
[section.hbm_axi4_addr_1in3.register.glwe]
|
|
|
|
|
description="Address offset for each GLWE HBM AXI4 connection"
|
|
|
|
|
owner="User"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="Write"
|
|
|
|
|
duplicate=["_pc0_lsb", "_pc0_msb"]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[section.hbm_axi4_addr_1in3.register.ksk]
|
|
|
|
|
description="Address offset for each KSK HBM AXI4 connection"
|
|
|
|
|
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.hbm_axi4_addr_1in3.register.trc]
|
|
|
|
|
description="Address offset for each trace HBM AXI4 connection"
|
|
|
|
|
owner="User"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="Write"
|
|
|
|
|
duplicate=["_pc0_lsb", "_pc0_msb"]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# =====================================================================================================================
|
|
|
|
|
[section.hbm_axi4_addr_3in3]
|
|
|
|
|
description="HBM AXI4 connection address offset"
|
|
|
|
|
|
|
|
|
|
[section.hbm_axi4_addr_3in3.register.bsk]
|
|
|
|
|
description="Address offset for each BSK HBM AXI4 connection"
|
|
|
|
|
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.status_1in3]
|
|
|
|
|
description="HPU status of part 1in3"
|
|
|
|
|
offset= 0x800
|
|
|
|
|
|
|
|
|
|
[section.status_1in3.register.error]
|
|
|
|
|
description="Error register (Could be reset by user)"
|
|
|
|
|
owner="Kernel"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="WriteNotify"
|
|
|
|
|
field.pbs = { size_b=32, offset_b=0 , default={Cst=0}, description="HPU error part 1in3"}
|
|
|
|
|
|
|
|
|
|
# =====================================================================================================================
|
|
|
|
|
[section.status_3in3]
|
|
|
|
|
description="HPU status of parts 2in3 and 3in3"
|
|
|
|
|
|
|
|
|
|
[section.status_3in3.register.error]
|
|
|
|
|
description="Error register (Could be reset by user)"
|
|
|
|
|
owner="Kernel"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="WriteNotify"
|
|
|
|
|
field.pbs = { size_b=32, offset_b=0 , default={Cst=0}, description="HPU error part 3in3"}
|
|
|
|
|
|
|
|
|
|
# =====================================================================================================================
|
|
|
|
|
[section.ksk_avail]
|
|
|
|
|
description="KSK availability configuration"
|
|
|
|
|
offset= 0x1000
|
|
|
|
|
|
|
|
|
|
[section.ksk_avail.register.avail]
|
|
|
|
|
description="KSK available bit"
|
|
|
|
|
owner="User"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="Write"
|
|
|
|
|
field.avail = { size_b=1, offset_b=0 , default={Cst=0}, description="avail"}
|
|
|
|
|
|
|
|
|
|
[section.ksk_avail.register.reset]
|
|
|
|
|
description="KSK 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.bsk_avail]
|
|
|
|
|
description="BSK availability configuration"
|
|
|
|
|
|
|
|
|
|
[section.bsk_avail.register.avail]
|
|
|
|
|
description="BSK available bit"
|
|
|
|
|
owner="User"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="Write"
|
|
|
|
|
field.avail = { size_b=1, offset_b=0 , default={Cst=0}, description="avail"}
|
|
|
|
|
|
|
|
|
|
[section.bsk_avail.register.reset]
|
|
|
|
|
description="BSK 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.runtime_1in3]
|
|
|
|
|
description="Runtime information"
|
|
|
|
|
offset= 0x2000
|
|
|
|
|
|
|
|
|
|
[section.runtime_1in3.register.pep_cmux_loop]
|
|
|
|
|
description="PEP: CMUX iteration loop number"
|
|
|
|
|
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_1in3.register.pep_pointer_0]
|
|
|
|
|
description="PEP: pointers (part 1)"
|
|
|
|
|
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_1in3.register.pep_pointer_1]
|
|
|
|
|
description="PEP: pointers (part 2)"
|
|
|
|
|
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_1in3.register.pep_pointer_2]
|
|
|
|
|
description="PEP: pointers (part 3)"
|
|
|
|
|
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"}
|
|
|
|
|
field.ipip_flush_last_pbs_in_loop = { size_b=16, offset_b=16 , default={Cst=0}, description="PEP IPIP flush last pbs_in_loop"}
|
|
|
|
|
|
|
|
|
|
[section.runtime_1in3.register.isc_latest_instruction]
|
|
|
|
|
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_1in3.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_1in3.register.pep_seq_bpip_batch_flush_cnt]
|
|
|
|
|
description="PEP: BPIP batch triggered by a flush counter (Could be reset by user)"
|
|
|
|
|
owner="Kernel"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="WriteNotify"
|
|
|
|
|
|
|
|
|
|
[section.runtime_1in3.register.pep_seq_bpip_batch_timeout_cnt]
|
|
|
|
|
description="PEP: BPIP batch triggered by a timeout counter (Could be reset by user)"
|
|
|
|
|
owner="Kernel"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="WriteNotify"
|
|
|
|
|
|
|
|
|
|
[section.runtime_1in3.register.pep_seq_bpip_waiting_batch_cnt]
|
|
|
|
|
description="PEP: BPIP batch that waits the trigger counter (Could be reset by user)"
|
|
|
|
|
owner="Kernel"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="WriteNotify"
|
|
|
|
|
|
|
|
|
|
[section.runtime_1in3.register.pep_seq_bpip_batch_filling_cnt]
|
|
|
|
|
description="PEP: Count batch with filled with a given number of CT (Could be reset by user)"
|
|
|
|
|
owner="Kernel"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="WriteNotify"
|
|
|
|
|
duplicate=["_1","_2","_3","_4","_5","_6","_7","_8","_9","_10","_11","_12","_13","_14","_15","_16"]
|
|
|
|
|
|
|
|
|
|
[section.runtime_1in3.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_1in3.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_1in3.register.pep_seq_ipip_flush_cnt]
|
|
|
|
|
description="PEP: IPIP flush CMUX counter (Could be reset by user)"
|
|
|
|
|
owner="Kernel"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="WriteNotify"
|
|
|
|
|
|
|
|
|
|
[section.runtime_1in3.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_1in3.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_1in3.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_1in3.register.pep_load_ksk_rcp_dur]
|
|
|
|
|
description="PEP: load KSK slice reception max duration (Could be reset by user)"
|
|
|
|
|
owner="Kernel"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="WriteNotify"
|
|
|
|
|
duplicate=["_pc0","_pc1","_pc2","_pc3","_pc4","_pc5","_pc6","_pc7","_pc8","_pc9","_pc10","_pc11","_pc12","_pc13","_pc14","_pc15"]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[section.runtime_1in3.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_1in3.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_1in3.register.pep_mmacc_sxt_cmd_wait_b_dur]
|
|
|
|
|
description="PEP: MMACC SXT command wait for b duration (Could be reset by user)"
|
|
|
|
|
owner="Kernel"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="WriteNotify"
|
|
|
|
|
|
|
|
|
|
[section.runtime_1in3.register.pep_inst_cnt]
|
|
|
|
|
description="PEP: input instruction counter (Could be reset by user)"
|
|
|
|
|
owner="Kernel"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="WriteNotify"
|
|
|
|
|
|
|
|
|
|
[section.runtime_1in3.register.pep_ack_cnt]
|
|
|
|
|
description="PEP: instruction acknowledge counter (Could be reset by user)"
|
|
|
|
|
owner="Kernel"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="WriteNotify"
|
|
|
|
|
|
|
|
|
|
[section.runtime_1in3.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_1in3.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_1in3.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_1in3.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_1in3.register.pea_inst_cnt]
|
|
|
|
|
description="PEA: input instruction counter (Could be reset by user)"
|
|
|
|
|
owner="Kernel"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="WriteNotify"
|
|
|
|
|
|
|
|
|
|
[section.runtime_1in3.register.pea_ack_cnt]
|
|
|
|
|
description="PEA: instruction acknowledge counter (Could be reset by user)"
|
|
|
|
|
owner="Kernel"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="WriteNotify"
|
|
|
|
|
|
|
|
|
|
[section.runtime_1in3.register.isc_inst_cnt]
|
|
|
|
|
description="ISC: input instruction counter (Could be reset by user)"
|
|
|
|
|
owner="Kernel"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="WriteNotify"
|
|
|
|
|
|
|
|
|
|
[section.runtime_1in3.register.isc_ack_cnt]
|
|
|
|
|
description="ISC: instruction acknowledge counter (Could be reset by user)"
|
|
|
|
|
owner="Kernel"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="WriteNotify"
|
|
|
|
|
|
|
|
|
|
[section.runtime_1in3.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_1in3.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_1in3.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_1in3.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_1in3.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_1in3.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"}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# =====================================================================================================================
|
|
|
|
|
[section.runtime_3in3]
|
|
|
|
|
description="Runtime information"
|
|
|
|
|
|
|
|
|
|
[section.runtime_3in3.register.pep_load_bsk_rcp_dur]
|
|
|
|
|
description="PEP: load BSK slice reception max duration (Could be reset by user)"
|
|
|
|
|
owner="Kernel"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="WriteNotify"
|
|
|
|
|
duplicate=["_pc0","_pc1","_pc2","_pc3","_pc4","_pc5","_pc6","_pc7","_pc8","_pc9","_pc10","_pc11","_pc12","_pc13","_pc14","_pc15"]
|
|
|
|
|
|
|
|
|
|
[section.runtime_3in3.register.pep_bskif_req_info_0]
|
|
|
|
|
description="PEP: BSK_IF: requester info 0"
|
|
|
|
|
owner="Kernel"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="None"
|
|
|
|
|
field.req_br_loop_rp = { size_b=16, offset_b=0 , default={Cst=0}, description="PEP BSK_IF requester BSK read pointer"}
|
|
|
|
|
field.req_br_loop_wp = { size_b=16, offset_b=16 , default={Cst=0}, description="PEP BSK_IF requester BSK write pointer"}
|
|
|
|
|
|
|
|
|
|
[section.runtime_3in3.register.pep_bskif_req_info_1]
|
|
|
|
|
description="PEP: BSK_IF: requester info 0"
|
|
|
|
|
owner="Kernel"
|
|
|
|
|
read_access="Read"
|
|
|
|
|
write_access="None"
|
|
|
|
|
field.req_prf_br_loop = { size_b=16, offset_b=0 , default={Cst=0}, description="PEP BSK_IF requester BSK prefetch pointer"}
|
|
|
|
|
field.req_parity = { size_b=1, offset_b=16 , default={Cst=0}, description="PEP BSK_IF requester BSK pointer parity"}
|
|
|
|
|
field.req_assigned = { size_b=1, offset_b=31 , default={Cst=0}, description="PEP BSK_IF requester assignment"}
|
|
|
|
|
|
|
|
|
|
# =====================================================================================================================
|
|
|
|
|
[section.WorkAck]
|
|
|
|
|
description="Purpose of this section"
|
|
|
|
|
offset= 0x8000
|
|
|
|
|
|
|
|
|
|
[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"
|