ci: Add support for USRP B310

Co-authored-by: Virendra Kakade <virendra.kakade@ni.com>
Co-authored-by: Wade Fife <wade.fife@ettus.com>
Co-authored-by: Javier Valenzuela <javier.j.valenzuela@emerson.com>
This commit is contained in:
Grant Meyerhoff 2026-07-22 13:13:08 -05:00 committed by Marian Koop
parent e0f685a4aa
commit a18579e3e5
13 changed files with 426 additions and 14 deletions

View File

@ -0,0 +1,108 @@
#
# Copyright 2025 Ettus Research, a National Instruments Brand
#
# SPDX-License-Identifier: LGPL-3.0-or-later
#
# Description:
#
# This template defines a stages-based pipeline for building B310 FPGA
# targets.
#
# See https://aka.ms/yaml for pipeline YAML documentation.
#
parameters:
## Optional parameters
# Option to ignore cached artifacts (if available) and perform
# a clean IP build.
- name: clean_ip_build
type: boolean
default: false
# Number of parallel jobs to use for IP build
- name: num_ip_jobs
type: number
default: 5
# Option to publish intermediate files
- name: publish_int_files
type: boolean
default: false
# Package and publish images
- name: package_and_publish_images
type: boolean
default: true
# Package access in the SDR server ('Internal' or 'Public')
- name: package_access
type: string
default: 'Internal'
# From where to pull FPGA bitfiles if we're not building them
- name: fpga_imgs_source
type: string
default: 'Mono Pipeline'
# B310 FPGA targets to build
- name: b310_full_targets_matrix
type: object
default:
B310_REPLAY:
image_core: b310_replay_rfnoc_image_core.yml
target_name: B310
image_core_name: usrp_b310_fpga_replay
artifact_name: B310_REPLAY
timeout: 720
max_attempts: 2
B310_FIFO:
image_core: b310_fifo_rfnoc_image_core.yml
target_name: B310
image_core_name: usrp_b310_fpga_fifo
artifact_name: B310_FIFO
timeout: 720
max_attempts: 2
- name: b310_reduced_targets_matrix
type: object
default:
B310_REPLAY:
image_core: b310_replay_rfnoc_image_core.yml
target_name: B310
image_core_name: usrp_b310_fpga_replay
artifact_name: B310_REPLAY
timeout: 720
max_attempts: 2
B310_FIFO:
image_core: b310_fifo_rfnoc_image_core.yml
target_name: B310
image_core_name: usrp_b310_fpga_fifo
artifact_name: B310_FIFO
timeout: 720
max_attempts: 2
stages:
### START: B310 stages
- stage: provide_b310_fpga_images_stage
displayName: Provide B310 FPGA Images
dependsOn: analyze_changeset
variables:
UhdTestList: $[stageDependencies.analyze_changeset.analyze.outputs['gen_testlist.UhdTestList']]
BuildRequired: $[or(
contains(stageDependencies.analyze_changeset.analyze.outputs['gen_testlist.UhdTestList'], 'fpga.usrp3.b310'),
contains(stageDependencies.analyze_changeset.analyze.outputs['gen_testlist.UhdTestList'], 'fpga.usrp3.all')
)]
jobs:
- template: ../templates/jobs-provide-fpga-artifacts.yml
parameters:
id: b310
device_name: B310
ip_target: B310_IP
package_name: b310_fpga_default
clean_ip_build: ${{ parameters.clean_ip_build }}
num_ip_jobs: ${{ parameters.num_ip_jobs }}
publish_int_files: ${{ parameters.publish_int_files }}
package_and_publish_images: ${{ parameters.package_and_publish_images }}
package_access: ${{ parameters.package_access }}
fpga_imgs_source: ${{ parameters.fpga_imgs_source }}
top_dir: uhddev/fpga/usrp3/top/b300
target_full_matrix: ${{ parameters.b310_full_targets_matrix }}
target_reduced_matrix: ${{ parameters.b310_reduced_targets_matrix }}
### END: B310 stages

