CINXE.COM

SystemVerilog - Wikipedia

<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>SystemVerilog - Wikipedia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )enwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy", "wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"e7adf9b6-053b-47b3-8174-114b7c4815d2","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"SystemVerilog","wgTitle":"SystemVerilog","wgCurRevisionId":1247377792,"wgRevisionId":1247377792,"wgArticleId":2540686,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Articles with short description","Short description matches Wikidata","Use American English from April 2019","All Wikipedia articles written in American English","Wikipedia articles needing clarification from September 2018","All Wikipedia articles needing clarification","All articles with vague or ambiguous time","Vague or ambiguous time from September 2018","Articles containing potentially dated statements from September 2018","All articles containing potentially dated statements", "Hardware description languages","Hardware verification languages","System description languages","Programming languages created in 2002"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"SystemVerilog","wgRelevantArticleId":2540686,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":false,"wgFlaggedRevsParams":{"tags":{"status":{"levels":1}}},"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":40000,"wgRelatedArticlesCompat":[],"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition": "interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q1387402","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.cite.styles":"ready","ext.pygments":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","jquery.makeCollapsible.styles":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges": "ready"};RLPAGEMODULES=["ext.cite.ux-enhancements","ext.pygments.view","site","mediawiki.page.ready","jquery.makeCollapsible","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.ReferenceTooltips","ext.gadget.switcher","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.cx.uls.quick.actions","wikibase.client.vector-2022","ext.checkUser.clientHints","ext.growthExperiments.SuggestedEditSession","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&amp;modules=ext.cite.styles%7Cext.pygments%2CwikimediaBadges%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cjquery.makeCollapsible.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&amp;only=styles&amp;skin=vector-2022"> <script async="" src="/w/load.php?lang=en&amp;modules=startup&amp;only=scripts&amp;raw=1&amp;skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&amp;modules=site.styles&amp;only=styles&amp;skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="SystemVerilog - Wikipedia"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//en.m.wikipedia.org/wiki/SystemVerilog"> <link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=SystemVerilog&amp;action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (en)"> <link rel="EditURI" type="application/rsd+xml" href="//en.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://en.wikipedia.org/wiki/SystemVerilog"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en"> <link rel="alternate" type="application/atom+xml" title="Wikipedia Atom feed" href="/w/index.php?title=Special:RecentChanges&amp;feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-SystemVerilog rootpage-SystemVerilog skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Jump to content</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Main menu" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Main menu</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Main menu</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">hide</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigation </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-contents" class="mw-list-item"><a href="/wiki/Wikipedia:Contents" title="Guides to browsing Wikipedia"><span>Contents</span></a></li><li id="n-currentevents" class="mw-list-item"><a href="/wiki/Portal:Current_events" title="Articles related to current events"><span>Current events</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:Random" title="Visit a randomly selected article [x]" accesskey="x"><span>Random article</span></a></li><li id="n-aboutsite" class="mw-list-item"><a href="/wiki/Wikipedia:About" title="Learn about Wikipedia and how it works"><span>About Wikipedia</span></a></li><li id="n-contactpage" class="mw-list-item"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us" title="How to contact Wikipedia"><span>Contact us</span></a></li> </ul> </div> </div> <div id="p-interaction" class="vector-menu mw-portlet mw-portlet-interaction" > <div class="vector-menu-heading"> Contribute </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Help:Contents" title="Guidance on how to use and edit Wikipedia"><span>Help</span></a></li><li id="n-introduction" class="mw-list-item"><a href="/wiki/Help:Introduction" title="Learn how to edit Wikipedia"><span>Learn to edit</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:Community_portal" title="The hub for editors"><span>Community portal</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes to Wikipedia [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_upload_wizard" title="Add images or other media for use on Wikipedia"><span>Upload file</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Main_Page" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipedia" src="/static/images/mobile/copyright/wikipedia-wordmark-en.svg" style="width: 7.5em; height: 1.125em;"> <img class="mw-logo-tagline" alt="The Free Encyclopedia" src="/static/images/mobile/copyright/wikipedia-tagline-en.svg" width="117" height="13" style="width: 7.3125em; height: 0.8125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Special:Search" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Search Wikipedia [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search Wikipedia" aria-label="Search Wikipedia" autocapitalize="sentences" title="Search Wikipedia [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Personal tools"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page&#039;s font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Appearance" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Appearance</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=C13_en.wikipedia.org&amp;uselang=en" class=""><span>Donate</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:CreateAccount&amp;returnto=SystemVerilog" title="You are encouraged to create an account and log in; however, it is not mandatory" class=""><span>Create account</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:UserLogin&amp;returnto=SystemVerilog" title="You&#039;re encouraged to log in; however, it&#039;s not mandatory. [o]" accesskey="o" class=""><span>Log in</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="Log in and more options" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Personal tools" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Personal tools</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="User menu" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=C13_en.wikipedia.org&amp;uselang=en"><span>Donate</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&amp;returnto=SystemVerilog" title="You are encouraged to create an account and log in; however, it is not mandatory"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Create account</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:UserLogin&amp;returnto=SystemVerilog" title="You&#039;re encouraged to log in; however, it&#039;s not mandatory. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Log in</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Pages for logged out editors <a href="/wiki/Help:Introduction" aria-label="Learn more about editing"><span>learn more</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Special:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:MyTalk" title="Discussion about edits from this IP address [n]" accesskey="n"><span>Talk</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Contents" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Contents</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">hide</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">(Top)</div> </a> </li> <li id="toc-History" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#History"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>History</span> </div> </a> <ul id="toc-History-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Design_features" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Design_features"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Design features</span> </div> </a> <button aria-controls="toc-Design_features-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Design features subsection</span> </button> <ul id="toc-Design_features-sublist" class="vector-toc-list"> <li id="toc-Data_lifetime" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Data_lifetime"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1</span> <span>Data lifetime</span> </div> </a> <ul id="toc-Data_lifetime-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-New_data_types" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#New_data_types"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.2</span> <span>New data types</span> </div> </a> <ul id="toc-New_data_types-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Procedural_blocks" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Procedural_blocks"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.3</span> <span>Procedural blocks</span> </div> </a> <ul id="toc-Procedural_blocks-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Interfaces" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Interfaces"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.4</span> <span>Interfaces</span> </div> </a> <ul id="toc-Interfaces-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Verification_features" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Verification_features"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Verification features</span> </div> </a> <button aria-controls="toc-Verification_features-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Verification features subsection</span> </button> <ul id="toc-Verification_features-sublist" class="vector-toc-list"> <li id="toc-New_data_types_2" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#New_data_types_2"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.1</span> <span>New data types</span> </div> </a> <ul id="toc-New_data_types_2-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Classes" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Classes"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.2</span> <span>Classes</span> </div> </a> <ul id="toc-Classes-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Constrained_random_generation" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Constrained_random_generation"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.3</span> <span>Constrained random generation</span> </div> </a> <ul id="toc-Constrained_random_generation-sublist" class="vector-toc-list"> <li id="toc-Randomization_methods" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Randomization_methods"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.3.1</span> <span>Randomization methods</span> </div> </a> <ul id="toc-Randomization_methods-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Controlling_constraints" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Controlling_constraints"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.3.2</span> <span>Controlling constraints</span> </div> </a> <ul id="toc-Controlling_constraints-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Assertions" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Assertions"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.4</span> <span>Assertions</span> </div> </a> <ul id="toc-Assertions-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Coverage" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Coverage"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.5</span> <span>Coverage</span> </div> </a> <ul id="toc-Coverage-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Synchronization" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Synchronization"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.6</span> <span>Synchronization</span> </div> </a> <ul id="toc-Synchronization-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-General_improvements_to_classical_Verilog" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#General_improvements_to_classical_Verilog"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>General improvements to classical Verilog</span> </div> </a> <ul id="toc-General_improvements_to_classical_Verilog-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Verification_and_synthesis_software" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Verification_and_synthesis_software"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>Verification and synthesis software</span> </div> </a> <ul id="toc-Verification_and_synthesis_software-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-See_also" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#See_also"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>See also</span> </div> </a> <ul id="toc-See_also-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-References" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#References"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span> <span>References</span> </div> </a> <ul id="toc-References-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-External_links" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#External_links"> <div class="vector-toc-text"> <span class="vector-toc-numb">8</span> <span>External links</span> </div> </a> <ul id="toc-External_links-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">SystemVerilog</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Go to an article in another language. Available in 10 languages" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-10" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">10 languages</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-ca mw-list-item"><a href="https://ca.wikipedia.org/wiki/SystemVerilog" title="SystemVerilog – Catalan" lang="ca" hreflang="ca" data-title="SystemVerilog" data-language-autonym="Català" data-language-local-name="Catalan" class="interlanguage-link-target"><span>Català</span></a></li><li class="interlanguage-link interwiki-de mw-list-item"><a href="https://de.wikipedia.org/wiki/SystemVerilog" title="SystemVerilog – German" lang="de" hreflang="de" data-title="SystemVerilog" data-language-autonym="Deutsch" data-language-local-name="German" class="interlanguage-link-target"><span>Deutsch</span></a></li><li class="interlanguage-link interwiki-fr mw-list-item"><a href="https://fr.wikipedia.org/wiki/SystemVerilog" title="SystemVerilog – French" lang="fr" hreflang="fr" data-title="SystemVerilog" data-language-autonym="Français" data-language-local-name="French" class="interlanguage-link-target"><span>Français</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/%EC%8B%9C%EC%8A%A4%ED%85%9C%EB%B2%A0%EB%A6%B4%EB%A1%9C%EA%B7%B8" title="시스템베릴로그 – Korean" lang="ko" hreflang="ko" data-title="시스템베릴로그" data-language-autonym="한국어" data-language-local-name="Korean" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-it mw-list-item"><a href="https://it.wikipedia.org/wiki/SystemVerilog" title="SystemVerilog – Italian" lang="it" hreflang="it" data-title="SystemVerilog" data-language-autonym="Italiano" data-language-local-name="Italian" class="interlanguage-link-target"><span>Italiano</span></a></li><li class="interlanguage-link interwiki-ja mw-list-item"><a href="https://ja.wikipedia.org/wiki/SystemVerilog" title="SystemVerilog – Japanese" lang="ja" hreflang="ja" data-title="SystemVerilog" data-language-autonym="日本語" data-language-local-name="Japanese" class="interlanguage-link-target"><span>日本語</span></a></li><li class="interlanguage-link interwiki-pl mw-list-item"><a href="https://pl.wikipedia.org/wiki/SystemVerilog" title="SystemVerilog – Polish" lang="pl" hreflang="pl" data-title="SystemVerilog" data-language-autonym="Polski" data-language-local-name="Polish" class="interlanguage-link-target"><span>Polski</span></a></li><li class="interlanguage-link interwiki-ru mw-list-item"><a href="https://ru.wikipedia.org/wiki/SystemVerilog" title="SystemVerilog – Russian" lang="ru" hreflang="ru" data-title="SystemVerilog" data-language-autonym="Русский" data-language-local-name="Russian" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-uk mw-list-item"><a href="https://uk.wikipedia.org/wiki/SystemVerilog" title="SystemVerilog – Ukrainian" lang="uk" hreflang="uk" data-title="SystemVerilog" data-language-autonym="Українська" data-language-local-name="Ukrainian" class="interlanguage-link-target"><span>Українська</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/SystemVerilog" title="SystemVerilog – Chinese" lang="zh" hreflang="zh" data-title="SystemVerilog" data-language-autonym="中文" data-language-local-name="Chinese" class="interlanguage-link-target"><span>中文</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q1387402#sitelinks-wikipedia" title="Edit interlanguage links" class="wbc-editpage">Edit links</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Namespaces"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/SystemVerilog" title="View the content page [c]" accesskey="c"><span>Article</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Talk:SystemVerilog" rel="discussion" title="Discuss improvements to the content page [t]" accesskey="t"><span>Talk</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Change language variant" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Views"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/SystemVerilog"><span>Read</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=SystemVerilog&amp;action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=SystemVerilog&amp;action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Tools" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Tools</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Tools</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">hide</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="More options" > <div class="vector-menu-heading"> Actions </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/SystemVerilog"><span>Read</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=SystemVerilog&amp;action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=SystemVerilog&amp;action=history"><span>View history</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> General </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:WhatLinksHere/SystemVerilog" title="List of all English Wikipedia pages containing links to this page [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/SystemVerilog" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_Upload_Wizard" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=SystemVerilog&amp;oldid=1247377792" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=SystemVerilog&amp;action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Special:CiteThisPage&amp;page=SystemVerilog&amp;id=1247377792&amp;wpFormIdentifier=titleform" title="Information on how to cite this page"><span>Cite this page</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&amp;url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FSystemVerilog"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&amp;url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FSystemVerilog"><span>Download QR code</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> Print/export </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Special:DownloadAsPdf&amp;page=SystemVerilog&amp;action=show-download-screen" title="Download this page as a PDF file"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=SystemVerilog&amp;printable=yes" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q1387402" title="Structured data on this page hosted by Wikidata [g]" accesskey="g"><span>Wikidata item</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Appearance</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">hide</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">From Wikipedia, the free encyclopedia</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><div class="shortdescription nomobile noexcerpt noprint searchaux" style="display:none">Hardware description and hardware verification language</div> <p class="mw-empty-elt"> </p> <style data-mw-deduplicate="TemplateStyles:r1257001546">.mw-parser-output .infobox-subbox{padding:0;border:none;margin:-3px;width:auto;min-width:100%;font-size:100%;clear:none;float:none;background-color:transparent}.mw-parser-output .infobox-3cols-child{margin:auto}.mw-parser-output .infobox .navbar{font-size:100%}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox-full-data:not(.notheme) div:not(.notheme){background:#1f1f23!important;color:#f8f9fa}}@media(min-width:640px){body.skin--responsive .mw-parser-output .infobox-table{display:table!important}body.skin--responsive .mw-parser-output .infobox-table>caption{display:table-caption!important}body.skin--responsive .mw-parser-output .infobox-table>tbody{display:table-row-group}body.skin--responsive .mw-parser-output .infobox-table tr{display:table-row!important}body.skin--responsive .mw-parser-output .infobox-table th,body.skin--responsive .mw-parser-output .infobox-table td{padding-left:inherit;padding-right:inherit}}</style><table class="infobox vevent"><caption class="infobox-title summary">SystemVerilog</caption><tbody><tr><th scope="row" class="infobox-label"><a href="/wiki/Programming_paradigm" title="Programming paradigm">Paradigm</a></th><td class="infobox-data"><a href="/wiki/Structured_programming" title="Structured programming">Structured</a> (design)<br /><a href="/wiki/Object-oriented_programming" title="Object-oriented programming">Object-oriented</a> (verification)</td></tr><tr><th scope="row" class="infobox-label"><a href="/wiki/Software_design" title="Software design">Designed&#160;by</a></th><td class="infobox-data"><a href="/wiki/Synopsys" title="Synopsys">Synopsys</a>, later <a href="/wiki/IEEE" class="mw-redirect" title="IEEE">IEEE</a></td></tr><tr><th scope="row" class="infobox-label">First&#160;appeared</th><td class="infobox-data">2002<span class="noprint">&#59;&#32;22&#160;years ago</span><span style="display:none">&#160;(<span class="bday dtstart published updated">2002</span>)</span></td></tr><tr><td colspan="2" class="infobox-full-data"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1257001546"></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="/wiki/Software_release_life_cycle" title="Software release life cycle">Stable release</a></th><td class="infobox-data"><div style="margin:0px;">IEEE 1800-2023 / December&#160;16, 2023<span class="noprint">&#59;&#32;11 months ago</span><span style="display:none">&#160;(<span class="bday dtstart published updated">2023-12-16</span>)</span></div></td></tr><tr style="display:none"><td colspan="2"> </td></tr><tr><th scope="row" class="infobox-label"><a href="/wiki/Type_system" title="Type system">Typing discipline</a></th><td class="infobox-data"><a href="/wiki/Type_system" title="Type system">Static</a>, <a href="/wiki/Weak_typing" class="mw-redirect" title="Weak typing">weak</a></td></tr><tr><th scope="row" class="infobox-label"><a href="/wiki/Filename_extension" title="Filename extension">Filename extensions</a></th><td class="infobox-data">.sv, <a href="/wiki/Header_file" class="mw-redirect" title="Header file">.svh</a></td></tr><tr><th colspan="2" class="infobox-header" style="background-color: #eee;">Influenced by</th></tr><tr><td colspan="2" class="infobox-full-data">Design: <a href="/wiki/Verilog" title="Verilog">Verilog</a>, <a href="/wiki/VHDL" title="VHDL">VHDL</a>, <a href="/wiki/C%2B%2B" title="C++">C++</a>, Verification: OpenVera, <a href="/wiki/Java_(programming_language)" title="Java (programming language)">Java</a></td></tr></tbody></table> <p><b>SystemVerilog</b>, standardized as <b>IEEE 1800</b>, is a <a href="/wiki/Hardware_description_language" title="Hardware description language">hardware description</a> and <a href="/wiki/Hardware_verification_language" title="Hardware verification language">hardware verification language</a> used to model, <a href="/wiki/Hardware_design" class="mw-redirect" title="Hardware design">design</a>, <a href="/wiki/Test_bench" title="Test bench">simulate</a>, <a href="/wiki/Functional_verification" title="Functional verification">test</a> and <a href="/wiki/Logic_synthesis" title="Logic synthesis">implement</a> electronic systems. SystemVerilog is based on <a href="/wiki/Verilog" title="Verilog">Verilog</a> and some extensions, and since 2008, Verilog is now part of the same <a href="/wiki/IEEE_standard" class="mw-redirect" title="IEEE standard">IEEE standard</a>. It is commonly used in the <a href="/wiki/Semiconductor" title="Semiconductor">semiconductor</a> and <a href="/wiki/Electronics" title="Electronics">electronic</a> design industry as an evolution of Verilog. </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="History">History</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=SystemVerilog&amp;action=edit&amp;section=1" title="Edit section: History"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>SystemVerilog started with the donation of the Superlog language to <a href="/wiki/Accellera" title="Accellera">Accellera</a> in 2002 by the startup company Co-Design Automation.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">&#91;</span>1<span class="cite-bracket">&#93;</span></a></sup> The bulk of the verification functionality is based on the OpenVera language donated by <a href="/wiki/Synopsys" title="Synopsys">Synopsys</a>. In 2005, SystemVerilog was adopted as <a href="/wiki/IEEE" class="mw-redirect" title="IEEE">IEEE</a> Standard 1800-2005.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">&#91;</span>2<span class="cite-bracket">&#93;</span></a></sup> In 2009, the standard was merged with the base Verilog (IEEE 1364-2005) standard, creating IEEE Standard 1800-2009. </p><p>The SystemVerilog standard was subsequently updated in 2012,<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">&#91;</span>3<span class="cite-bracket">&#93;</span></a></sup> 2017,<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">&#91;</span>4<span class="cite-bracket">&#93;</span></a></sup> and most recently in December 2023.<sup id="cite_ref-IEEE2023_5-0" class="reference"><a href="#cite_note-IEEE2023-5"><span class="cite-bracket">&#91;</span>5<span class="cite-bracket">&#93;</span></a></sup> </p> <div class="mw-heading mw-heading2"><h2 id="Design_features">Design features</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=SystemVerilog&amp;action=edit&amp;section=2" title="Edit section: Design features"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The feature-set of SystemVerilog can be divided into two distinct roles: </p> <ol><li>SystemVerilog for <a href="/wiki/Register-transfer_level" title="Register-transfer level">register-transfer level</a> (RTL) design is an extension of <a href="/wiki/Verilog" title="Verilog">Verilog-2005</a>; all features of that language are available in SystemVerilog. Therefore, Verilog is a subset of SystemVerilog.</li> <li>SystemVerilog for verification uses extensive <a href="/wiki/Object-oriented_programming" title="Object-oriented programming">object-oriented programming</a> techniques and is more closely related to <a href="/wiki/Java_(programming_language)" title="Java (programming language)">Java</a> than Verilog. These constructs are generally not synthesizable.</li></ol> <p>The remainder of this article discusses the features of SystemVerilog not present in <a href="/wiki/Verilog" title="Verilog">Verilog-2005</a>. </p> <div class="mw-heading mw-heading3"><h3 id="Data_lifetime">Data lifetime</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=SystemVerilog&amp;action=edit&amp;section=3" title="Edit section: Data lifetime"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>There are two types of data lifetime specified in SystemVerilog: <a href="/wiki/Static_variable" title="Static variable">static</a> and <a href="/wiki/Local_variable" title="Local variable">automatic</a>. Automatic variables are created the moment program execution comes to the scope of the variable. Static variables are created at the start of the program's execution and keep the same value during the entire program's lifespan, unless assigned a new value during execution. </p><p>Any variable that is declared inside a task or function without specifying type will be considered automatic. To specify that a variable is static place the "<code>static</code>" <a href="/wiki/Keyword_(programming)" class="mw-redirect" title="Keyword (programming)">keyword</a> in the declaration before the type, e.g., "<code>static int x;</code>". The "<code>automatic</code>" keyword is used in the same way. </p> <div class="mw-heading mw-heading3"><h3 id="New_data_types">New data types</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=SystemVerilog&amp;action=edit&amp;section=4" title="Edit section: New data types"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><b>Enhanced variable types</b> add new capability to Verilog's "reg" type: </p> <div class="mw-highlight mw-highlight-lang-systemverilog mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">logic</span><span class="w"> </span><span class="p">[</span><span class="mi">31</span><span class="o">:</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="n">my_var</span><span class="p">;</span> </pre></div> <p>Verilog-1995 and -2001 limit reg variables to behavioral statements such as <a href="/wiki/Register-transfer_level" title="Register-transfer level">RTL code</a>. SystemVerilog extends the reg type so it can be driven by a single driver such as gate or module. SystemVerilog names this type "logic" to remind users that it has this extra capability and is not a hardware register. The names "logic" and "reg" are interchangeable. A signal with more than one driver (such as a <a href="/wiki/Tri-state_buffer" class="mw-redirect" title="Tri-state buffer">tri-state buffer</a> for <a href="/wiki/General-purpose_input/output" title="General-purpose input/output">general-purpose input/output</a>) needs to be declared a net type such as "wire" so SystemVerilog can resolve the final value. </p><p><b><a href="/wiki/Multidimensional_array" class="mw-redirect" title="Multidimensional array">Multidimensional</a> <a href="/wiki/Packed_array" class="mw-redirect" title="Packed array">packed arrays</a></b> unify and extend Verilog's notion of "registers" and "memories": </p> <div class="mw-highlight mw-highlight-lang-systemverilog mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">logic</span><span class="w"> </span><span class="p">[</span><span class="mi">1</span><span class="o">:</span><span class="mi">0</span><span class="p">][</span><span class="mi">2</span><span class="o">:</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="n">my_pack</span><span class="p">[</span><span class="mi">32</span><span class="p">];</span> </pre></div> <p>Classical Verilog permitted only one dimension to be declared to the left of the variable name. SystemVerilog permits any number of such "packed" dimensions. A variable of packed array type maps 1:1 onto an integer arithmetic quantity. In the example above, each element of <code>my_pack</code> may be used in expressions as a six-bit integer. The dimensions to the right of the name (32 in this case) are referred to as "unpacked" dimensions. As in <a href="/wiki/Verilog_2001" class="mw-redirect" title="Verilog 2001">Verilog-2001</a>, any number of unpacked dimensions is permitted. </p><p><b><a href="/wiki/Enumerated_type" title="Enumerated type">Enumerated data types</a></b> (<code>enums</code>) allow numeric quantities to be assigned meaningful names. Variables declared to be of enumerated type cannot be assigned to variables of a different enumerated type without <a href="/wiki/Type_conversion" title="Type conversion">casting</a>. This is not true of parameters, which were the preferred implementation technique for enumerated quantities in Verilog-2005: </p> <div class="mw-highlight mw-highlight-lang-systemverilog mw-content-ltr" dir="ltr"><pre><span></span><span class="k">typedef</span><span class="w"> </span><span class="k">enum</span><span class="w"> </span><span class="kt">logic</span><span class="w"> </span><span class="p">[</span><span class="mi">2</span><span class="o">:</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">RED</span><span class="p">,</span><span class="w"> </span><span class="n">GREEN</span><span class="p">,</span><span class="w"> </span><span class="n">BLUE</span><span class="p">,</span><span class="w"> </span><span class="n">CYAN</span><span class="p">,</span><span class="w"> </span><span class="n">MAGENTA</span><span class="p">,</span><span class="w"> </span><span class="n">YELLOW</span> <span class="p">}</span><span class="w"> </span><span class="n">color_t</span><span class="p">;</span> <span class="n">color_t</span><span class="w"> </span><span class="n">my_color</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">GREEN</span><span class="p">;</span> <span class="k">initial</span><span class="w"> </span><span class="p">$</span><span class="n">display</span><span class="p">(</span><span class="s">&quot;The color is %s&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">my_color</span><span class="p">.</span><span class="n">name</span><span class="p">());</span> </pre></div> <p>As shown above, the designer can specify an underlying arithmetic type (<code>logic [2:0]</code> in this case) which is used to represent the enumeration value. The meta-values X and Z can be used here, possibly to represent illegal states. The built-in function <code>name()</code> returns an ASCII string for the current enumerated value, which is useful in validation and testing. </p><p><b>New integer types</b>: SystemVerilog defines <code>byte</code>, <code>shortint</code>, <code>int</code> and <code>longint</code> as two-state signed integral types having 8, 16, 32, and 64 bits respectively. A <code>bit</code> type is a variable-width two-state type that works much like <code>logic</code>. Two-state types lack the <a href="/wiki/Don%27t-care_term" title="Don&#39;t-care term">X</a> and <a href="/wiki/High_impedance" title="High impedance">Z</a> metavalues of classical Verilog; working with these types may result in faster simulation. </p><p><b><a href="/wiki/Struct" class="mw-redirect" title="Struct">Structures</a></b> and <b><a href="/wiki/Union_type" title="Union type">unions</a></b> work much like they do in the <a href="/wiki/C_(programming_language)" title="C (programming language)">C programming language</a>. SystemVerilog enhancements include the <b>packed</b> attribute and the <b>tagged</b> attribute. The <code>tagged</code> attribute allows runtime tracking of which member(s) of a union are currently in use. The <code>packed</code> attribute causes the structure or union to be mapped 1:1 onto a packed array of bits. The contents of <code>struct</code> data types occupy a continuous block of memory with no gaps, similar to <a href="/wiki/Bit_field" title="Bit field">bitfields</a> in C and C++: </p> <div class="mw-highlight mw-highlight-lang-systemverilog mw-content-ltr" dir="ltr"><pre><span></span><span class="k">typedef</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="k">packed</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="kt">bit</span><span class="w"> </span><span class="p">[</span><span class="mi">10</span><span class="o">:</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="n">expo</span><span class="p">;</span> <span class="w"> </span><span class="kt">bit</span><span class="w"> </span><span class="n">sign</span><span class="p">;</span> <span class="w"> </span><span class="kt">bit</span><span class="w"> </span><span class="p">[</span><span class="mi">51</span><span class="o">:</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="n">mant</span><span class="p">;</span> <span class="p">}</span><span class="w"> </span><span class="n">FP</span><span class="p">;</span> <span class="n">FP</span><span class="w"> </span><span class="n">zero</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mb">64&#39;b0</span><span class="p">;</span> </pre></div><p>As shown in this example, SystemVerilog also supports <a href="/wiki/Typedef" title="Typedef">typedefs</a>, as in C and C++. </p><div class="mw-heading mw-heading3"><h3 id="Procedural_blocks">Procedural blocks</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=SystemVerilog&amp;action=edit&amp;section=5" title="Edit section: Procedural blocks"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>SystemVerilog introduces three new procedural blocks intended to model <a href="/wiki/Electronic_hardware" title="Electronic hardware">hardware</a>: <code>always_comb</code> (to model <a href="/wiki/Combinational_logic" title="Combinational logic">combinational logic</a>), <code>always_ff</code> (for <a href="/wiki/Flip-flop_(electronics)" title="Flip-flop (electronics)">flip-flops</a>), and <code>always_latch</code> (for <a href="/wiki/Latch_(electronic)" class="mw-redirect" title="Latch (electronic)">latches</a>). Whereas Verilog used a single, general-purpose <code>always</code> block to model different types of hardware structures, each of SystemVerilog's new blocks is intended to model a specific type of hardware, by imposing semantic restrictions to ensure that hardware described by the blocks matches the intended usage of the model. An HDL compiler or verification program can take extra steps to ensure that only the intended type of behavior occurs. </p><p>An <code>always_comb</code> block models <a href="/wiki/Combinational_logic" title="Combinational logic">combinational logic</a>. The simulator infers the sensitivity list to be all variables from the contained statements: </p> <div class="mw-highlight mw-highlight-lang-systemverilog mw-content-ltr" dir="ltr"><pre><span></span><span class="k">always_comb</span><span class="w"> </span><span class="k">begin</span> <span class="w"> </span><span class="n">tmp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">4</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">c</span><span class="p">;</span> <span class="w"> </span><span class="n">no_root</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="n">tmp</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span> <span class="k">end</span> </pre></div> <p>An <code>always_latch</code> block models <a href="/wiki/Flip-flop_(electronics)#Gated_D_latch" title="Flip-flop (electronics)">level-sensitive</a> latches. Again, the sensitivity list is inferred from the code: </p> <div class="mw-highlight mw-highlight-lang-systemverilog mw-content-ltr" dir="ltr"><pre><span></span><span class="k">always_latch</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">en</span><span class="p">)</span><span class="w"> </span><span class="n">q</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="n">d</span><span class="p">;</span> </pre></div> <p>An <code>always_ff</code> block models <a href="/wiki/Synchronous_logic" class="mw-redirect" title="Synchronous logic">synchronous logic</a> (especially <a href="/wiki/Edge-triggered_flip-flop" class="mw-redirect" title="Edge-triggered flip-flop">edge-sensitive</a> <a href="/wiki/Sequential_logic" title="Sequential logic">sequential logic</a>): </p> <div class="mw-highlight mw-highlight-lang-systemverilog mw-content-ltr" dir="ltr"><pre><span></span><span class="k">always_ff</span><span class="w"> </span><span class="p">@(</span><span class="k">posedge</span><span class="w"> </span><span class="n">clk</span><span class="p">)</span> <span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span> </pre></div> <p><a href="/wiki/Electronic_design_automation" title="Electronic design automation">Electronic design automation</a> (EDA) tools can verify the design's intent by checking that the hardware model does not violate any block usage semantics. For example, the new blocks restrict assignment to a variable by allowing only one source, whereas Verilog's <code>always</code> block permitted assignment from multiple procedural sources. </p> <div class="mw-heading mw-heading3"><h3 id="Interfaces">Interfaces</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=SystemVerilog&amp;action=edit&amp;section=6" title="Edit section: Interfaces"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>For small designs, the Verilog <i>port</i> compactly describes a module's connectivity with the surrounding environment. But major blocks within a large design hierarchy typically possess port counts in the thousands. SystemVerilog introduces concept of <a href="/wiki/Interface_(computing)" title="Interface (computing)">interfaces</a> to both reduce the redundancy of <a href="/wiki/Hardware_interface" class="mw-redirect" title="Hardware interface">port-name declarations</a> between connected modules, as well as group and <a href="/wiki/Abstract_type" title="Abstract type">abstract</a> related signals into a user-declared bundle. An additional concept is <i>modport</i>, which shows the direction of logic connections. </p><p>Example: </p> <div class="mw-highlight mw-highlight-lang-systemverilog mw-content-ltr" dir="ltr"><pre><span></span><span class="k">interface</span><span class="w"> </span><span class="n">intf</span><span class="p">;</span> <span class="w"> </span><span class="kt">logic</span><span class="w"> </span><span class="n">a</span><span class="p">;</span> <span class="w"> </span><span class="kt">logic</span><span class="w"> </span><span class="n">b</span><span class="p">;</span> <span class="w"> </span><span class="k">modport</span><span class="w"> </span><span class="n">in</span><span class="w"> </span><span class="p">(</span><span class="k">input</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="k">output</span><span class="w"> </span><span class="n">b</span><span class="p">);</span> <span class="w"> </span><span class="k">modport</span><span class="w"> </span><span class="n">out</span><span class="w"> </span><span class="p">(</span><span class="k">input</span><span class="w"> </span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="k">output</span><span class="w"> </span><span class="n">a</span><span class="p">);</span><span class="w"> </span> <span class="k">endinterface</span> <span class="k">module</span><span class="w"> </span><span class="n">top</span><span class="p">;</span> <span class="w"> </span><span class="n">intf</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="p">();</span> <span class="w"> </span><span class="n">u_a</span><span class="w"> </span><span class="n">m1</span><span class="w"> </span><span class="p">(.</span><span class="n">i1</span><span class="p">(</span><span class="n">i</span><span class="p">.</span><span class="n">in</span><span class="p">));</span> <span class="w"> </span><span class="n">u_b</span><span class="w"> </span><span class="n">m2</span><span class="w"> </span><span class="p">(.</span><span class="n">i2</span><span class="p">(</span><span class="n">i</span><span class="p">.</span><span class="n">out</span><span class="p">));</span> <span class="k">endmodule</span> <span class="k">module</span><span class="w"> </span><span class="n">u_a</span><span class="w"> </span><span class="p">(</span><span class="n">intf</span><span class="p">.</span><span class="n">in</span><span class="w"> </span><span class="n">i1</span><span class="p">);</span> <span class="k">endmodule</span> <span class="k">module</span><span class="w"> </span><span class="n">u_b</span><span class="w"> </span><span class="p">(</span><span class="n">intf</span><span class="p">.</span><span class="n">out</span><span class="w"> </span><span class="n">i2</span><span class="p">);</span> <span class="k">endmodule</span> </pre></div> <div class="mw-heading mw-heading2"><h2 id="Verification_features">Verification features</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=SystemVerilog&amp;action=edit&amp;section=7" title="Edit section: Verification features"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The following verification features are typically not synthesizable, meaning they cannot be implemented in hardware based on HDL code. Instead, they assist in the creation of extensible, flexible <a href="/wiki/Test_bench" title="Test bench">test benches</a>. </p> <div class="mw-heading mw-heading3"><h3 id="New_data_types_2">New data types</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=SystemVerilog&amp;action=edit&amp;section=8" title="Edit section: New data types"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The <code>string</code> data type represents a variable-length text <a href="/wiki/String_(computer_science)" title="String (computer science)">string</a>. For example: </p> <div class="mw-highlight mw-highlight-lang-systemverilog mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">string</span><span class="w"> </span><span class="n">s1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;Hello&quot;</span><span class="p">;</span> <span class="kt">string</span><span class="w"> </span><span class="n">s2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;world&quot;</span><span class="p">;</span> <span class="kt">string</span><span class="w"> </span><span class="n">p</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;.?!&quot;</span><span class="p">;</span> <span class="kt">string</span><span class="w"> </span><span class="n">s3</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="n">s1</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;, &quot;</span><span class="p">,</span><span class="w"> </span><span class="n">s2</span><span class="p">,</span><span class="w"> </span><span class="n">p</span><span class="p">[</span><span class="mi">2</span><span class="p">]};</span><span class="w"> </span><span class="c1">// string concatenation</span> <span class="p">$</span><span class="n">display</span><span class="p">(</span><span class="s">&quot;[%d] %s&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">s3</span><span class="p">.</span><span class="n">len</span><span class="p">(),</span><span class="w"> </span><span class="n">s3</span><span class="p">);</span><span class="w"> </span><span class="c1">// simulation will print: &quot;[13] Hello, world!&quot;</span> </pre></div> <p>In addition to the static array used in design, SystemVerilog offers <a href="/wiki/Dynamic_array" title="Dynamic array">dynamic arrays</a>, <a href="/wiki/Associative_arrays" class="mw-redirect" title="Associative arrays">associative arrays</a> and <a href="/wiki/Queue_(abstract_data_type)" title="Queue (abstract data type)">queues</a>: </p> <div class="mw-highlight mw-highlight-lang-systemverilog mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">int</span><span class="w"> </span><span class="n">cmdline_elements</span><span class="p">;</span><span class="w"> </span><span class="c1">// # elements for dynamic array</span> <span class="kt">int</span><span class="w"> </span><span class="n">da</span><span class="p">[];</span><span class="w"> </span><span class="c1">// dynamic array</span> <span class="kt">int</span><span class="w"> </span><span class="n">ai</span><span class="p">[</span><span class="kt">int</span><span class="p">];</span><span class="w"> </span><span class="c1">// associative array, indexed by int</span> <span class="kt">int</span><span class="w"> </span><span class="n">as</span><span class="p">[</span><span class="kt">string</span><span class="p">];</span><span class="w"> </span><span class="c1">// associative array, indexed by string</span> <span class="kt">int</span><span class="w"> </span><span class="n">qa</span><span class="p">[$];</span><span class="w"> </span><span class="c1">// queue, indexed as an array, or by built-in methods</span> <span class="k">initial</span><span class="w"> </span><span class="k">begin</span> <span class="w"> </span><span class="n">cmdline_elements</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">16</span><span class="p">;</span> <span class="w"> </span><span class="n">da</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="p">[</span><span class="w"> </span><span class="n">cmdline_elements</span><span class="w"> </span><span class="p">];</span><span class="w"> </span><span class="c1">// Allocate array with 16 elements</span> <span class="k">end</span> </pre></div> <p>A dynamic array works much like an unpacked array, but offers the advantage of being <a href="/wiki/Dynamically-allocated_memory" class="mw-redirect" title="Dynamically-allocated memory">dynamically allocated</a> at <a href="/wiki/Run_time_(program_lifecycle_phase)" class="mw-redirect" title="Run time (program lifecycle phase)">runtime</a> (as shown above.) Whereas a packed array's size must be known at compile time (from a constant or expression of constants), the dynamic array size can be initialized from another runtime variable, allowing the array to be sized and resize arbitrarily as needed. </p><p>An associative array can be thought of as a <a href="/wiki/Binary_search_tree" title="Binary search tree">binary search tree</a> with a <a href="/wiki/Generic_programming" title="Generic programming">user-specified</a> <a href="/wiki/Attribute%E2%80%93value_pair" class="mw-redirect" title="Attribute–value pair">key type and data type</a>. The key implies an <a href="/wiki/Strict_weak_order" class="mw-redirect" title="Strict weak order">ordering</a>; the elements of an associative array can be read out in lexicographic order. Finally, a queue provides much of the functionality of the <a href="/wiki/Standard_Template_Library" title="Standard Template Library">C++ STL</a> <a href="/wiki/Double-ended_queue" title="Double-ended queue">deque</a> type: elements can be added and removed from either end efficiently. These primitives allow the creation of complex data structures required for <a href="/wiki/Scoreboarding" title="Scoreboarding">scoreboarding</a> a large design. </p> <div class="mw-heading mw-heading3"><h3 id="Classes">Classes</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=SystemVerilog&amp;action=edit&amp;section=9" title="Edit section: Classes"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>SystemVerilog provides an <a href="/wiki/Object-oriented_programming" title="Object-oriented programming">object-oriented programming</a> model. </p><p>In SystemVerilog, classes support a <a href="/wiki/Single_inheritance" class="mw-redirect" title="Single inheritance">single-inheritance</a> model, but may implement functionality similar to multiple-inheritance through the use of so-called "interface classes" (identical in concept to the <code>interface</code> feature of Java). Classes <a href="/wiki/Generic_programming" title="Generic programming">can be parameterized by type</a>, providing the basic function of <a href="/wiki/Template_(C%2B%2B)" title="Template (C++)">C++ templates</a>. However, <a href="/wiki/Template_specialization" class="mw-redirect" title="Template specialization">template specialization</a> and <a href="/wiki/Function_template" class="mw-redirect" title="Function template">function templates</a> are not supported. </p><p>SystemVerilog's <a href="/wiki/Polymorphism_(computer_science)" title="Polymorphism (computer science)">polymorphism</a> features are similar to those of C++: the programmer may specifically write a <code>virtual</code> function to have a derived class gain control of the function. See <a href="/wiki/Virtual_function" title="Virtual function">virtual function</a> for further information. </p><p><a href="/wiki/Encapsulation_(computer_programming)" title="Encapsulation (computer programming)">Encapsulation</a> and <a href="/wiki/Information_hiding" title="Information hiding">data hiding</a> is accomplished using the <code>local</code> and <code>protected</code> keywords, which must be applied to any item that is to be hidden. By default, all class properties are <a href="/wiki/Public_member" class="mw-redirect" title="Public member">public</a>. </p><p>Class instances are dynamically created with the <code>new</code> keyword. A <a href="/wiki/Constructor_(object-oriented_programming)" title="Constructor (object-oriented programming)">constructor</a> denoted by <code>function new</code> can be defined. SystemVerilog has automatic <a href="/wiki/Garbage_collection_(computer_science)" title="Garbage collection (computer science)">garbage collection</a>, so there is no language facility to explicitly destroy instances created by the <a href="/wiki/Operator_new" class="mw-redirect" title="Operator new">new operator</a>. </p><p>Example: </p> <div class="mw-highlight mw-highlight-lang-systemverilog mw-content-ltr" dir="ltr"><pre><span></span><span class="k">virtual</span><span class="w"> </span><span class="kd">class</span><span class="w"> </span><span class="nc">Memory</span><span class="p">;</span> <span class="w"> </span><span class="k">virtual</span><span class="w"> </span><span class="k">function</span><span class="w"> </span><span class="kt">bit</span><span class="w"> </span><span class="p">[</span><span class="mi">31</span><span class="o">:</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="n">read</span><span class="p">(</span><span class="kt">bit</span><span class="w"> </span><span class="p">[</span><span class="mi">31</span><span class="o">:</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="n">addr</span><span class="p">);</span><span class="w"> </span><span class="k">endfunction</span> <span class="w"> </span><span class="k">virtual</span><span class="w"> </span><span class="k">function</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="n">write</span><span class="p">(</span><span class="kt">bit</span><span class="w"> </span><span class="p">[</span><span class="mi">31</span><span class="o">:</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="n">addr</span><span class="p">,</span><span class="w"> </span><span class="kt">bit</span><span class="w"> </span><span class="p">[</span><span class="mi">31</span><span class="o">:</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="n">data</span><span class="p">);</span><span class="w"> </span><span class="k">endfunction</span> <span class="kd">endclass</span> <span class="kd">class</span><span class="w"> </span><span class="nc">SRAM</span><span class="w"> </span><span class="p">#(</span><span class="k">parameter</span><span class="w"> </span><span class="n">AWIDTH</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span><span class="w"> </span><span class="kd">extends</span><span class="w"> </span><span class="nc">Memory</span><span class="p">;</span> <span class="w"> </span><span class="kt">bit</span><span class="w"> </span><span class="p">[</span><span class="mi">31</span><span class="o">:</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="n">mem</span><span class="w"> </span><span class="p">[</span><span class="mi">1</span><span class="o">&lt;&lt;</span><span class="n">AWIDTH</span><span class="p">];</span> <span class="w"> </span><span class="k">virtual</span><span class="w"> </span><span class="k">function</span><span class="w"> </span><span class="kt">bit</span><span class="w"> </span><span class="p">[</span><span class="mi">31</span><span class="o">:</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="n">read</span><span class="p">(</span><span class="kt">bit</span><span class="w"> </span><span class="p">[</span><span class="mi">31</span><span class="o">:</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="n">addr</span><span class="p">);</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">mem</span><span class="p">[</span><span class="n">addr</span><span class="p">];</span> <span class="w"> </span><span class="k">endfunction</span> <span class="w"> </span><span class="k">virtual</span><span class="w"> </span><span class="k">function</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="n">write</span><span class="p">(</span><span class="kt">bit</span><span class="w"> </span><span class="p">[</span><span class="mi">31</span><span class="o">:</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="n">addr</span><span class="p">,</span><span class="w"> </span><span class="kt">bit</span><span class="w"> </span><span class="p">[</span><span class="mi">31</span><span class="o">:</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="n">data</span><span class="p">);</span> <span class="w"> </span><span class="n">mem</span><span class="p">[</span><span class="n">addr</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">data</span><span class="p">;</span> <span class="w"> </span><span class="k">endfunction</span> <span class="kd">endclass</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Constrained_random_generation">Constrained random generation</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=SystemVerilog&amp;action=edit&amp;section=10" title="Edit section: Constrained random generation"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Integer quantities, defined either in a class definition or as stand-alone variables in some lexical scope, can be <a href="/wiki/Random_number_generation" title="Random number generation">assigned random values</a> based on a set of constraints. This feature is useful for creating <a href="/wiki/Random_testing" title="Random testing">randomized scenarios for verification</a>. </p><p>Within class definitions, the <code>rand</code> and <code>randc</code> modifiers signal variables that are to undergo randomization. <code>randc</code> specifies <a href="/wiki/Permutation" title="Permutation">permutation</a>-based randomization, where a variable will take on all possible values once before any value is repeated. Variables without modifiers are not randomized. </p> <div class="mw-highlight mw-highlight-lang-systemverilog mw-content-ltr" dir="ltr"><pre><span></span><span class="kd">class</span><span class="w"> </span><span class="nc">eth_frame</span><span class="p">;</span> <span class="w"> </span><span class="k">rand</span><span class="w"> </span><span class="kt">bit</span><span class="w"> </span><span class="p">[</span><span class="mi">47</span><span class="o">:</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="n">dest</span><span class="p">;</span> <span class="w"> </span><span class="k">rand</span><span class="w"> </span><span class="kt">bit</span><span class="w"> </span><span class="p">[</span><span class="mi">47</span><span class="o">:</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="n">src</span><span class="p">;</span> <span class="w"> </span><span class="k">rand</span><span class="w"> </span><span class="kt">bit</span><span class="w"> </span><span class="p">[</span><span class="mi">15</span><span class="o">:</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="n">f_type</span><span class="p">;</span> <span class="w"> </span><span class="k">rand</span><span class="w"> </span><span class="kt">byte</span><span class="w"> </span><span class="n">payload</span><span class="p">[];</span> <span class="w"> </span><span class="kt">bit</span><span class="w"> </span><span class="p">[</span><span class="mi">31</span><span class="o">:</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="n">fcs</span><span class="p">;</span> <span class="w"> </span><span class="k">rand</span><span class="w"> </span><span class="kt">bit</span><span class="w"> </span><span class="p">[</span><span class="mi">31</span><span class="o">:</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="n">fcs_corrupt</span><span class="p">;</span> <span class="w"> </span><span class="k">constraint</span><span class="w"> </span><span class="n">basic</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">payload</span><span class="p">.</span><span class="n">size</span><span class="w"> </span><span class="ow">inside</span><span class="w"> </span><span class="p">{[</span><span class="mi">46</span><span class="o">:</span><span class="mi">1500</span><span class="p">]};</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="k">constraint</span><span class="w"> </span><span class="n">good_fr</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">fcs_corrupt</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="kd">endclass</span> </pre></div> <p>In this example, the <code>fcs</code> field is not randomized; in practice it will be computed with a CRC generator, and the <code>fcs_corrupt</code> field used to corrupt it to inject FCS errors. The two constraints shown are applicable to conforming <a href="/wiki/Ethernet_frame" title="Ethernet frame">Ethernet frames</a>. Constraints may be selectively enabled; this feature would be required in the example above to generate corrupt frames. Constraints may be arbitrarily complex, involving interrelationships among variables, implications, and iteration. The SystemVerilog <a href="/wiki/Constraint_solver" class="mw-redirect" title="Constraint solver">constraint solver</a> is required to find a solution if one exists, but makes no guarantees as to the time it will require to do so as this is in general an <a href="/wiki/NP-hard" class="mw-redirect" title="NP-hard">NP-hard</a> problem (<a href="/wiki/Boolean_satisfiability_problem" title="Boolean satisfiability problem">boolean satisfiability</a>). </p> <div class="mw-heading mw-heading4"><h4 id="Randomization_methods">Randomization methods</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=SystemVerilog&amp;action=edit&amp;section=11" title="Edit section: Randomization methods"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>In each SystemVerilog class there are 3 predefined methods for randomization: pre_randomize, randomize and post_randomize. The randomize method is called by the user for randomization of the class variables. The pre_randomize method is called by the randomize method before the randomization and the post_randomize method is called by the randomize method after randomization. </p> <div class="mw-highlight mw-highlight-lang-systemverilog mw-content-ltr" dir="ltr"><pre><span></span><span class="kd">class</span><span class="w"> </span><span class="nc">eth_frame</span><span class="p">;</span> <span class="w"> </span><span class="k">rand</span><span class="w"> </span><span class="kt">bit</span><span class="w"> </span><span class="p">[</span><span class="mi">47</span><span class="o">:</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="n">dest</span><span class="p">;</span> <span class="w"> </span><span class="k">rand</span><span class="w"> </span><span class="kt">bit</span><span class="w"> </span><span class="p">[</span><span class="mi">47</span><span class="o">:</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="n">src</span><span class="p">;</span> <span class="w"> </span><span class="k">rand</span><span class="w"> </span><span class="kt">bit</span><span class="w"> </span><span class="p">[</span><span class="mi">15</span><span class="o">:</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="n">f_type</span><span class="p">;</span> <span class="w"> </span><span class="k">rand</span><span class="w"> </span><span class="kt">byte</span><span class="w"> </span><span class="n">payload</span><span class="p">[];</span> <span class="w"> </span><span class="kt">bit</span><span class="w"> </span><span class="p">[</span><span class="mi">31</span><span class="o">:</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="n">fcs</span><span class="p">;</span> <span class="w"> </span><span class="k">rand</span><span class="w"> </span><span class="kt">bit</span><span class="w"> </span><span class="n">corrupted_frame</span><span class="p">;</span> <span class="w"> </span><span class="k">constraint</span><span class="w"> </span><span class="n">basic</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">payload</span><span class="p">.</span><span class="n">size</span><span class="w"> </span><span class="ow">inside</span><span class="w"> </span><span class="p">{[</span><span class="mi">46</span><span class="o">:</span><span class="mi">1500</span><span class="p">]};</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span> <span class="w"> </span><span class="k">function</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="n">post_randomize</span><span class="p">()</span> <span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="n">calculate_fcs</span><span class="p">();</span><span class="w"> </span><span class="c1">// update the fcs field according to the randomized frame</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">corrupted_frame</span><span class="p">)</span><span class="w"> </span><span class="c1">// if this frame should be corrupted </span> <span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="n">corrupt_fcs</span><span class="p">();</span><span class="w"> </span><span class="c1">// corrupt the fcs</span> <span class="w"> </span><span class="k">endfunction</span> <span class="kd">endclass</span> </pre></div> <div class="mw-heading mw-heading4"><h4 id="Controlling_constraints">Controlling constraints</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=SystemVerilog&amp;action=edit&amp;section=12" title="Edit section: Controlling constraints"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The constraint_mode() and the random_mode() methods are used to control the randomization. constraint_mode() is used to turn a specific constraint on and off and the random_mode is used to turn a randomization of a specific variable on or off. The below code describes and procedurally tests an <a href="/wiki/Ethernet_frame" title="Ethernet frame">Ethernet frame</a>: </p> <div class="mw-highlight mw-highlight-lang-systemverilog mw-content-ltr" dir="ltr"><pre><span></span><span class="kd">class</span><span class="w"> </span><span class="nc">eth_frame</span><span class="p">;</span> <span class="w"> </span><span class="k">rand</span><span class="w"> </span><span class="kt">bit</span><span class="w"> </span><span class="p">[</span><span class="mi">47</span><span class="o">:</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="n">dest</span><span class="p">;</span> <span class="w"> </span><span class="k">rand</span><span class="w"> </span><span class="kt">bit</span><span class="w"> </span><span class="p">[</span><span class="mi">47</span><span class="o">:</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="n">src</span><span class="p">;</span> <span class="w"> </span><span class="k">rand</span><span class="w"> </span><span class="kt">bit</span><span class="w"> </span><span class="p">[</span><span class="mi">15</span><span class="o">:</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="n">f_type</span><span class="p">;</span> <span class="w"> </span><span class="k">rand</span><span class="w"> </span><span class="kt">byte</span><span class="w"> </span><span class="n">payload</span><span class="p">[];</span> <span class="w"> </span><span class="kt">bit</span><span class="w"> </span><span class="p">[</span><span class="mi">31</span><span class="o">:</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="n">fcs</span><span class="p">;</span> <span class="w"> </span><span class="k">rand</span><span class="w"> </span><span class="kt">bit</span><span class="w"> </span><span class="n">corrupted_frame</span><span class="p">;</span> <span class="w"> </span><span class="k">constraint</span><span class="w"> </span><span class="n">basic</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">payload</span><span class="p">.</span><span class="n">size</span><span class="w"> </span><span class="ow">inside</span><span class="w"> </span><span class="p">{[</span><span class="mi">46</span><span class="o">:</span><span class="mi">1500</span><span class="p">]};</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span> <span class="w"> </span><span class="k">constraint</span><span class="w"> </span><span class="n">one_src_cst</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">src</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mh">48&#39;h1f00</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="k">constraint</span><span class="w"> </span><span class="n">dist_to_fcs</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">fcs</span><span class="w"> </span><span class="ow">dist</span><span class="w"> </span><span class="p">{</span><span class="mi">0</span><span class="o">:/</span><span class="mi">30</span><span class="p">,[</span><span class="mi">1</span><span class="o">:</span><span class="mi">2500</span><span class="p">]</span><span class="o">:/</span><span class="mi">50</span><span class="p">};</span><span class="w"> </span><span class="c1">// 30, and 50 are the weights (30/80 or 50/80, in this example) </span> <span class="w"> </span><span class="p">}</span> <span class="kd">endclass</span> <span class="p">.</span> <span class="p">.</span> <span class="p">.</span> <span class="n">eth_frame</span><span class="w"> </span><span class="n">my_frame</span><span class="p">;</span> <span class="n">my_frame</span><span class="p">.</span><span class="n">one_src_cst</span><span class="p">.</span><span class="n">constraint_mode</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span><span class="w"> </span><span class="c1">// the constraint one_src_cst will not be taken into account</span> <span class="n">my_frame</span><span class="p">.</span><span class="n">f_type</span><span class="p">.</span><span class="n">random_mode</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span><span class="w"> </span><span class="c1">// the f_type variable will not be randomized for this frame instance.</span> <span class="n">my_frame</span><span class="p">.</span><span class="n">randomize</span><span class="p">();</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Assertions">Assertions</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=SystemVerilog&amp;action=edit&amp;section=13" title="Edit section: Assertions"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><a href="/wiki/Assertion_(software_development)" title="Assertion (software development)">Assertions</a> are useful for verifying properties of a design that manifest themselves after a specific condition or state is reached. SystemVerilog has its own assertion specification language, similar to <a href="/wiki/Property_Specification_Language" title="Property Specification Language">Property Specification Language</a>. The subset of SystemVerilog language constructs that serves assertion is commonly called SystemVerilog Assertion or SVA.<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">&#91;</span>6<span class="cite-bracket">&#93;</span></a></sup> </p><p>SystemVerilog assertions are built from <b>sequences</b> and <b>properties</b>. Properties are a superset of sequences; any sequence may be used as if it were a property, although this is not typically useful. </p><p>Sequences consist of <a href="/wiki/Boolean_expressions" class="mw-redirect" title="Boolean expressions">boolean expressions</a> augmented with <a href="/wiki/Synchronous_logic" class="mw-redirect" title="Synchronous logic">temporal operators</a>. The simplest temporal operator is the <code>##</code> operator which performs a concatenation:<sup class="noprint Inline-Template" style="margin-left:0.1em; white-space:nowrap;">&#91;<i><a href="/wiki/Wikipedia:Please_clarify" title="Wikipedia:Please clarify"><span title="What is this concatenation? (September 2018)">clarification needed</span></a></i>&#93;</sup> </p> <div class="mw-highlight mw-highlight-lang-systemverilog mw-content-ltr" dir="ltr"><pre><span></span><span class="k">sequence</span><span class="w"> </span><span class="n">S1</span><span class="p">;</span> <span class="w"> </span><span class="p">@(</span><span class="k">posedge</span><span class="w"> </span><span class="n">clk</span><span class="p">)</span><span class="w"> </span><span class="n">req</span><span class="w"> </span><span class="p">##</span><span class="mi">1</span><span class="w"> </span><span class="n">gnt</span><span class="p">;</span> <span class="k">endsequence</span> </pre></div> <p>This sequence matches if the <code>gnt</code> signal goes high one clock cycle after <code>req</code> goes high. Note that all sequence operations are synchronous to a clock. </p><p>Other sequential operators include repetition operators, as well as various conjunctions. These operators allow the designer to express complex relationships among design components. </p><p>An assertion works by continually attempting to evaluate a sequence or property. An assertion fails if the property fails. The sequence above will fail whenever <code>req</code> is low. To accurately express the requirement that <code>gnt</code> follow <code>req</code> a property is required: </p> <div class="mw-highlight mw-highlight-lang-systemverilog mw-content-ltr" dir="ltr"><pre><span></span><span class="k">property</span><span class="w"> </span><span class="n">req_gnt</span><span class="p">;</span> <span class="w"> </span><span class="p">@(</span><span class="k">posedge</span><span class="w"> </span><span class="n">clk</span><span class="p">)</span><span class="w"> </span><span class="n">req</span><span class="w"> </span><span class="o">|=&gt;</span><span class="w"> </span><span class="n">gnt</span><span class="p">;</span> <span class="k">endproperty</span> <span class="nl">assert_req_gnt:</span><span class="w"> </span><span class="k">assert</span><span class="w"> </span><span class="k">property</span><span class="w"> </span><span class="p">(</span><span class="n">req_gnt</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">$</span><span class="n">error</span><span class="p">(</span><span class="s">&quot;req not followed by gnt.&quot;</span><span class="p">);</span> </pre></div> <p>This example shows an <b><a href="/wiki/Material_implication_(logical_connective)" class="mw-redirect" title="Material implication (logical connective)">implication</a></b> operator <code>|=&gt;</code>. The clause to the left of the implication is called the <b><a href="/wiki/Antecedent_(logic)" title="Antecedent (logic)">antecedent</a></b> and the clause to the right is called the <b><a href="/wiki/Consequent" title="Consequent">consequent</a></b>. <a href="/wiki/Interpretation_(logic)" title="Interpretation (logic)">Evaluation</a> of an implication starts through repeated attempts to evaluate the antecedent. <a href="/wiki/Material_implication_(rule_of_inference)" title="Material implication (rule of inference)">When the antecedent succeeds</a>, the consequent is attempted, and the success of the assertion depends on the success of the consequent. In this example, the consequent won't be attempted until <code>req</code> goes high, after which the property will fail if <code>gnt</code> is not high on the following clock. </p><p>In addition to assertions, SystemVerilog supports <a href="/wiki/Presupposition" title="Presupposition">assumptions</a> and coverage of properties. An assumption establishes a condition that a <a href="/wiki/Formal_logic" class="mw-redirect" title="Formal logic">formal logic</a> <a href="/wiki/Automated_theorem_proving" title="Automated theorem proving">proving tool</a> <a href="/wiki/Axiom" title="Axiom">must assume to be true</a>. An assertion specifies a property that must be proven true. In <a href="/wiki/Simulation" title="Simulation">simulation</a>, both assertions and assumptions are verified against test stimuli. Property coverage allows the verification engineer to verify that assertions are accurately monitoring the design.<sup class="noprint Inline-Template" style="margin-left:0.1em; white-space:nowrap;">&#91;<i><a href="/wiki/Wikipedia:Vagueness" title="Wikipedia:Vagueness"><span title="This information is too vague. (September 2018)">vague</span></a></i>&#93;</sup> </p> <div class="mw-heading mw-heading3"><h3 id="Coverage">Coverage</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=SystemVerilog&amp;action=edit&amp;section=14" title="Edit section: Coverage"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><b><a href="/wiki/Test_coverage" class="mw-redirect" title="Test coverage">Coverage</a></b> as applied to hardware verification languages refers to the collection of statistics based on sampling events within the simulation. Coverage is used to determine when the <a href="/wiki/Device_under_test" title="Device under test">device under test</a> (DUT) has been exposed to a sufficient variety of stimuli that there is a high confidence that the DUT is functioning correctly. Note that this differs from <a href="/wiki/Code_coverage" title="Code coverage">code coverage</a> which instruments the design code to ensure that all lines of code in the design have been executed. Functional coverage ensures that all desired <a href="/wiki/Corner_case" title="Corner case">corner</a> and <a href="/wiki/Edge_case" title="Edge case">edge cases</a> in the <a href="/wiki/Design_space_verification" title="Design space verification">design space</a> have been <a href="/wiki/Design_space_exploration" title="Design space exploration">explored</a>. </p><p>A SystemVerilog coverage group creates a database of "bins" that store a <a href="/wiki/Histogram" title="Histogram">histogram</a> of values of an associated variable. Cross-coverage can also be defined, which creates a histogram representing the <a href="/wiki/Cartesian_product" title="Cartesian product">Cartesian product</a> of multiple variables. </p><p>A <a href="/wiki/Sampling_(statistics)" title="Sampling (statistics)">sampling</a> event controls when a sample is taken. The <a href="/wiki/Sampling_(signal_processing)" title="Sampling (signal processing)">sampling</a> event can be a Verilog event, the entry or exit of a block of code, or a call to the <code>sample</code> method of the coverage group. Care is required to ensure that data are sampled only when meaningful. </p><p>For example: </p> <div class="mw-highlight mw-highlight-lang-systemverilog mw-content-ltr" dir="ltr"><pre><span></span><span class="kd">class</span><span class="w"> </span><span class="nc">eth_frame</span><span class="p">;</span> <span class="w"> </span><span class="c1">// Definitions as above</span> <span class="w"> </span><span class="k">covergroup</span><span class="w"> </span><span class="n">cov</span><span class="p">;</span> <span class="w"> </span><span class="k">coverpoint</span><span class="w"> </span><span class="n">dest</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">bins</span><span class="w"> </span><span class="n">bcast</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="mh">48&#39;hFFFFFFFFFFFF</span><span class="p">};</span> <span class="w"> </span><span class="k">bins</span><span class="w"> </span><span class="n">ucast</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">default</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="k">coverpoint</span><span class="w"> </span><span class="n">f_type</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">bins</span><span class="w"> </span><span class="n">length</span><span class="p">[</span><span class="mi">16</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="p">[</span><span class="mi">0</span><span class="o">:</span><span class="mi">1535</span><span class="p">]</span><span class="w"> </span><span class="p">};</span> <span class="w"> </span><span class="k">bins</span><span class="w"> </span><span class="n">typed</span><span class="p">[</span><span class="mi">16</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="p">[</span><span class="mi">1536</span><span class="o">:</span><span class="mi">32767</span><span class="p">]</span><span class="w"> </span><span class="p">};</span> <span class="w"> </span><span class="k">bins</span><span class="w"> </span><span class="n">other</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">default</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="nl">psize:</span><span class="w"> </span><span class="k">coverpoint</span><span class="w"> </span><span class="n">payload</span><span class="p">.</span><span class="n">size</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">bins</span><span class="w"> </span><span class="n">size</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="mi">46</span><span class="p">,</span><span class="w"> </span><span class="p">[</span><span class="mi">47</span><span class="o">:</span><span class="mi">63</span><span class="p">],</span><span class="w"> </span><span class="mi">64</span><span class="p">,</span><span class="w"> </span><span class="p">[</span><span class="mi">65</span><span class="o">:</span><span class="mi">511</span><span class="p">],</span><span class="w"> </span><span class="p">[</span><span class="mi">512</span><span class="o">:</span><span class="mi">1023</span><span class="p">],</span><span class="w"> </span><span class="p">[</span><span class="mi">1024</span><span class="o">:</span><span class="mi">1499</span><span class="p">],</span><span class="w"> </span><span class="mi">1500</span><span class="w"> </span><span class="p">};</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="nl">sz_x_t:</span><span class="w"> </span><span class="k">cross</span><span class="w"> </span><span class="n">f_type</span><span class="p">,</span><span class="w"> </span><span class="n">psize</span><span class="p">;</span> <span class="w"> </span><span class="k">endgroup</span> <span class="kd">endclass</span> </pre></div> <p>In this example, the verification engineer is interested in the distribution of broadcast and unicast frames, the size/f_type field and the payload size. The ranges in the payload size coverpoint reflect the interesting corner cases, including minimum and maximum size frames. </p> <div class="mw-heading mw-heading3"><h3 id="Synchronization">Synchronization</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=SystemVerilog&amp;action=edit&amp;section=15" title="Edit section: Synchronization"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A complex test environment consists of reusable verification components that must communicate with one another. Verilog's '<a href="/wiki/Event_(computing)" title="Event (computing)">event</a>' primitive allowed different blocks of procedural statements to trigger each other, but enforcing thread <a href="/wiki/Synchronization_(computer_science)" title="Synchronization (computer science)">synchronization</a> was up to the programmer's (clever) usage. SystemVerilog offers two <a href="/wiki/Synchronization_primitive" class="mw-redirect" title="Synchronization primitive">primitives</a> specifically for interthread synchronization: <i><a href="/wiki/Mailbox_(computing)" class="mw-redirect" title="Mailbox (computing)">mailbox</a></i> and <i><a href="/wiki/Semaphore_(programming)" title="Semaphore (programming)">semaphore</a></i>. The mailbox is modeled as a <a href="/wiki/FIFO_(computing_and_electronics)" title="FIFO (computing and electronics)">FIFO</a> message queue. Optionally, the FIFO can be <a href="/wiki/TypeParameter" title="TypeParameter">type-parameterized</a> so that <a href="/wiki/Strong_typing" class="mw-redirect" title="Strong typing">only objects of the specified type</a> may be passed through it. Typically, objects are <a href="/wiki/Instance_(computer_science)" title="Instance (computer science)">class instances</a> representing <i><a href="/wiki/Transaction_processing_system" title="Transaction processing system">transactions</a></i>: elementary operations (for example, sending a frame) that are executed by the verification components. The semaphore is modeled as a <a href="/wiki/Counting_semaphore" class="mw-redirect" title="Counting semaphore">counting semaphore</a>. </p> <div class="mw-heading mw-heading2"><h2 id="General_improvements_to_classical_Verilog">General improvements to classical Verilog</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=SystemVerilog&amp;action=edit&amp;section=16" title="Edit section: General improvements to classical Verilog"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>In addition to the new features above, SystemVerilog enhances the usability of Verilog's existing language features. The following are some of these enhancements: </p> <ul><li>The procedural <a href="/wiki/Assignment_operator" class="mw-redirect" title="Assignment operator">assignment operators</a> (&lt;=, =) can now operate <a href="/wiki/Array_programming" title="Array programming">directly on arrays</a>.</li> <li>Port (inout, input, output) definitions are now expanded to support a wider variety of <a href="/wiki/Data_type" title="Data type">data types</a>: <a href="/wiki/Struct" class="mw-redirect" title="Struct">struct</a>, <a href="/wiki/Enumerated_type" title="Enumerated type">enum</a>, <a href="/wiki/Real_computation" title="Real computation">real</a>, and multi-dimensional types are supported.</li> <li>The <a href="/wiki/For_loop" title="For loop">for loop</a> construct now allows <a href="/wiki/Local_variable" title="Local variable">automatic variable declaration</a> inside the for statement. Loop <a href="/wiki/Control_flow" title="Control flow">flow control</a> is improved by the <a href="/wiki/Control_flow" title="Control flow"><i>continue</i> and <i>break</i> statements</a>.</li> <li>SystemVerilog adds a <a href="/wiki/Do_while_loop" title="Do while loop"><i>do</i>/while loop</a> to the <a href="/wiki/While_loop" title="While loop"><i><u>while</u></i> loop</a> construct.</li> <li><a href="/wiki/Constant_(computer_programming)" title="Constant (computer programming)">Constant variables</a>, i.e. those designated as non-changing during runtime, can be designated by use of <i><a href="/wiki/Const_(computer_programming)" title="Const (computer programming)">const</a></i>.</li> <li><a href="/wiki/Initialization_(programming)" title="Initialization (programming)">Variable initialization</a> can now operate on arrays.</li> <li><a href="/wiki/Increment_and_decrement_operators" title="Increment and decrement operators">Increment and decrement operators</a> (<code>x++</code>, <code>++x</code>, <code>x--</code>, <code>--x</code>) are supported in SystemVerilog, as are other <a href="/wiki/Augmented_assignment" title="Augmented assignment">compound assignment</a> operators (<code>x += a</code>, <code>x -= a</code>, <code>x *= a</code>, <code>x /= a</code>, <code>x&#160;%= a</code>, <code>x &lt;&lt;= a</code>, <code>x &gt;&gt;= a</code>, <code>x &amp;= a</code>, <code>x ^= a</code>, <code>x |= a</code>) as in <a href="/wiki/List_of_C-family_programming_languages" title="List of C-family programming languages">C and descendants</a>.</li> <li>The preprocessor has improved <a href="/wiki/Define_directive" class="mw-redirect" title="Define directive">`define</a> <a href="/wiki/Preprocessor_directive" class="mw-redirect" title="Preprocessor directive">macro</a>-substitution capabilities, specifically substitution within literal-strings (""), as well as <a href="/wiki/Stringification" class="mw-redirect" title="Stringification">concatenation of multiple macro-tokens into a single word</a>.</li> <li>The <a href="/wiki/Fork%E2%80%93join_model" title="Fork–join model">fork/join</a> construct has been expanded with <i>join_none</i> and <i>join_any</i>.</li> <li>Additions to the `timescale directive allow simulation timescale to be controlled more predictably in a large simulation environment, with each <a href="/wiki/Source_file" class="mw-redirect" title="Source file">source file</a> using a local timescale.</li> <li>Task ports can now be declared <i>ref</i>. A reference gives the task body direct access to the source arguments in the caller's scope, known as "<a href="/wiki/Pass_by_reference" class="mw-redirect" title="Pass by reference">pass by reference</a>" in computer programming. Since it is operating on the original variable itself, rather than a copy of the argument's value, the task/function can modify variables (but not nets) in the caller's scope in <a href="/wiki/Real-time_computing" title="Real-time computing">real time</a>. The inout/output port declarations pass variables <a href="/wiki/Pass_by_value" class="mw-redirect" title="Pass by value">by value</a>, and defer updating the caller-scope variable until the moment the task exits.</li> <li>Functions can now be declared <i><a href="/wiki/Void_type" title="Void type">void</a></i>, which means it <a href="/wiki/Return_value" class="mw-redirect" title="Return value">returns</a> no value.</li> <li><a href="/wiki/Parameter_(computer_programming)" title="Parameter (computer programming)">Parameters</a> can be declared any type, including user-defined <a href="/wiki/Typedef" title="Typedef"><i>typedef</i>s</a>.</li></ul> <p>Besides this, SystemVerilog allows convenient <a href="/wiki/Language_interoperability" title="Language interoperability">interface to foreign languages</a> (like C/C++), by <a href="/wiki/SystemVerilog_DPI" title="SystemVerilog DPI">SystemVerilog DPI</a> (Direct Programming Interface). </p> <div class="mw-heading mw-heading2"><h2 id="Verification_and_synthesis_software">Verification and synthesis software</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=SystemVerilog&amp;action=edit&amp;section=17" title="Edit section: Verification and synthesis software"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>In the design verification role, SystemVerilog is widely used in the chip-design industry. The three largest EDA vendors (<a href="/wiki/Cadence_Design_Systems" title="Cadence Design Systems">Cadence Design Systems</a>, <a href="/wiki/Mentor_Graphics" title="Mentor Graphics">Mentor Graphics</a>, <a href="/wiki/Synopsys" title="Synopsys">Synopsys</a>) have incorporated SystemVerilog into their mixed-language <a href="/wiki/HDL_simulator" class="mw-redirect" title="HDL simulator">HDL simulators</a>. Although no simulator can yet claim support for the entire SystemVerilog Language Reference Manual, making testbench <a href="/wiki/Interoperability" title="Interoperability">interoperability</a> a challenge, efforts to promote cross-vendor compatibility are underway.<sup class="noprint Inline-Template" style="white-space:nowrap;">&#91;<i><a href="/wiki/Wikipedia:Manual_of_Style/Dates_and_numbers#Chronological_items" title="Wikipedia:Manual of Style/Dates and numbers"><span title="The time period mentioned near this tag is ambiguous. (September 2018)">when?</span></a></i>&#93;</sup> In 2008, Cadence and Mentor released the Open Verification Methodology, an open-source class-library and usage-framework to facilitate the development of re-usable testbenches and canned verification-IP. Synopsys, which had been the first to publish a SystemVerilog class-library (VMM), subsequently responded by opening its proprietary VMM to the general public. Many third-party providers have announced or already released SystemVerilog verification IP. </p><p>In the <a href="/wiki/Logic_synthesis" title="Logic synthesis">design synthesis</a> role (transformation of a hardware-design description into a gate-<a href="/wiki/Netlist" title="Netlist">netlist</a>), SystemVerilog adoption has been slow. Many design teams use design flows which involve multiple tools from different vendors. Most design teams cannot migrate to SystemVerilog RTL-design until their entire front-end tool suite (<a href="/wiki/Lint_(software)" title="Lint (software)">linters</a>, <a href="/wiki/Formal_verification" title="Formal verification">formal verification</a> and <a href="/wiki/Automatic_test_pattern_generation" title="Automatic test pattern generation">automated test structure generators</a>) support a common language subset.<sup class="noprint Inline-Template" style="white-space:nowrap;">&#91;<i><a href="/wiki/Wikipedia:Manual_of_Style/Dates_and_numbers#Chronological_items" title="Wikipedia:Manual of Style/Dates and numbers"><span title="What&#39;s the state in 2018? (September 2018)">needs update?</span></a></i>&#93;</sup> </p> <div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=SystemVerilog&amp;action=edit&amp;section=18" title="Edit section: See also"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a href="/wiki/List_of_HDL_simulators" title="List of HDL simulators">List of HDL simulators</a> (Search for SV2005)</li> <li><a href="/wiki/Verilog-AMS" title="Verilog-AMS">Verilog-AMS</a></li> <li><a href="/wiki/E_(verification_language)" title="E (verification language)">e (verification language)</a></li> <li><a href="/wiki/SpecC" title="SpecC">SpecC</a></li> <li><a href="/wiki/Accellera" title="Accellera">Accellera</a></li> <li><a href="/wiki/SystemC" title="SystemC">SystemC</a></li> <li><a href="/wiki/SystemRDL" title="SystemRDL">SystemRDL</a></li></ul> <div class="mw-heading mw-heading2"><h2 id="References">References</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=SystemVerilog&amp;action=edit&amp;section=19" title="Edit section: References"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1239543626">.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}</style><div class="reflist"> <div class="mw-references-wrap"><ol class="references"> <li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text">Rich, D. “The evolution of SystemVerilog” IEEE Design and Test of Computers, July/August 2003</span> </li> <li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.eetimes.com/news/design/showArticle.jhtml;?articleID=173601060">IEEE approves SystemVerilog, revision of Verilog</a></span> </li> <li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://standards.ieee.org/ieee/1800/4934/">IEEE 1800-2012</a>, <a href="/wiki/IEEE" class="mw-redirect" title="IEEE">IEEE</a>, 2012</span> </li> <li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://standards.ieee.org/ieee/1800/6700/">IEEE 1800-2017</a>, <a href="/wiki/IEEE" class="mw-redirect" title="IEEE">IEEE</a>, 2017</span> </li> <li id="cite_note-IEEE2023-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-IEEE2023_5-0">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://standards.ieee.org/ieee/1800/7743/">IEEE 1800-2023, IEEE Standard for SystemVerilog--Unified Hardware Design, Specification, and Verification Language</a>, <a href="/wiki/IEEE" class="mw-redirect" title="IEEE">IEEE</a>, 2023</span> </li> <li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.project-veripage.com/sva_1.php">SystemVerilog Assertion: Introduction</a></span> </li> </ol></div></div> <ul><li><style data-mw-deduplicate="TemplateStyles:r1238218222">.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}</style><cite class="citation book cs1"><i>IEEE Standard for SystemVerilog: Unified Hardware Design, Specification and Verification Language</i>. 2005. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FIEEESTD.2005.97972">10.1109/IEEESTD.2005.97972</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/978-0-7381-4810-6" title="Special:BookSources/978-0-7381-4810-6"><bdi>978-0-7381-4810-6</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=book&amp;rft.btitle=IEEE+Standard+for+SystemVerilog%3A+Unified+Hardware+Design%2C+Specification+and+Verification+Language&amp;rft.date=2005&amp;rft_id=info%3Adoi%2F10.1109%2FIEEESTD.2005.97972&amp;rft.isbn=978-0-7381-4810-6&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ASystemVerilog" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation book cs1"><i>IEEE Standard for SystemVerilog--Unified Hardware Design, Specification, and Verification Language</i>. 2009. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FIEEESTD.2009.5354441">10.1109/IEEESTD.2009.5354441</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/978-0-7381-6130-3" title="Special:BookSources/978-0-7381-6130-3"><bdi>978-0-7381-6130-3</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=book&amp;rft.btitle=IEEE+Standard+for+SystemVerilog--Unified+Hardware+Design%2C+Specification%2C+and+Verification+Language&amp;rft.date=2009&amp;rft_id=info%3Adoi%2F10.1109%2FIEEESTD.2009.5354441&amp;rft.isbn=978-0-7381-6130-3&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ASystemVerilog" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation book cs1"><i>IEEE Standard for SystemVerilog--Unified Hardware Design, Specification, and Verification Language</i>. 2013. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FIEEESTD.2013.6469140">10.1109/IEEESTD.2013.6469140</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/978-0-7381-8110-3" title="Special:BookSources/978-0-7381-8110-3"><bdi>978-0-7381-8110-3</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=book&amp;rft.btitle=IEEE+Standard+for+SystemVerilog--Unified+Hardware+Design%2C+Specification%2C+and+Verification+Language&amp;rft.date=2013&amp;rft_id=info%3Adoi%2F10.1109%2FIEEESTD.2013.6469140&amp;rft.isbn=978-0-7381-8110-3&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ASystemVerilog" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation book cs1"><i>IEEE Standard for SystemVerilog--Unified Hardware Design, Specification, and Verification Language</i>. 2017. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FIEEESTD.2018.8299595">10.1109/IEEESTD.2018.8299595</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/978-1-5044-4509-2" title="Special:BookSources/978-1-5044-4509-2"><bdi>978-1-5044-4509-2</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=book&amp;rft.btitle=IEEE+Standard+for+SystemVerilog--Unified+Hardware+Design%2C+Specification%2C+and+Verification+Language&amp;rft.date=2017&amp;rft_id=info%3Adoi%2F10.1109%2FIEEESTD.2018.8299595&amp;rft.isbn=978-1-5044-4509-2&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ASystemVerilog" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFMcGrath2005" class="citation news cs1">McGrath, Dylan (2005-11-09). <a rel="nofollow" class="external text" href="http://www.eetimes.com/news/design/showArticle.jhtml;?articleID=173601060">"IEEE approves SystemVerilog, revision of Verilog"</a>. EE Times<span class="reference-accessdate">. Retrieved <span class="nowrap">2007-01-31</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.atitle=IEEE+approves+SystemVerilog%2C+revision+of+Verilog&amp;rft.date=2005-11-09&amp;rft.aulast=McGrath&amp;rft.aufirst=Dylan&amp;rft_id=http%3A%2F%2Fwww.eetimes.com%2Fnews%2Fdesign%2FshowArticle.jhtml%3B%3FarticleID%3D173601060&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ASystemVerilog" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFPuneet_Kumar2005" class="citation news cs1">Puneet Kumar (2005-11-09). <a rel="nofollow" class="external text" href="http://asicguru.com/System-Verilog-Tutorial/1/3">"System Verilog Tutorial"</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.atitle=System+Verilog+Tutorial&amp;rft.date=2005-11-09&amp;rft.au=Puneet+Kumar&amp;rft_id=http%3A%2F%2Fasicguru.com%2FSystem-Verilog-Tutorial%2F1%2F3&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ASystemVerilog" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFGopi_Krishna2005" class="citation news cs1">Gopi Krishna (2005-11-09). <a rel="nofollow" class="external text" href="http://www.testbench.in">"SystemVerilog, SVA, SV DPI Tutorials"</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.atitle=SystemVerilog%2C+SVA%2C+SV+DPI+Tutorials&amp;rft.date=2005-11-09&amp;rft.au=Gopi+Krishna&amp;rft_id=http%3A%2F%2Fwww.testbench.in&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ASystemVerilog" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFHDVL" class="citation news cs1">HDVL. <a rel="nofollow" class="external text" href="http://hdvl.wordpress.com/category/systemverilog/">"More SystemVerilog Weblinks"</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.atitle=More+SystemVerilog+Weblinks&amp;rft.au=HDVL&amp;rft_id=http%3A%2F%2Fhdvl.wordpress.com%2Fcategory%2Fsystemverilog%2F&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ASystemVerilog" class="Z3988"></span></li> <li>Spear, Chris, <a rel="nofollow" class="external text" href="https://www.amazon.com/SystemVerilog-Verification-Learning-Testbench-Language/dp/0387765298/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1247578512&amp;sr=8-1">"SystemVerilog for Verification"</a> Springer, New York City, NY. <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/0-387-76529-8" title="Special:BookSources/0-387-76529-8">0-387-76529-8</a></li> <li>Stuart Sutherland, Simon Davidmann, Peter Flake, <a rel="nofollow" class="external text" href="https://www.amazon.com/SystemVerilog-Design-Second-Hardware-Modeling/dp/0387333991/ref=sr_1_4?ie=UTF8&amp;s=books&amp;qid=1247578512&amp;sr=8-4">"SystemVerilog for Design Second Edition: A Guide to Using SystemVerilog for Hardware Design and Modeling"</a> Springer, New York City, NY. <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/0-387-33399-1" title="Special:BookSources/0-387-33399-1">0-387-33399-1</a></li> <li>Ben Cohen, Srinivasan Venkataramanan, Ajeetha Kumari and Lisa Piper <a rel="nofollow" class="external autonumber" href="http://SystemVerilog.us">[1]</a> SystemVerilog Assertions Handbook, 4th Edition, 2016- <a rel="nofollow" class="external free" href="http://SystemVerilog.us">http://SystemVerilog.us</a></li> <li>Ben Cohen Srinivasan Venkataramanan and Ajeetha Kumari <a rel="nofollow" class="external autonumber" href="http://SystemVerilog.us">[2]</a> A Pragmatic Approach to VMM Adoption, - <a rel="nofollow" class="external free" href="http://SystemVerilog.us">http://SystemVerilog.us</a></li> <li>Erik Seligman and Tom Schubert <a rel="nofollow" class="external autonumber" href="https://www.amazon.com/Formal-Verification-Essential-Toolkit-Modern-ebook/dp/B012VX1MW8/ref=sr_1_1?ie=UTF8&amp;qid=1451183481&amp;sr=8-1&amp;keywords=erik+seligman+formal+verification">[3]</a> Formal Verification: An Essential Toolkit for Modern VLSI Design, Jul 24, 2015,</li></ul> <div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=SystemVerilog&amp;action=edit&amp;section=20" title="Edit section: External links"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <dl><dt>IEEE Standard Reference</dt></dl> <ul><li><a rel="nofollow" class="external text" href="https://ieeexplore.ieee.org/document/8299595">1800-2017 - IEEE Standard for SystemVerilog--Unified Hardware Design, Specification, and Verification Language</a>. The 2017 version is available at no cost via the IEEE GET Program.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">&#91;</span>1<span class="cite-bracket">&#93;</span></a></sup></li></ul> <dl><dt>Tutorials</dt></dl> <ul><li><a rel="nofollow" class="external text" href="http://www.asic-world.com/systemverilog/tutorial.html">SystemVerilog Tutorial</a></li> <li><a rel="nofollow" class="external text" href="http://www.project-veripage.com/sv_front.php">SystemVerilog Tutorial for Beginners</a></li></ul> <dl><dt>Standards Development</dt></dl> <ul><li><a rel="nofollow" class="external text" href="http://www.eda.org/sv-ieee1800/">IEEE P1800</a> – Working group for SystemVerilog</li> <li>Sites used before IEEE 1800-2005 <ul><li><a rel="nofollow" class="external text" href="http://www.systemverilog.org/">SystemVerilog official website</a></li> <li><a rel="nofollow" class="external text" href="http://www.vhdl.org/sv/">SystemVerilog Technical Committees</a></li></ul></li></ul> <dl><dt>Language Extensions</dt></dl> <ul><li><a rel="nofollow" class="external text" href="http://www.veripool.org/verilog-mode">Verilog AUTOs</a> – An open source meta-comment system to simplify maintaining Verilog code</li></ul> <dl><dt>Online Tools</dt></dl> <ul><li><a rel="nofollow" class="external text" href="http://www.edaplayground.com">EDA Playground</a> – Run SystemVerilog from a web browser (free online IDE)</li> <li><a rel="nofollow" class="external text" href="http://www.svericl.com/sverule">sverule</a> – A SystemVerilog BNF Navigator (current to IEEE 1800-2012)</li></ul> <dl><dt>Other Tools</dt></dl> <ul><li><a rel="nofollow" class="external text" href="http://sourceforge.net/projects/svunit/">SVUnit</a> – unit test framework for developers writing code in SystemVerilog. Verify SystemVerilog modules, classes and interfaces in isolation.</li> <li><a rel="nofollow" class="external text" href="https://github.com/zachjs/sv2v/">sv2v</a> - open-source converter from SystemVerilog to Verilog</li></ul> <div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}</style><style data-mw-deduplicate="TemplateStyles:r1236075235">.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}</style></div><div role="navigation" class="navbox" aria-labelledby="IEEE_standards" style="padding:3px"><table class="nowraplinks hlist mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><style data-mw-deduplicate="TemplateStyles:r1239400231">.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}</style><div class="navbar plainlinks hlist navbar-mini"><ul><li class="nv-view"><a href="/wiki/Template:IEEE_standards" title="Template:IEEE standards"><abbr title="View this template">v</abbr></a></li><li class="nv-talk"><a href="/wiki/Template_talk:IEEE_standards" title="Template talk:IEEE standards"><abbr title="Discuss this template">t</abbr></a></li><li class="nv-edit"><a href="/wiki/Special:EditPage/Template:IEEE_standards" title="Special:EditPage/Template:IEEE standards"><abbr title="Edit this template">e</abbr></a></li></ul></div><div id="IEEE_standards" style="font-size:114%;margin:0 4em"><a href="/wiki/IEEE_Standards_Association" title="IEEE Standards Association">IEEE standards</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">Current</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/IEEE-488" class="mw-redirect" title="IEEE-488">488</a></li> <li><a href="/wiki/IEEE_693" title="IEEE 693">693</a></li> <li><a href="/wiki/Software_quality_assurance" title="Software quality assurance">730</a></li> <li><a href="/wiki/IEEE_754" title="IEEE 754">754</a> <ul><li><a href="/wiki/IEEE_754-2008_revision" title="IEEE 754-2008 revision">Revision</a></li></ul></li> <li><a href="/wiki/IEEE_854-1987" title="IEEE 854-1987">854</a></li> <li><a href="/wiki/Software_configuration_management" title="Software configuration management">828</a></li> <li><a href="/wiki/Software_test_documentation" title="Software test documentation">829</a></li> <li><a href="/wiki/Futurebus" title="Futurebus">896</a></li> <li><a href="/wiki/Single_UNIX_Specification" title="Single UNIX Specification">1003</a></li> <li><a href="/wiki/VMEbus" title="VMEbus">1014</a></li> <li><a href="/wiki/Software_design_description" title="Software design description">1016</a></li> <li><a href="/wiki/VHDL" title="VHDL">1076</a></li> <li><a href="/wiki/JTAG" title="JTAG">1149.1</a></li> <li><a href="/wiki/PILOT" title="PILOT">1154</a></li> <li><a href="/wiki/IEEE_1164" title="IEEE 1164">1164</a></li> <li><a href="/wiki/Open_Firmware" title="Open Firmware">1275</a></li> <li><a href="/wiki/Distributed_Interactive_Simulation" title="Distributed Interactive Simulation">1278</a></li> <li><a href="/wiki/IEEE_1284" title="IEEE 1284">1284</a></li> <li><a href="/wiki/IEEE_1355" title="IEEE 1355">1355</a></li> <li><a href="/wiki/IEEE_1394" title="IEEE 1394">1394</a></li> <li><a href="/wiki/IEEE_1451" title="IEEE 1451">1451</a></li> <li><a href="/wiki/Standard_Delay_Format" title="Standard Delay Format">1497</a></li> <li><a href="/wiki/High-level_architecture" class="mw-redirect" title="High-level architecture">1516</a></li> <li><a href="/wiki/IEEE_1541-2002" class="mw-redirect" title="IEEE 1541-2002">1541</a></li> <li><a href="/wiki/IEEE_1547" title="IEEE 1547">1547</a></li> <li><a href="/wiki/IEEE_1584" title="IEEE 1584">1584</a></li> <li><a href="/wiki/Precision_Time_Protocol" title="Precision Time Protocol">1588</a></li> <li><a href="/wiki/Scalable_Coherent_Interface" title="Scalable Coherent Interface">1596</a></li> <li><a href="/wiki/Advanced_Library_Format" title="Advanced Library Format">1603</a></li> <li><a href="/wiki/IEEE_1613" title="IEEE 1613">1613</a></li> <li><a href="/wiki/IEEE_1619" class="mw-redirect" title="IEEE 1619">1619</a></li> <li><a href="/wiki/SystemC" title="SystemC">1666</a></li> <li><a href="/wiki/IEEE_1667" title="IEEE 1667">1667</a></li> <li><a href="/wiki/IEEE_1675-2008" title="IEEE 1675-2008">1675</a></li> <li><a href="/wiki/IP-XACT" title="IP-XACT">1685</a></li> <li><a href="/wiki/IEEE_1722" class="mw-redirect" title="IEEE 1722">1722</a></li> <li><a href="/wiki/IEEE_1733" class="mw-redirect" title="IEEE 1733">1733</a></li> <li><a class="mw-selflink selflink">1800</a></li> <li><a href="/wiki/Unified_Power_Format" title="Unified Power Format">1801</a></li> <li><a href="/wiki/DNP3" title="DNP3">1815</a></li> <li><a href="/wiki/IEEE_1849" title="IEEE 1849">1849</a></li> <li><a href="/wiki/Property_Specification_Language" title="Property Specification Language">1850</a></li> <li><a href="/wiki/IEEE_1855" title="IEEE 1855">1855</a></li> <li><a href="/wiki/DySPAN" title="DySPAN">1900</a></li> <li><a href="/wiki/IEEE_1901" title="IEEE 1901">1901</a></li> <li><a href="/wiki/RuBee" title="RuBee">1902</a></li> <li><a href="/wiki/Service_Interoperability_in_Ethernet_Passive_Optical_Networks" title="Service Interoperability in Ethernet Passive Optical Networks">1904</a></li> <li><a href="/wiki/IEEE_1905" title="IEEE 1905">1905</a></li> <li><a href="/wiki/IEEE_2030" title="IEEE 2030">2030</a></li> <li><a href="/wiki/Micro_T-Kernel" title="Micro T-Kernel">2050</a></li> <li><a href="/wiki/ISO/IEEE_11073" title="ISO/IEEE 11073">11073</a></li> <li><a href="/wiki/ISO/IEC_12207" title="ISO/IEC 12207">12207</a></li> <li><a href="/wiki/Software_maintenance" title="Software maintenance">14764</a></li> <li><a href="/wiki/Risk_management" title="Risk management">16085</a></li> <li><a href="/wiki/Project_management" title="Project management">16326</a></li> <li><a href="/wiki/Requirements_engineering" title="Requirements engineering">29148</a></li> <li><a href="/wiki/ISO/IEC_42010" title="ISO/IEC 42010">42010</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/IEEE_802" title="IEEE 802">802 series</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/IEEE_802" title="IEEE 802">802</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/IEEE_802.2" title="IEEE 802.2">.2</a></li> <li><a href="/wiki/Token_bus_network" title="Token bus network">.4</a></li> <li><a href="/wiki/Token_Ring" title="Token Ring">.5</a></li> <li><a href="/wiki/IEEE_802.6" title="IEEE 802.6">.6</a></li> <li><a href="/wiki/IEEE_802.7" title="IEEE 802.7">.7</a></li> <li><a href="/wiki/IEEE_802.8" title="IEEE 802.8">.8</a></li> <li><a href="/wiki/IEEE_802.9" title="IEEE 802.9">.9</a></li> <li><a href="/wiki/IEEE_802.10" title="IEEE 802.10">.10</a></li> <li><a href="/wiki/100BaseVG" title="100BaseVG">.12</a></li> <li><a href="/wiki/Cable_modem#IEEE_802.14" title="Cable modem">.14</a></li> <li><a href="/wiki/IEEE_802.16" title="IEEE 802.16">.16</a> <ul><li><a href="/wiki/WiMAX" title="WiMAX">WiMAX · d · e</a></li></ul></li> <li><a href="/wiki/Resilient_Packet_Ring" title="Resilient Packet Ring">.17</a></li> <li><a href="/wiki/IEEE_802.18" title="IEEE 802.18">.18</a></li> <li><a href="/wiki/IEEE_802.20" title="IEEE 802.20">.20</a></li> <li><a href="/wiki/IEEE_802.21" title="IEEE 802.21">.21</a></li> <li><a href="/wiki/IEEE_802.22" title="IEEE 802.22">.22</a></li> <li><a href="/w/index.php?title=IEEE_802.24&amp;action=edit&amp;redlink=1" class="new" title="IEEE 802.24 (page does not exist)">.24</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/IEEE_802.1" title="IEEE 802.1">802.1</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/IEEE_802.1D" title="IEEE 802.1D">D</a></li> <li><a href="/wiki/IEEE_P802.1p" title="IEEE P802.1p">p</a></li> <li><a href="/wiki/IEEE_802.1Q" title="IEEE 802.1Q">Q</a></li> <li><a href="/wiki/IEEE_802.1Qav" class="mw-redirect" title="IEEE 802.1Qav">Qav</a></li> <li><a href="/wiki/Stream_Reservation_Protocol" title="Stream Reservation Protocol">Qat</a></li> <li><a href="/wiki/Provider_Backbone_Bridge_Traffic_Engineering" title="Provider Backbone Bridge Traffic Engineering">Qay</a></li> <li><a href="/wiki/Data_center_bridging#IEEE_Task_Group" title="Data center bridging">Qaz</a></li> <li><a href="/wiki/IEEE_802.1Qbb" class="mw-redirect" title="IEEE 802.1Qbb">Qbb</a></li> <li><a href="/wiki/Spanning_Tree_Protocol" title="Spanning Tree Protocol">w</a></li> <li><a href="/wiki/IEEE_802.1X" title="IEEE 802.1X">X</a></li> <li><a href="/wiki/Link_Layer_Discovery_Protocol" title="Link Layer Discovery Protocol">AB</a></li> <li><a href="/wiki/IEEE_802.1ad" title="IEEE 802.1ad">ad</a></li> <li><a href="/wiki/IEEE_802.1AE" title="IEEE 802.1AE">AE</a></li> <li><a href="/wiki/IEEE_802.1ag" title="IEEE 802.1ag">ag</a></li> <li><a href="/wiki/IEEE_802.1ah-2008" class="mw-redirect" title="IEEE 802.1ah-2008">ah</a></li> <li><a href="/wiki/Multiple_Registration_Protocol" title="Multiple Registration Protocol">ak</a></li> <li><a href="/wiki/IEEE_802.1aq" title="IEEE 802.1aq">aq</a></li> <li><a href="/wiki/IEEE_802.1AS" class="mw-redirect" title="IEEE 802.1AS">AS</a></li> <li><a href="/wiki/Link_aggregation" title="Link aggregation">AX</a> (<a href="/wiki/Link_Aggregation_Control_Protocol" class="mw-redirect" title="Link Aggregation Control Protocol">LACP</a>)</li> <li><a href="/wiki/Audio_Video_Bridging" title="Audio Video Bridging">BA</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/IEEE_802.3" title="IEEE 802.3">802.3</a> <br />(<a href="/wiki/Ethernet" title="Ethernet">Ethernet</a>)</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/10BASE5" title="10BASE5">-1983</a></li> <li><a href="/wiki/802.3a" class="mw-redirect" title="802.3a">a</a></li> <li><a href="/wiki/802.3b" class="mw-redirect" title="802.3b">b</a></li> <li><a href="/wiki/802.3d" class="mw-redirect" title="802.3d">d</a></li> <li><a href="/wiki/802.3e" class="mw-redirect" title="802.3e">e</a></li> <li><a href="/wiki/802.3i" class="mw-redirect" title="802.3i">i</a></li> <li><a href="/wiki/802.3j" class="mw-redirect" title="802.3j">j</a></li> <li><a href="/wiki/802.3u" class="mw-redirect" title="802.3u">u</a></li> <li><a href="/wiki/IEEE_802.3x" class="mw-redirect" title="IEEE 802.3x">x</a></li> <li><a href="/wiki/802.3y" class="mw-redirect" title="802.3y">y</a></li> <li><a href="/wiki/802.3z" class="mw-redirect" title="802.3z">z</a></li> <li><a href="/wiki/802.3ab" class="mw-redirect" title="802.3ab">ab</a></li> <li><a href="/wiki/802.3ac" class="mw-redirect" title="802.3ac">ac</a></li> <li><a href="/wiki/802.3ad" class="mw-redirect" title="802.3ad">ad</a></li> <li><a href="/wiki/802.3ae" class="mw-redirect" title="802.3ae">ae</a></li> <li><b><a href="/wiki/802.3af" class="mw-redirect" title="802.3af">af</a></b></li> <li><a href="/wiki/802.3ah" class="mw-redirect" title="802.3ah">ah</a></li> <li><a href="/wiki/802.3ak" class="mw-redirect" title="802.3ak">ak</a></li> <li><a href="/wiki/802.3an" class="mw-redirect" title="802.3an">an</a></li> <li><a href="/wiki/802.3aq" class="mw-redirect" title="802.3aq">aq</a></li> <li><b><a href="/wiki/802.3at" class="mw-redirect" title="802.3at">at</a></b></li> <li><a href="/wiki/802.3au" class="mw-redirect" title="802.3au">au</a></li> <li><a href="/wiki/802.3av" class="mw-redirect" title="802.3av">av</a></li> <li><a href="/wiki/802.3az" class="mw-redirect" title="802.3az">az</a></li> <li><a href="/wiki/802.3ba" class="mw-redirect" title="802.3ba">ba</a></li> <li><b><a href="/wiki/802.3bt" class="mw-redirect" title="802.3bt">bt</a></b></li> <li><a href="/wiki/802.3bu" class="mw-redirect" title="802.3bu">bu</a></li> <li><a href="/wiki/802.3by" class="mw-redirect" title="802.3by">by</a></li> <li><a href="/wiki/802.3bz" class="mw-redirect" title="802.3bz">bz</a></li> <li><a href="/w/index.php?title=802.3ca&amp;action=edit&amp;redlink=1" class="new" title="802.3ca (page does not exist)">ca</a></li> <li><a href="/w/index.php?title=802.3cb&amp;action=edit&amp;redlink=1" class="new" title="802.3cb (page does not exist)">cb</a></li> <li><a href="/w/index.php?title=802.3cc&amp;action=edit&amp;redlink=1" class="new" title="802.3cc (page does not exist)">cc</a></li> <li><a href="/w/index.php?title=802.3cd&amp;action=edit&amp;redlink=1" class="new" title="802.3cd (page does not exist)">cd</a></li> <li><a href="/w/index.php?title=802.3ce&amp;action=edit&amp;redlink=1" class="new" title="802.3ce (page does not exist)">ce</a></li> <li><a href="/wiki/802.3cg" class="mw-redirect" title="802.3cg">cg</a></li> <li><a href="/wiki/802.3ch" class="mw-redirect" title="802.3ch">ch</a></li> <li><a href="/w/index.php?title=802.3ck&amp;action=edit&amp;redlink=1" class="new" title="802.3ck (page does not exist)">ck</a></li> <li><a href="/w/index.php?title=802.3cm&amp;action=edit&amp;redlink=1" class="new" title="802.3cm (page does not exist)">cm</a></li> <li><a href="/w/index.php?title=802.3cn&amp;action=edit&amp;redlink=1" class="new" title="802.3cn (page does not exist)">cn</a></li> <li><a href="/w/index.php?title=802.3cp&amp;action=edit&amp;redlink=1" class="new" title="802.3cp (page does not exist)">cp</a></li> <li><a href="/wiki/802.3cq" class="mw-redirect" title="802.3cq">cq</a></li> <li><a href="/w/index.php?title=802.3cr&amp;action=edit&amp;redlink=1" class="new" title="802.3cr (page does not exist)">cr</a></li> <li><a href="/w/index.php?title=802.3cs&amp;action=edit&amp;redlink=1" class="new" title="802.3cs (page does not exist)">cs</a></li> <li><a href="/w/index.php?title=802.3ct&amp;action=edit&amp;redlink=1" class="new" title="802.3ct (page does not exist)">ct</a></li> <li><a href="/w/index.php?title=802.3cu&amp;action=edit&amp;redlink=1" class="new" title="802.3cu (page does not exist)">cu</a></li> <li><a href="/wiki/802.3cv" class="mw-redirect" title="802.3cv">cv</a></li> <li><a href="/w/index.php?title=802.3cw&amp;action=edit&amp;redlink=1" class="new" title="802.3cw (page does not exist)">cw</a></li> <li><a href="/w/index.php?title=802.3cx&amp;action=edit&amp;redlink=1" class="new" title="802.3cx (page does not exist)">cx</a></li> <li><a href="/w/index.php?title=802.3cy&amp;action=edit&amp;redlink=1" class="new" title="802.3cy (page does not exist)">cy</a></li> <li><a href="/w/index.php?title=802.3cz&amp;action=edit&amp;redlink=1" class="new" title="802.3cz (page does not exist)">cz</a></li> <li><a href="/w/index.php?title=802.3da&amp;action=edit&amp;redlink=1" class="new" title="802.3da (page does not exist)">da</a></li> <li><a href="/w/index.php?title=802.3db&amp;action=edit&amp;redlink=1" class="new" title="802.3db (page does not exist)">db</a></li> <li><a href="/wiki/802.3dd" class="mw-redirect" title="802.3dd">dd</a></li> <li><a href="/w/index.php?title=802.3de&amp;action=edit&amp;redlink=1" class="new" title="802.3de (page does not exist)">de</a></li> <li><a href="/w/index.php?title=802.3df&amp;action=edit&amp;redlink=1" class="new" title="802.3df (page does not exist)">df</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/IEEE_802.11" title="IEEE 802.11">802.11</a> <br />(<a href="/wiki/Wi-Fi" title="Wi-Fi">Wi-Fi</a>)</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/IEEE_802.11-1997" class="mw-redirect" title="IEEE 802.11-1997">-1997</a></li> <li><a href="/wiki/IEEE_802.11_(legacy_mode)" title="IEEE 802.11 (legacy mode)">legacy mode</a></li> <li><a href="/wiki/IEEE_802.11a-1999" title="IEEE 802.11a-1999">a</a></li> <li><a href="/wiki/IEEE_802.11b-1999" title="IEEE 802.11b-1999">b</a></li> <li><a href="/wiki/IEEE_802.11c" title="IEEE 802.11c">c</a></li> <li><a href="/wiki/IEEE_802.11d-2001" title="IEEE 802.11d-2001">d</a></li> <li><a href="/wiki/IEEE_802.11e-2005" title="IEEE 802.11e-2005">e</a></li> <li><a href="/wiki/Inter-Access_Point_Protocol" title="Inter-Access Point Protocol">f</a></li> <li><a href="/wiki/IEEE_802.11g-2003" title="IEEE 802.11g-2003">g</a></li> <li><a href="/wiki/IEEE_802.11h-2003" title="IEEE 802.11h-2003">h</a></li> <li><a href="/wiki/IEEE_802.11i-2004" title="IEEE 802.11i-2004">i</a></li> <li><a href="/wiki/IEEE_802.11j-2004" title="IEEE 802.11j-2004">j</a></li> <li><a href="/wiki/IEEE_802.11k-2008" title="IEEE 802.11k-2008">k</a></li> <li><b><a href="/wiki/IEEE_802.11n-2009" title="IEEE 802.11n-2009">n</a></b> (<a href="/wiki/Wi-Fi_4" class="mw-redirect" title="Wi-Fi 4">Wi-Fi 4</a>)</li> <li><a href="/wiki/IEEE_802.11p" title="IEEE 802.11p">p</a></li> <li><a href="/wiki/IEEE_802.11r-2008" title="IEEE 802.11r-2008">r</a></li> <li><a href="/wiki/IEEE_802.11s" title="IEEE 802.11s">s</a></li> <li><a href="/wiki/IEEE_802.11u" title="IEEE 802.11u">u</a></li> <li><a href="/wiki/IEEE_802.11v" class="mw-redirect" title="IEEE 802.11v">v</a></li> <li><a href="/wiki/IEEE_802.11w-2009" title="IEEE 802.11w-2009">w</a></li> <li><a href="/wiki/IEEE_802.11y-2008" title="IEEE 802.11y-2008">y</a></li> <li><a href="/wiki/IEEE_802.11z" class="mw-redirect" title="IEEE 802.11z">z</a></li> <li>aa</li> <li><b><a href="/wiki/IEEE_802.11ac" class="mw-redirect" title="IEEE 802.11ac">ac</a></b> (<a href="/wiki/Wi-Fi_5" class="mw-redirect" title="Wi-Fi 5">Wi-Fi 5</a>)</li> <li><a href="/wiki/IEEE_802.11ad" title="IEEE 802.11ad">ad</a> (<a href="/wiki/WiGig" title="WiGig">WiGig</a>)</li> <li>ae</li> <li><a href="/wiki/IEEE_802.11af" title="IEEE 802.11af">af</a></li> <li><a href="/wiki/IEEE_802.11ah" title="IEEE 802.11ah">ah</a></li> <li><a href="/wiki/IEEE_802.11ai" title="IEEE 802.11ai">ai</a></li> <li><a href="/wiki/IEEE_802.11aj" class="mw-redirect" title="IEEE 802.11aj">aj</a></li> <li>ak</li> <li>aq</li> <li><b><a href="/wiki/IEEE_802.11ax" class="mw-redirect" title="IEEE 802.11ax">ax</a></b> (<a href="/wiki/Wi-Fi_6" title="Wi-Fi 6">Wi-Fi 6</a>)</li> <li><a href="/wiki/IEEE_802.11ay" title="IEEE 802.11ay">ay</a></li> <li>az</li> <li>ba</li> <li><a href="/wiki/IEEE_802.11bb" title="IEEE 802.11bb">bb</a></li> <li>bc</li> <li>bd</li> <li><b><a href="/wiki/IEEE_802.11be" class="mw-redirect" title="IEEE 802.11be">be</a></b> (<a href="/wiki/Wi-Fi_7" title="Wi-Fi 7">Wi-Fi 7</a>)</li> <li>bf</li> <li>bh</li> <li>bi</li> <li>bk</li> <li><b><a href="/wiki/IEEE_802.11bn" title="IEEE 802.11bn">bn</a></b> (<a href="/w/index.php?title=Wi-Fi_8&amp;action=edit&amp;redlink=1" class="new" title="Wi-Fi 8 (page does not exist)">Wi-Fi 8</a>)</li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/IEEE_802.15" title="IEEE 802.15">802.15</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/IEEE_802.15.1" class="mw-redirect" title="IEEE 802.15.1">.1</a> (<a href="/wiki/Bluetooth" title="Bluetooth">Bluetooth</a>)</li> <li><a href="/wiki/IEEE_802.15.2" class="mw-redirect" title="IEEE 802.15.2">.2</a></li> <li><a href="/wiki/IEEE_802.15.3" class="mw-redirect" title="IEEE 802.15.3">.3</a></li> <li><a href="/wiki/IEEE_802.15.4" title="IEEE 802.15.4">.4</a> (<a href="/wiki/Zigbee" title="Zigbee">Zigbee</a>)</li> <li><a href="/wiki/IEEE_802.15.4a" title="IEEE 802.15.4a">.4a</a></li> <li><a href="/w/index.php?title=IEEE_802.15.4b&amp;action=edit&amp;redlink=1" class="new" title="IEEE 802.15.4b (page does not exist)">.4b</a></li> <li><a href="/w/index.php?title=IEEE_802.15.4c&amp;action=edit&amp;redlink=1" class="new" title="IEEE 802.15.4c (page does not exist)">.4c</a></li> <li><a href="/w/index.php?title=IEEE_802.15.4d&amp;action=edit&amp;redlink=1" class="new" title="IEEE 802.15.4d (page does not exist)">.4d</a></li> <li><a href="/w/index.php?title=IEEE_802.15.4e&amp;action=edit&amp;redlink=1" class="new" title="IEEE 802.15.4e (page does not exist)">.4e</a></li> <li><a href="/w/index.php?title=IEEE_802.15.4f&amp;action=edit&amp;redlink=1" class="new" title="IEEE 802.15.4f (page does not exist)">.4f</a></li> <li><a href="/w/index.php?title=IEEE_802.15.4g&amp;action=edit&amp;redlink=1" class="new" title="IEEE 802.15.4g (page does not exist)">.4g</a></li> <li><a href="/w/index.php?title=IEEE_802.15.4z&amp;action=edit&amp;redlink=1" class="new" title="IEEE 802.15.4z (page does not exist)">.4z</a></li> <li><a href="/wiki/IEEE_802.15.5" class="mw-redirect" title="IEEE 802.15.5">.5</a></li> <li><a href="/wiki/IEEE_802.15.6" title="IEEE 802.15.6">.6</a></li> <li><a href="/wiki/IEEE_802.15.7" class="mw-redirect" title="IEEE 802.15.7">.7</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Proposed</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/IEEE_P1363" title="IEEE P1363">P1363</a></li> <li><a href="/wiki/IEEE_P1619" title="IEEE P1619">P1619</a></li> <li><a href="/wiki/Rosetta-lang" title="Rosetta-lang">P1699</a></li> <li><a href="/wiki/Universal_Power_Adapter_for_Mobile_Devices" title="Universal Power Adapter for Mobile Devices">P1823</a></li> <li><a href="/wiki/IEEE_P1906.1" title="IEEE P1906.1">P1906.1</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Superseded</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/IEEE_754-1985" title="IEEE 754-1985">754-1985</a></li> <li><a href="/wiki/Software_requirements_specification" title="Software requirements specification">830</a></li> <li><a href="/wiki/IEEE_1219" class="mw-redirect" title="IEEE 1219">1219</a></li> <li><a href="/wiki/Software_requirements_specification" title="Software requirements specification">1233</a></li> <li><a href="/wiki/Concept_of_operations" title="Concept of operations">1362</a></li> <li><a href="/wiki/Verilog" title="Verilog">1364</a></li> <li><a href="/wiki/IEEE_1471" title="IEEE 1471">1471</a></li></ul> </div></td></tr><tr><td class="navbox-abovebelow" colspan="2"><div> <dl><dt><i>See also</i></dt> <dd><a href="/wiki/IEEE_Standards_Association" title="IEEE Standards Association">IEEE Standards Association</a></dd> <dd><a href="/wiki/Category:IEEE_standards" title="Category:IEEE standards">Category:IEEE standards</a></dd></dl> </div></td></tr></tbody></table></div> <div class="navbox-styles"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236075235"></div><div role="navigation" class="navbox" aria-labelledby="Programmable_logic" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1239400231"><div class="navbar plainlinks hlist navbar-mini"><ul><li class="nv-view"><a href="/wiki/Template:Programmable_logic" title="Template:Programmable logic"><abbr title="View this template">v</abbr></a></li><li class="nv-talk"><a href="/wiki/Template_talk:Programmable_logic" title="Template talk:Programmable logic"><abbr title="Discuss this template">t</abbr></a></li><li class="nv-edit"><a href="/wiki/Special:EditPage/Template:Programmable_logic" title="Special:EditPage/Template:Programmable logic"><abbr title="Edit this template">e</abbr></a></li></ul></div><div id="Programmable_logic" style="font-size:114%;margin:0 4em"><a href="/wiki/Programmable_logic_device" title="Programmable logic device">Programmable logic</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">Concepts</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Application-specific_integrated_circuit" title="Application-specific integrated circuit">ASIC</a></li> <li><a href="/wiki/System_on_a_chip" title="System on a chip">SoC</a></li> <li><a href="/wiki/Field-programmable_gate_array" title="Field-programmable gate array">FPGA</a> <ul><li><a href="/wiki/Logic_block" title="Logic block">Logic block</a></li></ul></li> <li><a href="/wiki/Complex_programmable_logic_device" title="Complex programmable logic device">CPLD</a></li> <li><a href="/wiki/Programmable_logic_device#EPLDs" title="Programmable logic device">EPLD</a></li> <li><a href="/wiki/Programmable_logic_array" title="Programmable logic array">PLA</a></li> <li><a href="/wiki/Programmable_Array_Logic" title="Programmable Array Logic">PAL</a></li> <li><a href="/wiki/Generic_array_logic" class="mw-redirect" title="Generic array logic">GAL</a></li> <li><a href="/wiki/Cypress_PSoC" title="Cypress PSoC">PSoC</a></li> <li><a href="/wiki/Reconfigurable_computing" title="Reconfigurable computing">Reconfigurable computing</a> <ul><li><a href="/wiki/Xputer" title="Xputer">Xputer</a></li></ul></li> <li><a href="/wiki/Soft_microprocessor" title="Soft microprocessor">Soft microprocessor</a></li> <li><a href="/wiki/Circuit_underutilization" title="Circuit underutilization">Circuit underutilization</a></li> <li><a href="/wiki/High-level_synthesis" title="High-level synthesis">High-level synthesis</a></li> <li><a href="/wiki/Hardware_acceleration" title="Hardware acceleration">Hardware acceleration</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Hardware_description_language" title="Hardware description language">Languages</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Verilog" title="Verilog">Verilog</a> <ul><li><a href="/wiki/Verilog-A" title="Verilog-A">A</a></li> <li><a href="/wiki/Verilog-AMS" title="Verilog-AMS">AMS</a></li></ul></li> <li><a href="/wiki/VHDL" title="VHDL">VHDL</a> <ul><li><a href="/wiki/VHDL-AMS" title="VHDL-AMS">AMS</a></li> <li><a href="/wiki/VHDL-VITAL" title="VHDL-VITAL">VITAL</a></li></ul></li> <li><a class="mw-selflink selflink">SystemVerilog</a> <ul><li><a href="/wiki/SystemVerilog_DPI" title="SystemVerilog DPI">DPI</a></li></ul></li> <li><a href="/wiki/SystemC" title="SystemC">SystemC</a></li> <li><a href="/wiki/Altera_Hardware_Description_Language" title="Altera Hardware Description Language">AHDL</a></li> <li><a href="/wiki/Handel-C" title="Handel-C">Handel-C</a></li> <li><a href="/wiki/Lola_(computing)" title="Lola (computing)">Lola</a></li> <li><a href="/wiki/Property_Specification_Language" title="Property Specification Language">PSL</a></li> <li><a href="/wiki/Unified_Power_Format" title="Unified Power Format">UPF</a></li> <li><a href="/wiki/PALASM" title="PALASM">PALASM</a></li> <li><a href="/wiki/Advanced_Boolean_Expression_Language" title="Advanced Boolean Expression Language">ABEL</a></li> <li><a href="/wiki/Programmable_Array_Logic#CUPL" title="Programmable Array Logic">CUPL</a></li> <li><a href="/wiki/C_to_HDL" title="C to HDL">C to HDL</a></li> <li><a href="/wiki/Flow_to_HDL" title="Flow to HDL">Flow to HDL</a></li> <li><a href="/wiki/MyHDL" title="MyHDL">MyHDL</a></li> <li><a href="/wiki/ELLA_(programming_language)" title="ELLA (programming language)">ELLA</a></li> <li><a href="/wiki/Chisel_(programming_language)" title="Chisel (programming language)">Chisel</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Companies</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Accellera" title="Accellera">Accellera</a></li> <li><a href="/wiki/Achronix" title="Achronix">Achronix</a></li> <li><a href="/wiki/AMD" title="AMD">AMD</a></li> <li><a href="/wiki/Aldec" title="Aldec">Aldec</a></li> <li><a href="/wiki/Arm_Holdings" title="Arm Holdings">Arm</a></li> <li><a href="/wiki/Cadence_Design_Systems" title="Cadence Design Systems">Cadence</a></li> <li><a href="/wiki/Infineon_Technologies" title="Infineon Technologies">Infineon</a></li> <li><a href="/wiki/Intel" title="Intel">Intel</a></li> <li><a href="/wiki/Lattice_Semiconductor" title="Lattice Semiconductor">Lattice</a></li> <li><a href="/wiki/Microchip_Technology" title="Microchip Technology">Microchip Technology</a></li> <li><a href="/wiki/NXP_Semiconductors" title="NXP Semiconductors">NXP</a></li> <li><a href="/wiki/Siemens" title="Siemens">Siemens</a></li> <li><a href="/wiki/Synopsys" title="Synopsys">Synopsys</a></li> <li><a href="/wiki/Texas_Instruments" title="Texas Instruments">Texas Instruments</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Products</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">Hardware</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/ICE_(FPGA)" title="ICE (FPGA)">iCE</a></li> <li><a href="/wiki/Stratix" title="Stratix">Stratix</a></li> <li><a href="/wiki/Virtex_(FPGA)" title="Virtex (FPGA)">Virtex</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Software</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Intel_Quartus_Prime" title="Intel Quartus Prime">Intel Quartus Prime</a></li> <li><a href="/wiki/Xilinx_ISE" title="Xilinx ISE">Xilinx ISE</a></li> <li><a href="/wiki/Vivado" title="Vivado">Vivado</a></li> <li><a href="/wiki/ModelSim" title="ModelSim">ModelSim</a></li> <li><a href="/wiki/Verilog-to-Routing" title="Verilog-to-Routing">VTR</a></li> <li><a href="/wiki/List_of_HDL_simulators" title="List of HDL simulators">Simulators</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Intellectual_property" title="Intellectual property">Intellectual<br />property</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Proprietary_hardware" title="Proprietary hardware">Proprietary</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/ARC_(processor)" title="ARC (processor)">ARC</a></li> <li><a href="/wiki/ARM_Cortex-M" title="ARM Cortex-M">ARM Cortex-M</a></li> <li><a href="/wiki/LEON" title="LEON">LEON</a></li> <li><a href="/wiki/LatticeMico8" title="LatticeMico8">LatticeMico8</a></li> <li><a href="/wiki/MicroBlaze" title="MicroBlaze">MicroBlaze</a></li> <li><a href="/wiki/PicoBlaze" title="PicoBlaze">PicoBlaze</a></li> <li><a href="/wiki/Nios_embedded_processor" title="Nios embedded processor">Nios</a></li> <li><a href="/wiki/Nios_II" title="Nios II">Nios II</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Open-source_hardware" title="Open-source hardware">Open-source</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Java_Optimized_Processor" title="Java Optimized Processor">JOP</a></li> <li><a href="/wiki/LatticeMico32" title="LatticeMico32">LatticeMico32</a></li> <li><a href="/wiki/OpenCores" title="OpenCores">OpenCores</a></li> <li><a href="/wiki/OpenRISC" title="OpenRISC">OpenRISC</a> <ul><li><a href="/wiki/OpenRISC_1200" title="OpenRISC 1200">1200</a></li></ul></li> <li><a href="/wiki/Power_ISA" title="Power ISA">Power ISA</a> <ul><li><a href="/wiki/Libre-SOC" title="Libre-SOC">Libre-SOC</a></li> <li><a href="/wiki/OpenPOWER_Microwatt" title="OpenPOWER Microwatt">Microwatt</a></li></ul></li> <li><a href="/wiki/RISC-V" title="RISC-V">RISC-V</a></li> <li><a href="/wiki/Zet_(hardware)" title="Zet (hardware)">Zet</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr></tbody></table><div></div></td></tr></tbody></table></div> <div class="navbox-styles"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236075235"></div><div role="navigation" class="navbox authority-control" aria-label="Navbox" style="padding:3px"><table class="nowraplinks hlist navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Help:Authority_control" title="Help:Authority control">Authority control databases</a>: National <span class="mw-valign-text-top noprint" typeof="mw:File/Frameless"><a href="https://www.wikidata.org/wiki/Q1387402#identifiers" title="Edit this at Wikidata"><img alt="Edit this at Wikidata" src="//upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/10px-OOjs_UI_icon_edit-ltr-progressive.svg.png" decoding="async" width="10" height="10" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/15px-OOjs_UI_icon_edit-ltr-progressive.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/20px-OOjs_UI_icon_edit-ltr-progressive.svg.png 2x" data-file-width="20" data-file-height="20" /></a></span></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"><ul><li><span class="uid"><a rel="nofollow" class="external text" href="https://id.loc.gov/authorities/sh2012002819">United States</a></span></li><li><span class="uid"><a rel="nofollow" class="external text" href="http://olduli.nli.org.il/F/?func=find-b&amp;local_base=NLX10&amp;find_code=UID&amp;request=987007590778405171">Israel</a></span></li></ul></div></td></tr></tbody></table></div> <div class="mw-references-wrap"><ol class="references"> <li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://ieeexplore.ieee.org/browse/standards/get-program/page/series?id=80">IEEE GET Program</a>, <a href="/wiki/IEEE" class="mw-redirect" title="IEEE">IEEE</a></span> </li> </ol></div> <!-- NewPP limit report Parsed by mw‐web.eqiad.main‐5dc468848‐mhfwj Cached time: 20241122142310 Cache expiry: 725821 Reduced expiry: true Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 0.529 seconds Real time usage: 1.433 seconds Preprocessor visited node count: 2997/1000000 Post‐expand include size: 88668/2097152 bytes Template argument size: 4606/2097152 bytes Highest expansion depth: 27/100 Expensive parser function count: 24/500 Unstrip recursion depth: 0/20 Unstrip post‐expand size: 84538/5000000 bytes Lua time usage: 0.255/10.000 seconds Lua memory usage: 5876222/52428800 bytes Number of Wikibase entities loaded: 1/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 1271.066 1 -total 10.40% 132.166 2 Template:Infobox 7.84% 99.651 1 Template:Short_description 7.51% 95.406 4 Template:Cite_book 7.08% 90.017 5 Template:Navbox 6.97% 88.531 1 Template:Infobox_programming_language 6.58% 83.628 1 Template:IEEE_standards 4.24% 53.869 1 Template:Infobox_software/simple 4.05% 51.489 2 Template:Pagetype 3.21% 40.785 2 Template:Fix-span --> <!-- Saved in parser cache with key enwiki:pcache:idhash:2540686-0!canonical and timestamp 20241122142310 and revision id 1247377792. Rendering was triggered because: page-view --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://en.wikipedia.org/w/index.php?title=SystemVerilog&amp;oldid=1247377792">https://en.wikipedia.org/w/index.php?title=SystemVerilog&amp;oldid=1247377792</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Help:Category" title="Help:Category">Categories</a>: <ul><li><a href="/wiki/Category:Hardware_description_languages" title="Category:Hardware description languages">Hardware description languages</a></li><li><a href="/wiki/Category:Hardware_verification_languages" title="Category:Hardware verification languages">Hardware verification languages</a></li><li><a href="/wiki/Category:System_description_languages" title="Category:System description languages">System description languages</a></li><li><a href="/wiki/Category:Programming_languages_created_in_2002" title="Category:Programming languages created in 2002">Programming languages created in 2002</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Hidden categories: <ul><li><a href="/wiki/Category:Articles_with_short_description" title="Category:Articles with short description">Articles with short description</a></li><li><a href="/wiki/Category:Short_description_matches_Wikidata" title="Category:Short description matches Wikidata">Short description matches Wikidata</a></li><li><a href="/wiki/Category:Use_American_English_from_April_2019" title="Category:Use American English from April 2019">Use American English from April 2019</a></li><li><a href="/wiki/Category:All_Wikipedia_articles_written_in_American_English" title="Category:All Wikipedia articles written in American English">All Wikipedia articles written in American English</a></li><li><a href="/wiki/Category:Wikipedia_articles_needing_clarification_from_September_2018" title="Category:Wikipedia articles needing clarification from September 2018">Wikipedia articles needing clarification from September 2018</a></li><li><a href="/wiki/Category:All_Wikipedia_articles_needing_clarification" title="Category:All Wikipedia articles needing clarification">All Wikipedia articles needing clarification</a></li><li><a href="/wiki/Category:All_articles_with_vague_or_ambiguous_time" title="Category:All articles with vague or ambiguous time">All articles with vague or ambiguous time</a></li><li><a href="/wiki/Category:Vague_or_ambiguous_time_from_September_2018" title="Category:Vague or ambiguous time from September 2018">Vague or ambiguous time from September 2018</a></li><li><a href="/wiki/Category:Articles_containing_potentially_dated_statements_from_September_2018" title="Category:Articles containing potentially dated statements from September 2018">Articles containing potentially dated statements from September 2018</a></li><li><a href="/wiki/Category:All_articles_containing_potentially_dated_statements" title="Category:All articles containing potentially dated statements">All articles containing potentially dated statements</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 24 September 2024, at 01:28<span class="anonymous-show">&#160;(UTC)</span>.</li> <li id="footer-info-copyright">Text is available under the <a href="/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License" title="Wikipedia:Text of the Creative Commons Attribution-ShareAlike 4.0 International License">Creative Commons Attribution-ShareAlike 4.0 License</a>; additional terms may apply. By using this site, you agree to the <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use" class="extiw" title="foundation:Special:MyLanguage/Policy:Terms of Use">Terms of Use</a> and <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy" class="extiw" title="foundation:Special:MyLanguage/Policy:Privacy policy">Privacy Policy</a>. Wikipedia® is a registered trademark of the <a rel="nofollow" class="external text" href="https://wikimediafoundation.org/">Wikimedia Foundation, Inc.</a>, a non-profit organization.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:About">About Wikipedia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:General_disclaimer">Disclaimers</a></li> <li id="footer-places-contact"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us">Contact Wikipedia</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Developers</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/en.wikipedia.org">Statistics</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie statement</a></li> <li id="footer-places-mobileview"><a href="//en.m.wikipedia.org/w/index.php?title=SystemVerilog&amp;mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-f69cdc8f6-c2jr9","wgBackendResponseTime":160,"wgPageParseReport":{"limitreport":{"cputime":"0.529","walltime":"1.433","ppvisitednodes":{"value":2997,"limit":1000000},"postexpandincludesize":{"value":88668,"limit":2097152},"templateargumentsize":{"value":4606,"limit":2097152},"expansiondepth":{"value":27,"limit":100},"expensivefunctioncount":{"value":24,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":84538,"limit":5000000},"entityaccesscount":{"value":1,"limit":400},"timingprofile":["100.00% 1271.066 1 -total"," 10.40% 132.166 2 Template:Infobox"," 7.84% 99.651 1 Template:Short_description"," 7.51% 95.406 4 Template:Cite_book"," 7.08% 90.017 5 Template:Navbox"," 6.97% 88.531 1 Template:Infobox_programming_language"," 6.58% 83.628 1 Template:IEEE_standards"," 4.24% 53.869 1 Template:Infobox_software/simple"," 4.05% 51.489 2 Template:Pagetype"," 3.21% 40.785 2 Template:Fix-span"]},"scribunto":{"limitreport-timeusage":{"value":"0.255","limit":"10.000"},"limitreport-memusage":{"value":5876222,"limit":52428800}},"cachereport":{"origin":"mw-web.eqiad.main-5dc468848-mhfwj","timestamp":"20241122142310","ttl":725821,"transientcontent":true}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"SystemVerilog","url":"https:\/\/en.wikipedia.org\/wiki\/SystemVerilog","sameAs":"http:\/\/www.wikidata.org\/entity\/Q1387402","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q1387402","author":{"@type":"Organization","name":"Contributors to Wikimedia projects"},"publisher":{"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2005-08-26T01:22:20Z","dateModified":"2024-09-24T01:28:52Z","headline":"hardware description and hardware verification language"}</script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10