{"id":13039,"date":"2018-02-23T11:55:22","date_gmt":"2018-02-23T18:55:22","guid":{"rendered":"https:\/\/blogs.mentor.com\/verificationhorizons\/?p=13039"},"modified":"2026-03-27T08:38:38","modified_gmt":"2026-03-27T12:38:38","slug":"new-and-improved-systemverilog-1800-2017","status":"publish","type":"post","link":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/2018\/02\/23\/new-and-improved-systemverilog-1800-2017\/","title":{"rendered":"New and Improved SystemVerilog 1800-2017"},"content":{"rendered":"<p>The IEEE-SA has a <a href=\"http:\/\/standards.ieee.org\/develop\/policies\/ieee_sa_toolkit.pdf\" target=\"_blank\" rel=\"noopener\">policy<\/a> of keeping standards active by making sure they get a cycle of updates every 10 years. Including Verilog, SystemVerilog has been going on a cycle of updates every 5\u00b11 years since 1995. I wrote here about the updates to <a href=\"http:\/\/go.mentor.com\/a-time-for-change\" target=\"_blank\" rel=\"noopener\">1800-2009<\/a> and <a href=\"http:\/\/go.mentor.com\/get-1800\" target=\"_blank\" rel=\"noopener\">1800-2012<\/a>, and now I\u2019m writing about the upcoming release of <a href=\"https:\/\/blogs.mentor.com\/verificationhorizons\/blog\/2018\/01\/08\/systemverilog-standard-updated\/\" target=\"_blank\" rel=\"noopener\">1800-2017<\/a>.<\/p>\n<p>So, what\u2019s new and improved in the 1800-2017 standard?<a href=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/54\/2013\/06\/Fig-2-9.gif\"><img class=\"alignnone size-medium wp-image-8843\" alt=\"\" \/><\/a> <a href=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/54\/2018\/02\/systemverilog-logo.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-13041 alignright\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/54\/2018\/02\/systemverilog-logo.jpg\" alt=\"\" width=\"350\" height=\"150\" \/><\/a><\/p>\n<p>The <em>standard<\/em> is new and improved. By that I mean the document that supposedly describes the behavior of the code you write. It resolves over 100 issues and probably 100s of editorial issues. Does this sound exciting? Probably not to most people. But here are the benefits and why it may be exciting to you:<\/p>\n<ul>\n<li>No new features to learn that you will never remember how to use anyway<\/li>\n<li>No forward or backward compatibility issues with your code from different versions of the standard.<\/li>\n<li>A document more accurately reflecting the behavior you are already getting from your tool<\/li>\n<li>Updated examples reflecting the recommended way of using SystemVerilog<\/li>\n<\/ul>\n<p>For example, one issue defines the behavior of a call to a virtual method in a constructor. Different languages handle this inconsistently. Some do not allow it, others only consider it virtual up to the point where the method gets called from the constructor. Or does it call the fully extended method base on the final constructed object? \u00a0The problem is the construction and initialization of a class object always starts at the base class and works its way up to the actual extended class. In the following code, when you construct class B, the call to print() from the base class constructor is now defined to call the print method B. But be aware, the values it displays for m and n will be 1 and 0 because the extended class B has yet to be initialized.<\/p>\n<p><a href=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/54\/2018\/02\/Screen-Shot-2018-02-23-at-10.44.40-AM.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-13040\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/54\/2018\/02\/Screen-Shot-2018-02-23-at-10.44.40-AM-520x176.png\" alt=\"\" width=\"567\" height=\"192\" \/><\/a><\/p>\n<p>It\u2019s a lot more work releasing a standard with no enhancements than you might think. It\u2019s hard getting participation in a group tasked with just making clarifications and fixing bugs. People naturally want to be creative, and as engineers, love to add features. But in the end, I think this revision of the standard serves end users very well. They want to have a document that reflects the behavior they see in their tools.<\/p>\n<p>What makes me say this?<\/p>\n<p>I track all the articles I\u2019ve written on this blog covering many different SystemVerilog topics. Surprisingly, there\u2019s one article that consistently gets more hits than any other article on the site: <a href=\"http:\/\/go.mentor.com\/wire-vs-reg\" target=\"_blank\" rel=\"noopener\">What\u2019s the deal with those wire\u2019s and reg\u2019s in Verilog<\/a>. Users still struggle with one of the most basic concepts of Verilog from its initial release in 1985. Many users (and teachers) have yet to adopt many of the features from Verilog-2001 that were supposed to make writing HDL code easier. So, do we really need to add more features to the language to make people more productive?<\/p>\n<p>Of course, the answer to that is always going to be yes. In fact, tool vendors are constantly correcting and extending SystemVerilog support without waiting for a new standard. It\u2019s the nature of the industry and a tough balancing act.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The IEEE-SA has a policy of keeping standards active by making sure they get a cycle of updates every 10&#8230;<\/p>\n","protected":false},"author":71589,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spanish_translation":"","french_translation":"","german_translation":"","italian_translation":"","polish_translation":"","japanese_translation":"","chinese_translation":"","footnotes":""},"categories":[1],"tags":[313,506,533,540,690,732,751],"industry":[],"product":[],"coauthors":[],"class_list":["post-13039","post","type-post","status-publish","format-standard","hentry","category-news","tag-313","tag-functional-verification","tag-ieee-1800","tag-ieee-sa","tag-rtl","tag-standards","tag-systemverilog"],"_links":{"self":[{"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/posts\/13039","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/users\/71589"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/comments?post=13039"}],"version-history":[{"count":1,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/posts\/13039\/revisions"}],"predecessor-version":[{"id":19854,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/posts\/13039\/revisions\/19854"}],"wp:attachment":[{"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/media?parent=13039"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/categories?post=13039"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/tags?post=13039"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/industry?post=13039"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/product?post=13039"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/verificationhorizons\/wp-json\/wp\/v2\/coauthors?post=13039"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}