{"id":15254,"date":"2021-06-30T12:46:53","date_gmt":"2021-06-30T10:46:53","guid":{"rendered":"https:\/\/www.codemotion.com\/magazine\/?p=15254"},"modified":"2023-06-07T18:07:09","modified_gmt":"2023-06-07T16:07:09","slug":"understanding-xilinx-design-tools","status":"publish","type":"post","link":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/understanding-xilinx-design-tools\/","title":{"rendered":"Understanding Xilinx Design Tools"},"content":{"rendered":"\n<p>In the <a href=\"https:\/\/www.codemotion.com\/magazine\/dev-hub\/machine-learning-dev\/embedded-processing-in-programmable-logic\/\" class=\"ek-link\">second article<\/a> in this series co-produced with <a href=\"https:\/\/eu.mouser.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Mouser Electronics<\/a>, we saw how to implement embedded processors with programmable logic devices. Now, let\u2019s see how vendors have lowered <strong>programmable logic tools<\/strong>&#8216;  learning curve.<\/p>\n\n\n\t\t\t\t<div class=\"wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-279c28e7 wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-undefined uagb-block-0923f86b     \"\n\t\t\t\t\tdata-scroll= \"1\"\n\t\t\t\t\tdata-offset= \"30\"\n\t\t\t\t\tstyle=\"\"\n\t\t\t\t>\n\t\t\t\t<div class=\"uagb-toc__wrap\">\n\t\t\t\t\t\t<div class=\"uagb-toc__title\">\n\t\t\t\t\t\t\tTable Of Contents\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"uagb-toc__list-wrap \">\n\t\t\t\t\t\t<ol class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#design-implementation-and-verification\" class=\"uagb-toc-link__trigger\">Design implementation and verification<\/a><li class=\"uagb-toc__list\"><a href=\"#vivado-design-suite\" class=\"uagb-toc-link__trigger\">Vivado Design Suite<\/a><li class=\"uagb-toc__list\"><a href=\"#application-software-creation\" class=\"uagb-toc-link__trigger\">Application Software Creation<\/a><li class=\"uagb-toc__list\"><a href=\"#acceleration\" class=\"uagb-toc-link__trigger\">Acceleration\u00a0<\/a><li class=\"uagb-toc__list\"><a href=\"#ai-and-beyond\" class=\"uagb-toc-link__trigger\">AI and beyond<\/a><li class=\"uagb-toc__list\"><a href=\"#conclusion\" class=\"uagb-toc-link__trigger\">Conclusion\u00a0<\/a><\/ol>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\n\n\n<h2 class=\"wp-block-heading\" id=\"h-design-implementation-and-verification\">Design implementation and verification<\/h2>\n\n\n\n<p>Indeed, it\u2019s often daunting to face a new development challenge, especially if the toolchain or process are unfamiliar, and implementing a design in a <strong>programmable logic device <\/strong>can appear especially so at times.&nbsp;<\/p>\n\n\n\n<p><strong>FPGA implementation tools <\/strong>have frequently been seen as demanding a steep learning curve and deep logic design skills if you want to end up with a solution that works.&nbsp;<\/p>\n\n\n\n<p>However, programmable logic vendors have expended significant energy on this subject over the last decade. The result? More <strong>user-friendly toolchains<\/strong> that offer a shallower learning curve, and enable the use of higher-level languages, opening this area to a wider user base, and the field continues to evolve<\/p>\n\n\n\n<p>A range of tools are available for design implementation and verification that are aimed specifically at developing programmable logic solutions targeting Xilinx devices.&nbsp;<\/p>\n\n\n\n<p>These tools not only support design verification and programming file creation but also allow embedded <em>Linux <\/em>operating systems and <em>artificial intelligence<\/em> and <em>machine learning solutions<\/em> to be implemented.&nbsp;<\/p>\n\n\n\n<p>This technology stack opens the door to the development of solutions for both traditional FPGA and heterogeneous systems on chips that combine programmable logic with high-performance Arm processor cores.&nbsp;<\/p>\n\n\n\n<p>Depending on a user\u2019s preferred entry point, this unusual stack also enables implementation using traditional <strong>hardware design language <\/strong>(HDL) capture and a higher-level system-optimising compiler approach.&nbsp;<\/p>\n\n\n\n<p>The design tools\u2019 interplay can be seen in the image below. Each element of the technology stack offers a specific capability.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"892\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Figure-One-\u2013-Xilinx-Technology-Stack-1024x892.png\" alt=\"Image of the Xilinx Technology Stack\" class=\"wp-image-15255\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Figure-One-\u2013-Xilinx-Technology-Stack-1024x892.png 1024w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Figure-One-\u2013-Xilinx-Technology-Stack-300x261.png 300w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Figure-One-\u2013-Xilinx-Technology-Stack-768x669.png 768w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Figure-One-\u2013-Xilinx-Technology-Stack.png 1237w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"gb-headline gb-headline-1e1506ad gb-headline-text\">Vivado Design Suite<\/h2>\n\n\n\n<p>At the base of the technology stack is <strong>Vivado<\/strong>. Vivado allows designs to be captured using VHDL or Verilog, and the HDL design to be synthesised to the target device before placing and routing and generating the programming file.&nbsp;<\/p>\n\n\n\n<p>The <strong>IP integrator<\/strong> at Vivado\u2019s heart permits designers to capture designs quickly and easily using IP, whether provided by Xilinx or third parties, or custom-developed. This IP can be defined using HDL or a higher-level approach that uses Vitis HLS can be taken, enabling the development of IP blocks using C and C++.&nbsp;<\/p>\n\n\n\n<p>Vivado\u2019s focus is implementation, but a complete development ecosystem is on offer.&nbsp; Vivado provides several capabilities that contribute greatly to the overall development of <a href=\"https:\/\/www.codemotion.com\/magazine\/dev-hub\/machine-learning-dev\/where-to-use-programmable-logic\/\" target=\"_blank\" rel=\"noopener\">programmable logic.&nbsp;<\/a><\/p>\n\n\n\n<p>For any design, a key feature is the ability to guarantee the functional performance of the HDL prior to implementation. To verify <strong>HDL <\/strong>functionality, Vivado provides an HDL simulator. Depending upon the stage of implementation, the test bench can be applied against the RTL, the synthesised netlist, or against the implemented netlist with associated timing information.&nbsp;&nbsp;<\/p>\n\n\n\n<p>Vivado is also the tool used to debug designs on the hardware, due to the support for integrated logic analysers (<strong>ILA<\/strong>), Virtual IO (<strong>VIO<\/strong>), and<strong> JTAG to AXI IP<\/strong> it offers. Designers are enabled to instrument the programmable logic design and observe behaviour at run time in the actual system.&nbsp;<\/p>\n\n\n\n<p>Vivado\u2019s implementation and simulation capabilities are also used by tools further up&nbsp; the development stack.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-application-software-creation\">Application Software Creation<\/h2>\n\n\n\n<p>When a heterogeneous <strong>SoC <\/strong>or <strong>FPGA <\/strong>which contains a soft processor core such as a MicroBlaze enters the picture, the higher levels of the stack need to come into play to create the operating systems\u2019 application software. The relationship between Vivado, PetaLinux and Vitis is illustrated below.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"257\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Figure-2-relationship-between-Vivado-PetaLinux-and-Vitis-1024x257.png\" alt=\"Graph representing the relationship between Vivado, PetaLinux and Vitis\" class=\"wp-image-15256\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Figure-2-relationship-between-Vivado-PetaLinux-and-Vitis-1024x257.png 1024w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Figure-2-relationship-between-Vivado-PetaLinux-and-Vitis-300x75.png 300w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Figure-2-relationship-between-Vivado-PetaLinux-and-Vitis-768x193.png 768w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Figure-2-relationship-between-Vivado-PetaLinux-and-Vitis.png 1380w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Hard and soft-core processor implementations both require operating systems to be generated and application software to be developed. Such software can be developed to run on a BareMetal, real-time operating system (<strong>FreeRTOS<\/strong>) or on an embedded Linux solution.&nbsp;&nbsp;<\/p>\n\n\n\n<p>Development and debugging of the software can be achieved by using Xilinx\u2019s Vitis unified software platform. Vitis provides two development flows &#8211; embedded and accelerated.&nbsp;<\/p>\n\n\n\n<p>The embedded flow allows developers to create software solutions for any supported embedded processor. The accelerated flow enables users of <strong>Xilinx SoC and Acceleration cards <\/strong>to accelerate functionality from the processor system to the programmable logic.<\/p>\n\n\n\n<p>Vitis developers can import Vivado designs to create embedded solutions when using the embedded flow. To simplify the debugging of the embedded systems, Vitis offers a complete debugger capable of supporting multi-core operation.&nbsp;<\/p>\n\n\n\n<p>The software application includes operations with elements of the programmable logic design, meaning that it is also possible to cross probe and breakpoint with ILAs within the programmable logic in order to gain a greater understanding of the hardware\/software interaction.<\/p>\n\n\n\n<p>Developers who prefer an embedded Linux solution utilize the PetaLinux build tool. PetaLinux a build system rather than a Linux distribution.&nbsp; <\/p>\n\n\n\n<p>Consequently, developers can configure an embedded Linux system that includes the drivers and device tree entries to work with the programmable logic design using this tool.&nbsp;<\/p>\n\n\n\n<p>With a <em>PetaLinux operating system <\/em>in place for a Xilinx SoC, the developer can deploy the <strong>PYNQ framework<\/strong>. This enables <em>Python <\/em>and J<em>upiter Notebooks<\/em> to be used with programmable logic. PYNQ is perfect for rapid prototyping due to the many drivers available in the Python environment to work with IP in the programmable logic, which significantly reduces the software development required.&nbsp;<\/p>\n\n\n\n<p>The higher levels of the technology stack such as the Vitis acceleration capabilities and Vitis AI require a hardcore processor and embedded Linux solution or an Alveo acceleration card to access.&nbsp;<\/p>\n\n\n\n<h2 class=\"gb-headline gb-headline-51f42736 gb-headline-text\">Acceleration&nbsp;<\/h2>\n\n\n\n<p><strong>Vitis<\/strong>\u2019 ability to accelerate applications into the programmable logic using <em>OpenCL <\/em>also provides an entry point for solutions that use both the processing system and the programmable logic.&nbsp;<\/p>\n\n\n\n<p>To make best use of this capacity, an acceleration platform must be available to Vitis. Acceleration platforms can be created in Vivado for custom hardware and are widely available for download&nbsp; on many development boards.&nbsp;<\/p>\n\n\n\n<p>The<strong> acceleration platform<\/strong> makes several system resources such as AXI interfaces, processor interrupts, and clocks available to the Vitis compiler. These resources are connected to the accelerated elements of the design in order to facilitate access from the processing system.&nbsp;&nbsp;<\/p>\n\n\n\n<p>Vitis used the OpenCL framework to achieve this acceleration. An open industry standard developed by <em>The Khronos Group<\/em>, OpenCL enables parallel computing of heterogeneous systems. The OpenCL model includes a host &#8211; usually an x86 system, and an OpenCL device that is often called a kernel.&nbsp;<\/p>\n\n\n\n<p>OpenCL provides parallel processing and application acceleration while the host manages overall application execution. An <strong>FPGA, DSP, GPU or CPU<\/strong> can be used to provide this parallel processing. Using OpenCL enables the source code that is running on the OpenCL device to be retargeted without any changes to the source code itself.&nbsp;&nbsp;<\/p>\n\n\n\n<p>OpenCL provides <strong>OpenCL APIs<\/strong> to support this model. These can be compiled into the host application by means of standard C compilers such as GCC or G++.&nbsp;<\/p>\n\n\n\n<p>OpenCL devices are developed using the OpenCL C language, derived from<em> ISO C99<\/em>.&nbsp; The language is not C, however, because the standard libraries are difficult to support across all the potential OpenCL devices.&nbsp;Consequently, each OpenCL device has a specific, vendor-provided OpenCL compiler. For Xilinx devices, this is provided by Vitis.&nbsp;<\/p>\n\n\n\n<p>The following architectures are comprised of such heterogeneous systems in the Xilinx ecosystem:&nbsp;<\/p>\n\n\n\n<ul class=\"is-style-default wp-block-list\">\n<li>AXI interconnects link Arm processing cores and the programmable logic<\/li>\n\n\n\n<li>A PCIe connection links the X86 processor and Alveo acceleration cards&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>Both of the above architectures allow the processing element to act as the host, while &#8211; on the same silicon or in a separate device &#8211; the programmable logic is the OpenCL device.<\/p>\n\n\n\n<p>Implementation of the programmable logic design will call Vivado in the background, but this can take time to implement. Vitis also offers a range of build types for use in developing and verifying the application before generating the final bitstream.&nbsp;<\/p>\n\n\n\n<p>These software emulations make it possible to correct typos and basic errors while hardware emulation leverages QEMU and co-simulation for the programmable logic design, with a resulting optimisation of performance, interfacing, and resources as shown below.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"442\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Figure-3-Vitis-Emulation-Flow01-IBM-Cloud-CodeEngine-1024x442.png\" alt=\"Diagrams of Vitis Emulation Flow\" class=\"wp-image-15257\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Figure-3-Vitis-Emulation-Flow01-IBM-Cloud-CodeEngine-1024x442.png 1024w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Figure-3-Vitis-Emulation-Flow01-IBM-Cloud-CodeEngine-300x130.png 300w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Figure-3-Vitis-Emulation-Flow01-IBM-Cloud-CodeEngine-768x332.png 768w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Figure-3-Vitis-Emulation-Flow01-IBM-Cloud-CodeEngine.png 1458w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>With the support of application development in mind, Vitis also provides a number of common libraries which can be accelerated into the programmable logic and several domain-specific libraries for implementation of specific applications.&nbsp;<\/p>\n\n\n\n<p>The common libraries include maths, linear algebra, and DSP libraries.&nbsp; Computer vision, database, quantitative finance, and security all appear in the domain-specific libraries included.&nbsp;<\/p>\n\n\n\n<p>Developers are given the opportunity by these libraries to leverage programmable logic performance without having to start from scratch by writing commonly-used and freely-available SW functions to be accelerated.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-ai-and-beyond\">AI and beyond<\/h2>\n\n\n\n<p><strong>Vitis AI<\/strong> builds on Vitis\u2019 acceleration capabilities. Using Vitis, the developer can instantiate a deep learning processor unit in the programmable logic. This instantiation promotes significant acceleration for the machine learning inference applications.&nbsp;<\/p>\n\n\n\n<p>Instantiating the <strong>DPU <\/strong>inside the programmable logic undoubtedly provides significant benefits to the developer. However, Vitis AI goes one step further by making it possible for developers to work with common machine learning and artificial intelligence frameworks such as <em>Caffe, TensorFlow and PyTorch<\/em>.&nbsp;<\/p>\n\n\n\n<p>Vitis AI is not a single tool, but rather a collection of tools that compile, quantise, and optimise their machine learning applications from a floating-point implementation to a fixed-point representation suitable for implementation within the DPU.&nbsp;<\/p>\n\n\n\n<p>Vitis AI additionally offers a profiler that enables system-level optimization, with the goal of aiding the development and optimisation of the DPU implementation described above,&nbsp;<\/p>\n\n\n\n<p>If a developer really wants to take the hard route and start from scratch, the Xilinx Model Zoo contains several pre-optimized models.&nbsp;<\/p>\n\n\n\n<h2 class=\"gb-headline gb-headline-7afcf136 gb-headline-text\">Conclusion&nbsp;<\/h2>\n\n\n\n<p>Xilinx provides a range of tools that assist with the creation of FPGA and SoC solutions for use with Xilinx devices.&nbsp;<\/p>\n\n\n\n<p>The tools enable design entry using HDL or OpenCL and provide solutions for embedded Linux and AI acceleration. In addition, they provide a design point for traditional FPGA designers along with software developers with the use of PYNQ, Vitis and Vitis AI.&nbsp;<\/p>\n\n\n\n<p>Join us for the next instalment in this series as we explore Internal and External Interfacing- Or, if you want more technical information about the hardware you can use for your project, visit&nbsp;the <a href=\"https:\/\/eu.mouser.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Mouser website<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the second article in this series co-produced with Mouser Electronics, we saw how to implement embedded processors with programmable logic devices. Now, let\u2019s see how vendors have lowered programmable logic tools&#8216; learning curve. Design implementation and verification Indeed, it\u2019s often daunting to face a new development challenge, especially if the toolchain or process are&#8230; <a class=\"more-link\" href=\"https:\/\/www.codemotion.com\/magazine\/ai-ml\/understanding-xilinx-design-tools\/\">Read more<\/a><\/p>\n","protected":false},"author":121,"featured_media":15262,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":6,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_uag_custom_page_level_css":"","_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[46],"tags":[3357],"collections":[],"class_list":{"0":"post-15254","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-ai-ml","8":"tag-iot","9":"entry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.9 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Understanding Xilinx Design Tools - Codemotion Magazine<\/title>\n<meta name=\"description\" content=\"FPGA implementation tools are tought, but design verification and programming toolchains are game-changers - like those for Xilinx devices\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.codemotion.com\/magazine\/ai-ml\/understanding-xilinx-design-tools\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Understanding Xilinx Design Tools\" \/>\n<meta property=\"og:description\" content=\"FPGA implementation tools are tought, but design verification and programming toolchains are game-changers - like those for Xilinx devices\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.codemotion.com\/magazine\/ai-ml\/understanding-xilinx-design-tools\/\" \/>\n<meta property=\"og:site_name\" content=\"Codemotion Magazine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Codemotion.Italy\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-06-30T10:46:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-07T16:07:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Understanding-Xilinx-Design-Tools.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Adam Taylor\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:site\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Adam Taylor\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/ai-ml\\\/understanding-xilinx-design-tools\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/ai-ml\\\/understanding-xilinx-design-tools\\\/\"},\"author\":{\"name\":\"Adam Taylor\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/person\\\/4e3230f5a1c7f0eb48725176e548f9aa\"},\"headline\":\"Understanding Xilinx Design Tools\",\"datePublished\":\"2021-06-30T10:46:53+00:00\",\"dateModified\":\"2023-06-07T16:07:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/ai-ml\\\/understanding-xilinx-design-tools\\\/\"},\"wordCount\":1712,\"publisher\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/ai-ml\\\/understanding-xilinx-design-tools\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2021\\\/06\\\/Understanding-Xilinx-Design-Tools.jpg\",\"keywords\":[\"IoT\"],\"articleSection\":[\"AI\\\/ML\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/ai-ml\\\/understanding-xilinx-design-tools\\\/\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/ai-ml\\\/understanding-xilinx-design-tools\\\/\",\"name\":\"Understanding Xilinx Design Tools - Codemotion Magazine\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/ai-ml\\\/understanding-xilinx-design-tools\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/ai-ml\\\/understanding-xilinx-design-tools\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2021\\\/06\\\/Understanding-Xilinx-Design-Tools.jpg\",\"datePublished\":\"2021-06-30T10:46:53+00:00\",\"dateModified\":\"2023-06-07T16:07:09+00:00\",\"description\":\"FPGA implementation tools are tought, but design verification and programming toolchains are game-changers - like those for Xilinx devices\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/ai-ml\\\/understanding-xilinx-design-tools\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/ai-ml\\\/understanding-xilinx-design-tools\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/ai-ml\\\/understanding-xilinx-design-tools\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2021\\\/06\\\/Understanding-Xilinx-Design-Tools.jpg\",\"contentUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2021\\\/06\\\/Understanding-Xilinx-Design-Tools.jpg\",\"width\":1200,\"height\":628,\"caption\":\"Understanding Xilinx Design Tools\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/ai-ml\\\/understanding-xilinx-design-tools\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AI\\\/ML\",\"item\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/ai-ml\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Understanding Xilinx Design Tools\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#website\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\",\"name\":\"Codemotion Magazine\",\"description\":\"We code the future. Together\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\",\"name\":\"Codemotion\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/codemotionlogo.png\",\"contentUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/codemotionlogo.png\",\"width\":225,\"height\":225,\"caption\":\"Codemotion\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/Codemotion.Italy\\\/\",\"https:\\\/\\\/x.com\\\/CodemotionIT\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/person\\\/4e3230f5a1c7f0eb48725176e548f9aa\",\"name\":\"Adam Taylor\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c0772bd98d83ddadde2d54b38356f5580817f7f676bebfb82d49b572e780a8c4?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c0772bd98d83ddadde2d54b38356f5580817f7f676bebfb82d49b572e780a8c4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c0772bd98d83ddadde2d54b38356f5580817f7f676bebfb82d49b572e780a8c4?s=96&d=mm&r=g\",\"caption\":\"Adam Taylor\"},\"description\":\"Adam Taylor is an expert in design and development of embedded systems and FPGA\u2019s for several end applications. He is the author of numerous articles and papers on electronic design and FPGA design, a Chartered Engineer, Fellow of the Institute of Engineering and Technology, Visiting Professor of Embedded Systems at the University of Lincoln and Arm Innovator. He is also the owner of the engineering and consultancy company Adiuvo Engineering and Training.\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/author\\\/adam-taylor\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Understanding Xilinx Design Tools - Codemotion Magazine","description":"FPGA implementation tools are tought, but design verification and programming toolchains are game-changers - like those for Xilinx devices","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/understanding-xilinx-design-tools\/","og_locale":"en_US","og_type":"article","og_title":"Understanding Xilinx Design Tools","og_description":"FPGA implementation tools are tought, but design verification and programming toolchains are game-changers - like those for Xilinx devices","og_url":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/understanding-xilinx-design-tools\/","og_site_name":"Codemotion Magazine","article_publisher":"https:\/\/www.facebook.com\/Codemotion.Italy\/","article_published_time":"2021-06-30T10:46:53+00:00","article_modified_time":"2023-06-07T16:07:09+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Understanding-Xilinx-Design-Tools.jpg","type":"image\/jpeg"}],"author":"Adam Taylor","twitter_card":"summary_large_image","twitter_creator":"@CodemotionIT","twitter_site":"@CodemotionIT","twitter_misc":{"Written by":"Adam Taylor","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/understanding-xilinx-design-tools\/#article","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/understanding-xilinx-design-tools\/"},"author":{"name":"Adam Taylor","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/4e3230f5a1c7f0eb48725176e548f9aa"},"headline":"Understanding Xilinx Design Tools","datePublished":"2021-06-30T10:46:53+00:00","dateModified":"2023-06-07T16:07:09+00:00","mainEntityOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/understanding-xilinx-design-tools\/"},"wordCount":1712,"publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/understanding-xilinx-design-tools\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Understanding-Xilinx-Design-Tools.jpg","keywords":["IoT"],"articleSection":["AI\/ML"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/understanding-xilinx-design-tools\/","url":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/understanding-xilinx-design-tools\/","name":"Understanding Xilinx Design Tools - Codemotion Magazine","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/understanding-xilinx-design-tools\/#primaryimage"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/understanding-xilinx-design-tools\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Understanding-Xilinx-Design-Tools.jpg","datePublished":"2021-06-30T10:46:53+00:00","dateModified":"2023-06-07T16:07:09+00:00","description":"FPGA implementation tools are tought, but design verification and programming toolchains are game-changers - like those for Xilinx devices","breadcrumb":{"@id":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/understanding-xilinx-design-tools\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.codemotion.com\/magazine\/ai-ml\/understanding-xilinx-design-tools\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/understanding-xilinx-design-tools\/#primaryimage","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Understanding-Xilinx-Design-Tools.jpg","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Understanding-Xilinx-Design-Tools.jpg","width":1200,"height":628,"caption":"Understanding Xilinx Design Tools"},{"@type":"BreadcrumbList","@id":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/understanding-xilinx-design-tools\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.codemotion.com\/magazine\/"},{"@type":"ListItem","position":2,"name":"AI\/ML","item":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/"},{"@type":"ListItem","position":3,"name":"Understanding Xilinx Design Tools"}]},{"@type":"WebSite","@id":"https:\/\/www.codemotion.com\/magazine\/#website","url":"https:\/\/www.codemotion.com\/magazine\/","name":"Codemotion Magazine","description":"We code the future. Together","publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.codemotion.com\/magazine\/#organization","name":"Codemotion","url":"https:\/\/www.codemotion.com\/magazine\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","width":225,"height":225,"caption":"Codemotion"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Codemotion.Italy\/","https:\/\/x.com\/CodemotionIT"]},{"@type":"Person","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/4e3230f5a1c7f0eb48725176e548f9aa","name":"Adam Taylor","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/c0772bd98d83ddadde2d54b38356f5580817f7f676bebfb82d49b572e780a8c4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c0772bd98d83ddadde2d54b38356f5580817f7f676bebfb82d49b572e780a8c4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c0772bd98d83ddadde2d54b38356f5580817f7f676bebfb82d49b572e780a8c4?s=96&d=mm&r=g","caption":"Adam Taylor"},"description":"Adam Taylor is an expert in design and development of embedded systems and FPGA\u2019s for several end applications. He is the author of numerous articles and papers on electronic design and FPGA design, a Chartered Engineer, Fellow of the Institute of Engineering and Technology, Visiting Professor of Embedded Systems at the University of Lincoln and Arm Innovator. He is also the owner of the engineering and consultancy company Adiuvo Engineering and Training.","url":"https:\/\/www.codemotion.com\/magazine\/author\/adam-taylor\/"}]}},"featured_image_src":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Understanding-Xilinx-Design-Tools-600x400.jpg","featured_image_src_square":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Understanding-Xilinx-Design-Tools-600x600.jpg","author_info":{"display_name":"Adam Taylor","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/adam-taylor\/"},"uagb_featured_image_src":{"full":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Understanding-Xilinx-Design-Tools.jpg",1200,628,false],"thumbnail":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Understanding-Xilinx-Design-Tools-150x150.jpg",150,150,true],"medium":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Understanding-Xilinx-Design-Tools-300x157.jpg",300,157,true],"medium_large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Understanding-Xilinx-Design-Tools-768x402.jpg",768,402,true],"large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Understanding-Xilinx-Design-Tools-1024x536.jpg",1024,536,true],"1536x1536":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Understanding-Xilinx-Design-Tools.jpg",1200,628,false],"2048x2048":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Understanding-Xilinx-Design-Tools.jpg",1200,628,false],"small-home-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Understanding-Xilinx-Design-Tools.jpg",100,52,false],"sidebar-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Understanding-Xilinx-Design-Tools-180x128.jpg",180,128,true],"genesis-singular-images":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Understanding-Xilinx-Design-Tools-896x504.jpg",896,504,true],"archive-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Understanding-Xilinx-Design-Tools-400x225.jpg",400,225,true],"gb-block-post-grid-landscape":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Understanding-Xilinx-Design-Tools-600x400.jpg",600,400,true],"gb-block-post-grid-square":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/Understanding-Xilinx-Design-Tools-600x600.jpg",600,600,true]},"uagb_author_info":{"display_name":"Adam Taylor","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/adam-taylor\/"},"uagb_comment_info":0,"uagb_excerpt":"In the second article in this series co-produced with Mouser Electronics, we saw how to implement embedded processors with programmable logic devices. Now, let\u2019s see how vendors have lowered programmable logic tools&#8216; learning curve. Design implementation and verification Indeed, it\u2019s often daunting to face a new development challenge, especially if the toolchain or process are&#8230;&hellip;","lang":"en","_links":{"self":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/15254","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/users\/121"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/comments?post=15254"}],"version-history":[{"count":5,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/15254\/revisions"}],"predecessor-version":[{"id":21253,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/15254\/revisions\/21253"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media\/15262"}],"wp:attachment":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media?parent=15254"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/categories?post=15254"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/tags?post=15254"},{"taxonomy":"collections","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/collections?post=15254"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}