View File

@ -127,3 +127,15 @@ stages:
rfnoc_include_dir: ${{ parameters.rfnoc_include_dir }}
### END: E320 stages
### START: B310 stages
- template: ../devices/job-build-fpga-b310.yml
parameters:
clean_ip_build: ${{ parameters.clean_ip_build }}
publish_int_files: ${{ parameters.publish_int_files }}
package_and_publish_images: ${{ parameters.package_and_publish_images }}
package_access: ${{ parameters.package_access }}
fpga_imgs_source: ${{ parameters.fpga_imgs_source }}
### END: B310 stages

View File

@ -0,0 +1,30 @@
parameters:
- name: uhdSrcDir
type: string
- name: uhdArtifactSource
type: string
default: current
- name: uhdFpgaArtifactSource
type: string
default: current
- name: fpga_imgs_source
type: string
jobs:
- template: job-uhd-devtest.yml
parameters:
suiteName: 'b310_test'
knownHost: '|1|1Ir2Dw9+Rd+biaBZN5Y7qMvSHjw=|Sy23JOB66jDO1soYN3LheEsiS88= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLxbGUC5lRxvFvnY4tDCNa6FpVE6QKXorgcc2Tn/6OhG2uVnSA7PlH+viTI/6ij8vkJqEuHpUdWJoPgm8NaYx8w='
toolset: 'make'
uhdSrcDir: '${{ parameters.uhdSrcDir }}'
uhdArtifactSource: '${{ parameters.uhdArtifactSource }}'
uhdFpgaArtifactSource: '${{ parameters.uhdFpgaArtifactSource }}'
fpga_imgs_source: '${{ parameters.fpga_imgs_source }}'
dutMatrix:
b310:
devType: 'b3xx'
devModel: 'b310'
devName: 'b310-ATS'
devSerial: '3665BFD'
devBus: 'pcie'
devtestPattern: 'b3xx'

View File

@ -243,6 +243,26 @@ jobs:
condition: and(succeeded(), eq(variables.devType, 'x300'), eq(variables.devBus, 'ip'))
displayName: Run x3xx devtest on $(devName) $(devFpga)
- script: |
cd $(Agent.TempDirectory)
python3 -m venv devtest_venv
source devtest_venv/bin/activate
pip3 install -r $(Build.SourcesDirectory)/uhddev/host/tests/devtest/requirements.txt
pip3 install -r $(Build.SourcesDirectory)/uhddev/.ci/utils/requirements.txt
mkdir -p $(Common.TestResultsDirectory)/devtest
cd $(Common.TestResultsDirectory)/devtest
export PATH=$(Build.BinariesDirectory)/uhddev/build/utils:$(Build.BinariesDirectory)/uhddev/build/examples:$PATH
export LD_LIBRARY_PATH=$(Build.BinariesDirectory)/uhddev/build/lib:$LD_LIBRARY_PATH
export UHD_IMAGES_DIR=$(Build.BinariesDirectory)/uhddev/build-installed/share/uhd/images/:$HOME/adrv9032_images
python3 ${{ parameters.uhdSrcDir }}/uhddev/host/tests/devtest/run_testsuite.py \
--src-dir ${{ parameters.uhdSrcDir }}/uhddev/host/tests/devtest \
--devtest-pattern $(devtestPattern) --args type=$(devType),serial=$(devSerial) \
--build-type Release --build-dir $(Build.BinariesDirectory)/uhddev/build \
--python-interp python3 --xml
continueOnError: true
condition: and(succeeded(), eq(variables.devType, 'b3xx'))
displayName: Run b3xx devtest on $(devName)
- script: |
cat $(Common.TestResultsDirectory)/devtest/log*.log
echo ""
@ -256,7 +276,7 @@ jobs:
$(Common.TestResultsDirectory)/devtest/devtestresults.xml
continueOnError: true
displayName: Format devtest xml
condition: and(always(), eq(variables.devType, 'b200'))
condition: and(always(), or(eq(variables.devType, 'b200'), eq(variables.devType, 'b3xx')))
- script: |
cd $(Common.TestResultsDirectory)/devtest
@ -266,7 +286,7 @@ jobs:
$(Common.TestResultsDirectory)/devtest/devtestresults.xml
continueOnError: true
displayName: Format devtest xml
condition: and(always(), ne(variables.devType, 'b200'))
condition: and(always(), and(ne(variables.devType, 'b200'), ne(variables.devType, 'b3xx')))
- publish: $(Common.TestResultsDirectory)
artifact: test-logs-devtest-$(devName)-$(devModel)-$(devFpga)-run$(System.JobAttempt)

