{"id":1570,"date":"2016-06-06T02:03:00","date_gmt":"2016-06-06T02:03:00","guid":{"rendered":"http:\/\/support.plunify.com\/jp\/2016\/06\/06\/a-sum-of-partitions\/"},"modified":"2016-06-06T02:03:00","modified_gmt":"2016-06-06T02:03:00","slug":"a-sum-of-partitions","status":"publish","type":"post","link":"https:\/\/support.plunify.com\/jp\/2016\/06\/06\/a-sum-of-partitions\/","title":{"rendered":"A Sum of Part(ition)s"},"content":{"rendered":"<p>Altera FPGA users need no introduction to Partition Merge, a step in the Altera Quartus-II (\"Quartus\") design compilation process that combines multiple netlists (post-synthesis or post-fit) into a single, complete netlist. Quartus triggers this step automatically whenever it detects any design partitions in a project.<\/p>\n<p><a href=\"https:\/\/www.blogger.com\/blogger.g?blogID=967271957585995849\" style=\"clear: right;float: right;margin-bottom: 1em;margin-left: 1em\"><\/a><a href=\"https:\/\/www.blogger.com\/blogger.g?blogID=967271957585995849\" style=\"clear: right;float: right;margin-bottom: 1em;margin-left: 1em\"><\/a><span style=\"font-family: inherit\"><b>Will Quartus always run Partition Merge? If not, why?<\/b><\/span><br \/>Quartus tries to detect partitions in your design and only runs Partition Merge if there is at least one partition.<\/p>\n<p>For example, if you import a Quartus Exported Partition File (.qxp file) into your project and designate it as a partition, Quartus will run Partition Merge during the compilation process.<br \/>However, if you simply import the same .qxp netlist as a source file but neglect to designate it as a partition, Quartus will NOT run Partition Merge automatically.<\/p>\n<p><b>Okay, so what?<\/b><br \/>Working with a customer, we found that timing results improved significantly (see Table 1 below) when Partition Merge was run versus when it was not run.<\/p>\n<div>\n<div style=\"margin-bottom: .0001pt;margin-bottom: 0in;text-align: justify\"><span><br \/><\/span><\/div>\n<div style=\"margin-bottom: 0in\">\n<table border=\"2\" cellpadding=\"3\" cellspacing=\"3\" style=\"background-color: #99ffff;width: 100%px\">\n<tbody>\n<tr>\n<th><span style=\"font-weight: normal\">Arria 10 design<\/span><\/th>\n<th><span style=\"text-align: justify\">Without Partition Merge<\/span><br \/><span style=\"font-weight: normal;text-align: justify\">(.qxp as source file)<\/span><\/th>\n<th>With Partition Merge<br \/><span style=\"font-weight: normal\">(same .qxp as a partition)<\/span><\/th>\n<\/tr>\n<tr>\n<td>\n<div style=\"text-align: right\"><b>Total Negative Slack (TNS)<\/b><\/div>\n<\/td>\n<td>\n<div style=\"text-align: center\">-1533.727 ns<\/div>\n<\/td>\n<td>\n<div style=\"text-align: center\">-387.006 ns<\/div>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<div style=\"text-align: right\"><b>Worst Slack (Setup \/ Hold)<\/b><\/div>\n<\/td>\n<td>\n<div style=\"text-align: center\">-0.807 ns<\/div>\n<\/td>\n<td>\n<div style=\"text-align: center\">-0.516 ns<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div style=\"text-align: center\">Table 1: Timing results with and without Partition Merge<\/div>\n<p>Intuitively, the above results seem logical because Partition Merge performs optimizations such as resource sharing, thus affecting timing performance. The <i>\"gotcha\"<\/i> here is that one might think that importing a netlist automatically triggers Partition Merge, but no -- you would have to explicitly declare it as a partition before things work as expected.<\/p>\n<p>How we found this 'bug' was actually rather interesting -- InTime exported a result for a customer and the customer proceeded to reproduce the same result in Quartus, but obtained a much worse result (exactly what you see in Table 1 above). After banging our heads against the wall for a couple of days, we finally found the cause of the differences and am documenting it here in case someone else runs into a similar predicament.<\/p><\/div>\n<div style=\"margin-bottom: 0in\">At the end of the day, what matters is that you should be getting the best timing performance that your FPGA tool can produce, with minimal fuss.<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Altera FPGA users need no introduction to Partition Merge, a step in the Altera Quartus-II (&#8220;Quartus&#8221;) design compilation process that combines multiple netlists (post-synthesis or post-fit) into a single, complete netlist. Quartus triggers this step automatically whenever it detects any design partitions in a project. Will Quartus always run Partition Merge? If not, why?Quartus tries [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_links_to":"","_links_to_target":""},"categories":[98],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v17.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>A Sum of Part(ition)s - Plunify \u65e5\u672c\u8a9e\u30d8\u30eb\u30d7\u30c7\u30b9\u30af<\/title>\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\/jp\/2016\/06\/06\/a-sum-of-partitions\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A Sum of Part(ition)s - Plunify \u65e5\u672c\u8a9e\u30d8\u30eb\u30d7\u30c7\u30b9\u30af\" \/>\n<meta property=\"og:description\" content=\"Altera FPGA users need no introduction to Partition Merge, a step in the Altera Quartus-II (&quot;Quartus&quot;) design compilation process that combines multiple netlists (post-synthesis or post-fit) into a single, complete netlist. Quartus triggers this step automatically whenever it detects any design partitions in a project. Will Quartus always run Partition Merge? If not, why?Quartus tries [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/support.plunify.com\/jp\/2016\/06\/06\/a-sum-of-partitions\/\" \/>\n<meta property=\"og:site_name\" content=\"Plunify \u65e5\u672c\u8a9e\u30d8\u30eb\u30d7\u30c7\u30b9\u30af\" \/>\n<meta property=\"article:published_time\" content=\"2016-06-06T02:03:00+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"plunify\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/support.plunify.com\/jp\/#website\",\"url\":\"https:\/\/support.plunify.com\/jp\/\",\"name\":\"Plunify \\u65e5\\u672c\\u8a9e\\u30d8\\u30eb\\u30d7\\u30c7\\u30b9\\u30af\",\"description\":\"Plunify \\u65e5\\u672c\\u8a9e\\u30b5\\u30dd\\u30fc\\u30c8\\u30b5\\u30a4\\u30c8\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/support.plunify.com\/jp\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/support.plunify.com\/jp\/2016\/06\/06\/a-sum-of-partitions\/#webpage\",\"url\":\"https:\/\/support.plunify.com\/jp\/2016\/06\/06\/a-sum-of-partitions\/\",\"name\":\"A Sum of Part(ition)s - Plunify \\u65e5\\u672c\\u8a9e\\u30d8\\u30eb\\u30d7\\u30c7\\u30b9\\u30af\",\"isPartOf\":{\"@id\":\"https:\/\/support.plunify.com\/jp\/#website\"},\"datePublished\":\"2016-06-06T02:03:00+00:00\",\"dateModified\":\"2016-06-06T02:03:00+00:00\",\"author\":{\"@id\":\"https:\/\/support.plunify.com\/jp\/#\/schema\/person\/0702317d75b841ce991ca9936b72f8b0\"},\"breadcrumb\":{\"@id\":\"https:\/\/support.plunify.com\/jp\/2016\/06\/06\/a-sum-of-partitions\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/support.plunify.com\/jp\/2016\/06\/06\/a-sum-of-partitions\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/support.plunify.com\/jp\/2016\/06\/06\/a-sum-of-partitions\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/support.plunify.com\/jp\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A Sum of Part(ition)s\"}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/support.plunify.com\/jp\/#\/schema\/person\/0702317d75b841ce991ca9936b72f8b0\",\"name\":\"plunify\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/support.plunify.com\/jp\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/79e7edc12624b682db2df4112ff7210b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/79e7edc12624b682db2df4112ff7210b?s=96&d=mm&r=g\",\"caption\":\"plunify\"},\"url\":\"https:\/\/support.plunify.com\/jp\/author\/plunify\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"A Sum of Part(ition)s - Plunify \u65e5\u672c\u8a9e\u30d8\u30eb\u30d7\u30c7\u30b9\u30af","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\/jp\/2016\/06\/06\/a-sum-of-partitions\/","og_locale":"en_US","og_type":"article","og_title":"A Sum of Part(ition)s - Plunify \u65e5\u672c\u8a9e\u30d8\u30eb\u30d7\u30c7\u30b9\u30af","og_description":"Altera FPGA users need no introduction to Partition Merge, a step in the Altera Quartus-II (\"Quartus\") design compilation process that combines multiple netlists (post-synthesis or post-fit) into a single, complete netlist. Quartus triggers this step automatically whenever it detects any design partitions in a project. Will Quartus always run Partition Merge? If not, why?Quartus tries [&hellip;]","og_url":"https:\/\/support.plunify.com\/jp\/2016\/06\/06\/a-sum-of-partitions\/","og_site_name":"Plunify \u65e5\u672c\u8a9e\u30d8\u30eb\u30d7\u30c7\u30b9\u30af","article_published_time":"2016-06-06T02:03:00+00:00","twitter_card":"summary_large_image","twitter_misc":{"Written by":"plunify","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebSite","@id":"https:\/\/support.plunify.com\/jp\/#website","url":"https:\/\/support.plunify.com\/jp\/","name":"Plunify \u65e5\u672c\u8a9e\u30d8\u30eb\u30d7\u30c7\u30b9\u30af","description":"Plunify \u65e5\u672c\u8a9e\u30b5\u30dd\u30fc\u30c8\u30b5\u30a4\u30c8","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/support.plunify.com\/jp\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/support.plunify.com\/jp\/2016\/06\/06\/a-sum-of-partitions\/#webpage","url":"https:\/\/support.plunify.com\/jp\/2016\/06\/06\/a-sum-of-partitions\/","name":"A Sum of Part(ition)s - Plunify \u65e5\u672c\u8a9e\u30d8\u30eb\u30d7\u30c7\u30b9\u30af","isPartOf":{"@id":"https:\/\/support.plunify.com\/jp\/#website"},"datePublished":"2016-06-06T02:03:00+00:00","dateModified":"2016-06-06T02:03:00+00:00","author":{"@id":"https:\/\/support.plunify.com\/jp\/#\/schema\/person\/0702317d75b841ce991ca9936b72f8b0"},"breadcrumb":{"@id":"https:\/\/support.plunify.com\/jp\/2016\/06\/06\/a-sum-of-partitions\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/support.plunify.com\/jp\/2016\/06\/06\/a-sum-of-partitions\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/support.plunify.com\/jp\/2016\/06\/06\/a-sum-of-partitions\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/support.plunify.com\/jp\/"},{"@type":"ListItem","position":2,"name":"A Sum of Part(ition)s"}]},{"@type":"Person","@id":"https:\/\/support.plunify.com\/jp\/#\/schema\/person\/0702317d75b841ce991ca9936b72f8b0","name":"plunify","image":{"@type":"ImageObject","@id":"https:\/\/support.plunify.com\/jp\/#personlogo","inLanguage":"en-US","url":"https:\/\/secure.gravatar.com\/avatar\/79e7edc12624b682db2df4112ff7210b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/79e7edc12624b682db2df4112ff7210b?s=96&d=mm&r=g","caption":"plunify"},"url":"https:\/\/support.plunify.com\/jp\/author\/plunify\/"}]}},"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/support.plunify.com\/jp\/wp-json\/wp\/v2\/posts\/1570"}],"collection":[{"href":"https:\/\/support.plunify.com\/jp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/support.plunify.com\/jp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/support.plunify.com\/jp\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/support.plunify.com\/jp\/wp-json\/wp\/v2\/comments?post=1570"}],"version-history":[{"count":0,"href":"https:\/\/support.plunify.com\/jp\/wp-json\/wp\/v2\/posts\/1570\/revisions"}],"wp:attachment":[{"href":"https:\/\/support.plunify.com\/jp\/wp-json\/wp\/v2\/media?parent=1570"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/support.plunify.com\/jp\/wp-json\/wp\/v2\/categories?post=1570"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/support.plunify.com\/jp\/wp-json\/wp\/v2\/tags?post=1570"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}