{"id":8488,"date":"2018-11-26T06:31:12","date_gmt":"2018-11-26T06:31:12","guid":{"rendered":"https:\/\/support.plunify.com\/en\/?p=8488"},"modified":"2021-06-03T02:20:51","modified_gmt":"2021-06-03T02:20:51","slug":"optimizing-an-fpga-hls-design-with-fpga-tool-settings","status":"publish","type":"post","link":"https:\/\/support.plunify.com\/en\/2018\/11\/26\/optimizing-an-fpga-hls-design-with-fpga-tool-settings\/","title":{"rendered":"Optimizing an FPGA HLS Design with FPGA Tool Settings"},"content":{"rendered":"<p>Generated RTL code from a C-to-RTL tool is not easy to understand. Here is how to increase design performance without changing any RTL.<\/p>\n<h2>Story<\/h2>\n<p>High-level design enables a design to be captured in a concise and succinct manner, resulting in fewer errors and easier debugging. However, the oft-repeated concern is performance trade-off. Achieving high performance in a highly complex FPGA design requires manual optimization of register transfer level (RTL) code, which is not possible for generated RTL code from a C-to-RTL development environment. However, solutions exist that can minimize trade-off by optimizing the design itself using the FPGA tool settings.<\/p>\n<h2>Find the Right FPGA Tool Settings Efficiently<\/h2>\n<p>Although designers are aware of the existence of FPGA tool settings, the settings are often underutilized. Usually, tool settings are used only when they are having a timing problem. However, for designs that have met its performance targets, there is massive potential for additional\u00a0<em><strong>10 to 50% performance improvements<\/strong><\/em>.<\/p>\n<p class=\"hckui__typography__bodyL\">The challenge is in selecting the right tool settings since different FPGA tool presents between 30 to 70 settings for synthesis and place &amp; route. The possible combinations are too many. You can write scripts to create different runs and try the recommended standard directives\/strategies. There also are tools which exist that can manage and run design exploration in an automated and disciplined way.<\/p>\n<p class=\"hckui__typography__bodyL\">The last challenge issue is insufficient compute power. Typical embedded applications are designed on a single computer. Running multiple compilations requires more compute power. It is a trade-off with time. If you can run more concurrently (using the cloud), the turnaround time will be shorter.<\/p>\n<h2>How to Optimize a High-Level Design - Sobel Filter<\/h2>\n<p>Here is a\u00a0<a href=\"https:\/\/www.xilinx.com\/support\/documentation\/application_notes\/xapp890-zynq-sobel-vivado-hls.pdf\" rel=\"nofollow\">reference<\/a>\u00a0design commonly used in video processing that does a Sobel Filter Implementation. This reference design targets an FPGA with a Dual ARM\u00ae Cortex\u00ae-A9 MPCore&#x2122;.<\/p>\n<p>We use the Xilinx HLS tool to open this design.<\/p>\n<div style=\"width: 635px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" src=\"https:\/\/i2.wp.com\/hackster.imgix.net\/uploads\/attachments\/652158\/image_Xi3wMOu64G.png?resize=625%2C261&#038;ssl=1\" alt=\"Figure 1: Reference Design\u200a\u2014\u200aSobel Filter Implementation\" width=\"625\" height=\"261\" data-recalc-dims=\"1\" \/><p class=\"wp-caption-text\">Figure 1: Reference Design \u2014 Sobel Filter Implementation<\/p><\/div>\n<p>It has a clock period of 5.00 ns which is 200 MHz. From the timing estimates (see below), it still missing timing by 506 ps, which translate to 181 MHz, 10% short of its target speed.<\/p>\n<div style=\"width: 646px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" src=\"https:\/\/i1.wp.com\/hackster.imgix.net\/uploads\/attachments\/652159\/image_HR0wyUziER.png?resize=636%2C173&#038;ssl=1\" alt=\"Figure 2: Current Timing Results\" width=\"636\" height=\"173\" data-recalc-dims=\"1\" \/><p class=\"wp-caption-text\">Figure 2: Current Timing Results<\/p><\/div>\n<h2>Export to an RTL Project<\/h2>\n<p>Without changing the C++ code, export the design into a Vivado project in RTL. Under \"Solution\", select \"Export RTL\".<\/p>\n<div style=\"width: 750px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" class=\"image_carousel__image__2-CjO \" src=\"https:\/\/i1.wp.com\/hackster.imgix.net\/uploads\/attachments\/652162\/image_45a9UyNECj.png?resize=740%2C460&#038;ssl=1\" alt=\"Figure 3: Export to a Vivado project from HLS\" width=\"740\" height=\"460\" data-recalc-dims=\"1\" \/><p class=\"wp-caption-text\">Figure 3: Export to a Vivado project from HLS<\/p><\/div>\n<p>It will execute Vivado in the background and generate a project file (XPR). It should also compile the design and you should see the actual timing details in the console. Once it is done, locate the project file in the\u00a0<em>\/solution\/impl\/verilog\/<\/em>\u00a0folder.<\/p>\n<div style=\"width: 750px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" src=\"https:\/\/i2.wp.com\/hackster.imgix.net\/uploads\/attachments\/652189\/image_vcZxeehcnO.png?resize=740%2C358&#038;ssl=1\" alt=\"Figure 4: Locate the Vivado project file\" width=\"740\" height=\"358\" data-recalc-dims=\"1\" \/><p class=\"wp-caption-text\">Figure 4: Locate the Vivado project file<\/p><\/div>\n<p>You will find a XPR file. You can verify it by opening it with Vivado and you can see the generated RTL source.<\/p>\n<div style=\"width: 750px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" src=\"https:\/\/i1.wp.com\/hackster.imgix.net\/uploads\/attachments\/652202\/image_I7IwzkpOiv.png?resize=740%2C360&#038;ssl=1\" alt=\"Figure 5: Generated RTL from HLS\" width=\"740\" height=\"360\" data-recalc-dims=\"1\" \/><p class=\"wp-caption-text\">Figure 5: Generated RTL from HLS<\/p><\/div>\n<h2>Time to Optimize<\/h2>\n<p>The next step is to use a design exploration tool called\u00a0<a href=\"https:\/\/www.plunify.com\/en\/intime\/\" rel=\"nofollow\">InTime.<\/a>\u00a0(Again, you are free to write a script yourself to try the standard directives or strategies available in the Vivado tools) You can run InTime either on-premise with a\u00a0<a class=\"hckui__typography__linkBlue\" href=\"https:\/\/www.plunify.com\/en\/free-evaluation\/\" rel=\"nofollow\">free evaluation<\/a>\u00a0license. Alternatively, register a Plunify\u00a0<a href=\"https:\/\/cloud.plunify.com\/register\" rel=\"nofollow\">cloud account<\/a>\u00a0with some free credits and pre-installed FPGA tools.<\/p>\n<p>After starting InTime, open the project file. When prompted for the Vivado version to use, please use the \"same\" Vivado version. For example, if you are using 2017.3 HLS, please use 2017.3 Vivado.<\/p>\n<p>Select the \"Hot Start\" recipe. The \"Hot Start\" recipe is a recommended list of strategies based on the previous experience with other designs.<\/p>\n<div style=\"width: 750px\" class=\"wp-caption aligncenter\"><img src=\"https:\/\/i2.wp.com\/hackster.imgix.net\/uploads\/attachments\/652191\/image_N7KWwImE3y.png?w=740&#038;ssl=1\" alt=\"Figure 6: Select the Hot Start recipe\" data-recalc-dims=\"1\" \/><p class=\"wp-caption-text\">Figure 6: Select the Hot Start recipe<\/p><\/div>\n<p>Click \"Start Recipe\" to start the optimization. If you are running on the cloud, you should run multiple compilations concurrently to reduce turnaround time.<\/p>\n<h2>Optimization Process and Results<\/h2>\n<p>After the first round (\"Hot Start\" recipe), the best result is the \"hotstart_1\" strategy. However, it is still missing timing by -90ps.<\/p>\n<p>We applied a 2nd recipe called \"Extra Opt Exploration\" on the result from \"HotStart_1\". This focuses on optimizing the critical paths. This is an iterative optimization and will continuously repeat itself as long as each iteration shows improvements. It will eventually stop automatically if it meets the timing target or fail to show improvements.<\/p>\n<div style=\"width: 630px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" src=\"https:\/\/i0.wp.com\/hackster.imgix.net\/uploads\/attachments\/652161\/image_4c63PKfv7l.png?resize=620%2C323&#038;ssl=1\" alt=\"Figure 7: Timing closure with just tool settings\" width=\"620\" height=\"323\" data-recalc-dims=\"1\" \/><p class=\"wp-caption-text\">Figure 7: Timing closure with just tool settings<\/p><\/div>\n<p>After 2 rounds of optimizations with a total of 15 compilations, the design was able to meet its\u00a0<em>performance target of 200Mhz<\/em>. This is achieved\u00a0<em>without any changes in the RTLsourcecode<\/em>.<\/p>\n<h2>Next Level of Performance<\/h2>\n<p>Getting to the next level of performance requires optimization on all fronts \u2014 the architecture design, code and tools. Tools settings exploration can overcome performance trade-offs with higher-level design without losing the benefits of productivity it brings in the first place. It is a win-win for the high-level designer.<\/p>\n<h3>Subscribe to Plunify Blog<\/h3>\n<div class=\"jetpack_subscription_widget\"><h2 class=\"widgettitle\"><\/h2>\n            <form action=\"#\" method=\"post\" accept-charset=\"utf-8\" id=\"subscribe-blog-505\">\n\t\t\t\t                    <div id=\"subscribe-text\"><p>Enter your email address and have the latest insights on FPGA, cloud and Machine Learning delivered straight to your inbox.<\/p>\n<\/div>                    <p id=\"subscribe-email\">\n                        <label id=\"jetpack-subscribe-label\"\n                               class=\"screen-reader-text\"\n                               for=\"subscribe-field-505\">\n\t\t\t\t\t\t\tEmail Address                        <\/label>\n                        <input type=\"email\" name=\"email\" required=\"required\"\n                        \t\t\t                                                value=\"\"\n                            id=\"subscribe-field-505\"\n                            placeholder=\"Email Address\"\n                        \/>\n                    <\/p>\n\n\t\t\t\t\t<p id=\"subscribe-submit\"\n\t\t\t\t\t\t\t\t\t\t\t>\n                        <input type=\"hidden\" name=\"action\" value=\"subscribe\"\/>\n                        <input type=\"hidden\" name=\"source\" value=\"https:\/\/support.plunify.com\/en\/wp-json\/wp\/v2\/posts\/8488\"\/>\n                        <input type=\"hidden\" name=\"sub-type\" value=\"widget\"\/>\n                        <input type=\"hidden\" name=\"redirect_fragment\" value=\"505\"\/>\n\t\t\t\t\t\t                        <button type=\"submit\"\n\t                        \t\t                    \t\t\t                    style=\"margin-left: 0px;\"\n\t\t                    \t                        name=\"jetpack_subscriptions_widget\"\n\t                    >\n\t                                    Sign Me Up!                                  <\/button>\n                    <\/p>\n\t\t\t\t            <\/form>\n\t\t\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Generated RTL code from a C-to-RTL tool is not easy to understand. Here is how to increase design performance without changing any RTL. Story High-level design enables a design to be captured in a concise and succinct manner, resulting in fewer errors and easier debugging. However, the oft-repeated concern is performance trade-off. Achieving high performance [&hellip;]<\/p>\n","protected":false},"author":17,"featured_media":8576,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"_links_to":"","_links_to_target":""},"categories":[205,206],"tags":[284,227],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v17.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Optimizing an FPGA HLS Design with FPGA Tool Settings - Plunify Blog &amp; Support<\/title>\n<meta name=\"description\" content=\"Generated RTL code from a C-to-RTL tool is not easy to understand. Here is how to increase design performance without changing any RTL.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/support.plunify.com\/en\/2018\/11\/26\/optimizing-an-fpga-hls-design-with-fpga-tool-settings\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Optimizing an FPGA HLS Design with FPGA Tool Settings - Plunify Blog &amp; Support\" \/>\n<meta property=\"og:description\" content=\"Generated RTL code from a C-to-RTL tool is not easy to understand. Here is how to increase design performance without changing any RTL.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/support.plunify.com\/en\/2018\/11\/26\/optimizing-an-fpga-hls-design-with-fpga-tool-settings\/\" \/>\n<meta property=\"og:site_name\" content=\"Plunify Blog &amp; Support\" \/>\n<meta property=\"article:published_time\" content=\"2018-11-26T06:31:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-06-03T02:20:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i1.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/11\/pic1_i0TmCJGA3V.png?fit=542%2C407&#038;ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"542\" \/>\n\t<meta property=\"og:image:height\" content=\"407\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"kobe\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/support.plunify.com\/en\/#organization\",\"name\":\"Plunify-Support\",\"url\":\"https:\/\/support.plunify.com\/en\/\",\"sameAs\":[],\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/support.plunify.com\/en\/#logo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/i1.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2016\/05\/Plunify_Logo_Outline_TranspBG_sm.png?fit=600%2C159&ssl=1\",\"contentUrl\":\"https:\/\/i1.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2016\/05\/Plunify_Logo_Outline_TranspBG_sm.png?fit=600%2C159&ssl=1\",\"width\":600,\"height\":159,\"caption\":\"Plunify-Support\"},\"image\":{\"@id\":\"https:\/\/support.plunify.com\/en\/#logo\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/support.plunify.com\/en\/#website\",\"url\":\"https:\/\/support.plunify.com\/en\/\",\"name\":\"Plunify Blog &amp; Support\",\"description\":\"Everything you need to know about Plunify products\",\"publisher\":{\"@id\":\"https:\/\/support.plunify.com\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/support.plunify.com\/en\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/support.plunify.com\/en\/2018\/11\/26\/optimizing-an-fpga-hls-design-with-fpga-tool-settings\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/i1.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/11\/pic1_i0TmCJGA3V.png?fit=542%2C407&ssl=1\",\"contentUrl\":\"https:\/\/i1.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/11\/pic1_i0TmCJGA3V.png?fit=542%2C407&ssl=1\",\"width\":542,\"height\":407},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/support.plunify.com\/en\/2018\/11\/26\/optimizing-an-fpga-hls-design-with-fpga-tool-settings\/#webpage\",\"url\":\"https:\/\/support.plunify.com\/en\/2018\/11\/26\/optimizing-an-fpga-hls-design-with-fpga-tool-settings\/\",\"name\":\"Optimizing an FPGA HLS Design with FPGA Tool Settings - Plunify Blog &amp; Support\",\"isPartOf\":{\"@id\":\"https:\/\/support.plunify.com\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/support.plunify.com\/en\/2018\/11\/26\/optimizing-an-fpga-hls-design-with-fpga-tool-settings\/#primaryimage\"},\"datePublished\":\"2018-11-26T06:31:12+00:00\",\"dateModified\":\"2021-06-03T02:20:51+00:00\",\"description\":\"Generated RTL code from a C-to-RTL tool is not easy to understand. Here is how to increase design performance without changing any RTL.\",\"breadcrumb\":{\"@id\":\"https:\/\/support.plunify.com\/en\/2018\/11\/26\/optimizing-an-fpga-hls-design-with-fpga-tool-settings\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/support.plunify.com\/en\/2018\/11\/26\/optimizing-an-fpga-hls-design-with-fpga-tool-settings\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/support.plunify.com\/en\/2018\/11\/26\/optimizing-an-fpga-hls-design-with-fpga-tool-settings\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/support.plunify.com\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Optimizing an FPGA HLS Design with FPGA Tool Settings\"}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/support.plunify.com\/en\/2018\/11\/26\/optimizing-an-fpga-hls-design-with-fpga-tool-settings\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/support.plunify.com\/en\/2018\/11\/26\/optimizing-an-fpga-hls-design-with-fpga-tool-settings\/#webpage\"},\"author\":{\"@id\":\"https:\/\/support.plunify.com\/en\/#\/schema\/person\/e48555efdfb3d1e3243c97b9c76c9ee2\"},\"headline\":\"Optimizing an FPGA HLS Design with FPGA Tool Settings\",\"datePublished\":\"2018-11-26T06:31:12+00:00\",\"dateModified\":\"2021-06-03T02:20:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/support.plunify.com\/en\/2018\/11\/26\/optimizing-an-fpga-hls-design-with-fpga-tool-settings\/#webpage\"},\"wordCount\":862,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/support.plunify.com\/en\/#organization\"},\"image\":{\"@id\":\"https:\/\/support.plunify.com\/en\/2018\/11\/26\/optimizing-an-fpga-hls-design-with-fpga-tool-settings\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i1.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/11\/pic1_i0TmCJGA3V.png?fit=542%2C407&ssl=1\",\"keywords\":[\"HLS\",\"Vivado\"],\"articleSection\":[\"General\",\"InTime\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/support.plunify.com\/en\/2018\/11\/26\/optimizing-an-fpga-hls-design-with-fpga-tool-settings\/#respond\"]}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/support.plunify.com\/en\/#\/schema\/person\/e48555efdfb3d1e3243c97b9c76c9ee2\",\"name\":\"kobe\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/support.plunify.com\/en\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/97c23552289c73caf4e9524106cfee89?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/97c23552289c73caf4e9524106cfee89?s=96&d=mm&r=g\",\"caption\":\"kobe\"},\"url\":\"https:\/\/support.plunify.com\/en\/author\/kobe\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Optimizing an FPGA HLS Design with FPGA Tool Settings - Plunify Blog &amp; Support","description":"Generated RTL code from a C-to-RTL tool is not easy to understand. Here is how to increase design performance without changing any RTL.","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:\/\/support.plunify.com\/en\/2018\/11\/26\/optimizing-an-fpga-hls-design-with-fpga-tool-settings\/","og_locale":"en_US","og_type":"article","og_title":"Optimizing an FPGA HLS Design with FPGA Tool Settings - Plunify Blog &amp; Support","og_description":"Generated RTL code from a C-to-RTL tool is not easy to understand. Here is how to increase design performance without changing any RTL.","og_url":"https:\/\/support.plunify.com\/en\/2018\/11\/26\/optimizing-an-fpga-hls-design-with-fpga-tool-settings\/","og_site_name":"Plunify Blog &amp; Support","article_published_time":"2018-11-26T06:31:12+00:00","article_modified_time":"2021-06-03T02:20:51+00:00","og_image":[{"width":542,"height":407,"url":"https:\/\/i1.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/11\/pic1_i0TmCJGA3V.png?fit=542%2C407&ssl=1","path":"\/var\/www\/html\/support_plunify_com\/wp-content\/uploads\/sites\/5\/2018\/11\/pic1_i0TmCJGA3V.png","size":"full","id":8576,"alt":"","pixels":220594,"type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Written by":"kobe","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Organization","@id":"https:\/\/support.plunify.com\/en\/#organization","name":"Plunify-Support","url":"https:\/\/support.plunify.com\/en\/","sameAs":[],"logo":{"@type":"ImageObject","@id":"https:\/\/support.plunify.com\/en\/#logo","inLanguage":"en-US","url":"https:\/\/i1.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2016\/05\/Plunify_Logo_Outline_TranspBG_sm.png?fit=600%2C159&ssl=1","contentUrl":"https:\/\/i1.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2016\/05\/Plunify_Logo_Outline_TranspBG_sm.png?fit=600%2C159&ssl=1","width":600,"height":159,"caption":"Plunify-Support"},"image":{"@id":"https:\/\/support.plunify.com\/en\/#logo"}},{"@type":"WebSite","@id":"https:\/\/support.plunify.com\/en\/#website","url":"https:\/\/support.plunify.com\/en\/","name":"Plunify Blog &amp; Support","description":"Everything you need to know about Plunify products","publisher":{"@id":"https:\/\/support.plunify.com\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/support.plunify.com\/en\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"ImageObject","@id":"https:\/\/support.plunify.com\/en\/2018\/11\/26\/optimizing-an-fpga-hls-design-with-fpga-tool-settings\/#primaryimage","inLanguage":"en-US","url":"https:\/\/i1.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/11\/pic1_i0TmCJGA3V.png?fit=542%2C407&ssl=1","contentUrl":"https:\/\/i1.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/11\/pic1_i0TmCJGA3V.png?fit=542%2C407&ssl=1","width":542,"height":407},{"@type":"WebPage","@id":"https:\/\/support.plunify.com\/en\/2018\/11\/26\/optimizing-an-fpga-hls-design-with-fpga-tool-settings\/#webpage","url":"https:\/\/support.plunify.com\/en\/2018\/11\/26\/optimizing-an-fpga-hls-design-with-fpga-tool-settings\/","name":"Optimizing an FPGA HLS Design with FPGA Tool Settings - Plunify Blog &amp; Support","isPartOf":{"@id":"https:\/\/support.plunify.com\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/support.plunify.com\/en\/2018\/11\/26\/optimizing-an-fpga-hls-design-with-fpga-tool-settings\/#primaryimage"},"datePublished":"2018-11-26T06:31:12+00:00","dateModified":"2021-06-03T02:20:51+00:00","description":"Generated RTL code from a C-to-RTL tool is not easy to understand. Here is how to increase design performance without changing any RTL.","breadcrumb":{"@id":"https:\/\/support.plunify.com\/en\/2018\/11\/26\/optimizing-an-fpga-hls-design-with-fpga-tool-settings\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/support.plunify.com\/en\/2018\/11\/26\/optimizing-an-fpga-hls-design-with-fpga-tool-settings\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/support.plunify.com\/en\/2018\/11\/26\/optimizing-an-fpga-hls-design-with-fpga-tool-settings\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/support.plunify.com\/en\/"},{"@type":"ListItem","position":2,"name":"Optimizing an FPGA HLS Design with FPGA Tool Settings"}]},{"@type":"Article","@id":"https:\/\/support.plunify.com\/en\/2018\/11\/26\/optimizing-an-fpga-hls-design-with-fpga-tool-settings\/#article","isPartOf":{"@id":"https:\/\/support.plunify.com\/en\/2018\/11\/26\/optimizing-an-fpga-hls-design-with-fpga-tool-settings\/#webpage"},"author":{"@id":"https:\/\/support.plunify.com\/en\/#\/schema\/person\/e48555efdfb3d1e3243c97b9c76c9ee2"},"headline":"Optimizing an FPGA HLS Design with FPGA Tool Settings","datePublished":"2018-11-26T06:31:12+00:00","dateModified":"2021-06-03T02:20:51+00:00","mainEntityOfPage":{"@id":"https:\/\/support.plunify.com\/en\/2018\/11\/26\/optimizing-an-fpga-hls-design-with-fpga-tool-settings\/#webpage"},"wordCount":862,"commentCount":0,"publisher":{"@id":"https:\/\/support.plunify.com\/en\/#organization"},"image":{"@id":"https:\/\/support.plunify.com\/en\/2018\/11\/26\/optimizing-an-fpga-hls-design-with-fpga-tool-settings\/#primaryimage"},"thumbnailUrl":"https:\/\/i1.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/11\/pic1_i0TmCJGA3V.png?fit=542%2C407&ssl=1","keywords":["HLS","Vivado"],"articleSection":["General","InTime"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/support.plunify.com\/en\/2018\/11\/26\/optimizing-an-fpga-hls-design-with-fpga-tool-settings\/#respond"]}]},{"@type":"Person","@id":"https:\/\/support.plunify.com\/en\/#\/schema\/person\/e48555efdfb3d1e3243c97b9c76c9ee2","name":"kobe","image":{"@type":"ImageObject","@id":"https:\/\/support.plunify.com\/en\/#personlogo","inLanguage":"en-US","url":"https:\/\/secure.gravatar.com\/avatar\/97c23552289c73caf4e9524106cfee89?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/97c23552289c73caf4e9524106cfee89?s=96&d=mm&r=g","caption":"kobe"},"url":"https:\/\/support.plunify.com\/en\/author\/kobe\/"}]}},"jetpack_featured_media_url":"https:\/\/i1.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/11\/pic1_i0TmCJGA3V.png?fit=542%2C407&ssl=1","jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p7XiEH-2cU","_links":{"self":[{"href":"https:\/\/support.plunify.com\/en\/wp-json\/wp\/v2\/posts\/8488"}],"collection":[{"href":"https:\/\/support.plunify.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/support.plunify.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/support.plunify.com\/en\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/support.plunify.com\/en\/wp-json\/wp\/v2\/comments?post=8488"}],"version-history":[{"count":8,"href":"https:\/\/support.plunify.com\/en\/wp-json\/wp\/v2\/posts\/8488\/revisions"}],"predecessor-version":[{"id":8493,"href":"https:\/\/support.plunify.com\/en\/wp-json\/wp\/v2\/posts\/8488\/revisions\/8493"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/support.plunify.com\/en\/wp-json\/wp\/v2\/media\/8576"}],"wp:attachment":[{"href":"https:\/\/support.plunify.com\/en\/wp-json\/wp\/v2\/media?parent=8488"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/support.plunify.com\/en\/wp-json\/wp\/v2\/categories?post=8488"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/support.plunify.com\/en\/wp-json\/wp\/v2\/tags?post=8488"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}