<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Design Verification on PRBS23</title>
    <link>https://prbs23.com/blog/tags/design-verification/</link>
    <description>Recent content in Design Verification on PRBS23</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Thu, 17 Feb 2022 22:22:26 -0700</lastBuildDate>
    <atom:link href="https://prbs23.com/blog/tags/design-verification/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Don&#39;t Wait For Me</title>
      <link>https://prbs23.com/blog/posts/systemverilog-wait-fork/</link>
      <pubDate>Thu, 17 Feb 2022 22:22:26 -0700</pubDate>
      <guid>https://prbs23.com/blog/posts/systemverilog-wait-fork/</guid>
      <description>&lt;p&gt;From the perspective your more traditional software programming languages, multi-tasking in SystemVerilog is weird. On one hand, the language includes a special syntax (&lt;code&gt;fork&lt;/code&gt; and &lt;code&gt;join&lt;/code&gt;) that make it really easy to write code that &amp;ldquo;runs&amp;rdquo; in parallel. On the other hand, SystemVerilog &amp;ldquo;processes&amp;rdquo; aren&amp;rsquo;t really processes, or even threads, in the traditional sense. Even if you &amp;ldquo;get&amp;rdquo; the SystemVerilog model of cooperative &lt;a href=&#34;https://en.wikipedia.org/wiki/Cooperative_multitasking&#34;&gt;cooperative multi-tasking&lt;/a&gt;, there are a number of pitfalls you can run into. One such gotcha that I recently ran into was caused by what appeared to be an innocuous &lt;code&gt;wait fork&lt;/code&gt; statement.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Considering SystemVerilog Tagged Unions</title>
      <link>https://prbs23.com/blog/posts/considering-systemverilog-tagged-unions/</link>
      <pubDate>Sat, 22 Jan 2022 11:42:00 -0700</pubDate>
      <guid>https://prbs23.com/blog/posts/considering-systemverilog-tagged-unions/</guid>
      <description>&lt;p&gt;I have recently been thinking a lot about tagged unions in SystemVerilog, since I discovered them a few months ago. In this post I present some of the ideal use cases for tagged unions, and why I think no one actually uses them.&lt;/p&gt;&#xA;&lt;p&gt;Despite being &lt;a href=&#34;https://accellera.org/images/eda/sv-bc/att-1352/01-2003-12-09_TaggedUnions_Proposal.pdf&#34;&gt;initially proposed in 2003&lt;/a&gt;, and officially part of the language since the &lt;a href=&#34;https://ieeexplore.ieee.org/document/1560791&#34;&gt;SystemVerilog 1800-2005 standard&lt;/a&gt; was released, at this point tagged unions appear to be a forgotten language feature. I think this is a shame, because since I accidentally ran across the tagged union section of the LRM, I keep thinking of new applications where I would like to make use of them. Don&amp;rsquo;t get me wrong, there are plenty of reasons that you don&amp;rsquo;t see tagged unions used in the wild today (language ergonomics, tool support, etc.) but that doesn&amp;rsquo;t mean they couldn&amp;rsquo;t have been useful.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