View File

@ -0,0 +1,39 @@
parameters:
- name: uhdSrcDir
type: string
- name: uhdArtifactSource
type: string
default: current
- name: uhdFpgaArtifactSource
type: string
default: current
- name: fpga_imgs_source
type: string
- name: testDevices
type: string
default: 'b3xx'
- name: extra_rf_test_args
type: string
default: ''
jobs:
- template: job-uhd-rf-tests.yml
parameters:
toolset: 'make'
uhdSrcDir: '${{ parameters.uhdSrcDir }}'
uhdArtifactSource: '${{ parameters.uhdArtifactSource }}'
uhdFpgaArtifactSource: ${{ parameters.uhdFpgaArtifactSource }}
fpga_imgs_source: '${{ parameters.fpga_imgs_source }}'
extra_rf_test_args: '${{ parameters.extra_rf_test_args }}'
dutMatrix:
b310:
devType: 'b3xx'
devModel: 'b310'
devName: 'b310-ATS'
devSerial: '3665BFD'
devBus: 'pcie'
devFpga: 'defaultFPGA'
devtestPattern: 'b3xx'
pytestDUT: 'b310'
pytestAtsConfig: 'b300_ats'
pipelineAgent: 'b310-dev2'

View File

@ -253,6 +253,13 @@ jobs:
--test_selector $(Build.SourcesDirectory)/ettus-rts/config/remote/python_tests/pytests \
--results_path $(Common.TestResultsDirectory)/pytest/rf/$(devFpga) \
$(parameters.extra_rf_test_args)" || rf_test_status=$?
elif [ "$(devType)" = "b3xx" ]; then
cd $(Build.SourcesDirectory)/ettus-rts/config/remote/python_tests/pytests
export UHD_IMAGES_DIR=$(Build.BinariesDirectory)/uhddev/build-installed/share/uhd/images/:$HOME/adrv9032_images
uhd_usrp_probe --args type=$(devType),serial=$(devSerial)
python3 ../automated_main.py --ats_config $(pytestAtsConfig) --dut $(pytestDUT) \
--results_path $(Common.TestResultsDirectory)/pytest/rf/$(devFpga) ${{ parameters.extra_rf_test_args }} || rf_test_status=$?
cd $(Build.SourcesDirectory)/ettus-rts/config/remote/python_tests
fi
python3 automated_main.py --ats_config $(pytestAtsConfig) --dut $(pytestDUT) \
--test_selector $(Build.SourcesDirectory)/ettus-rts/config/remote/python_tests/pytests_non_rf \

View File

