Commit Graph
272 Commits
Author SHA1 Message Date
Laurent THOMAS 8e92df78de Use gold cache in PUCCH decoding 2024-07-30 14:57:10 +02:00
Laurent THOMAS 00cb43bac3 Use gold cache for PRS decoding 2024-07-30 14:55:35 +02:00
Raphael Defosseux bbc82731f7 Merge remote-tracking branch 'origin/update-fhi7.2' into integration_2024_w24 2024-06-19 13:55:52 +02:00
Laurent THOMAS 45d4cec2a6 fix regressions for large physical cell id values 2024-06-10 10:51:08 +02:00
Robert Schmidt 0199d861b7 Fix integer overflow
avoid UBsan error:
  openair1/PHY/NR_TRANSPORT/pucch_rx.c:266:21: runtime error: signed integer overflow: 2113190528 + 117251752 cannot be represented in type 'int'
2024-06-06 12:36:50 +02:00
francescomani 9cc53a43b1 invalidPrintfArgType_uint 2024-04-09 16:44:56 +02:00
Raymond Knopp fec145cac6 Pucch2 polar rx: fix dynamic range
fixes the overflow issue in the PUCCH2 RX with 4+ RX antennas and 12+
bits (polar code format). The fix scales the polar decoding LLR
computation according to the number of RX antennas. The issue was clear
for 100 MHz 4 RX antennas. Even

  nr_pucchsim -s -5 -q 8 -P 2 -b 12 -R 273 -z4 -n1000

doesn't converge to 0 BLER with increasing SNR. The issue didn't appear
in CI because of the bandwidth and antenna count limitations.
2024-04-08 12:53:35 +02:00
Jaroslava Fiedlerova 19eb0af185 Merge remote-tracking branch 'origin/NR_PUCCH2_RX_CQI' into integration_2024_w13 2024-03-29 16:59:27 +01:00
francescomani b739e5357d hardcoding invalid report for PUCCH2 CQI at gNB because SNR computation is wrong 2024-03-22 12:51:28 +01:00
francescomani 8f858af876 improvements for 4-layer MIMO at gNB 2024-03-21 18:22:25 +01:00
Robert Schmidt 66bdd0e801 Merge remote-tracking branch 'origin/ci-aw2s-test-15' into integration_2024_w10 2024-03-08 07:16:11 +01:00
mir 275c3c6aa8 Bugfix cmax and memory init 2024-03-07 11:00:57 +01:00
mir fc8d0c59c6 Scan build: Result of operation is garbage or undefined 2024-03-07 11:00:57 +01:00
Robert Schmidt 8d87f0c4e2 get_phy_stats(): full list is non-fatal
Do not assert if the list of phy statistics is full; instead return
NULL.

