{"id":13016,"date":"2018-02-22T10:58:01","date_gmt":"2018-02-22T17:58:01","guid":{"rendered":"https:\/\/blogs.mentor.com\/verificationhorizons\/?p=13016"},"modified":"2026-03-27T08:38:36","modified_gmt":"2026-03-27T12:38:36","slug":"portable-test-portable-intent-portable-realization-or-both","status":"publish","type":"post","link":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/2018\/02\/22\/portable-test-portable-intent-portable-realization-or-both\/","title":{"rendered":"Portable Test \u2013 Portable Intent, Portable Realization, or Both?"},"content":{"rendered":"<p>The Accellera Portable Stimulus Working Group (PSWG) has been hard at work defining a language specification for capturing portable test and stimulus. But, what does a portable stimulus specification really make portable?<\/p>\n<p><a href=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/54\/2018\/02\/PortableStimulus_1.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-13017 aligncenter\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/54\/2018\/02\/PortableStimulus_1-520x445.png\" alt=\"\" width=\"323\" height=\"277\" \/><\/a><\/p>\n<p>When it comes to test portability, there are two key things to consider: test intent and test realization. Test intent is all about the big-picture view of <strong>what<\/strong> is being tested. Test realization is the details of <strong>how<\/strong> it is verified.<br \/>\nLet\u2019s say we\u2019re testing a DMA controller. Our test intent would specify test scenarios that we want to exercise on the DMA controller \u2013 things like running transfers of various sizes, and running parallel transfers on different channels with the same and different priorities. Notice that we haven\u2019t said anything about <strong>how<\/strong> we will exercise the DMA controller. That\u2019s where our test realization comes into play. In a UVM environment, our test realization might use the UVM register model to access the DMA engine\u2019s registers and use a UVM agent to intercept interrupts. In a bare-metal embedded software environment, we would use C code statements to access the DMA engine\u2019s registers and an interrupt handler to react to interrupts.<\/p>\n<p><a href=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/54\/2018\/02\/TestRealization_1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-13019 aligncenter\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/54\/2018\/02\/TestRealization_1-520x298.png\" alt=\"\" width=\"520\" height=\"298\" \/><\/a><\/p>\n<p>Accellera\u2019s Portable Stimulus standard really focuses on making test intent portable, which is a very useful thing. This allows us to apply the same highly-automated test scenarios in our IP-level environment and in our SoC environment. All we have to do is provide the appropriate test realization layer.<br \/>\nIn many cases, this scenario is ideal since it allows the same test intent to be reused across very different environments and very different test realization layers. In some cases, though, reusing test realization is also very helpful.<\/p>\n<p><strong>What if you need Portable Realization?<\/strong><\/p>\n<p>Hardware IP increasingly has software content and requiring tight interaction with software. Developing this firmware early and reusing it across the verification flow both boosts productivity and helps to find hardware\/software interface bugs early while they\u2019re easiest to debug and fix. In this situation, needing to re-create the test realization layer for each environment isn\u2019t just wasteful, but doesn\u2019t allows us to test what we need to test.<\/p>\n<p><a href=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/54\/2018\/02\/UEXOverview_1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-13020 aligncenter\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/54\/2018\/02\/UEXOverview_1-520x298.png\" alt=\"\" width=\"520\" height=\"298\" \/><\/a><\/p>\n<p>The UEX API was developed by Mentor to address precisely this use case. UEX is an acronym for micro (U) executor (EX), and provides APIs commonly used by firmware \u2013 memory-management and access, interrupt handling, and threading. Multiple environment-specific implementations of the API allow the same test-realization firmware to be run in UVM environments, bare-metal embedded software, and other environments.<\/p>\n<p><a href=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/54\/2018\/02\/PSS_with_UEX_1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-13018 aligncenter\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/54\/2018\/02\/PSS_with_UEX_1-520x298.png\" alt=\"\" width=\"520\" height=\"298\" \/><\/a><\/p>\n<p>When used together, Accellera PSS provides automated test scenarios created by portable test intent, while UEX allows portable and reuseable test realization. Like many pieces of verification infrastructure, such as UVM, UEX is available on GitHub under the Apache 2.0 license.<\/p>\n<p><strong>DVCon 2018<\/strong><\/p>\n<p>Will you be attending DVCon February 26th to March 1st? If so, there will be a lot to see about portable test and stimulus! Come to Accellera\u2019s Portable Stimulus Tutorial on Monday to learn more about how the emerging standard is applied. On Tuesday morning, come see how portable stimulus techniques are already being applied at the inaugural DVCon Portable Stimulus Applications session. Just after that, come visit my poster paper <em>Managing Hw\/Sw Tests from IP to SoC<\/em>, which is about using portable stimulus and the UEX API together. And, come find me at the Mentor booth all week if you\u2019d like to talk about portable stimulus or Mentor\u2019s inFact portable stimulus product, or verification techniques in general.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Accellera Portable Stimulus Working Group (PSWG) has been hard at work defining a language specification for capturing portable test&#8230;<\/p>\n","protected":false},"author":71642,"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-13016","post","type-post","status-publish","format-standard","hentry","category-news"],"_links":{"self":[{"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/posts\/13016","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\/71642"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/comments?post=13016"}],"version-history":[{"count":1,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/posts\/13016\/revisions"}],"predecessor-version":[{"id":19853,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/posts\/13016\/revisions\/19853"}],"wp:attachment":[{"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/media?parent=13016"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/categories?post=13016"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/tags?post=13016"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/industry?post=13016"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/product?post=13016"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/coauthors?post=13016"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}