CompilationIntel C++ Compiler is used to compile Intel DPDK and L1 software. Getting and Installation of Intel C++ Compiler package is outside the scope of this document.
Recommended version of Compiler: icc (ICC) 19.0.3.206 20190206
Intel DPDK Configuration: Intel DPDK version 19.11
Recommended version of Cmake: cmake version 3.9.2
Prerequisites for L1 compilation
FlexRAN package has been tested extensivly on CentOS version 7.6 with RT kernel version below. It is recommended to use this version of OS to reproduce same results.
Description : The kernel package contains the Linux kernel (vmlinuz), the core of any Linux operating system. The kernel handles the basic functions of the operating system: memory allocation, process allocation, device input and output, etc.
We have also tested newer RT kernel packages but not as extensive is this one.
For more details on Bare-metal and Container systems, please follow the flexran-ref-sol-cloud-native-setup-instl-guide (Document #575834)document for installation procedures.
Intel compiler (icc) has to be installed in the system.
Cmake has to be installed in the system
CPA library (fpga drivers) sources has to be available for compilation of L1.
L1 SDK library sources has to be available for compilation of L1.
Framework BBU Pooling library sources has to be available for compilation of L1.
BSP WLS library sources has to be available for compilation of L1.
In order to build the L1 application and L1 standalone Test Application, the following steps are required (in order):
Example Default Paths to all the packages from the release after launching extract.sh script:
FLEXRAN REFERENCE PHY: <install_dir>/
SDK: <install_dir>/sdk
BBUPOOL: <install_dir>/framework
5G UNIT TESTS: <install_dir>/tests/nr5g
CPA: <install_dir>/libs/cpa
CPA_Sub6: <install_dir>/libs/cpa_sub6
BSP WLS: <install_dir>/wls_mod
Setup paths:
source ./set_env_var.sh -d
Will setup all paths needed for executing l1app application.
Compile SDK first:
./flexran_build.sh -e -r 5gnr_sub6 -m sdk
This will compile just the SDK modules so that software libraries for LPDC encoder/decoder and rate matching/dematching will be present.
Patch and compile DPDK:
Un-tar dpdk-19.11.tar.xz into your install directory.
Install directory cannot be located in /root folder. Put some where else like /opt/dpdk-19.11 or /home/dpdk-19.11.
Applying patch file to dpdk while installed under the /root folder does not work
Copy dpdk patch file included in release package to place where DPDK is currently installed.
Patch file should be named something like flexran-dpdk-bbdev-v19-11.patch.
Make sure that the DPDK 19.11 being patched is a clean copy. Meaning, it has not been modified after untarring.
Patching modified DPDK 19.11 version will have issues.
Issue following command:
git apply flexran-dpdk-bbdev-v19-11.patch
If git is not installed on your platform, please issue the following command instead:
patch -p1 < flexran-dpdk-bbdev-v19-11.patch
Delete the current x86_64-native-linuxapp-icc directory if present
cd usertools
vim dpdk_setup.sh
Make sure the function, setup_icc(), is pointing to the correct location for ICC
Example of how to compile just the wls, mlog and sdk modules.
./flexran_build.sh -h, will show all options for -m to compile individual modules.
Note that this mode only supports LDPC Encoder/Decoder with Terasic FPGA
After following above steps, upon a successful build, a new L1 application file <install_dir>/bin/nr5g/gnb/l1 will be created.
L1 standalone Test Application will be created in <install_dir>/tests/nr5g/nr5g_testapp
Compilation with bbdevPrerequisites and compilers are the same as compiling without. BBDEV provides within DPDK a generic acceleration abstraction framework which supports both physical (hardware) and virtual (software) wireless acceleration functions for FEC processing: LDPC Encoder/Decoder, rate matching/dematching and CRC generation/check.
In the current release, a software implementation of the PMD driver is available based on the related SDK implementations.
In order to build the L1 application and L1 standalone Test Application with bbdev, the following steps are required (in order):
Follow steps 1 through 3 for compilation in Section 3.1
Building the L1 Application, L1 Standalone Test Application, and Test MAC in Linux:
Launch ./flexran_build.sh -h
This will show all of the options available.
./flexran_build.sh -e -r 5gnr_sub6 -b
This will compile all available modules for 5gnr sub6
Notice the -b command to enable BBDEV compilation option for all modules
Note that compiling with BBDEV enabled allows LDPC Encoder/Decoder to be run in software, Vista Creek FPGA (N3000) or Mount Bryce (ACC100)
When specifically using Vista Creek FEC FPGA_5GNR (N3000) or MountBryce (ACC100) acceleration :
L1 Application needs to be built with BBDEV enabled.
Please refer to the file .<install_dir>/misc/bbdev_config_service/README.md for step by step instructions on how to build and run and the configuration application required for device initial configuration in FPGA_5GNR mode.
Note that the markups dpdkBasebandFecMode and dpdkBasebandDevice needs to be adjusted in the relevant phycfg.xml before starting L1.
dpdkBasebandFecMode = 0 for LDPC Encoder/Decoder in software.dpdkBasebandFecMode = 1 for LDPC Encoder/Decoder in Vista Creek FPGA.
To obtain PCIE address (dpdkBasebandDevice) of the FEC device
Use command:lspci | grep acc
Output of this command will look something like this: