├── LICENSE ├── LICENSE.md ├── README.md ├── catalog ├── vivado_master.json └── xstore.json └── support └── test ├── test.sh └── test.tcl /LICENSE: -------------------------------------------------------------------------------- 1 | ######################################################################### 2 | Copyright (C) 2019, Xilinx Inc - All rights reserved 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"). You may 5 | not use this file except in compliance with the License. A copy of the 6 | License is located at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | License for the specific language governing permissions and limitations 14 | under the License. 15 | ######################################################################### 16 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | ######################################################################### 2 | Copyright (C) 2019, Xilinx Inc - All rights reserved 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"). You may 5 | not use this file except in compliance with the License. A copy of the 6 | License is located at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | License for the specific language governing permissions and limitations 14 | under the License. 15 | ######################################################################### 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # XilinxCEDStore 2 | Welcome to the Xilinx CED Store GitHub Repository. 3 | 4 | The CED Store is an open source repository of example designs designed primarily for use with the Xilinx Vivado Design Suite. An xitem corresponds to a group or collection of one or more example designs that is published and maintained by an owner. The xitem owner acts as a gatekeeper for that code and we only accept contributions for an app from the owner. In addition, the entire repository is managed by a Xilinx gatekeeper that controls pushes to the private and public repos. 5 | 6 | This feature is supported from Vivado 2019.2 release 7 | 8 | # Documentation 9 | The wiki contains documentation on how to use and contribute to the CED Store: 10 | 11 | [Click Here to go to the Wiki](https://github.com/Xilinx/XilinxCEDStore/wiki/Xilinx-CED-Store-Home) 12 | -------------------------------------------------------------------------------- /catalog/vivado_master.json: -------------------------------------------------------------------------------- 1 | { 2 | "catalog": { 3 | "items": [], 4 | "categories": [ 5 | { 6 | "name": "single_part", 7 | "display_name": "Single Part", 8 | "description": "This category represents all the boards which have single part", 9 | "parent": "" 10 | }, 11 | { 12 | "name": "multi_part", 13 | "display_name": "Multi Part", 14 | "description": "This category represents all the boards which have multi part", 15 | "parent": "" 16 | }, 17 | { 18 | "name": "daughter_card", 19 | "display_name": "Daughter Card", 20 | "description": "This category represents all the boards which are daughter cards", 21 | "parent": "" 22 | }, 23 | { 24 | "name": "misc", 25 | "display_name": "Misc", 26 | "description": "This category represents miscellaneous variety of boards", 27 | "default": true, 28 | "parent": "" 29 | }, 30 | { 31 | "name": "examples", 32 | "display_name": "Examples", 33 | "description": "This category represents configurable example designs", 34 | "default": true, 35 | "parent": "" 36 | } 37 | ] 38 | }, 39 | "_major": 1, 40 | "_minor": 0 41 | } -------------------------------------------------------------------------------- /catalog/xstore.json: -------------------------------------------------------------------------------- 1 | { 2 | "catalog": { 3 | "current_branch": "master", 4 | "supported_products": [ 5 | { 6 | "product_name": "vivado", 7 | "supported_releases": [ 8 | { 9 | "version": "2019.2", 10 | "xitem_catalogue_file": "catalog/vivado_2019.2.json", 11 | "remote_repo_branch_to_sync": "2019.2" 12 | }, 13 | { 14 | "version": "2019.2.2", 15 | "xitem_catalogue_file": "catalog/vivado_2019.2.2.json", 16 | "remote_repo_branch_to_sync": "2019.2.2" 17 | }, 18 | { 19 | "version": "2019.2.1", 20 | "xitem_catalogue_file": "catalog/vivado_2019.2.1.json", 21 | "remote_repo_branch_to_sync": "2019.2.1" 22 | }, 23 | { 24 | "version": "2020.1", 25 | "xitem_catalogue_file": "catalog/vivado_2020.1.json", 26 | "remote_repo_branch_to_sync": "2020.1" 27 | }, 28 | { 29 | "version": "2020.1.1", 30 | "xitem_catalogue_file": "catalog/vivado_2020.1.1.json", 31 | "remote_repo_branch_to_sync": "2020.1.1" 32 | }, 33 | { 34 | "version": "2020.2", 35 | "xitem_catalogue_file": "catalog/vivado_2020.2.json", 36 | "remote_repo_branch_to_sync": "2020.2" 37 | }, 38 | { 39 | "version": "2020.2.1", 40 | "xitem_catalogue_file": "catalog/vivado_2020.2.1.json", 41 | "remote_repo_branch_to_sync": "2020.2.1" 42 | }, 43 | { 44 | "version": "2020.2.2", 45 | "xitem_catalogue_file": "catalog/vivado_2020.2.2.json", 46 | "remote_repo_branch_to_sync": "2020.2.2" 47 | }, 48 | { 49 | "version": "2020.2_SAM", 50 | "xitem_catalogue_file": "catalog/vivado_2020.2_SAM.json", 51 | "remote_repo_branch_to_sync": "2020.2_SAM" 52 | }, 53 | { 54 | "version": "2020.3", 55 | "xitem_catalogue_file": "catalog/vivado_2020.3.json", 56 | "remote_repo_branch_to_sync": "2020.3" 57 | }, 58 | { 59 | "xitem_catalogue_file": "catalog/vivado_master.json", 60 | "version": "default", 61 | "remote_repo_branch_to_sync": "master" 62 | }, 63 | { 64 | "xitem_catalogue_file": "catalog/vivado_2021.1.json", 65 | "version": "2021.1", 66 | "remote_repo_branch_to_sync": "2021.1" 67 | }, 68 | { 69 | "xitem_catalogue_file": "catalog/vivado_2021.2.json", 70 | "version": "2021.2", 71 | "remote_repo_branch_to_sync": "2021.2" 72 | }, 73 | { 74 | "xitem_catalogue_file": "catalog/vivado_2022.1.json", 75 | "version": "2022.1", 76 | "remote_repo_branch_to_sync": "2022.1" 77 | }, 78 | { 79 | "xitem_catalogue_file": "catalog/vivado_2022.2.json", 80 | "version": "2022.2", 81 | "remote_repo_branch_to_sync": "2022.2" 82 | }, 83 | { 84 | "xitem_catalogue_file": "catalog/vivado_2023.1.json", 85 | "version": "2023.1", 86 | "remote_repo_branch_to_sync": "2023.1" 87 | }, 88 | { 89 | "xitem_catalogue_file": "catalog/vivado_2023.2.json", 90 | "version": "2023.2", 91 | "remote_repo_branch_to_sync": "2023.2" 92 | }, 93 | { 94 | "xitem_catalogue_file": "catalog/vivado_2024.1.json", 95 | "version": "2024.1", 96 | "remote_repo_branch_to_sync": "2024.1" 97 | }, 98 | { 99 | "xitem_catalogue_file": "catalog/vivado_2024.2.json", 100 | "version": "2024.2", 101 | "remote_repo_branch_to_sync": "2024.2" 102 | }, 103 | { 104 | "xitem_catalogue_file": "catalog/vivado_2025.1.json", 105 | "version": "2025.1", 106 | "remote_repo_branch_to_sync": "2025.1" 107 | }, 108 | { 109 | "xitem_catalogue_file": "catalog/vivado_2025.1.1.json", 110 | "version": "2025.1.1", 111 | "remote_repo_branch_to_sync": "2025.1.1" 112 | }, 113 | { 114 | "xitem_catalogue_file": "catalog/vivado_2025.2.json", 115 | "version": "2025.2", 116 | "remote_repo_branch_to_sync": "2025.2" 117 | } 118 | ] 119 | } 120 | ] 121 | }, 122 | "_major": 1, 123 | "_minor": 0 124 | } 125 | -------------------------------------------------------------------------------- /support/test/test.sh: -------------------------------------------------------------------------------- 1 | vivado -mode tcl -source ./test.tcl -nolog -nojournal 2 | -------------------------------------------------------------------------------- /support/test/test.tcl: -------------------------------------------------------------------------------- 1 | proc install_all_conf_example_designs {} { 2 | puts "INFO: Available xstores..." 3 | xhub::get_xstores 4 | set_param ced.repoPaths [get_property LOCAL_ROOT_DIR [xhub::get_xstores Vivado_example_project]] 5 | puts "INFO: CED repo path used is [get_param ced.repoPaths]" 6 | puts "INFO: Uninstalling all configurable example designs ..." 7 | xhub::uninstall [xhub::get_xitems -of_objects [xhub::get_xstores Vivado_example_project]] 8 | puts "INFO: Refreshing CED store catalog..." 9 | xhub::refresh_catalog [xhub::get_xstores Vivado_example_project] 10 | puts "INFO: Installing all configurable example designs ..." 11 | xhub::install [xhub::get_xitems -of_objects [xhub::get_xstores Vivado_example_project]] 12 | } 13 | 14 | proc create_dir {dir_name} { 15 | if { [file exists $dir_name] && [file isdirectory $dir_name] } { 16 | return 17 | } 18 | 19 | file mkdir $dir_name 20 | } 21 | 22 | proc delete_dir {dir_name} { 23 | if { [file exists $dir_name] && [file isdirectory $dir_name] } { 24 | file delete -force -- $dir_name 25 | } 26 | } 27 | 28 | proc test_conf_example_design {tmpDir ced_download_location example_design_obj} { 29 | puts "INFO: Going to test $example_design_obj" 30 | set example_download_location [get_property REPO_DIRECTORY $example_design_obj] 31 | set index [string first $ced_download_location $example_download_location] 32 | 33 | if {$index != 0} { 34 | return 35 | } 36 | 37 | puts "INFO: Testing $example_design_obj" 38 | 39 | if { [catch { 40 | puts "INFO: Trying to instantiate the example design $example_design_obj..." 41 | instantiate_example_design -template $example_design_obj -project project_tmp -project_location $tmpDir 42 | } result_1]} { 43 | 44 | puts "INFO: Unable to instantiate the example design with project option..." 45 | puts "INFO: Trying to create project and then instantiate the example design $example_design_obj..." 46 | 47 | if { [catch { 48 | create_project project_tmp $tmpDir 49 | set supported_boards [get_property SUPPORTED_BOARDS $example_design_obj] 50 | 51 | if {$supported_boards == ""} { 52 | puts "INFO: Setting part in project" 53 | set supported_parts [get_property SUPPORTED_PARTS $example_design_obj] 54 | set part_to_set [lindex $supported_parts 0] 55 | set_property PART $part_to_set [current_project] 56 | } else { 57 | puts "INFO: Setting board in project" 58 | set board_to_set [lindex $supported_boards 0] 59 | set_property board_part $board_to_set [current_project] 60 | } 61 | 62 | create_bd_design "design_1" 63 | instantiate_example_design -design design_1 $example_design_obj 64 | } result_2] } { 65 | puts "ERROR: Failed to instantiate example design $example_design_obj " 66 | puts "ERROR: $result_2" 67 | delete_dir $tmpDir 68 | return 1 69 | } 70 | } 71 | 72 | update_compile_order -fileset sources_1 73 | #launch_runs impl_1 -to_step write_bitstream -jobs 8 74 | #wait_on_run impl_1 75 | close_project 76 | delete_dir $tmpDir 77 | puts "INFO: Test for configurable example design $example_design_obj passed successfully" 78 | } 79 | 80 | 81 | if {[catch { 82 | install_all_conf_example_designs 83 | } result]} { 84 | puts "ERROR: Failed to download example designs from github." 85 | puts "ERROR: $result" 86 | return 1 87 | } else { 88 | puts "INFO: Successfully downloaded example designs from github." 89 | } 90 | 91 | # set up a temporary directory 92 | set currDir [pwd] 93 | set tmpDir [file join $currDir tmp] 94 | create_dir $tmpDir 95 | 96 | if {[catch { 97 | set examples_list [get_example_designs] 98 | set ced_download_location [get_property LOCAL_ROOT_DIR [xhub::get_xstores Vivado_example_project]] 99 | foreach example_design_obj $examples_list { 100 | test_conf_example_design $tmpDir $ced_download_location $example_design_obj 101 | } 102 | } result]} { 103 | xhub::uninstall [xhub::get_xitems -of_objects [xhub::get_xstores Vivado_example_project]] 104 | puts "ERROR: Failed to execute basic flow on example designs " 105 | delete_dir $tmpDir 106 | puts "ERROR: $result" 107 | return 1 108 | } else { 109 | delete_dir $tmpDir 110 | xhub::uninstall [xhub::get_xitems -of_objects [xhub::get_xstores Vivado_example_project]] 111 | puts "INFO: Succesfully ran basic tool flow on all git example designs" 112 | } 113 | --------------------------------------------------------------------------------