mirror of
https://github.com/EttusResearch/uhd.git
synced 2026-10-25 17:36:10 +00:00
fpga: ci: trigger fpga builds based on changeset
This commit is contained in:
parent
3422210550
commit
08031bed9e
194
fpga/.ci/devices/job-build-e31x.yml
Normal file
194
fpga/.ci/devices/job-build-e31x.yml
Normal file
@ -0,0 +1,194 @@
|
||||
#
|
||||
# Copyright 2024 Ettus Research, a National Instruments Brand
|
||||
#
|
||||
# SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
#
|
||||
# Description:
|
||||
#
|
||||
# This template defines a stages-based pipeline for building E31X FPGA targets.
|
||||
#
|
||||
# See https://aka.ms/yaml for pipeline YAML documentation.
|
||||
#
|
||||
|
||||
parameters:
|
||||
## Optional parameters
|
||||
# Run testbenches
|
||||
- name: run_testbenches
|
||||
type: boolean
|
||||
default: true
|
||||
# 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'
|
||||
# Build E310 FPGA targets
|
||||
- name: build_e31x
|
||||
type: boolean
|
||||
default: true
|
||||
# E310 FPGA targets to build (if build_e31x is true)
|
||||
- name: e31x_sg1_full_targets_matrix
|
||||
type: object
|
||||
default:
|
||||
E310_SG1:
|
||||
image_core: e310_rfnoc_image_core.yml
|
||||
target_name: E310_SG1
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
E310_SG1_IDLE:
|
||||
image_core: e310_rfnoc_image_core.yml
|
||||
target_name: E310_SG1_IDLE
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
- name: e31x_sg1_reduced_targets_matrix
|
||||
type: object
|
||||
default:
|
||||
E310_SG1:
|
||||
image_core: e310_rfnoc_image_core.yml
|
||||
target_name: E310_SG1
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
- name: e31x_sg3_full_targets_matrix
|
||||
type: object
|
||||
default:
|
||||
E310_SG3:
|
||||
image_core: e310_rfnoc_image_core.yml
|
||||
target_name: E310_SG3
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
E310_SG3_IDLE:
|
||||
image_core: e310_rfnoc_image_core.yml
|
||||
target_name: E310_SG3_IDLE
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
- name: e31x_sg3_reduced_targets_matrix
|
||||
type: object
|
||||
default:
|
||||
E310_SG3:
|
||||
image_core: e310_rfnoc_image_core.yml
|
||||
target_name: E310_SG3
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
|
||||
stages:
|
||||
|
||||
### START: E310 stages
|
||||
|
||||
- stage: build_e31x_sg1_ip_stage
|
||||
displayName: Build E310 SG1 IP
|
||||
dependsOn: analyze_changeset
|
||||
condition: and( succeeded(),
|
||||
or(
|
||||
contains(dependencies.analyze_changeset.outputs['analyze.gen_build_list.HdlChangeList'], 'fpga.usrp3.e31x'),
|
||||
contains(dependencies.analyze_changeset.outputs['analyze.gen_build_list.HdlChangeList'], 'fpga.usrp3.all'),
|
||||
eq('${{ parameters.build_e31x }}', 'true')
|
||||
)
|
||||
)
|
||||
jobs:
|
||||
- template: ../templates/job-build-ip.yml
|
||||
parameters:
|
||||
directory: uhddev/fpga/usrp3/top/e31x
|
||||
ip_target: E310_SG1_IP
|
||||
clean_build: ${{ parameters.clean_ip_build }}
|
||||
num_jobs: ${{ parameters.num_ip_jobs }}
|
||||
|
||||
- stage: build_e31x_sg1_targets_stage
|
||||
displayName: Build E310 FPGA Targets
|
||||
dependsOn: build_e31x_sg1_ip_stage
|
||||
condition: succeeded('build_e31x_sg1_ip_stage')
|
||||
jobs:
|
||||
- ${{ if eq(parameters.package_and_publish_images, true) }}:
|
||||
- template: ../templates/job-build-fpga.yml
|
||||
parameters:
|
||||
targets_matrix: ${{ parameters.e31x_sg1_full_targets_matrix }}
|
||||
ip_artifact: E310_SG1_IP
|
||||
top_dir: uhddev/fpga/usrp3/top/e31x
|
||||
publish_int_files: ${{ parameters.publish_int_files }}
|
||||
- ${{ if eq(parameters.package_and_publish_images, false) }}:
|
||||
- template: ../templates/job-build-fpga.yml
|
||||
parameters:
|
||||
targets_matrix: ${{ parameters.e31x_sg1_reduced_targets_matrix }}
|
||||
ip_artifact: E310_SG1_IP
|
||||
top_dir: uhddev/fpga/usrp3/top/e31x
|
||||
publish_int_files: ${{ parameters.publish_int_files }}
|
||||
|
||||
- stage: create_e31x_sg1_packages_stage
|
||||
displayName: Package & Publish E310 SG1 Binaries
|
||||
dependsOn: build_e31x_sg1_targets_stage
|
||||
condition: and(succeeded('build_e31x_sg1_targets_stage'),
|
||||
eq('${{ parameters.package_and_publish_images }}', 'true'))
|
||||
jobs:
|
||||
- template: ../templates/job-package-images.yml
|
||||
parameters:
|
||||
package_name: e3xx_e310_sg1_fpga_default
|
||||
artifacts_matrix: ${{ parameters.e31x_sg1_full_targets_matrix }}
|
||||
build_directory: uhddev/fpga/usrp3/top/e31x/build/
|
||||
package_access: ${{ parameters.package_access }}
|
||||
|
||||
- stage: build_e31x_sg3_ip_stage
|
||||
displayName: Build E310 SG3 IP
|
||||
dependsOn: analyze_changeset
|
||||
condition: and( succeeded(),
|
||||
or(
|
||||
contains(dependencies.analyze_changeset.outputs['analyze.gen_build_list.HdlChangeList'], 'fpga.usrp3.e31x'),
|
||||
contains(dependencies.analyze_changeset.outputs['analyze.gen_build_list.HdlChangeList'], 'fpga.usrp3.all'),
|
||||
eq('${{ parameters.build_e31x }}', 'true')
|
||||
)
|
||||
)
|
||||
jobs:
|
||||
- template: ../templates/job-build-ip.yml
|
||||
parameters:
|
||||
directory: uhddev/fpga/usrp3/top/e31x
|
||||
ip_target: E310_SG3_IP
|
||||
clean_build: ${{ parameters.clean_ip_build }}
|
||||
num_jobs: ${{ parameters.num_ip_jobs }}
|
||||
|
||||
- stage: build_e31x_sg3_targets_stage
|
||||
displayName: Build E310 SG3 FPGA Targets
|
||||
dependsOn: build_e31x_sg3_ip_stage
|
||||
condition: succeeded('build_e31x_sg3_ip_stage')
|
||||
jobs:
|
||||
- ${{ if eq(parameters.package_and_publish_images, true) }}:
|
||||
- template: ../templates/job-build-fpga.yml
|
||||
parameters:
|
||||
targets_matrix: ${{ parameters.e31x_sg3_full_targets_matrix }}
|
||||
ip_artifact: E310_SG3_IP
|
||||
top_dir: uhddev/fpga/usrp3/top/e31x
|
||||
publish_int_files: ${{ parameters.publish_int_files }}
|
||||
- ${{ if eq(parameters.package_and_publish_images, false) }}:
|
||||
- template: ../templates/job-build-fpga.yml
|
||||
parameters:
|
||||
targets_matrix: ${{ parameters.e31x_sg3_reduced_targets_matrix }}
|
||||
ip_artifact: E310_SG3_IP
|
||||
top_dir: uhddev/fpga/usrp3/top/e31x
|
||||
publish_int_files: ${{ parameters.publish_int_files }}
|
||||
|
||||
- stage: create_e31x_sg3_packages_stage
|
||||
displayName: Package & Publish E310 Binaries
|
||||
dependsOn: build_e31x_sg3_targets_stage
|
||||
condition: and(succeeded('build_e31x_sg3_targets_stage'),
|
||||
eq('${{ parameters.package_and_publish_images }}', 'true'))
|
||||
jobs:
|
||||
- template: ../templates/job-package-images.yml
|
||||
parameters:
|
||||
package_name: e3xx_e310_sg3_fpga_default
|
||||
artifacts_matrix: ${{ parameters.e31x_sg3_full_targets_matrix }}
|
||||
build_directory: uhddev/fpga/usrp3/top/e31x/build/
|
||||
package_access: ${{ parameters.package_access }}
|
||||
|
||||
### END: E310 stages
|
||||
126
fpga/.ci/devices/job-build-e320.yml
Normal file
126
fpga/.ci/devices/job-build-e320.yml
Normal file
@ -0,0 +1,126 @@
|
||||
#
|
||||
# Copyright 2024 Ettus Research, a National Instruments Brand
|
||||
#
|
||||
# SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
#
|
||||
# Description:
|
||||
#
|
||||
# This template defines a stages-based pipeline for building E32X FPGA targets.
|
||||
#
|
||||
# See https://aka.ms/yaml for pipeline YAML documentation.
|
||||
#
|
||||
|
||||
parameters:
|
||||
## Optional parameters
|
||||
# Run testbenches
|
||||
- name: run_testbenches
|
||||
type: boolean
|
||||
default: true
|
||||
# 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'
|
||||
# Build E320 FPGA targets
|
||||
- name: build_e320
|
||||
type: boolean
|
||||
default: true
|
||||
# E320 FPGA targets to build (if build_e320 is true)
|
||||
- name: e320_full_targets_matrix
|
||||
type: object
|
||||
default:
|
||||
E320_1G:
|
||||
image_core: e320_rfnoc_image_core.yml
|
||||
target_name: E320_1G
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
E320_XG:
|
||||
image_core: e320_rfnoc_image_core.yml
|
||||
target_name: E320_XG
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
E320_AA:
|
||||
image_core: e320_rfnoc_image_core.yml
|
||||
target_name: E320_AA
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
- name: e320_reduced_targets_matrix
|
||||
type: object
|
||||
default:
|
||||
E320_XG:
|
||||
image_core: e320_rfnoc_image_core.yml
|
||||
target_name: E320_XG
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
|
||||
stages:
|
||||
|
||||
### START: E320 stages
|
||||
|
||||
- stage: build_e320_ip_stage
|
||||
displayName: Build E320 IP
|
||||
dependsOn: analyze_changeset
|
||||
condition: and( succeeded(),
|
||||
or(
|
||||
contains(dependencies.analyze_changeset.outputs['analyze.gen_build_list.HdlChangeList'], 'fpga.usrp3.e320'),
|
||||
contains(dependencies.analyze_changeset.outputs['analyze.gen_build_list.HdlChangeList'], 'fpga.usrp3.all'),
|
||||
eq('${{ parameters.build_e320 }}', 'true')
|
||||
)
|
||||
)
|
||||
jobs:
|
||||
- template: ../templates/job-build-ip.yml
|
||||
parameters:
|
||||
directory: uhddev/fpga/usrp3/top/e320
|
||||
ip_target: E320_IP
|
||||
clean_build: ${{ parameters.clean_ip_build }}
|
||||
num_jobs: ${{ parameters.num_ip_jobs }}
|
||||
|
||||
- stage: build_e320_targets_stage
|
||||
displayName: Build E320 FPGA Targets
|
||||
dependsOn: build_e320_ip_stage
|
||||
condition: succeeded('build_e320_ip_stage')
|
||||
jobs:
|
||||
- ${{ if eq(parameters.package_and_publish_images, true) }}:
|
||||
- template: ../templates/job-build-fpga.yml
|
||||
parameters:
|
||||
targets_matrix: ${{ parameters.e320_full_targets_matrix }}
|
||||
ip_artifact: E320_IP
|
||||
top_dir: uhddev/fpga/usrp3/top/e320
|
||||
publish_int_files: ${{ parameters.publish_int_files }}
|
||||
- ${{ if eq(parameters.package_and_publish_images, false) }}:
|
||||
- template: ../templates/job-build-fpga.yml
|
||||
parameters:
|
||||
targets_matrix: ${{ parameters.e320_reduced_targets_matrix }}
|
||||
ip_artifact: E320_IP
|
||||
top_dir: uhddev/fpga/usrp3/top/e320
|
||||
publish_int_files: ${{ parameters.publish_int_files }}
|
||||
|
||||
- stage: create_e320_packages_stage
|
||||
displayName: Package & Publish E320 Binaries
|
||||
dependsOn: build_e320_targets_stage
|
||||
condition: and(succeeded('build_e320_targets_stage'), eq('${{ parameters.package_and_publish_images }}', 'true'))
|
||||
jobs:
|
||||
- template: ../templates/job-package-images.yml
|
||||
parameters:
|
||||
package_name: e3xx_e320_fpga_default
|
||||
artifacts_matrix: ${{ parameters.e320_full_targets_matrix }}
|
||||
build_directory: uhddev/fpga/usrp3/top/e320/build/
|
||||
package_access: ${{ parameters.package_access }}
|
||||
|
||||
### END: E320 stages
|
||||
315
fpga/.ci/devices/job-build-n3xx.yml
Normal file
315
fpga/.ci/devices/job-build-n3xx.yml
Normal file
@ -0,0 +1,315 @@
|
||||
#
|
||||
# Copyright 2024 Ettus Research, a National Instruments Brand
|
||||
#
|
||||
# SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
#
|
||||
# Description:
|
||||
#
|
||||
# This template defines a stages-based pipeline for building N3xx FPGA targets.
|
||||
#
|
||||
# See https://aka.ms/yaml for pipeline YAML documentation.
|
||||
#
|
||||
|
||||
parameters:
|
||||
## Optional parameters
|
||||
# Run testbenches
|
||||
- name: run_testbenches
|
||||
type: boolean
|
||||
default: true
|
||||
# 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'
|
||||
# Build N300 FPGA targets
|
||||
- name: build_n3xx
|
||||
type: boolean
|
||||
default: true
|
||||
# N300 FPGA targets to build (if build_n3xx is true)
|
||||
- name: n300_full_targets_matrix
|
||||
type: object
|
||||
default:
|
||||
N300_HG:
|
||||
image_core: n300_rfnoc_image_core.yml
|
||||
target_name: N300_HG
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
N300_XG:
|
||||
image_core: n300_rfnoc_image_core.yml
|
||||
target_name: N300_XG
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
N300_WX:
|
||||
image_core: n300_rfnoc_image_core.yml
|
||||
target_name: N300_WX
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
N300_AA:
|
||||
image_core: n300_bist_image_core.yml
|
||||
target_name: N300_AA
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
- name: n300_reduced_targets_matrix
|
||||
type: object
|
||||
default:
|
||||
N300_HG:
|
||||
image_core: n300_rfnoc_image_core.yml
|
||||
target_name: N300_HG
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
# N310 FPGA targets to build (if build_n3xx is true)
|
||||
- name: n310_full_targets_matrix
|
||||
type: object
|
||||
default:
|
||||
N310_HG:
|
||||
image_core: n310_rfnoc_image_core.yml
|
||||
target_name: N310_HG
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
N310_XG:
|
||||
image_core: n310_rfnoc_image_core.yml
|
||||
target_name: N310_XG
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
N310_WX:
|
||||
image_core: n310_rfnoc_image_core.yml
|
||||
target_name: N310_WX
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
N310_AA:
|
||||
image_core: n310_bist_image_core.yml
|
||||
target_name: N310_AA
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
- name: n310_reduced_targets_matrix
|
||||
type: object
|
||||
default:
|
||||
N310_HG:
|
||||
image_core: n310_rfnoc_image_core.yml
|
||||
target_name: N310_HG
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
# N320 FPGA targets to build (if build_n3xx is true)
|
||||
- name: n320_full_targets_matrix
|
||||
type: object
|
||||
default:
|
||||
N320_HG:
|
||||
image_core: n320_rfnoc_image_core.yml
|
||||
target_name: N320_HG
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
N320_XG:
|
||||
image_core: n320_rfnoc_image_core.yml
|
||||
target_name: N320_XG
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
N320_WX:
|
||||
image_core: n320_rfnoc_image_core.yml
|
||||
target_name: N320_WX
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
N320_AA:
|
||||
image_core: n320_rfnoc_bist_core.yml
|
||||
target_name: N320_AA
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
N320_AQ:
|
||||
image_core: n320_rfnoc_image_core.yml
|
||||
target_name: N320_AQ
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
N320_XQ:
|
||||
image_core: n320_rfnoc_image_core.yml
|
||||
target_name: N320_XQ
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
- name: n320_reduced_targets_matrix
|
||||
type: object
|
||||
default:
|
||||
N320_HG:
|
||||
image_core: n320_rfnoc_image_core.yml
|
||||
target_name: N320_HG
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
|
||||
|
||||
stages:
|
||||
|
||||
### START: N300 stages
|
||||
|
||||
- stage: build_n300_ip_stage
|
||||
displayName: Build N300 IP
|
||||
dependsOn: analyze_changeset
|
||||
condition: and( succeeded(),
|
||||
or(
|
||||
contains(dependencies.analyze_changeset.outputs['analyze.gen_build_list.HdlChangeList'], 'fpga.usrp3.n3xx'),
|
||||
contains(dependencies.analyze_changeset.outputs['analyze.gen_build_list.HdlChangeList'], 'fpga.usrp3.all'),
|
||||
eq('${{ parameters.build_n3xx }}', 'true')
|
||||
)
|
||||
)
|
||||
jobs:
|
||||
- template: ../templates/job-build-ip.yml
|
||||
parameters:
|
||||
directory: uhddev/fpga/usrp3/top/n3xx
|
||||
ip_target: N300_IP
|
||||
clean_build: ${{ parameters.clean_ip_build }}
|
||||
num_jobs: ${{ parameters.num_ip_jobs }}
|
||||
|
||||
- stage: build_n300_targets_stage
|
||||
displayName: Build N300 FPGA Targets
|
||||
dependsOn: build_n300_ip_stage
|
||||
condition: succeeded('build_n300_ip_stage')
|
||||
jobs:
|
||||
- ${{ if eq(parameters.package_and_publish_images, true) }}:
|
||||
- template: ../templates/job-build-fpga.yml
|
||||
parameters:
|
||||
targets_matrix: ${{ parameters.n300_full_targets_matrix }}
|
||||
ip_artifact: N300_IP
|
||||
top_dir: uhddev/fpga/usrp3/top/n3xx
|
||||
publish_int_files: ${{ parameters.publish_int_files }}
|
||||
- ${{ if eq(parameters.package_and_publish_images, false) }}:
|
||||
- template: ../templates/job-build-fpga.yml
|
||||
parameters:
|
||||
targets_matrix: ${{ parameters.n300_reduced_targets_matrix }}
|
||||
ip_artifact: N300_IP
|
||||
top_dir: uhddev/fpga/usrp3/top/n3xx
|
||||
publish_int_files: ${{ parameters.publish_int_files }}
|
||||
|
||||
- stage: create_n300_packages_stage
|
||||
displayName: Package & Publish N300 Binaries
|
||||
dependsOn: build_n300_targets_stage
|
||||
condition: and(succeeded('build_n300_targets_stage'), eq('${{ parameters.package_and_publish_images }}', 'true'))
|
||||
jobs:
|
||||
- template: ../templates/job-package-images.yml
|
||||
parameters:
|
||||
package_name: n3xx_n300_fpga_default
|
||||
artifacts_matrix: ${{ parameters.n300_full_targets_matrix }}
|
||||
build_directory: uhddev/fpga/usrp3/top/n3xx/build/
|
||||
package_access: ${{ parameters.package_access }}
|
||||
|
||||
### END: N300 stages
|
||||
|
||||
### START: N310 stages
|
||||
|
||||
- stage: build_n310_ip_stage
|
||||
displayName: Build N310 IP
|
||||
dependsOn: analyze_changeset
|
||||
condition: and( succeeded(),
|
||||
or(
|
||||
contains(dependencies.analyze_changeset.outputs['analyze.gen_build_list.HdlChangeList'], 'fpga.usrp3.n3xx'),
|
||||
contains(dependencies.analyze_changeset.outputs['analyze.gen_build_list.HdlChangeList'], 'fpga.usrp3.all'),
|
||||
eq('${{ parameters.build_n3xx }}', 'true')
|
||||
)
|
||||
)
|
||||
jobs:
|
||||
- template: ../templates/job-build-ip.yml
|
||||
parameters:
|
||||
directory: uhddev/fpga/usrp3/top/n3xx
|
||||
ip_target: N310_IP
|
||||
clean_build: ${{ parameters.clean_ip_build }}
|
||||
num_jobs: ${{ parameters.num_ip_jobs }}
|
||||
|
||||
- stage: build_n310_targets_stage
|
||||
displayName: Build N310 FPGA Targets
|
||||
dependsOn: build_n310_ip_stage
|
||||
condition: succeeded('build_n310_ip_stage')
|
||||
jobs:
|
||||
- ${{ if eq(parameters.package_and_publish_images, true) }}:
|
||||
- template: ../templates/job-build-fpga.yml
|
||||
parameters:
|
||||
targets_matrix: ${{ parameters.n310_full_targets_matrix }}
|
||||
ip_artifact: N310_IP
|
||||
top_dir: uhddev/fpga/usrp3/top/n3xx
|
||||
publish_int_files: ${{ parameters.publish_int_files }}
|
||||
- ${{ if eq(parameters.package_and_publish_images, false) }}:
|
||||
- template: ../templates/job-build-fpga.yml
|
||||
parameters:
|
||||
targets_matrix: ${{ parameters.n310_reduced_targets_matrix }}
|
||||
ip_artifact: N310_IP
|
||||
top_dir: uhddev/fpga/usrp3/top/n3xx
|
||||
publish_int_files: ${{ parameters.publish_int_files }}
|
||||
|
||||
- stage: create_n310_packages_stage
|
||||
displayName: Package & Publish N310 Binaries
|
||||
dependsOn: build_n310_targets_stage
|
||||
condition: and(succeeded('build_n310_targets_stage'), eq('${{ parameters.package_and_publish_images }}', 'true'))
|
||||
jobs:
|
||||
- template: ../templates/job-package-images.yml
|
||||
parameters:
|
||||
package_name: n3xx_n310_fpga_default
|
||||
artifacts_matrix: ${{ parameters.n310_full_targets_matrix }}
|
||||
build_directory: uhddev/fpga/usrp3/top/n3xx/build/
|
||||
package_access: ${{ parameters.package_access }}
|
||||
|
||||
### END: N310 stages
|
||||
|
||||
### START: N320 stages
|
||||
|
||||
- stage: build_n320_ip_stage
|
||||
displayName: Build N320 IP
|
||||
dependsOn: analyze_changeset
|
||||
condition: and( succeeded(),
|
||||
or(
|
||||
contains(dependencies.analyze_changeset.outputs['analyze.gen_build_list.HdlChangeList'], 'fpga.usrp3.n3xx'),
|
||||
contains(dependencies.analyze_changeset.outputs['analyze.gen_build_list.HdlChangeList'], 'fpga.usrp3.all'),
|
||||
eq('${{ parameters.build_n3xx }}', 'true')
|
||||
)
|
||||
)
|
||||
jobs:
|
||||
- template: ../templates/job-build-ip.yml
|
||||
parameters:
|
||||
directory: uhddev/fpga/usrp3/top/n3xx
|
||||
ip_target: N320_IP
|
||||
clean_build: ${{ parameters.clean_ip_build }}
|
||||
num_jobs: ${{ parameters.num_ip_jobs }}
|
||||
|
||||
- stage: build_n320_targets_stage
|
||||
displayName: Build N320 FPGA Targets
|
||||
dependsOn: build_n320_ip_stage
|
||||
condition: succeeded('build_n320_ip_stage')
|
||||
jobs:
|
||||
- ${{ if eq(parameters.package_and_publish_images, true) }}:
|
||||
- template: ../templates/job-build-fpga.yml
|
||||
parameters:
|
||||
targets_matrix: ${{ parameters.n320_full_targets_matrix }}
|
||||
ip_artifact: N320_IP
|
||||
top_dir: uhddev/fpga/usrp3/top/n3xx
|
||||
publish_int_files: ${{ parameters.publish_int_files }}
|
||||
- ${{ if eq(parameters.package_and_publish_images, false) }}:
|
||||
- template: ../templates/job-build-fpga.yml
|
||||
parameters:
|
||||
targets_matrix: ${{ parameters.n320_reduced_targets_matrix }}
|
||||
ip_artifact: N320_IP
|
||||
top_dir: uhddev/fpga/usrp3/top/n3xx
|
||||
publish_int_files: ${{ parameters.publish_int_files }}
|
||||
|
||||
- stage: create_n320_packages_stage
|
||||
displayName: Package & Publish N320 Binaries
|
||||
dependsOn: build_n320_targets_stage
|
||||
condition: and(succeeded('build_n320_targets_stage'), eq('${{ parameters.package_and_publish_images }}', 'true'))
|
||||
jobs:
|
||||
- template: ../templates/job-package-images.yml
|
||||
parameters:
|
||||
package_name: n3xx_n320_fpga_default
|
||||
artifacts_matrix: ${{ parameters.n320_full_targets_matrix }}
|
||||
build_directory: uhddev/fpga/usrp3/top/n3xx/build/
|
||||
package_access: ${{ parameters.package_access }}
|
||||
|
||||
### END: N320 stages
|
||||
|
||||
197
fpga/.ci/devices/job-build-x300.yml
Normal file
197
fpga/.ci/devices/job-build-x300.yml
Normal file
@ -0,0 +1,197 @@
|
||||
#
|
||||
# Copyright 2024 Ettus Research, a National Instruments Brand
|
||||
#
|
||||
# SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
#
|
||||
# Description:
|
||||
#
|
||||
# This template defines a stages-based pipeline for building X300 and X310 FPGA.
|
||||
#
|
||||
# See https://aka.ms/yaml for pipeline YAML documentation.
|
||||
#
|
||||
|
||||
parameters:
|
||||
## Optional parameters
|
||||
# Run testbenches
|
||||
- name: run_testbenches
|
||||
type: boolean
|
||||
default: true
|
||||
# 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'
|
||||
# Build X300 FPGA targets
|
||||
- name: build_x3x0
|
||||
type: boolean
|
||||
default: true
|
||||
# X300 FPGA targets to build (if build_x300 is true)
|
||||
- name: x300_full_targets_matrix
|
||||
type: object
|
||||
default:
|
||||
X300_HG:
|
||||
image_core: x300_rfnoc_image_core.yml
|
||||
target_name: X300_HG
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
X300_XG:
|
||||
image_core: x300_rfnoc_image_core.yml
|
||||
target_name: X300_XG
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
- name: x300_reduced_targets_matrix
|
||||
type: object
|
||||
default:
|
||||
X300_XG:
|
||||
image_core: x300_rfnoc_image_core.yml
|
||||
target_name: X300_XG
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
# X310 FPGA targets to build (if build_x310 is true)
|
||||
- name: x310_full_targets_matrix
|
||||
type: object
|
||||
default:
|
||||
X310_HG:
|
||||
image_core: x310_rfnoc_image_core.yml
|
||||
target_name: X310_HG
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
X310_XG:
|
||||
image_core: x310_rfnoc_image_core.yml
|
||||
target_name: X310_XG
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
- name: x310_reduced_targets_matrix
|
||||
type: object
|
||||
default:
|
||||
X310_XG:
|
||||
image_core: x310_rfnoc_image_core.yml
|
||||
target_name: X310_XG
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
|
||||
|
||||
stages:
|
||||
|
||||
### START: X300 stages
|
||||
|
||||
- stage: build_x300_ip_stage
|
||||
displayName: Build X300 IP
|
||||
dependsOn: analyze_changeset
|
||||
condition: and( succeeded(),
|
||||
or(
|
||||
contains(dependencies.analyze_changeset.outputs['analyze.gen_build_list.HdlChangeList'], 'fpga.usrp3.x3xx'),
|
||||
contains(dependencies.analyze_changeset.outputs['analyze.gen_build_list.HdlChangeList'], 'fpga.usrp3.all'),
|
||||
eq('${{ parameters.build_x3x0 }}', 'true')
|
||||
)
|
||||
)
|
||||
jobs:
|
||||
- template: ../templates/job-build-ip.yml
|
||||
parameters:
|
||||
directory: uhddev/fpga/usrp3/top/x300
|
||||
ip_target: X300_IP
|
||||
clean_build: ${{ parameters.clean_ip_build }}
|
||||
num_jobs: ${{ parameters.num_ip_jobs }}
|
||||
|
||||
- stage: build_x300_targets_stage
|
||||
displayName: Build X300 FPGA Targets
|
||||
dependsOn: build_x300_ip_stage
|
||||
condition: succeeded('build_x300_ip_stage')
|
||||
jobs:
|
||||
- ${{ if eq(parameters.package_and_publish_images, true) }}:
|
||||
- template: ../templates/job-build-fpga.yml
|
||||
parameters:
|
||||
targets_matrix: ${{ parameters.x300_full_targets_matrix }}
|
||||
ip_artifact: X300_IP
|
||||
top_dir: uhddev/fpga/usrp3/top/x300
|
||||
publish_int_files: ${{ parameters.publish_int_files }}
|
||||
- ${{ if eq(parameters.package_and_publish_images, false) }}:
|
||||
- template: ../templates/job-build-fpga.yml
|
||||
parameters:
|
||||
targets_matrix: ${{ parameters.x300_reduced_targets_matrix }}
|
||||
ip_artifact: X300_IP
|
||||
top_dir: uhddev/fpga/usrp3/top/x300
|
||||
publish_int_files: ${{ parameters.publish_int_files }}
|
||||
|
||||
- stage: create_x300_packages_stage
|
||||
displayName: Package & Publish X300 Binaries
|
||||
dependsOn: build_x300_targets_stage
|
||||
condition: and(succeeded('build_x300_targets_stage'), eq('${{ parameters.package_and_publish_images }}', 'true'))
|
||||
jobs:
|
||||
- template: ../templates/job-package-images.yml
|
||||
parameters:
|
||||
package_name: x3xx_x300_fpga_default
|
||||
artifacts_matrix: ${{ parameters.x300_full_targets_matrix }}
|
||||
build_directory: uhddev/fpga/usrp3/top/x300/build/
|
||||
package_access: ${{ parameters.package_access }}
|
||||
|
||||
### END: X300 stages
|
||||
|
||||
### START: X310 stages
|
||||
|
||||
- stage: build_x310_ip_stage
|
||||
displayName: Build X310 IP
|
||||
dependsOn: analyze_changeset
|
||||
condition: and( succeeded(),
|
||||
or(
|
||||
contains(dependencies.analyze_changeset.outputs['analyze.gen_build_list.HdlChangeList'], 'fpga.usrp3.x3xx'),
|
||||
contains(dependencies.analyze_changeset.outputs['analyze.gen_build_list.HdlChangeList'], 'fpga.usrp3.all'),
|
||||
eq('${{ parameters.build_x3x0 }}', 'true')
|
||||
)
|
||||
)
|
||||
jobs:
|
||||
- template: ../templates/job-build-ip.yml
|
||||
parameters:
|
||||
directory: uhddev/fpga/usrp3/top/x300
|
||||
ip_target: X310_IP
|
||||
clean_build: ${{ parameters.clean_ip_build }}
|
||||
|
||||
- stage: build_x310_targets_stage
|
||||
displayName: Build X310 FPGA Targets
|
||||
dependsOn: build_x310_ip_stage
|
||||
condition: succeeded('build_x310_ip_stage')
|
||||
jobs:
|
||||
- ${{ if eq(parameters.package_and_publish_images, true) }}:
|
||||
- template: ../templates/job-build-fpga.yml
|
||||
parameters:
|
||||
targets_matrix: ${{ parameters.x310_full_targets_matrix }}
|
||||
ip_artifact: X310_IP
|
||||
top_dir: uhddev/fpga/usrp3/top/x300
|
||||
publish_int_files: ${{ parameters.publish_int_files }}
|
||||
- ${{ if eq(parameters.package_and_publish_images, false) }}:
|
||||
- template: ../templates/job-build-fpga.yml
|
||||
parameters:
|
||||
targets_matrix: ${{ parameters.x310_reduced_targets_matrix }}
|
||||
ip_artifact: X310_IP
|
||||
top_dir: uhddev/fpga/usrp3/top/x300
|
||||
publish_int_files: ${{ parameters.publish_int_files }}
|
||||
|
||||
- stage: create_x310_packages_stage
|
||||
displayName: Package & Publish X310 Binaries
|
||||
dependsOn: build_x310_targets_stage
|
||||
condition: and(succeeded('build_x310_targets_stage'), eq('${{ parameters.package_and_publish_images }}', 'true'))
|
||||
jobs:
|
||||
- template: ../templates/job-package-images.yml
|
||||
parameters:
|
||||
package_name: x3xx_x310_fpga_default
|
||||
artifacts_matrix: ${{ parameters.x310_full_targets_matrix }}
|
||||
build_directory: uhddev/fpga/usrp3/top/x300/build/
|
||||
package_access: ${{ parameters.package_access }}
|
||||
|
||||
### END: X310 stages
|
||||
267
fpga/.ci/devices/job-build-x400.yml
Normal file
267
fpga/.ci/devices/job-build-x400.yml
Normal file
@ -0,0 +1,267 @@
|
||||
#
|
||||
# Copyright 2024 Ettus Research, a National Instruments Brand
|
||||
#
|
||||
# SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
#
|
||||
# Description:
|
||||
#
|
||||
# This template defines a stages-based pipeline for building X410 and X440 FPGA.
|
||||
#
|
||||
# See https://aka.ms/yaml for pipeline YAML documentation.
|
||||
#
|
||||
|
||||
parameters:
|
||||
## Optional parameters
|
||||
# Run testbenches
|
||||
- name: run_testbenches
|
||||
type: boolean
|
||||
default: true
|
||||
# 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'
|
||||
# Build X410 FPGA targets
|
||||
- name: build_x410
|
||||
type: boolean
|
||||
default: true
|
||||
# X410 FPGA targets to build(if triggered by changeset, packaging enabled)
|
||||
- name: x410_full_targets_matrix
|
||||
type: object
|
||||
default:
|
||||
X410_X4_200:
|
||||
image_core: x410_200_rfnoc_image_core.yml
|
||||
target_name: X410_X4_200
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
X410_UC_200:
|
||||
image_core: x410_200_rfnoc_image_core.yml
|
||||
target_name: X410_UC_200
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
X410_X4_400:
|
||||
image_core: x410_400_d_rfnoc_image_core.yml
|
||||
target_name: X410_X4_400
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
X410_CG_400:
|
||||
image_core: x410_400_rfnoc_image_core.yml
|
||||
target_name: X410_CG_400
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
- name: x410_reduced_targets_matrix
|
||||
# X410 FPGA targets to build (if triggered by changeset, no packaging)
|
||||
type: object
|
||||
default:
|
||||
X410_X4_200:
|
||||
image_core: x410_200_rfnoc_image_core.yml
|
||||
target_name: X410_X4_200
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
X410_X4_400:
|
||||
image_core: x410_400_d_rfnoc_image_core.yml
|
||||
target_name: X410_X4_400
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
# Build X440 FPGA targets
|
||||
- name: build_x440
|
||||
type: boolean
|
||||
default: true
|
||||
# X440 FPGA targets to build(if triggered by changeset, packaging enabled)
|
||||
- name: x440_full_targets_matrix
|
||||
type: object
|
||||
default:
|
||||
X440_CG_1600:
|
||||
image_core: x440_1600_rfnoc_image_core.yml
|
||||
target_name: X440_CG_1600
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
X440_CG_400:
|
||||
image_core: x440_400_rfnoc_image_core.yml
|
||||
target_name: X440_CG_400
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
X440_X4_1600:
|
||||
image_core: x440_1600_d_rfnoc_image_core.yml
|
||||
target_name: X440_X4_1600
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
X440_X4_400:
|
||||
image_core: x440_400_d_rfnoc_image_core.yml
|
||||
target_name: X440_X4_400
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
X440_X4_200:
|
||||
image_core: x440_200_rfnoc_image_core.yml
|
||||
target_name: X440_X4_200
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
# X440 FPGA targets to build (if triggered by changeset, no packaging)
|
||||
- name: x440_reduced_targets_matrix
|
||||
type: object
|
||||
default:
|
||||
X440_CG_400:
|
||||
image_core: x440_400_rfnoc_image_core.yml
|
||||
target_name: X440_CG_400
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
X440_X4_400:
|
||||
image_core: x440_400_d_rfnoc_image_core.yml
|
||||
target_name: X440_X4_400
|
||||
timeout: 720
|
||||
max_attempts: 2
|
||||
# Requested X410 targets(used if build_x410 is true)
|
||||
- name: x410_requests_matrix
|
||||
type: object
|
||||
displayName: X410 Targets
|
||||
default: []
|
||||
# Requested X440 target(used if build_x440 is true)
|
||||
- name: x440_requests_matrix
|
||||
type: object
|
||||
displayName: X440 Targets
|
||||
default: []
|
||||
|
||||
stages:
|
||||
|
||||
### START: X410 stages
|
||||
|
||||
- stage: build_x410_ip_stage
|
||||
displayName: Build X410 IP
|
||||
dependsOn: analyze_changeset
|
||||
condition: and( succeeded(),
|
||||
or(
|
||||
contains(dependencies.analyze_changeset.outputs['analyze.gen_build_list.HdlChangeList'], 'fpga.usrp3.x4xx'),
|
||||
contains(dependencies.analyze_changeset.outputs['analyze.gen_build_list.HdlChangeList'], 'fpga.usrp3.all'),
|
||||
eq('${{ parameters.build_x410 }}', 'true')
|
||||
)
|
||||
)
|
||||
jobs:
|
||||
- template: ../templates/job-build-ip.yml
|
||||
parameters:
|
||||
directory: uhddev/fpga/usrp3/top/x400
|
||||
ip_target: X410_IP
|
||||
clean_build: ${{ parameters.clean_ip_build }}
|
||||
num_jobs: ${{ parameters.num_ip_jobs }}
|
||||
|
||||
- stage: build_x410_targets_stage
|
||||
displayName: Build X410 FPGA Targets
|
||||
dependsOn: build_x410_ip_stage
|
||||
condition: succeeded('build_x410_ip_stage')
|
||||
jobs:
|
||||
# trigger full list of targets if packaging is enabled
|
||||
- ${{ if eq(parameters.package_and_publish_images, true) }}:
|
||||
- template: ../templates/job-build-fpga.yml
|
||||
parameters:
|
||||
targets_matrix: ${{ parameters.x410_full_targets_matrix }}
|
||||
ip_artifact: X410_IP
|
||||
top_dir: uhddev/fpga/usrp3/top/x400
|
||||
publish_int_files: ${{ parameters.publish_int_files }}
|
||||
# trigger reduced list of targets if packaging is disabled, and no specific targets are requested
|
||||
- ${{ if and(eq(parameters.package_and_publish_images, false),eq(parameters.build_x410, false)) }}:
|
||||
- template: ../templates/job-build-fpga.yml
|
||||
parameters:
|
||||
targets_matrix: ${{ parameters.x410_reduced_targets_matrix }}
|
||||
ip_artifact: X410_IP
|
||||
top_dir: uhddev/fpga/usrp3/top/x400
|
||||
publish_int_files: ${{ parameters.publish_int_files }}
|
||||
# trigger specific targets if packaging is disabled, and specific targets are requested
|
||||
- ${{ if and(eq(parameters.package_and_publish_images, true),eq(parameters.build_x410, true)) }}:
|
||||
- template: ../templates/job-build-fpga.yml
|
||||
parameters:
|
||||
targets_matrix: ${{ parameters.x410_requests_matrix }}
|
||||
ip_artifact: X410_IP
|
||||
top_dir: uhddev/fpga/usrp3/top/x400
|
||||
publish_int_files: ${{ parameters.publish_int_files }}
|
||||
|
||||
- stage: create_x410_packages_stage
|
||||
displayName: Package & Publish X410 Binaries
|
||||
dependsOn: build_x410_targets_stage
|
||||
condition: and(succeeded('build_x410_targets_stage'), eq('${{ parameters.package_and_publish_images }}', 'true'))
|
||||
jobs:
|
||||
- template: ../templates/job-package-images.yml
|
||||
parameters:
|
||||
package_name: x4xx_x410_fpga_default
|
||||
artifacts_matrix: ${{ parameters.x410_full_targets_matrix }}
|
||||
build_directory: uhddev/fpga/usrp3/top/x400/build/
|
||||
package_access: ${{ parameters.package_access }}
|
||||
|
||||
### END: X410 stages
|
||||
|
||||
### START: X440 stages
|
||||
|
||||
- stage: build_x440_ip_stage
|
||||
displayName: Build X440 IP
|
||||
dependsOn: analyze_changeset
|
||||
condition: and( succeeded(),
|
||||
or(
|
||||
contains(dependencies.analyze_changeset.outputs['analyze.gen_build_list.HdlChangeList'], 'fpga.usrp3.x4xx'),
|
||||
contains(dependencies.analyze_changeset.outputs['analyze.gen_build_list.HdlChangeList'], 'fpga.usrp3.all'),
|
||||
eq('${{ parameters.build_x440 }}', 'true')
|
||||
)
|
||||
)
|
||||
jobs:
|
||||
- template: ../templates/job-build-ip.yml
|
||||
parameters:
|
||||
directory: uhddev/fpga/usrp3/top/x400
|
||||
ip_target: X440_IP
|
||||
clean_build: ${{ parameters.clean_ip_build }}
|
||||
|
||||
- stage: build_x440_targets_stage
|
||||
displayName: Build X440 FPGA Targets
|
||||
dependsOn: build_x440_ip_stage
|
||||
condition: succeeded('build_x440_ip_stage')
|
||||
jobs:
|
||||
# trigger full list of targets if packaging is enabled
|
||||
- ${{ if eq(parameters.package_and_publish_images, true) }}:
|
||||
- template: ../templates/job-build-fpga.yml
|
||||
parameters:
|
||||
targets_matrix: ${{ parameters.x440_full_targets_matrix }}
|
||||
ip_artifact: X440_IP
|
||||
top_dir: uhddev/fpga/usrp3/top/x400
|
||||
publish_int_files: ${{ parameters.publish_int_files }}
|
||||
# trigger reduced list of targets if packaging is disabled, and no specific targets are requested
|
||||
- ${{ if and(eq(parameters.package_and_publish_images, false),eq(parameters.build_x440, false)) }}:
|
||||
- template: ../templates/job-build-fpga.yml
|
||||
parameters:
|
||||
targets_matrix: ${{ parameters.x440_reduced_targets_matrix }}
|
||||
ip_artifact: X440_IP
|
||||
top_dir: uhddev/fpga/usrp3/top/x400
|
||||
publish_int_files: ${{ parameters.publish_int_files }}
|
||||
# trigger specific targets if packaging is disabled, and specific targets are requested
|
||||
- ${{ if and(eq(parameters.package_and_publish_images, false),eq(parameters.build_x440, true)) }}:
|
||||
- template: ../templates/job-build-fpga.yml
|
||||
parameters:
|
||||
targets_matrix: ${{ parameters.x440_requests_matrix }}
|
||||
ip_artifact: X440_IP
|
||||
top_dir: uhddev/fpga/usrp3/top/x400
|
||||
publish_int_files: ${{ parameters.publish_int_files }}
|
||||
|
||||
- stage: create_x440_packages_stage
|
||||
displayName: Package & Publish X440 Binaries
|
||||
dependsOn: build_x440_targets_stage
|
||||
condition: and(succeeded('build_x440_targets_stage'), eq('${{ parameters.package_and_publish_images }}', 'true'))
|
||||
jobs:
|
||||
- template: ../templates/job-package-images.yml
|
||||
parameters:
|
||||
package_name: x4xx_x440_fpga_default
|
||||
artifacts_matrix: ${{ parameters.x440_full_targets_matrix }}
|
||||
build_directory: uhddev/fpga/usrp3/top/x400/build/
|
||||
package_access: ${{ parameters.package_access }}
|
||||
|
||||
### END: X440 stages
|
||||
@ -26,7 +26,7 @@ parameters:
|
||||
- name: package_and_publish_images
|
||||
type: boolean
|
||||
displayName: Package & Publish Images
|
||||
default: true
|
||||
default: false
|
||||
- name: package_access
|
||||
type: string
|
||||
values:
|
||||
@ -34,14 +34,35 @@ parameters:
|
||||
- 'files.ettus.com (Public)'
|
||||
displayName: Published Package Access
|
||||
default: 'Internal'
|
||||
- name: skip_analyze_changeset
|
||||
type: boolean
|
||||
displayName: Skip Analyze Changeset
|
||||
default: false
|
||||
- name: build_x3x0
|
||||
type: boolean
|
||||
displayName: Build X3x0
|
||||
default: false
|
||||
- name: build_n3xx
|
||||
type: boolean
|
||||
displayName: Build N3xx
|
||||
default: false
|
||||
- name: build_e31x
|
||||
type: boolean
|
||||
displayName: Build E31x
|
||||
default: false
|
||||
- name: build_e32x
|
||||
type: boolean
|
||||
displayName: Build E32x
|
||||
default: false
|
||||
- name: build_x410
|
||||
type: boolean
|
||||
displayName: Build X410
|
||||
default: true
|
||||
default: false
|
||||
- name: build_x440
|
||||
type: boolean
|
||||
displayName: Build X440
|
||||
default: true
|
||||
default: false
|
||||
# Requested X410 targets
|
||||
- name: x410_targets_matrix
|
||||
type: object
|
||||
displayName: X410 Targets
|
||||
@ -105,7 +126,7 @@ pr:
|
||||
paths:
|
||||
include:
|
||||
- fpga/usrp3/lib
|
||||
- fpga/usrp3/top/x400
|
||||
- fpga/usrp3/top
|
||||
- fpga/.ci
|
||||
|
||||
schedules:
|
||||
@ -124,6 +145,11 @@ extends:
|
||||
publish_int_files: true
|
||||
package_and_publish_images: ${{ parameters.package_and_publish_images }}
|
||||
package_access: ${{ parameters.package_access }}
|
||||
skip_analyze_changeset: ${{ parameters.skip_analyze_changeset }}
|
||||
build_x3x0: ${{ parameters.build_x3x0 }}
|
||||
build_n3xx: ${{ parameters.build_n3xx }}
|
||||
build_e31x: ${{ parameters.build_e31x }}
|
||||
build_e32x: ${{ parameters.build_e32x }}
|
||||
build_x410: ${{ parameters.build_x410 }}
|
||||
build_x440: ${{ parameters.build_x440 }}
|
||||
x410_targets_matrix: ${{ parameters.x410_targets_matrix }}
|
||||
|
||||
@ -35,6 +35,26 @@ parameters:
|
||||
- 'files.ettus.com (Public)'
|
||||
displayName: Published Package Access
|
||||
default: 'Internal'
|
||||
- name: skip_analyze_changeset
|
||||
type: boolean
|
||||
displayName: Skip Analyze Changeset
|
||||
default: true
|
||||
- name: build_x3x0
|
||||
type: boolean
|
||||
displayName: Build X3x0
|
||||
default: true
|
||||
- name: build_n3xx
|
||||
type: boolean
|
||||
displayName: Build N3xx
|
||||
default: true
|
||||
- name: build_e31x
|
||||
type: boolean
|
||||
displayName: Build E31x
|
||||
default: true
|
||||
- name: build_e32x
|
||||
type: boolean
|
||||
displayName: Build E32x
|
||||
default: true
|
||||
- name: build_x410
|
||||
type: boolean
|
||||
displayName: Build X410
|
||||
@ -52,7 +72,7 @@ trigger:
|
||||
paths:
|
||||
include:
|
||||
- fpga/usrp3/lib
|
||||
- fpga/usrp3/top/x400
|
||||
- fpga/usrp3/top
|
||||
- fpga/.ci
|
||||
|
||||
pr: none
|
||||
@ -72,5 +92,10 @@ extends:
|
||||
clean_ip_build: ${{ parameters.clean_ip_build }}
|
||||
package_and_publish_images: ${{ parameters.package_and_publish_images }}
|
||||
package_access: ${{ parameters.package_access }}
|
||||
skip_analyze_changeset: ${{ parameters.skip_analyze_changeset }}
|
||||
build_x3x0: ${{ parameters.build_x3x0 }}
|
||||
build_n3xx: ${{ parameters.build_n3xx }}
|
||||
build_e31x: ${{ parameters.build_e31x }}
|
||||
build_e32x: ${{ parameters.build_e32x }}
|
||||
build_x410: ${{ parameters.build_x410 }}
|
||||
build_x440: ${{ parameters.build_x440 }}
|
||||
|
||||
37
fpga/.ci/templates/changeset_build_list.yaml
Normal file
37
fpga/.ci/templates/changeset_build_list.yaml
Normal file
@ -0,0 +1,37 @@
|
||||
# build targets:
|
||||
# - fpga.usrp3.$PLATFORM: Build FPGA images for given platforms.
|
||||
|
||||
# library changes
|
||||
- re: fpga/usrp3/lib
|
||||
add:
|
||||
- fpga.usrp3.all
|
||||
|
||||
# Device-specific changes.
|
||||
- re: fpga/usrp3/top/x400
|
||||
add:
|
||||
- fpga.usrp3.x4xx
|
||||
- re: fpga/usrp3/top/x300
|
||||
add:
|
||||
- fpga.usrp3.x3xx
|
||||
- re: fpga/usrp3/top/b200
|
||||
add:
|
||||
- fpga.usrp3.b200
|
||||
- re: fpga/usrp3/top/b200mini
|
||||
add:
|
||||
- fpga.usrp3.b200mini
|
||||
- re: fpga/usrp3/top/e31x
|
||||
add:
|
||||
- fpga.usrp3.e31x
|
||||
- re: fpga/usrp3/top/e320
|
||||
add:
|
||||
- fpga.usrp3.e320
|
||||
- re: fpga/usrp3/top/n3xx
|
||||
add:
|
||||
- fpga.usrp3.n3xx
|
||||
|
||||
###############################################################################
|
||||
# CI CHANGES
|
||||
###############################################################################
|
||||
- re: fpga/.ci/*
|
||||
add:
|
||||
- fpga.usrp3.all
|
||||
33
fpga/.ci/templates/job-analyze-changeset.yml
Normal file
33
fpga/.ci/templates/job-analyze-changeset.yml
Normal file
@ -0,0 +1,33 @@
|
||||
# This job will execute the changeset_testlist.py script, which in turn will
|
||||
# compute a list of tests that need to be executed.
|
||||
# The script itself produces the correct output to set a variable for a future
|
||||
# stage.
|
||||
|
||||
parameters:
|
||||
- name: skip_analyze_changeset
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
- job: analyze
|
||||
displayName: Analyze Changeset
|
||||
pool:
|
||||
name: Drivers-NIBuildFarm-RFMIBUILD
|
||||
demands: sh
|
||||
condition: not(${{ parameters.skip_analyze_changeset }})
|
||||
steps:
|
||||
- checkout: self
|
||||
clean: true
|
||||
- bash: |
|
||||
if [[ $AGENT_OS == "Windows_NT" ]]; then
|
||||
VENV_BIN_DIR="Scripts"
|
||||
else
|
||||
VENV_BIN_DIR="bin"
|
||||
fi
|
||||
python3 -m venv $AGENT_TEMPDIRECTORY/ac_venv
|
||||
$AGENT_TEMPDIRECTORY/ac_venv/$VENV_BIN_DIR/pip install --upgrade pip
|
||||
$AGENT_TEMPDIRECTORY/ac_venv/$VENV_BIN_DIR/pip install ruamel.yaml
|
||||
git branch
|
||||
$AGENT_TEMPDIRECTORY/ac_venv/$VENV_BIN_DIR/python3 tools/changeset_testlist.py --target-branch origin/master --set-azdo-var HdlChangeList --rule-file fpga/.ci/templates/changeset_build_list.yaml
|
||||
name: gen_build_list
|
||||
displayName: Generate Build-List
|
||||
@ -38,11 +38,35 @@ parameters:
|
||||
- name: package_access
|
||||
type: string
|
||||
default: 'Internal'
|
||||
# Skip analyze changeset stage
|
||||
- name: skip_analyze_changeset
|
||||
type: boolean
|
||||
default: false
|
||||
# Build X3x0 FPGA targets
|
||||
- name: build_x3x0
|
||||
type: boolean
|
||||
displayName: Build X3x0
|
||||
default: false
|
||||
# Build N3xx FPGA targets
|
||||
- name: build_n3xx
|
||||
type: boolean
|
||||
displayName: Build N3xx
|
||||
default: false
|
||||
# Build E31x FPGA targets
|
||||
- name: build_e31x
|
||||
type: boolean
|
||||
displayName: Build E31x
|
||||
default: false
|
||||
# Build E32x FPGA targets
|
||||
- name: build_e32x
|
||||
type: boolean
|
||||
displayName: Build E32x
|
||||
default: false
|
||||
# Build X410 FPGA targets
|
||||
- name: build_x410
|
||||
type: boolean
|
||||
default: true
|
||||
# X410 FPGA targets to build (if build_x410 is true)
|
||||
default: false
|
||||
# Requested X410 targets (if build_x410 is true)
|
||||
- name: x410_targets_matrix
|
||||
type: object
|
||||
default:
|
||||
@ -69,8 +93,8 @@ parameters:
|
||||
# Build X440 FPGA targets
|
||||
- name: build_x440
|
||||
type: boolean
|
||||
default: true
|
||||
# X440 FPGA targets to build (if build_x440 is true)
|
||||
default: false
|
||||
# Requested X440 targets
|
||||
- name: x440_targets_matrix
|
||||
type: object
|
||||
default:
|
||||
@ -123,81 +147,76 @@ stages:
|
||||
### END: Testbenches stage
|
||||
|
||||
|
||||
### START: X410 stages
|
||||
|
||||
- stage: build_x410_ip_stage
|
||||
displayName: Build X410 IP
|
||||
### START: Change History analysis stage
|
||||
- stage: analyze_changeset
|
||||
displayName: Analyze Changeset
|
||||
dependsOn: []
|
||||
condition: and(succeeded(), eq('${{ parameters.build_x410 }}', 'true'))
|
||||
jobs:
|
||||
- template: job-build-ip.yml
|
||||
- template: job-analyze-changeset.yml
|
||||
parameters:
|
||||
directory: uhddev/fpga/usrp3/top/x400
|
||||
ip_target: X410_IP
|
||||
clean_build: ${{ parameters.clean_ip_build }}
|
||||
num_jobs: ${{ parameters.num_ip_jobs }}
|
||||
skip_analyze_changeset: ${{ parameters.skip_analyze_changeset }}
|
||||
|
||||
- stage: build_x410_targets_stage
|
||||
displayName: Build X410 FPGA Targets
|
||||
dependsOn: build_x410_ip_stage
|
||||
condition: succeeded('build_x410_ip_stage')
|
||||
jobs:
|
||||
- template: job-build-fpga.yml
|
||||
parameters:
|
||||
targets_matrix: ${{ parameters.x410_targets_matrix }}
|
||||
ip_artifact: X410_IP
|
||||
top_dir: uhddev/fpga/usrp3/top/x400
|
||||
publish_int_files: ${{ parameters.publish_int_files }}
|
||||
### END: Change History analysis stage
|
||||
|
||||
- stage: create_x410_packages_stage
|
||||
displayName: Package & Publish X410 Binaries
|
||||
dependsOn: build_x410_targets_stage
|
||||
condition: and(succeeded('build_x410_targets_stage'), eq('${{ parameters.package_and_publish_images }}', 'true'))
|
||||
jobs:
|
||||
- template: job-package-images.yml
|
||||
parameters:
|
||||
package_name: x4xx_x410_fpga_default
|
||||
artifacts_matrix: ${{ parameters.x410_targets_matrix }}
|
||||
build_directory: uhddev/fpga/usrp3/top/x400/build/
|
||||
package_access: ${{ parameters.package_access }}
|
||||
### START: X400 stages
|
||||
|
||||
### END: X410 stages
|
||||
- template: ../devices/job-build-x400.yml
|
||||
parameters:
|
||||
clean_ip_build: ${{ parameters.clean_ip_build }}
|
||||
publish_int_files: true
|
||||
package_and_publish_images: ${{ parameters.package_and_publish_images }}
|
||||
package_access: ${{ parameters.package_access }}
|
||||
build_x410: ${{ parameters.build_x410 }}
|
||||
build_x440: ${{ parameters.build_x440 }}
|
||||
x410_requests_matrix: ${{ parameters.x410_targets_matrix }}
|
||||
x440_requests_matrix: ${{ parameters.x440_targets_matrix }}
|
||||
|
||||
### START: X440 stages
|
||||
### END: X400 stages
|
||||
|
||||
- stage: build_x440_ip_stage
|
||||
displayName: Build X440 IP
|
||||
dependsOn: []
|
||||
condition: and(succeeded(), eq('${{ parameters.build_x440 }}', 'true'))
|
||||
jobs:
|
||||
- template: job-build-ip.yml
|
||||
parameters:
|
||||
directory: uhddev/fpga/usrp3/top/x400
|
||||
ip_target: X440_IP
|
||||
clean_build: ${{ parameters.clean_ip_build }}
|
||||
### START: X3x0 stages
|
||||
|
||||
- stage: build_x440_targets_stage
|
||||
displayName: Build X440 FPGA Targets
|
||||
dependsOn: build_x440_ip_stage
|
||||
condition: succeeded('build_x440_ip_stage')
|
||||
jobs:
|
||||
- template: job-build-fpga.yml
|
||||
parameters:
|
||||
targets_matrix: ${{ parameters.x440_targets_matrix }}
|
||||
ip_artifact: X440_IP
|
||||
top_dir: uhddev/fpga/usrp3/top/x400
|
||||
publish_int_files: ${{ parameters.publish_int_files }}
|
||||
- template: ../devices/job-build-x300.yml
|
||||
parameters:
|
||||
clean_ip_build: ${{ parameters.clean_ip_build }}
|
||||
publish_int_files: true
|
||||
package_and_publish_images: ${{ parameters.package_and_publish_images }}
|
||||
package_access: ${{ parameters.package_access }}
|
||||
build_x3x0: ${{ parameters.build_x3x0 }}
|
||||
|
||||
- stage: create_x440_packages_stage
|
||||
displayName: Package & Publish X440 Binaries
|
||||
dependsOn: build_x440_targets_stage
|
||||
condition: and(succeeded('build_x440_targets_stage'), eq('${{ parameters.package_and_publish_images }}', 'true'))
|
||||
jobs:
|
||||
- template: job-package-images.yml
|
||||
parameters:
|
||||
package_name: x4xx_x440_fpga_default
|
||||
artifacts_matrix: ${{ parameters.x440_targets_matrix }}
|
||||
build_directory: uhddev/fpga/usrp3/top/x400/build/
|
||||
package_access: ${{ parameters.package_access }}
|
||||
### END: X3x0 stages
|
||||
|
||||
### END: X440 stages
|
||||
### START: N3xx stages
|
||||
|
||||
- template: ../devices/job-build-n3xx.yml
|
||||
parameters:
|
||||
clean_ip_build: ${{ parameters.clean_ip_build }}
|
||||
publish_int_files: true
|
||||
package_and_publish_images: ${{ parameters.package_and_publish_images }}
|
||||
package_access: ${{ parameters.package_access }}
|
||||
build_n3xx: ${{ parameters.build_n3xx }}
|
||||
|
||||
### END: N3xx stages
|
||||
|
||||
### START: E31x stages
|
||||
|
||||
- template: ../devices/job-build-e31x.yml
|
||||
parameters:
|
||||
clean_ip_build: ${{ parameters.clean_ip_build }}
|
||||
publish_int_files: true
|
||||
package_and_publish_images: ${{ parameters.package_and_publish_images }}
|
||||
package_access: ${{ parameters.package_access }}
|
||||
build_e31x: ${{ parameters.build_e31x }}
|
||||
|
||||
### END: E31x stages
|
||||
|
||||
### START: E320 stages
|
||||
|
||||
- template: ../devices/job-build-e320.yml
|
||||
parameters:
|
||||
clean_ip_build: ${{ parameters.clean_ip_build }}
|
||||
publish_int_files: true
|
||||
package_and_publish_images: ${{ parameters.package_and_publish_images }}
|
||||
package_access: ${{ parameters.package_access }}
|
||||
build_e320: ${{ parameters.build_e32x }}
|
||||
|
||||
### END: E320 stages
|
||||
|
||||
Loading…
Reference in New Issue
Block a user