@ -130,6 +130,16 @@
dutNumSendFrames: ''
sfpInt0: '$(x440_sfpInt0)'
sfpInt1: '$(x440_sfpInt1)'
B310:
timeoutInMinutes: 120
dutName: 'streaming-b310'
dutFamily: 'b3xx'
dutType: 'b310'
dutFPGA: 'B310'
dutResource: '$(b310_resource)'
dutNameId: ''
dutNumRecvFrames: ''
dutNumSendFrames: ''
jobs:
- ${{ each dutEntry in parameters.dutMatrix }}:
@ -149,6 +159,7 @@ jobs:
dutAddr: ${{ dutEntry.value.dutAddr }}
dutSecondAddr: ${{ dutEntry.value.dutSecondAddr }}
dutFPGA: ${{ dutEntry.value.dutFPGA }}
dutResource: ${{ dutEntry.value.dutResource }}
dutNameId: ${{ dutEntry.value.dutNameId }}
dutNumRecvFrames: ${{ dutEntry.value.dutNumRecvFrames }}
dutNumSendFrames: ${{ dutEntry.value.dutNumSendFrames }}
@ -228,7 +239,7 @@ jobs:
- download: ${{ parameters.uhdFpgaArtifactSource }}
artifact: $(FPGA_ARTIFACT)
displayName: Download FPGA images (from artifacts)
condition: and(not(or(failed(), canceled())), ne(variables.dutGetFpgaImagesMethod, 'uhd_images_downloader'))
condition: and(not(or(failed(), canceled())), ne(variables.dutGetFpgaImagesMethod, 'uhd_images_downloader'), not(eq(variables.dutFamily, 'b3xx')))
- task: ExtractFiles@1
inputs:
@ -370,12 +381,32 @@ jobs:
sleep 5
exit $EXITCODE
displayName: setup interfaces for use without DPDK
condition: and(succeeded(), not(in(variables.dutFamily, 'b200', 'b3xx')))
timeoutInMinutes: 5
- script: |
if [ "$(dutFamily)" = "b3xx" ]; then
cd ${{ parameters.uhdSrcDir }}/host/tests/streaming_performance
sudo ./setupPCIe.sh -v -s
EXITCODE=$?
sleep 5
exit $EXITCODE
fi
displayName: setup B310 PCIe interface
condition: and(succeeded(), eq(variables.dutFamily, 'b3xx'))
timeoutInMinutes: 1
- script: |
rm -fv TEST-*
workingDirectory: $(Common.TestResultsDirectory)
displayName: remove old test results no dpdk
- script: |
export UHD_IMAGES_DIR=$(Build.BinariesDirectory)/uhddev/build-installed/share/uhd/images/:$HOME/adrv9032_images
echo '##vso[task.setvariable variable=UHD_IMAGES_DIR]'$UHD_IMAGES_DIR
echo UHD_IMAGES_DIR=$UHD_IMAGES_DIR
displayName: Set UHD_IMAGES_DIR for B3xx
condition: and(succeeded(), eq(variables.dutFamily, 'b3xx'))
- script: |
echo "##[group]Printing Environment"
@ -396,7 +427,7 @@ jobs:
--capture=tee-sys -o junit_logging=all \
--dut_type $(dutType) --test_length ${{ parameters.testLength }} \
--uhd_build_dir $(Build.BinariesDirectory)/uhddev/build --junitxml $(Common.TestResultsDirectory)/TEST-$(dutName)-no_DPDK.xml \
--addr $(dutAddr) --second_addr $(dutSecondAddr) --mgmt_addr $USRP_EMB_TARGET_IP --name $(dutNameId) \
--addr $(dutAddr) --second_addr $(dutSecondAddr) --mgmt_addr $USRP_EMB_TARGET_IP --name $(dutNameId) --resource $(dutResource) \
--result_csv $(Common.TestResultsDirectory)/TEST-$(dutName)-no_DPDK.csv \
--num_recv_frames $(dutNumRecvFrames) --num_send_frames $(dutNumSendFrames)
env:
@ -417,12 +448,14 @@ jobs:
fi
sleep 5
displayName: setup interfaces for use raw udp streaming
condition: and(succeeded(), not(in(variables.dutFamily, 'b200', 'b3xx')))
timeoutInMinutes: 5
- script: |
rm -fv TEST-*
workingDirectory: $(Common.TestResultsDirectory)
displayName: remove old test results raw udp
condition: and(succeeded(), not(in(variables.dutFamily, 'b3xx')))
- script: |
export PYTHON_VERSION=$(python3 -c "import sys; print('python'+str(sys.version_info.major) + '.' + str(sys.version_info.minor))")
@ -482,7 +515,7 @@ jobs:
sleep 5
exit $EXITCODE
displayName: Setup interfaces for use with DPDK
condition: and(succeeded(), not(eq(variables.dutFamily, 'b200')))
condition: and(succeeded(), not(in(variables.dutFamily, 'b200', 'b3xx')))
timeoutInMinutes: 5
- ${{ each dpdkVersion in parameters.dpdkVersions }}:
@ -525,7 +558,7 @@ jobs:
DPDK_VERSION_STRING=$(utils/uhd_config_info --dpdk-version | awk '{print $3;}')
echo "##vso[task.setvariable variable=DPDK_VERSION_STRING]$DPDK_VERSION_STRING"
displayName: "[DPDK ${{ dpdkVersion }}] Build UHD for DPDK"
condition: and(succeeded(), not(eq(variables.dutFamily, 'b200')), eq(variables.dpdkDirExists, 'true'))
condition: and(succeeded(), not(in(variables.dutFamily, 'b200', 'b3xx')), eq(variables.dpdkDirExists, 'true'))
- script: |
config_file="$(Agent.TempDirectory)/uhd_dpdk.conf"
@ -544,7 +577,7 @@ jobs:
--fpga_flavor $(dutFPGA) \
--output_path $config_file
displayName: "[DPDK ${{ dpdkVersion }}] Provide UHD config file"
condition: and(succeeded(), not(eq(variables.dutFamily, 'b200')), eq(variables.dpdkDirExists, 'true'))
condition: and(succeeded(), not(in(variables.dutFamily, 'b200', 'b3xx')), eq(variables.dpdkDirExists, 'true'))
- script: |
echo "##[group]Printing Environment"
@ -569,12 +602,12 @@ jobs:
UHD_IMAGES_DIR: $(UHD_IMAGES_DIR)
continueOnError: true
displayName: "[DPDK ${{ dpdkVersion }}] Run streaming tests on $(dutName)"
condition: and(succeeded(), not(eq(variables.dutFamily, 'b200')), eq(variables.dpdkDirExists, 'true'))
condition: and(succeeded(), not(in(variables.dutFamily, 'b200', 'b3xx')), eq(variables.dpdkDirExists, 'true'))
- publish: $(Common.TestResultsDirectory)
artifact: test-logs-streamingtest-$(dutName)-$(dutFpga)-dpdk$(DPDK_VERSION_STRING)-run$(System.JobAttempt)
displayName: "[DPDK ${{ dpdkVersion }}] Upload Test Logs"
condition: and(succeededOrFailed(), not(eq(variables.dutFamily, 'b200')), eq(variables.dpdkDirExists, 'true'))
condition: and(succeededOrFailed(), not(in(variables.dutFamily, 'b200', 'b3xx')), eq(variables.dpdkDirExists, 'true'))
- task: PublishTestResults@2
inputs:
@ -585,7 +618,7 @@ jobs:
mergeTestResults: true
failTaskOnFailedTests: false
displayName: "[DPDK ${{ dpdkVersion }}] Upload streaming test results"
condition: and(succeededOrFailed(), not(eq(variables.dutFamily, 'b200')), eq(variables.dpdkDirExists, 'true'))
condition: and(succeededOrFailed(), not(in(variables.dutFamily, 'b200', 'b3xx')), eq(variables.dpdkDirExists, 'true'))
- script: |
echo "A previous step failed. See steps with warnings."

