{"id":14079,"date":"2020-04-06T07:35:28","date_gmt":"2020-04-06T14:35:28","guid":{"rendered":"https:\/\/blogs.mentor.com\/verificationhorizons\/?p=14079"},"modified":"2026-03-27T08:44:53","modified_gmt":"2026-03-27T12:44:53","slug":"verification-methodology-reset","status":"publish","type":"post","link":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/2020\/04\/06\/verification-methodology-reset\/","title":{"rendered":"Verification Methodology Reset"},"content":{"rendered":"<p>Discussion around verification methodologies have been going on for a couple decades. It started back around 2000 with the emergence of the various hardware verification languages (HVLs). Verification specific languages lead to the divergence of design and verification and the creation of the verification engineer. It was HVLs that enabled the transition of directed testing toward constrained random. Early in constrained random adoption it became obvious supporting infrastructure was necessary to be productive; early frameworks included RVM, eRM, AVM, VMM and various homegrown alternatives. The first step in consolidating an approach to constrained random happened with OVM; the final step was UVM which is where we are now.<\/p>\n<p>As time passed and habits formed, UVM became the thing most of us identify with when someone says the word <i>methodology<\/i>. Constrained random is assumed to be part of that equation being that it\u2019s the workhorse for most teams in our industry. Reuse, also closely associated with methodology, is the primary driver of technical integration with emerging techniques like portable stimulus; UVM, of course, helps form the foundation for that technical integration.<\/p>\n<p>Even if you think beyond UVM, verification methodology radiates from a verification point of view. While born of exploding design complexity, methodologies live solely within verification teams.<\/p>\n<p>Verification_methodology.reset().<\/p>\n<p>I propose reevaluating our current definition of verification methodology. I\u2019d like to see renewed focus on design being the central deliverable and verification methodologies conceived and driven by the needs of design. I\u2019d like to see us break a design into a series of abstractions, identify options for verifying each abstraction, employ techniques best suited to each abstraction and integrate those techniques so transitions are made effectively.<\/p>\n<p>That\u2019s a mouthful. Agree or disagree I think it makes for worthy discussion.<\/p>\n<p>In breaking a design into a set of abstractions, here are five that I identify with: line, block, feature, feature set and system.<\/p>\n<p>A line of code is self explanatory; that\u2019s as low level as it gets. Code block is next; also self explanatory though important to note that code blocks are localized within a design unit (I almost said <i>module<\/i> there but changed it so I didn\u2019t lose anyone!). Features are where we cross the threshold into characteristics that users identify with yet still don\u2019t provide much value on their own. Simple features will still be localized but more complex features will have a distributed implementation that crosses design unit boundaries. Next are feature sets; definitely distributed across subsystems and the first indication of an actual deliverable. Our highest design abstraction is a complete system where integrated feature sets delivery real-world value.<\/p>\n<p>Examples from each abstraction to help you identify\u2026<\/p>\n<ul>\n<li style=\"font-weight: 400\"><i>Line<\/i>: write enable asserted<\/li>\n<li style=\"font-weight: 400\"><i>Bloc<\/i>k: write enable pipeline<\/li>\n<li style=\"font-weight: 400\"><i>Feature<\/i>: store\/load to\/from L1 cache<\/li>\n<li style=\"font-weight: 400\"><i>Feature set<\/i>: cache coherence<\/li>\n<li style=\"font-weight: 400\"><i>System<\/i>: Multicore SoC w\/memory subsystem<\/li>\n<\/ul>\n<p>Identifying options for each abstraction is the fun part of this exercise now that I work for a tool provider. Like I said in <a href=\"https:\/\/blogs.mentor.com\/verificationhorizons\/blog\/2020\/03\/25\/building-integrated-verification-flows-round-2\/\" target=\"_blank\" rel=\"noopener\">Building Integrated Verification Flow &#8211; Round 2<\/a>, I\u2019ve done this before focusing only on simulation techniques due to my own experience being limited to simulation. With Mentor it\u2019s totally different. Suddenly I work with experts that have used <i>all<\/i> the tools for years and they\u2019re more than happy to share their experience. When you get a cross section of experts sharing their experience, this is what you get\u2026<\/p>\n<p><a href=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/54\/2020\/04\/dev-flow-map.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-14080 size-full\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/54\/2020\/04\/dev-flow-map.png\" alt=\"\" width=\"786\" height=\"633\" \/><\/a><\/p>\n<p>This is a superset of techniques that Mentor provides or enables. Needless to say, there is a lot here (One of my marketing colleagues described it as busy which I\u2019m ok with because it gets the point across that there are a lot of options to consider).<\/p>\n<p>You see I have each technique plotted as design abstraction v. verification abstraction. We already talked about design abstraction; verification abstraction is the level at which we describe interactions in our tests. For example, X-Check is a tool that aims at low level design characteristics (i.e. single line assignments) with properties applied at a bit level; constrained random testing is meant for randomly exercising design features with tests written at a transaction level. And so it goes.<\/p>\n<p>Summarizing why I\u2019ve captured it this way: design abstraction v. test abstraction shows us the sweet spot for a collection of techniques. We see which are best suited to each design abstraction while understanding the test abstraction where they are most effectively applied. The suggestion here is to use tools and techniques within their sweet spot; anywhere else and the value they provide tapers off.<\/p>\n<p><i>But what\u2019s in all these bubbles? And what do the colours mean?<\/i><\/p>\n<p>Good questions. In our next post, I\u2019ll go through each with an explanation and some reasoning for why they are where they are.<\/p>\n<p>-neil<\/p>\n<p><em>PS: Another reminder that this is work in progress. If you see something you like, something I\u2019m missing, something you disagree with or anything else, please let me know in the comments or send me a note at: <a href=\"mailto:neil_johnson@mentor.com\">neil_johnson@mentor.com<\/a>.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Discussion around verification methodologies have been going on for a couple decades. It started back around 2000 with the emergence&#8230;<\/p>\n","protected":false},"author":72194,"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":[],"industry":[],"product":[],"coauthors":[],"class_list":["post-14079","post","type-post","status-publish","format-standard","hentry","category-news"],"_links":{"self":[{"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/posts\/14079","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\/72194"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/comments?post=14079"}],"version-history":[{"count":1,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/posts\/14079\/revisions"}],"predecessor-version":[{"id":14696,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/posts\/14079\/revisions\/14696"}],"wp:attachment":[{"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/media?parent=14079"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/categories?post=14079"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/tags?post=14079"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/industry?post=14079"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/product?post=14079"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/coauthors?post=14079"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}