{"id":3446,"date":"2018-07-07T04:31:34","date_gmt":"2018-07-07T04:31:34","guid":{"rendered":"https:\/\/support.plunify.com\/en\/?p=3446"},"modified":"2018-08-28T03:22:15","modified_gmt":"2018-08-28T03:22:15","slug":"fast-predictable-fpga-timing-optimization","status":"publish","type":"post","link":"https:\/\/support.plunify.com\/en\/2018\/07\/07\/fast-predictable-fpga-timing-optimization\/","title":{"rendered":"Tactics For Fast, Predictable FPGA Timing Optimization"},"content":{"rendered":"<p>It is the start of a brand new day.\u00a0You come to the office, open up a medical imaging design that met timing the day before and finds that a bugfix made by someone else has led to timing failures.<\/p>\n<p>In the demanding world of high-performance FPGA design, there is no free lunch.<\/p>\n<p>We take pains to understand the target device architecture in order to write the appropriate RTL and integrate suitable IP blocks. Subsequently, we craft the design constraints carefully so that synthesis and implementation understand our timing intent well. Finally, we spend time exploring helpful switches in the FPGA tools to converge on a good result.<\/p>\n<p>It would be really nice to have this hard work pay off for all subsequent design iterations, wouldn't it?<\/p>\n<p>However, minor design changes can suddenly degrade performance, especially for heavily-utilized or congested designs. There is considerable complexity in FPGA synthesis and implementation that the tools have to navigate - a non-trivial task.<\/p>\n<h2>How can you ensure that results are more predictable?<\/h2>\n<p>The solution we proposed is simple.<\/p>\n<p><strong> Find sets of known-good parameters that are tuned for your design and are likely to yield similar performance across modifications.<\/strong><\/p>\n<p>A proven method with roots in Machine Learning is to develop an understanding of how design characteristics, FPGA tool parameters and performance statistics are correlated.<\/p>\n<ol>\n<li>Gather relevant design characteristics e.g. logic levels, utilization percentages, etc.<\/li>\n<li>Generate sets of synthesis and implementation parameters based on experience and history of results for this design<\/li>\n<li>Compile all parameter sets<\/li>\n<li>Analyze results and correlate them to the parameters<\/li>\n<li>Reuse good parameters for subsequent design changes<\/li>\n<\/ol>\n<p>This might sound daunting but that is what we built. Plunify's <a href=\"https:\/\/www.plunify.com\/en\/intime\/\">InTime<\/a> software is used to train a database and optimize the design at the same time. Let's look at two customer designs used in office automation and medical imaging respectively.<\/p>\n<h2 style=\"text-align: left\">Real-World Case Study #1 - Project Cyclone (Office Automation)<\/h2>\n<p><img class=\"size-full wp-image-3479 aligncenter\" src=\"https:\/\/i2.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/07\/office-automation1.jpg?w=580&#038;ssl=1\" alt=\"office automation1\" srcset=\"https:\/\/i2.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/07\/office-automation1.jpg?w=479&amp;ssl=1 479w, https:\/\/i2.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/07\/office-automation1.jpg?resize=300%2C163&amp;ssl=1 300w\" sizes=\"(max-width: 479px) 100vw, 479px\" data-recalc-dims=\"1\" \/><\/p>\n<p style=\"text-align: left\">This design has 70% logic utilization and meets timing in 1 out of 20 placement seed builds, which leaves a little too much to random chance for the designer's comfort.\u00a0Steps 1-5 above are executed with 20 sets of parameters per iteration until the timing is met.<\/p>\n<p style=\"text-align: left\">In Figure 1 below, each revision refers to a different version of the RTL.<br \/>\nThe Y-axis shows the number of builds taken to meet timing.<\/p>\n<p style=\"text-align: center\"><img class=\"size-full wp-image-3453 aligncenter\" src=\"https:\/\/i2.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/07\/predictable_timing_closure_cyclonev.png?w=650&#038;ssl=1\" alt=\"predictable_timing_closure_cyclonev\" srcset=\"https:\/\/i2.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/07\/predictable_timing_closure_cyclonev.png?w=689&amp;ssl=1 689w, https:\/\/i2.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/07\/predictable_timing_closure_cyclonev.png?resize=300%2C173&amp;ssl=1 300w\" sizes=\"(max-width: 689px) 100vw, 689px\" data-recalc-dims=\"1\" \/><br \/>\nFigure 1: Builds to timing closure vs. design revision (Project C)<\/p>\n<p style=\"text-align: left\">The initial optimization took 61 builds before timing was met. Subsequent optimization attempts after design changes (Rev 1, Rev 2, and so on) took dramatically fewer builds because the good build parameters found for Revision 1 were reused.<\/p>\n<h2 style=\"text-align: left\">Real-World Case Study #2 -\u00a0Project Zynq (Medical Imaging)<\/h2>\n<p><img loading=\"lazy\" class=\"size-full wp-image-3467 aligncenter\" src=\"https:\/\/i0.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/07\/Medical-Devices.png?resize=640%2C400&#038;ssl=1\" alt=\"Medical-Devices\" width=\"640\" height=\"400\" srcset=\"https:\/\/i0.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/07\/Medical-Devices.png?w=640&amp;ssl=1 640w, https:\/\/i0.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/07\/Medical-Devices.png?resize=300%2C188&amp;ssl=1 300w\" sizes=\"(max-width: 640px) 100vw, 640px\" data-recalc-dims=\"1\" \/><\/p>\n<p style=\"text-align: left\">Smaller than the previous design, this one has 40% utilization and meets timing via a sweep of implementation tool directives.<br \/>\nInTime is used to find good build parameters in anticipation of design changes.<\/p>\n<p style=\"text-align: center\"><img class=\"size-full wp-image-3454 aligncenter\" src=\"https:\/\/i2.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/07\/predictable_timing_closure_zynq.png?w=580&#038;ssl=1\" alt=\"predictable_timing_closure_zynq\" srcset=\"https:\/\/i2.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/07\/predictable_timing_closure_zynq.png?w=689&amp;ssl=1 689w, https:\/\/i2.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/07\/predictable_timing_closure_zynq.png?resize=300%2C172&amp;ssl=1 300w\" sizes=\"(max-width: 689px) 100vw, 689px\" data-recalc-dims=\"1\" \/><br \/>\nFigure 2: Builds to timing closure per design revision (Project Z)<\/p>\n<p>InTime took 77 builds to meet timing for the first revision. This number dropped significantly after that as the successful parameters were applied to subsequent revisions.<\/p>\n<blockquote><p>In Revision 2 and 3, the best synthesis parameters found for Revision 1 were used for synthesis, then InTime was used to explore the implementation parameters.<\/p><\/blockquote>\n<p>This is an approach we highlight in our <a href=\"https:\/\/support.plunify.com\/en\/2018\/05\/22\/intime-timing-closure-methodology-vivado\/\">timing closure methodology<\/a>.<\/p>\n<h3>Conclusion<\/h3>\n<ol>\n<li>\u00a0The number of compilations needed per revision will still vary, as seen in the charts above. This is dependent on the extent of design changes and how well the Machine Learning database was trained.<\/li>\n<li>Armed with sets of known-good parameters, the turnaround time for performance optimization becomes a lot more consistent.<\/li>\n<\/ol>\n<p>To find out more about InTime, <a href=\"https:\/\/www.plunify.com\/en\/free-evaluation\/\">request for a free evaluation here<\/a>.<\/p>\n<p><b>References:<\/b><\/p>\n<ul>\n<li>InTime technology <a href=\"https:\/\/www.plunify.com\/en\/publications\/\">backgrounder<\/a><\/li>\n<\/ul>\n<h4>Subscribe to Plunify Blog<\/h4>\n<div class=\"jetpack_subscription_widget\"><h2 class=\"widgettitle\"><\/h2>\n            <form action=\"#\" method=\"post\" accept-charset=\"utf-8\" id=\"subscribe-blog-508\">\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-508\">\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-508\"\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\/3446\"\/>\n                        <input type=\"hidden\" name=\"sub-type\" value=\"widget\"\/>\n                        <input type=\"hidden\" name=\"redirect_fragment\" value=\"508\"\/>\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>It is the start of a brand new day.\u00a0You come to the office, open up a medical imaging design that met timing the day before and finds that a bugfix made by someone else has led to timing failures. In the demanding world of high-performance FPGA design, there is no free lunch. We take pains [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":3480,"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":[206],"tags":[230,109,232,234,80,231],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v17.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Tactics For Fast, Predictable FPGA Timing Optimization - Plunify Blog &amp; Support<\/title>\n<meta name=\"description\" content=\"How to ensure predictable timing closure when minor design changes can suddenly degrade performance, especially for heavily-utilized designs.\" \/>\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\/07\/07\/fast-predictable-fpga-timing-optimization\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tactics For Fast, Predictable FPGA Timing Optimization - Plunify Blog &amp; Support\" \/>\n<meta property=\"og:description\" content=\"How to ensure predictable timing closure when minor design changes can suddenly degrade performance, especially for heavily-utilized designs.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/support.plunify.com\/en\/2018\/07\/07\/fast-predictable-fpga-timing-optimization\/\" \/>\n<meta property=\"og:site_name\" content=\"Plunify Blog &amp; Support\" \/>\n<meta property=\"article:published_time\" content=\"2018-07-07T04:31:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-08-28T03:22:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i2.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/07\/InTime-Medical-Case-Study.jpg?fit=900%2C500&#038;ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"900\" \/>\n\t<meta property=\"og:image:height\" content=\"500\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"harnhua\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 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\/07\/07\/fast-predictable-fpga-timing-optimization\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/i2.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/07\/InTime-Medical-Case-Study.jpg?fit=900%2C500&ssl=1\",\"contentUrl\":\"https:\/\/i2.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/07\/InTime-Medical-Case-Study.jpg?fit=900%2C500&ssl=1\",\"width\":900,\"height\":500},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/support.plunify.com\/en\/2018\/07\/07\/fast-predictable-fpga-timing-optimization\/#webpage\",\"url\":\"https:\/\/support.plunify.com\/en\/2018\/07\/07\/fast-predictable-fpga-timing-optimization\/\",\"name\":\"Tactics For Fast, Predictable FPGA Timing Optimization - Plunify Blog &amp; Support\",\"isPartOf\":{\"@id\":\"https:\/\/support.plunify.com\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/support.plunify.com\/en\/2018\/07\/07\/fast-predictable-fpga-timing-optimization\/#primaryimage\"},\"datePublished\":\"2018-07-07T04:31:34+00:00\",\"dateModified\":\"2018-08-28T03:22:15+00:00\",\"description\":\"How to ensure predictable timing closure when minor design changes can suddenly degrade performance, especially for heavily-utilized designs.\",\"breadcrumb\":{\"@id\":\"https:\/\/support.plunify.com\/en\/2018\/07\/07\/fast-predictable-fpga-timing-optimization\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/support.plunify.com\/en\/2018\/07\/07\/fast-predictable-fpga-timing-optimization\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/support.plunify.com\/en\/2018\/07\/07\/fast-predictable-fpga-timing-optimization\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/support.plunify.com\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tactics For Fast, Predictable FPGA Timing Optimization\"}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/support.plunify.com\/en\/2018\/07\/07\/fast-predictable-fpga-timing-optimization\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/support.plunify.com\/en\/2018\/07\/07\/fast-predictable-fpga-timing-optimization\/#webpage\"},\"author\":{\"@id\":\"https:\/\/support.plunify.com\/en\/#\/schema\/person\/fbfea8acea39c2b32286864d93f1ce88\"},\"headline\":\"Tactics For Fast, Predictable FPGA Timing Optimization\",\"datePublished\":\"2018-07-07T04:31:34+00:00\",\"dateModified\":\"2018-08-28T03:22:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/support.plunify.com\/en\/2018\/07\/07\/fast-predictable-fpga-timing-optimization\/#webpage\"},\"wordCount\":646,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/support.plunify.com\/en\/#organization\"},\"image\":{\"@id\":\"https:\/\/support.plunify.com\/en\/2018\/07\/07\/fast-predictable-fpga-timing-optimization\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i2.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/07\/InTime-Medical-Case-Study.jpg?fit=900%2C500&ssl=1\",\"keywords\":[\"FPGA timing\",\"machine learning\",\"predictable\",\"quick turnaround\",\"timing closure\",\"timing optimization\"],\"articleSection\":[\"InTime\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/support.plunify.com\/en\/2018\/07\/07\/fast-predictable-fpga-timing-optimization\/#respond\"]}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/support.plunify.com\/en\/#\/schema\/person\/fbfea8acea39c2b32286864d93f1ce88\",\"name\":\"harnhua\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/support.plunify.com\/en\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/514fcc86b55e97897a81c4657e09575e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/514fcc86b55e97897a81c4657e09575e?s=96&d=mm&r=g\",\"caption\":\"harnhua\"},\"url\":\"https:\/\/support.plunify.com\/en\/author\/harnhua\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tactics For Fast, Predictable FPGA Timing Optimization - Plunify Blog &amp; Support","description":"How to ensure predictable timing closure when minor design changes can suddenly degrade performance, especially for heavily-utilized designs.","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\/07\/07\/fast-predictable-fpga-timing-optimization\/","og_locale":"en_US","og_type":"article","og_title":"Tactics For Fast, Predictable FPGA Timing Optimization - Plunify Blog &amp; Support","og_description":"How to ensure predictable timing closure when minor design changes can suddenly degrade performance, especially for heavily-utilized designs.","og_url":"https:\/\/support.plunify.com\/en\/2018\/07\/07\/fast-predictable-fpga-timing-optimization\/","og_site_name":"Plunify Blog &amp; Support","article_published_time":"2018-07-07T04:31:34+00:00","article_modified_time":"2018-08-28T03:22:15+00:00","og_image":[{"width":900,"height":500,"url":"https:\/\/i2.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/07\/InTime-Medical-Case-Study.jpg?fit=900%2C500&ssl=1","path":"\/var\/www\/html\/support_plunify_com\/wp-content\/uploads\/sites\/5\/2018\/07\/InTime-Medical-Case-Study.jpg","size":"full","id":3480,"alt":"","pixels":450000,"type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Written by":"harnhua","Est. reading time":"3 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\/07\/07\/fast-predictable-fpga-timing-optimization\/#primaryimage","inLanguage":"en-US","url":"https:\/\/i2.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/07\/InTime-Medical-Case-Study.jpg?fit=900%2C500&ssl=1","contentUrl":"https:\/\/i2.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/07\/InTime-Medical-Case-Study.jpg?fit=900%2C500&ssl=1","width":900,"height":500},{"@type":"WebPage","@id":"https:\/\/support.plunify.com\/en\/2018\/07\/07\/fast-predictable-fpga-timing-optimization\/#webpage","url":"https:\/\/support.plunify.com\/en\/2018\/07\/07\/fast-predictable-fpga-timing-optimization\/","name":"Tactics For Fast, Predictable FPGA Timing Optimization - Plunify Blog &amp; Support","isPartOf":{"@id":"https:\/\/support.plunify.com\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/support.plunify.com\/en\/2018\/07\/07\/fast-predictable-fpga-timing-optimization\/#primaryimage"},"datePublished":"2018-07-07T04:31:34+00:00","dateModified":"2018-08-28T03:22:15+00:00","description":"How to ensure predictable timing closure when minor design changes can suddenly degrade performance, especially for heavily-utilized designs.","breadcrumb":{"@id":"https:\/\/support.plunify.com\/en\/2018\/07\/07\/fast-predictable-fpga-timing-optimization\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/support.plunify.com\/en\/2018\/07\/07\/fast-predictable-fpga-timing-optimization\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/support.plunify.com\/en\/2018\/07\/07\/fast-predictable-fpga-timing-optimization\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/support.plunify.com\/en\/"},{"@type":"ListItem","position":2,"name":"Tactics For Fast, Predictable FPGA Timing Optimization"}]},{"@type":"Article","@id":"https:\/\/support.plunify.com\/en\/2018\/07\/07\/fast-predictable-fpga-timing-optimization\/#article","isPartOf":{"@id":"https:\/\/support.plunify.com\/en\/2018\/07\/07\/fast-predictable-fpga-timing-optimization\/#webpage"},"author":{"@id":"https:\/\/support.plunify.com\/en\/#\/schema\/person\/fbfea8acea39c2b32286864d93f1ce88"},"headline":"Tactics For Fast, Predictable FPGA Timing Optimization","datePublished":"2018-07-07T04:31:34+00:00","dateModified":"2018-08-28T03:22:15+00:00","mainEntityOfPage":{"@id":"https:\/\/support.plunify.com\/en\/2018\/07\/07\/fast-predictable-fpga-timing-optimization\/#webpage"},"wordCount":646,"commentCount":0,"publisher":{"@id":"https:\/\/support.plunify.com\/en\/#organization"},"image":{"@id":"https:\/\/support.plunify.com\/en\/2018\/07\/07\/fast-predictable-fpga-timing-optimization\/#primaryimage"},"thumbnailUrl":"https:\/\/i2.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/07\/InTime-Medical-Case-Study.jpg?fit=900%2C500&ssl=1","keywords":["FPGA timing","machine learning","predictable","quick turnaround","timing closure","timing optimization"],"articleSection":["InTime"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/support.plunify.com\/en\/2018\/07\/07\/fast-predictable-fpga-timing-optimization\/#respond"]}]},{"@type":"Person","@id":"https:\/\/support.plunify.com\/en\/#\/schema\/person\/fbfea8acea39c2b32286864d93f1ce88","name":"harnhua","image":{"@type":"ImageObject","@id":"https:\/\/support.plunify.com\/en\/#personlogo","inLanguage":"en-US","url":"https:\/\/secure.gravatar.com\/avatar\/514fcc86b55e97897a81c4657e09575e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/514fcc86b55e97897a81c4657e09575e?s=96&d=mm&r=g","caption":"harnhua"},"url":"https:\/\/support.plunify.com\/en\/author\/harnhua\/"}]}},"jetpack_featured_media_url":"https:\/\/i2.wp.com\/support.plunify.com\/en\/wp-content\/uploads\/sites\/5\/2018\/07\/InTime-Medical-Case-Study.jpg?fit=900%2C500&ssl=1","jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p7XiEH-TA","_links":{"self":[{"href":"https:\/\/support.plunify.com\/en\/wp-json\/wp\/v2\/posts\/3446"}],"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\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/support.plunify.com\/en\/wp-json\/wp\/v2\/comments?post=3446"}],"version-history":[{"count":25,"href":"https:\/\/support.plunify.com\/en\/wp-json\/wp\/v2\/posts\/3446\/revisions"}],"predecessor-version":[{"id":4022,"href":"https:\/\/support.plunify.com\/en\/wp-json\/wp\/v2\/posts\/3446\/revisions\/4022"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/support.plunify.com\/en\/wp-json\/wp\/v2\/media\/3480"}],"wp:attachment":[{"href":"https:\/\/support.plunify.com\/en\/wp-json\/wp\/v2\/media?parent=3446"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/support.plunify.com\/en\/wp-json\/wp\/v2\/categories?post=3446"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/support.plunify.com\/en\/wp-json\/wp\/v2\/tags?post=3446"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}