View File

@ -29,7 +29,7 @@ parameters:
- name: selected_streaming_tests
type: string
displayName: Streaming Tests Multi-Select (comma-separated)
default: 'B206,B210,X310_XG,X410_CG_400,X410_UC_200,X440_CG_400,X440_CG_1600'
default: 'B206,B210,B310,X310_XG,X410_CG_400,X410_UC_200,X440_CG_400,X440_CG_1600'
- name: create_sbom
type: boolean
displayName: Create SBOMs
@ -983,6 +983,33 @@ stages:
uhdSrcDir: $(Build.SourcesDirectory)/uhddev
fpga_imgs_source: ${{ parameters.fpga_imgs_source }}
- stage: test_uhd_b310_stage
displayName: Test UHD B310
dependsOn:
- analyze_changeset
- build_uhd_stage_linux
- build_gnuradio_stage_linux
- provide_b310_fpga_images_stage
condition: >
and(
succeeded(),
or(
contains(dependencies.analyze_changeset.outputs['analyze.gen_testlist.UhdTestList'], 'hw.rf.all'),
contains(dependencies.analyze_changeset.outputs['analyze.gen_testlist.UhdTestList'], 'hw.rf.b3xx'),
contains(dependencies.analyze_changeset.outputs['analyze.gen_testlist.UhdTestList'], 'devtest.all'),
contains(dependencies.analyze_changeset.outputs['analyze.gen_testlist.UhdTestList'], 'devtest.b3xx')
)
)
jobs:
- template: job-uhd-devtest-b310.yml
parameters:
uhdSrcDir: $(Build.SourcesDirectory)
fpga_imgs_source: ${{ parameters.fpga_imgs_source }}
- template: job-uhd-rf-tests-b310.yml
parameters:
uhdSrcDir: $(Build.SourcesDirectory)/uhddev
fpga_imgs_source: ${{ parameters.fpga_imgs_source }}
- stage: uhd_streaming_tests_stage
displayName: UHD Streaming Tests
dependsOn:

