mirror of
https://github.com/EttusResearch/uhd.git
synced 2026-10-25 17:36:10 +00:00
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:
parent
e0f685a4aa
commit
a18579e3e5
108
.ci/fpga/devices/job-build-fpga-b310.yml
Normal file
108
.ci/fpga/devices/job-build-fpga-b310.yml
Normal 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
|
||||
@ -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
|
||||
|
||||
30
.ci/templates/job-uhd-devtest-b310.yml
Normal file
30
.ci/templates/job-uhd-devtest-b310.yml
Normal 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'
|
||||
@ -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)
|
||||
|
||||
39
.ci/templates/job-uhd-rf-tests-b310.yml
Normal file
39
.ci/templates/job-uhd-rf-tests-b310.yml
Normal 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'
|
||||
@ -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 \
|
||||
|
||||
@ -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."
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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: []
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
91
host/tests/streaming_performance/setupPCIe.sh
Executable file
91
host/tests/streaming_performance/setupPCIe.sh
Executable 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."
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user