• Robert Schmidt's avatar
    Merge remote-tracking branch 'origin/ldpc_decoding_module_interface_rework'... · a2613d56
    Robert Schmidt authored
    Merge remote-tracking branch 'origin/ldpc_decoding_module_interface_rework' into integration_2024_w50 (2952)
    
    New LDPC coding library interface for decoding and encoding complete slots in one call to the library
    
    Previous attempts to integrate LDPC decoding relying on offloading show
    the limitation of the original code segment coding interface for the
    library implementing LDPC coding. In order to perform the offload and
    therefore the decoding in an optimal fashion, it is relevant to provide
    the implementation with the broader amount of data possible per call,
    which is a slot.  A previous MR related to T2 offload managed to offer
    an interface for decoding transport blocks by modifying only
    nr_ulsch_decoding.c. But this may not be sufficient for performing an
    efficient decoding in any situation. Slots could be shared between
    multiple transport blocks in case multiple UEs are connected to the RAN,
    which makes the transport block size shrink and therefore degrades the
    efficiency of the offloading.
    
    This MR offers a broader interface with a gNB decoding entry point in
    phy_procedures_nr_gNB.c. The file nr_ulsch_decoding.c now lets the
    decoding library implement deinterleaving, rate-unmatching and decoding
    for the slot. In gNB encoding and UE decoding and encoding as well,
    tasks are partitioned in a similar fashion.
    
    As it allows to feed the implementation with the broadest amount of data
    possible, it allows to fit any coding solution in a library. This will
    avoid further modification to OAI source code and addition of options to
    select an implementation when integrating new decoding solutions. An
    implementation of this interface will therefore be offered for every
    existing decoding solution in OAI and solutions added in the future will
    be provided as independent module code without any modification to the
    core of OAI code.  The way to choose the decoding solution and to
    configure it was also unified using configmodule. The library can be
    chosen through the option --loader.ldpc.shlibversion. The slot coding
    solutions shipped with this MR can be configured through configmodule
    (e.g., T2 address and isolated cores).
    
    This MR includes three coding implementations:
    
    - A wrapper around segment decoding libraries for test purpose: libldpc.so
    - A one shot slot coding and encoding with the T2 board: libldpc_t2.so
    - A decoder on FPGA using the XDMA driver: libldpc_xdma.so
    
    Improvements brought by this MR:
    
    - Easy integration of a wider variety of LDPC coding solution at gNB and UE
    - Easy selection of the LDPC coding solution (option --ldpc-offload-enable is kept for now but it can be ultimately removed)
    - T2:
      * More efficient when many UEs are connected
      * Decoding and encoding in nr-uesoftmodem
    a2613d56
nr_init_ue.c 23.1 KB