View File

@ -18,7 +18,7 @@ parameters:
- name: selected_streaming_tests
type: string
displayName: Streaming Tests Multi-Select (comma-separated)
default: 'B206,B210,X310_XG,X410_CG_400,X410_UC_200,X440_CG_400,X440_CG_1600'
default: 'B206,B210,B310,X310_XG,X410_CG_400,X410_UC_200,X440_CG_400,X440_CG_1600'
- name: run_devtests
type: boolean
displayName: Run devtests
@ -55,6 +55,14 @@ parameters:
type: boolean
displayName: Run LabVIEW test
default: false
- name: run_b310_devtests
type: boolean
displayName: Run B310 devtests
default: false
- name: run_b310_rf_tests
type: boolean
displayName: Run B310 RF tests
default: false
- name: fpga_imgs_source
type: string
values:
@ -278,6 +286,31 @@ stages:
uhdFpgaArtifactSource: ${{ variables.uhdFpgaArtifactSource }}
fpga_imgs_source: ${{ variables.fpga_imgs_source }}
- stage: test_b310_rf_tests
displayName: Test B310 RF Tests
dependsOn: []
condition: ${{ parameters.run_b310_rf_tests }}
jobs:
- template: templates/job-uhd-rf-tests-b310.yml
parameters:
uhdSrcDir: $(Build.SourcesDirectory)/uhddev
uhdArtifactSource: uhd_mono_pipeline
uhdFpgaArtifactSource: ${{ variables.uhdFpgaArtifactSource }}
fpga_imgs_source: ${{ variables.fpga_imgs_source }}
extra_rf_test_args: ${{ parameters.extra_rf_test_args }}
- stage: test_b310_devtest
displayName: Test B310 Devtest
dependsOn: []
condition: ${{ parameters.run_b310_devtests }}
jobs:
- template: templates/job-uhd-devtest-b310.yml
parameters:
uhdSrcDir: $(Build.SourcesDirectory)
uhdArtifactSource: uhd_mono_pipeline
uhdFpgaArtifactSource: ${{ variables.uhdFpgaArtifactSource }}
fpga_imgs_source: ${{ variables.fpga_imgs_source }}
- stage: test_x410_rf_tests
displayName: Run X410 RF tests
dependsOn: []

