Commit Graph
31 Commits
Author SHA1 Message Date
maki 67717ed5c1 update 2026-09-19 23:28:08 +09:00
francescomani 27158b9244 rename reverse_bits to bits and move functions to count bits in there 2026-04-18 09:48:39 +02:00
Robert Schmidt 8107939f08 Change OAI license to CSSL v1.0 (and others)
- all RAN code, CI code, configuration files, dockerfiles, in CSSL v1.0
- all deployment code (openshift, charts, ancillary files like shell
  scripts), in MIT
- documentation in CC-BY-4.0
- exceptions might apply and are listed in NOTICE
- there is a new LICENSES folder with all licenses
- CONTRIBUTIONS.md has been updated accordingly

For automated changes based on OAI PL v1.1:

    perl -i~ -0pe 's/\/\*.*Licensed to the OpenAirInterface.*openairinterface.org\n#?/\/*\n * SPDX-License-Identifier: LicenseRef-CSSL-1.0\n/s' **/*.{c,h,cpp}
    perl -i~ -0pe 's/\/\*.*Licensed to the OpenAirInterface.*openairinterface.org\n#?/\/*\n * SPDX-License-Identifier: LicenseRef-CSSL-1.0\n/s' **/*.ts
    perl -i~ -0pe 's/<!--.*Licensed to the OpenAirInterface.*openairinterface.org\n.*-->/<!-- SPDX-License-Identifier: LicenseRef-CSSL-1.0 -->/s' **/*.xml

The rest (cmake, files with missing license, cmake) manually.
2026-03-27 16:36:37 +01:00
Robert Schmidt 6ae4ec37ca Remove most doxygen file-level commands, copyrights, and authors
Remove the \file directive, as it is always superfluous  because the
current file is implicit [1]:

> If the file name is omitted (i.e. the line after \file is left blank)
> then the documentation block that contains the \file command will belong
> to the file it is located in.

Author names and e-mails are not relevant for us: it can always be
inferred from git blame, and is often outdated.

Eurecom code has been contributed and was under OAI PL v1.0/v1.1.

For the cpack package contact: put generic email address that is
independent of an individual and that will remain reachable.

[1] https://www.doxygen.nl/manual/commands.html#cmdfile
2026-03-27 14:52:47 +01:00
Robert Schmidt 7a7ffc18e2 Move reverse_bits*() to separate source file
reversing bits is not NR specific. Think of it like this: LTE code might
use reverse_bits*() as well, but in the old location, it would pull in a
bunch of NR dependencies that are superfluous.
2026-02-12 08:47:06 +01:00
Robert Schmidt 16535f3de4 Reformat all polar code
Commands used:

    clang-format -i openair1/PHY/CODING/TESTBENCH/polartest.c
    clang-format -i openair1/PHY/CODING/nr_polar_init.c
    clang-format -i openair1/PHY/CODING/nrPolar_tools/*
2024-11-07 09:43:19 +01:00
Laurent THOMAS d57ea715c0 Improve polar decoder/encoder
- Ensure packed struct through bitfield
- decoder tree buffer increase: i don't find evidence in the 3GPP
  standard of the max size of polar coded PDU.  even with this max size,
  the way this tree is built is not trivial.  so, it is hard to predict,
  i just put 8 system pages (32KB) that looks enough [1]
- a lot of reformatting

[1] https://arxiv.org/pdf/1804.04389
according to this paper, the largest polar code in 5G is in UL, so
likely the biggest problem will be in gNB, not the UE.  in DL, the max
output coded block is 512, in UL 1024.  probably the tree we discuss is
related to this size.

"frozen bits" means only bits we don't encode/decode because polar code
size is only by power of 2.
We see this in OAI code:  NR_POLAR_PUCCH_N_MAX is 10, so 2^10 is 1024,
that is the maximum size for 5G polar code length.  in the code, we
assert if N > 512: "N = %d, not done yet\n",
polarParams->N".  so, the today OAI code can't do PUCCH large blocks.

using current oai limitation of 2⁹ max code size, we can create up to
2^9+2⁸... nodes, so 1023 nodes in the tree.  the problem then is that
each node have variable size, depending on the 'level' (the power of 2
we are currently).  the algo provision large alpha and beta to be able
to store all lower levels in the tree (int leaf_sz = 1 << level)
therefore upper tree nodes are large (the top level for n=9 uses about
1.5KB) and the bottom nodes uses 64 bytes.  if all nodes are populated,
the size will be very large: 1.5KB + 2 * 800 + ....  but, we create
nodes in the tree only for the "information bits", so the payload, that
is limited to 128 bits (else we assert, the code is not "finished").
1.5KB * 128 is >> 8KB i allocated.  but, we can't create more than one
mode at top level, so there is maximum 1.5KB + 2 * 800, + 4 * 400 + 8 *
200 + 16 * 100 + remaining of 128-32 nodes of 64 bytes.  about 14KB.

i allocated 1024*sizeof(__m256i) bytes = 32KB that looks good.
2024-11-07 09:25:18 +01:00
Laurent THOMAS ab2b868b75 improve polar init and polar readability 2024-04-24 15:26:21 +02:00
francescomani 96ff859cb7 shiftTooManyBitsSigned 2024-04-09 16:53:12 +02:00
Laurent a0e7733035 Warning fix to RHEL generated message
: error: '<unknown>' may be used uninitialized [-Werror=maybe-uninitialized]
  180 |   reverse_bits_u8(tmp, N/8, D2);
2024-04-05 14:14:18 +02:00
mir b21552973c Remove old OAI implementation 2024-03-22 11:36:45 +01:00
mir a6ad11a20e Remove duplicated bit reverse table 2024-03-22 11:36:41 +01:00
mir 44e31bd845 Improved polar encoder 2024-03-22 11:35:34 +01:00
mir fc8d0c59c6 Scan build: Result of operation is garbage or undefined 2024-03-07 11:00:57 +01:00
Laurent THOMAS 175e835d05 update the polar codec function that creates the internal LUTs
to use faster code
- replaced hundreds mallocs by either local arrays or by the OAI multi-dimensionalarray (G_N_tab array)
- made in SIMD a one bit per byte packing function to packed (ordinary) bits in bytes
2023-12-08 17:11:16 +01:00
Robert Schmidt 7420de8fc9 Merge remote-tracking branch 'origin/fix-doxygen' into integration_2023_w43 2023-10-30 10:23:45 +01:00
Robert Schmidt 803fcb59a9 Merge remote-tracking branch 'origin/assigned_value_is_garbage_or_undefined' into integration_2023_w43 2023-10-30 10:22:03 +01:00
Laurent THOMAS bba9aac079 fix most of doxygen warnings and errors 2023-10-26 16:47:19 +02:00
rmagueta e14903cd96 Call __builtin_popcountll function to count the number of bits set in uint64_t variable for polar codes 2023-10-26 12:23:20 +02:00
mir 2ccc58f6d3 Assigned value is garbage or undefined reportedt by scan-build 2023-10-25 11:51:33 +02:00
rmagueta b722d92fa0 Extract the information bits from U 2023-07-03 11:40:35 +01:00
rmagueta fb7d4dc4df Compute parity_check_bit_pattern and implementation of function nr_polar_generate_u() and nr_polar_uxG() 2023-07-03 11:40:35 +01:00
rmagueta d6b7b6b918 Q_PC_N computation for n_pc_wm = 0 2023-07-03 11:40:35 +01:00
Roberto Louro Magueta 98ed514cab Implementation for de-interleaving of coded bits 2023-07-03 11:40:35 +01:00
Raymond Knopp 27ef071b81 polartest changes for DCI parameters 2019-04-12 07:57:34 +02:00
Raymond Knopp 1ca00e40b5 Merge remote-tracking branch 'origin/develop-nr' into shortBlockCoding
Conflicts:
	cmake_targets/CMakeLists.txt
	cmake_targets/autotests/test_case_list.xml
	cmake_targets/build_oai
	openair1/PHY/CODING/TESTBENCH/polartest.c
	openair1/PHY/CODING/nrPolar_tools/nr_polar_decoder.c
	openair1/PHY/CODING/nrPolar_tools/nr_polar_decoding_tools.c
	openair1/PHY/CODING/nrPolar_tools/nr_polar_defs.h
	openair1/PHY/CODING/nrPolar_tools/nr_polar_encoder.c
	openair1/PHY/CODING/nr_polar_init.c
	openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
	openair1/SCHED_NR_UE/pucch_uci_ue_nr.c
	openair1/SIMULATION/NR_PHY/dlschsim.c
	openair1/SIMULATION/NR_PHY/dlsim.c
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
2019-04-04 09:14:37 +02:00
yilmazt dd61e5a717 Working short block coding and various warning removals in --phy_simulators 2019-03-08 15:44:50 +01:00
yilmazt 1da3a24c41 Warning removals. 2018-10-30 11:25:50 +01:00
Raymond Knopp c5c3c325f0 added all optimizations except rate matching for N=512 polar-encoder. 2018-10-26 01:40:31 +02:00
Raymond Knopp fa4a73bb1c Merge remote-tracking branch 'origin/develop-nr' into polar-decoder-optimizations
Conflicts:
	cmake_targets/CMakeLists.txt
	openair1/PHY/CODING/TESTBENCH/polartest.c
	openair1/PHY/CODING/nrPolar_init.c
	openair1/PHY/CODING/nrPolar_tools/nr_polar_decoder.c
	openair1/PHY/CODING/nrPolar_tools/nr_polar_decoding_tools.c
	openair1/PHY/CODING/nrPolar_tools/nr_polar_defs.h
	openair1/PHY/CODING/nrPolar_tools/nr_polar_rate_match.c
	openair1/PHY/NR_TRANSPORT/nr_pbch.c
2018-10-13 12:00:35 +02:00
yilmazt a4f8f49eef Polar coding update 1of2 2018-08-22 10:42:29 +02:00