{"id":4879,"date":"2011-06-28T11:36:43","date_gmt":"2011-06-28T18:36:43","guid":{"rendered":"https:\/\/blogs.mentor.com\/verificationhorizons\/?p=4879"},"modified":"2026-03-27T08:34:16","modified_gmt":"2026-03-27T12:34:16","slug":"intelligent-testbench-automation-delivers-10x-to-100x-faster-functional-verification","status":"publish","type":"post","link":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/2011\/06\/28\/intelligent-testbench-automation-delivers-10x-to-100x-faster-functional-verification\/","title":{"rendered":"Intelligent Testbench Automation Delivers 10X to 100X Faster Functional Verification"},"content":{"rendered":"<p><strong>iTBA Introduction<\/strong><\/p>\n<p>If you\u2019ve been to DAC or DVCon during the past couple of years, you\u2019ve probably at least heard of something new called \u201cIntelligent Testbench Automation\u201d.\u00a0 Well, it\u2019s actually not really all that new, as the underlying principles have been used in compiler testing and some types of software testing for the past three decades, but its application to electronic design verification is certainly new, and exciting.<\/p>\n<p>The value proposition of iTBA is fairly simple and straightforward.\u00a0 Just like constrained random testing, iTBA generates tons of stimuli for functional verification.\u00a0 But iTBA is so efficient, that it achieves the targeted functional coverage one to two orders of magnitude faster than CRT.\u00a0 So what would you do if you could achieve your current simulation goals 10X to 100X faster?<\/p>\n<p>You could finish your verification earlier, especially when it seems like you\u2019re getting new IP drops every day.\u00a0 I\u2019ve seen IP verification teams reduce their simulations from several days on several CPUs (using CRT) to a couple of hours on a single CPU (with iTBA).\u00a0 No longer can IP designers send RTL revisions faster than we can verify them.<\/p>\n<p>But for me, I\u2019d ultimately use the time savings to expand my testing goals.\u00a0 Today\u2019s designs are so complex that typically only a fraction of their functionality gets tested anyway.\u00a0 And one of the biggest challenges is trading off what functionality to test, and what not to test.\u00a0 (We\u2019ll show you how iTBA can help you here, in a future blog post.)\u00a0 Well, if I can achieve my initial target coverage in one-tenth of the time, then I\u2019d use at least part of the time saving to expand my coverage, and go after some of the functionality that originally I didn\u2019t think I\u2019d have time to test.<\/p>\n<p><strong>On Line Illustration<\/strong><\/p>\n<p>If you check out this link &#8211; <a href=\"http:\/\/www.verificationacademy.com\/infact\" target=\"_blank\" rel=\"noopener\">http:\/\/www.verificationacademy.com\/infact<\/a>\u00a0 &#8211; you\u2019ll find an interactive example of a side by side comparison of constrained random testing and intelligent testbench automation.\u00a0 It\u2019s an Adobe Flash Demonstration, and it lets you run your own simulations.\u00a0 Try it, it\u2019s fun.<\/p>\n<p>The example shows a target coverage of 576 equally weighted test cases in a 24&#215;24 grid.\u00a0 You can adjust the dials at the top for the number and speed of simulators to use, and then click on \u201cstart\u201d.\u00a0 Both CRT and iTBA simulations run in parallel at the same speed, cycle for cycle, and each time a new test case is simulated the number in its cell is incremented by one, and the color of the cell changes.\u00a0 Notice that the iTBA simulation on the right achieves 100% coverage very quickly, covering every unique test case efficiently.\u00a0 But notice that the CRT simulation on the left eventually achieves 100% coverage painfully and slowly, with much unwanted redundancy.\u00a0 You can also click on \u201cshow chart\u201d to see a coverage chart of your simulation.<\/p>\n<p><strong>Math Facts<\/strong><\/p>\n<p>You probably knew that random testing repeats, but you probably didn\u2019t know by how much.\u00a0 It turns out that the redundancy factor is expressed in the equation \u201c <strong>T = N ln N + C<\/strong> \u201c, where \u201cT\u201d is the number of tests that must be generated to achieve 100% coverage of \u201cN\u201d different cases, and \u201cC\u201d is a small constant.\u00a0 So using the natural logarithm of 576, we can calculate that given equally weighted cases, the random simulation will require an average of about 3661 tests to achieve our goal.\u00a0 Sometimes it\u2019s more, sometimes it\u2019s less, given the unpredictability of random testing.\u00a0 In the meantime the iTBA simulation achieves 100% coverage in just 576 tests, a reduction of 84%.<\/p>\n<p><strong>Experiment at Home<\/strong><\/p>\n<p>You probably already have an excellent six-sided demonstration vehicle somewhere at home.\u00a0 Try rolling a single die repeatedly, simulating a random test generator.\u00a0 How many times does it take you to \u201ccover\u201d all six unique test cases?\u00a0 <strong>T = N ln N + C<\/strong> says it should take about 11 times or more.\u00a0 You might get lucky and hit 8, 9, or 10.\u00a0 But chances are you\u2019ll still be rolling at 11, 12, 13, or even more.\u00a0 If you used iTBA to generate the test cases, it would take you six rolls, and you\u2019d be done.\u00a0 Now in this example, getting to coverage twice as fast may not be that exciting to you.\u00a0 But if you extrapolate these results to your RTL design\u2019s test plan, the savings can become quite interesting.<\/p>\n<p><strong>Quiz Question<\/strong><\/p>\n<p>So here\u2019s a quick question for you.\u00a0 What\u2019s the minimum number of unique functional test cases needed to realize at least a 10X gain in efficiency with iTBA compared to what you could get with CRT?\u00a0 (Hint \u2013 You can figure it out with three taps on a scientific calculator.)\u00a0 It\u2019s probably a pretty small number compared to the number of functions your design can actually perform, meaning that there\u2019s at least a 10X improvement in testing efficiency awaiting you with iTBA.<\/p>\n<p><strong>More Information<\/strong><\/p>\n<p>Hopefully at this point you\u2019re at least a little bit interested?\u00a0 Like some others, you may be skeptical at this point.\u00a0 Could this technology really offer a 10X improvement in functional verification?\u00a0 Check out the Verification Academy at this site &#8211; <a href=\"http:\/\/www.verificationacademy.com\/course-modules\/dynamic-verification\/intelligent-testbench-automation\" target=\"_blank\" rel=\"noopener\">http:\/\/www.verificationacademy.com\/course-modules\/dynamic-verification\/intelligent-testbench-automation<\/a> &#8211; to see the first academy sessions that will introduce you to Intelligent Testbench Automation.\u00a0 Or you can even Google \u201cintelligent testbench automation\u201d, and see what you find.\u00a0 Thanks for reading . . .<\/p>\n","protected":false},"excerpt":{"rendered":"<p>iTBA Introduction If you\u2019ve been to DAC or DVCon during the past couple of years, you\u2019ve probably at least heard&#8230;<\/p>\n","protected":false},"author":71600,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spanish_translation":"","french_translation":"","german_translation":"","italian_translation":"","polish_translation":"","japanese_translation":"","chinese_translation":"","footnotes":""},"categories":[1],"tags":[504,506,551,718,758,819,820],"industry":[],"product":[],"coauthors":[],"class_list":["post-4879","post","type-post","status-publish","format-standard","hentry","category-news","tag-functional-coverage","tag-functional-verification","tag-intelligent-testbench-automation","tag-simulation","tag-testbench","tag-verification","tag-verification-academy"],"_links":{"self":[{"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/posts\/4879","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/users\/71600"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/comments?post=4879"}],"version-history":[{"count":1,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/posts\/4879\/revisions"}],"predecessor-version":[{"id":19738,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/posts\/4879\/revisions\/19738"}],"wp:attachment":[{"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/media?parent=4879"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/categories?post=4879"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/tags?post=4879"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/industry?post=4879"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/product?post=4879"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/coauthors?post=4879"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}