View File

@ -138,7 +138,7 @@ parameters:
- name: selected_streaming_tests
type: string
displayName: Streaming Tests Multi-Select (comma-separated)
default: 'B206,B210,X310_XG,X410_CG_400,X410_UC_200,X440_CG_400,X440_CG_1600'
default: 'B206,B210,B310,X310_XG,X410_CG_400,X410_UC_200,X440_CG_400,X440_CG_1600'
trigger: none

View File

@ -121,7 +121,7 @@ parameters:
- name: selected_streaming_tests
type: string
displayName: Streaming Tests Multi-Select (comma-separated)
default: 'B206,B210,X310_XG,X410_CG_400,X410_UC_200,X440_CG_400,X440_CG_1600'
default: 'B206,B210,B310,X310_XG,X410_CG_400,X410_UC_200,X440_CG_400,X440_CG_1600'
trigger:
batch: true

View File

@ -0,0 +1,91 @@
#!/bin/bash
#
# setup script for PCIe streaming performance enhancements
#
# Instructions
# copy this file to the host machine
# the script should be run as root
# sudo ./setupPCIe.sh [-v] [-s]
#
# This script configures CPU governors for optimal performance
VERBOSE=NO
STATS=NO
INSTALL_DEPS=NO
HELP=NO
while [[ $# -gt 0 ]]; do
key="$1"
case $key in
-h|--help)
HELP=YES
shift
;;
-v|--verbose)
VERBOSE=YES
shift
;;
-s|--stats)
STATS=YES
shift
;;
--deps)
INSTALL_DEPS=YES
shift
;;
*)
echo "Unknown option: $1"
echo "Use -h or --help for usage information"
exit 1
;;
esac
done
if [[ "$HELP" == "YES" ]]; then
echo "Usage:"
echo " ./setupPCIe.sh [options]"
echo ""
echo "Setup script for PCIe streaming performance."
echo "Configures CPU cores for performance mode."
echo ""
echo "Options:"
echo " -v, --verbose display extra log messages"
echo " -s, --stats display info about the resulting system configuration"
echo " --deps installs dependencies (cpufrequtils)"
exit 0
fi
function log() {
if [[ "$VERBOSE" == "YES" ]]; then
echo "$@"
fi
}
if [[ "$INSTALL_DEPS" == "YES" ]]; then
apt install -y cpufrequtils
echo "Deps installed. Rerun without --deps flag."
exit 0
fi
log ""
log "SETTING CPU GOVERNORS"
for ((i=0;i<$(nproc --all);i++)); do
log "setting core $i to performance"
cpufreq-set -c $i -r -g performance;
done
function print_config() {
echo ""
echo "CURRENT SYSTEM CONFIG"
echo "----------------------------------------------------------------------"
for ((i=0;i<$(nproc);i++)); do
echo "analyzing cpu $i:"
cpufreq-info -c $i -p
done
}
if [[ "$STATS" == "YES" ]]; then
print_config
fi
echo "PCIe performance setup complete."

View File

@ -119,6 +119,12 @@
- uhd.build.all
- hw.rf.x3xx
- hw.rf.n2xx
- re: host/lib/usrp/b300/
add:
- uhd.build.all
- hw.rf.b3xx
- hw.streaming.b3xx
- devtest.b3xx
- re: host/lib/usrp/b200/
add:
- uhd.build.all
@ -350,6 +356,12 @@
- re: host/include/uhd/rfnoc/core/n3.._bsp.yml
add:
- fpga.usrp3.n3xx
- re: fpga/usrp3/top/b300
add:
- fpga.usrp3.b310
- re: host/include/uhd/rfnoc/core/b310_bsp.yml
add:
- fpga.usrp3.b310
# CPLD related changes
- re: fpga/usrp3/top/x400/cpld