In most places, this is handled appropriately (we do not store anything
if we can't). In nr_decode_pucch0(), the return value of get_phy_stats()
is used a little bit all over the function, and a constant
  if (uci_stats)
    uci_stats->variable++;
would look ugly, so make uci_stats point to the stack if we cannot store
in the phy_stats.
2024-03-07 09:56:20 +01:00
Robert Schmidt 98c309ffe3 Refactor nr_decode_pucch0() to not rely on uci_stats
the uci_stats variable (pointing to per-UE statistics for UCI) is used
in function nr_decode_pucch0() to store information which is important
beyond statistics, e.g., uci_stats->pucch0_thres as a threshold (which
comes from somewhere else)

This commit refactors to use original or intermediate variables to not
mix uci_stats usage with actual processing.

Also, group uci_stats a bit more.
2024-03-07 09:56:20 +01:00
Raymond Knoppandkiran d52b81798b Introduce separate thread to handle gNB TX processing
This commit introduces a separate thread (l1_tx_thread) that processes
gNB DL/TX slots. It receives a message from the ru_thread when a new
slot started, and starts processing.

The DL part of the scheduler is run in the l1_tx_thread.  Therefore,
only call UL indication (for scheduler) in UL slots.  The UL indication
previously triggered the DL scheduler -- hence, it had to be called in
every slot. Now, since the DL scheduler is moved into the DL thread, we
don't have to call the scheduler in every slot anymore.

The reorder thread is removed, as reordering with this scheme is not
necessary anymore.

The main advantage of this version is that the TX can be scheduled
earlier (sl_ahead). Further, there can no longer be race conditions in
the TX path, since the scheduler/L2, TX L1 processing and the RU tx
function are all execute in the same thread (L1_tX_thread).

Also, the scheduler prepares PRACH/PUSCH/PUCCH FAPI PDUs. As of this
commit, the scheduler runs in the TX processing chain, whereas these
PDUs are destined for RX processing.  Thus, too avoid data races,
instead of triggering the RX processing at the same time as TX
processing in the RU thread, this commit changes the code to trigger RX
processing after the scheduler has been run in TX processing to avoid
data races.

Finally, we synchronize RU and L1 threads. This is important for
rfsimulator, since unlike most radios, rfsimulator can run slower or
faster, depending on I/O and CPU (it does not have a stable "tick").

Co-authored-by: kiran <saikiran@iitj.ac.in>
2024-02-12 12:04:55 +01:00
Laurent THOMAS 18919576b7 rework PUCCH codec with c16_t type, rewrite large parts of functions to make readable code. Not fixed parts that are using SIMD. No change, the code is still same block by block (variable visibility narrowed, declaration can be shifted) 2024-01-04 10:21:15 +01:00
rmagueta 313419180f PUCCH power computation in a different way 2023-10-03 17:06:49 +01:00
luis_pereira87 2360925e29 Reverse bits in UCI message when using polar encoder/decoder 2023-09-27 08:30:06 +01:00
Tsung-Yu Chan 73bc34b278 fix / compile on ARM 2023-09-13 17:20:08 +02:00
Raymond Knopp a7bc282302 First-level of support for new aarch64 machines
Testing on Neoverse N1 (Ampere 3GHz). Tested only on a subset of phy-simulators.

- Changes:
- use SIMDE consistently
- adaptations of LDPC decoder generator for ARMv8 performance
- SIMDe modifications of Intel CRC to allow for aarch64 build.
  optimizations for 128-bit to improve performance of LDPC encode/decode
  on aarch64 (Neoverse 1)
- added BG2 files for 128-bit ldpc encoder (aarch64)
- testing on Xeon
- testing on x86
- minor changes to build/run on x86
- change in crc.h after returning to aarch64
- removed some warning in ldpc decoder generator for x86_64
- char
- Delete irrelevant constants
- Correctly declare variables
- Define stdbool for all architectures
- Remove definition of _MM_SHUFFLE and use SIMDE_MM_SHUFFLE
- Remove commented code
- Fix CMakeLists.txt
- Include SIMDE avx2 functions in tools_defs.h
2023-09-13 17:19:20 +02:00
maaroufi 87d0eddc2c Modified the code to solve the heap Allocation issue: Removed Dynamic allocation based on the FAPI specifications 2023-08-22 12:10:13 +02:00
Laurent THOMAS ae5dbf4e7a bug fix in arrays indexes 2023-07-19 10:02:24 +02:00
Robert Schmidt 6045e5cf23 Initialize memory to 0 in nr_decode_pucch{,2}() 2023-07-03 14:07:38 +02:00
Vijay Chadachan 836469e849 CPPCHECK fixes for printf issues
Fix for following CPPCheck warnings
- invalidPrintfArgType
Rebased with latest develop branch w21.
Reverted modifications unrelated to printf issues.
2023-06-01 12:07:26 +02:00
laurent b339460666 cleanup only 2023-04-28 16:25:24 +02:00
Robert Schmidt e31eacb386 Merge remote-tracking branch 'origin/develop-PUCCH2' into integration_2023_w16b 2023-04-21 16:33:44 +02:00
Roberto Louro Magueta 7879afc010 Improve code readability and fix the nr_polar_params() function 2023-04-20 11:51:47 +01:00
Robert Schmidt 2faca0fdba Fix too large shift in nr_pucchsim 2023-04-19 22:12:08 +02:00
francescomani 0d66410317 another round of review 2023-03-27 15:39:49 +02:00
Robert Schmidt 6e93619896 review comments 2023-03-27 15:26:52 +02:00
francescomani 7c9b501310 removing call from MAC to PHY to clear structures (now automatic clearing) 2023-03-27 15:26:52 +02:00
Melissa Elkadi 4dd579e042 int32_t to c16_t conversion
This commit includes changes to the function
footprints for vaiours NR UE and gNB functions.
It does not updated the LTE code. For functions
shared by both LTE and 5G, we maintained the original
LTE footprint and argument structure.

Several of the simulators that use these functions
have been updated as well. The specific usage of these
functions which index into the int32_t buffers and
treat the first int16_t and the real and the second
as the complex should be modified in the near future.
2023-03-15 12:45:39 -07:00
francescomani dd24ddd645 remove NUMBER_OF_NR_PUCCH_MAX 2023-01-23 11:13:05 +01:00
francescomani 5115f5c928 cleanup of unused gnb phy fields 2022-11-23 19:04:56 +01:00
Raymond Knopp bf370cc55d fixed correlation computation in pucch_rx.c 2022-11-05 21:54:23 +01:00
Raymond Knopp 96622f6b80 debugging of pucch2, logging 2022-11-05 13:56:53 +01:00
Robert Schmidt ebd622ac3c Merge remote-tracking branch 'origin/NR_MAC_PUCCH_rework' into integration_2022_wk43 2022-10-27 18:50:46 +02:00
francescomani 3247cdd0c3 addressing review 2022-10-27 12:52:10 +02:00
Bruno Mongazon-Cazavet 392040a842 Fix build error when -g is specified, fix various warnings when -g is specified 2022-10-18 08:48:10 +02:00
Bruno Mongazon-Cazavet fe1dc24e28 Add Intrinsics usage by SIMDE 2022-09-28 18:21:19 +02:00
laurent cfeae9560e merge develop 2022-08-26 18:02:50 +02:00
Robert Schmidt f3cdc11269 Merge remote-tracking branch 'origin/NR_UE_multi_SSB_meas' into integration_2022_wk33 2022-08-18 20:53:04 +02:00
francescomani 032879c0c1 Merge remote-tracking branch 'origin/develop' into NR_RRC_harmonization_after_BWP 2022-08-08 12:37:40 +02:00
Raymond Knopp 2ed7e89bd2 Merge remote-tracking branch 'origin/develop' into if5_ECPRI_rework
Conflicts:
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
2022-08-08 07:25:13 +02:00
Raymond Knopp 87a51c9e18 Merge remote-tracking branch 'origin/develop' into if5_ECPRI_rework
Conflicts:
	openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c
2022-08-05 07:21:09 +02:00
francescomani 8c81c70de9 Fix AckNack and SR multiplexing in PUCCH2
- correctly reset HARQ structure for HARQ Ack/Nack/PUCCH0
- reduce max PUCCH2 bits to have room for SR
2022-08-04 10:53:41 +02:00
francescomani 5fc23d5864 Merge remote-tracking branch 'origin/develop' into NR_RRC_harmonization_after_BWP 2022-08-03 12:11:37 +02:00
Raymond Knopp 3760ffa4af Merge remote-tracking branch 'origin/develop' into if5_ECPRI_rework 2022-07-30 19:36:27 +02:00
francescomani be0fc1a982 Merge remote-tracking branch 'origin/develop' into NR_UE_multi_SSB_meas 2022-07-30 10:21:58 +02:00