<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: WIOWIZ Technologies</title>
    <description>The latest articles on DEV Community by WIOWIZ Technologies (@wiowiztech).</description>
    <link>https://dev.to/wiowiztech</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3715118%2F2cdc9ebf-584d-4576-b2a3-003223c5ebad.png</url>
      <title>DEV Community: WIOWIZ Technologies</title>
      <link>https://dev.to/wiowiztech</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/wiowiztech"/>
    <language>en</language>
    <item>
      <title>WIOWIZ FSimX Studio : How Fast Can a Simulator Turn RTL Into a Runnable SoC?</title>
      <dc:creator>WIOWIZ Technologies</dc:creator>
      <pubDate>Sun, 16 Aug 2026 04:26:42 +0000</pubDate>
      <link>https://dev.to/wiowiztech/wiowiz-fsimx-studio-how-fast-can-a-simulator-turn-rtl-into-a-runnable-soc-3d7k</link>
      <guid>https://dev.to/wiowiztech/wiowiz-fsimx-studio-how-fast-can-a-simulator-turn-rtl-into-a-runnable-soc-3d7k</guid>
      <description>&lt;h1&gt;
  
  
  How Fast Can a Simulator Turn RTL Into a Runnable SoC?
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;Parsing source files is not the same as building the design those files describe.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Before simulation begins, a SystemVerilog tool must transform source code into a connected, executable hierarchy.&lt;/p&gt;

&lt;p&gt;That requires more than syntax checking.&lt;/p&gt;

&lt;h2&gt;
  
  
  What elaboration builds
&lt;/h2&gt;

&lt;p&gt;Consider a parameterized module:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;module fifo #(parameter WIDTH = 32) (...);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The source defines it once, but a full SoC may instantiate it many times with different parameters, widths and connections.&lt;/p&gt;

&lt;p&gt;Elaboration must resolve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Parameter values&lt;/li&gt;
&lt;li&gt;Generate blocks&lt;/li&gt;
&lt;li&gt;Module instances&lt;/li&gt;
&lt;li&gt;Signal widths&lt;/li&gt;
&lt;li&gt;Port connections&lt;/li&gt;
&lt;li&gt;Processes&lt;/li&gt;
&lt;li&gt;Class and package relationships&lt;/li&gt;
&lt;li&gt;The complete hierarchy under the selected top&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result becomes the design model used by simulation, coverage, assertions and timing annotation.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SystemVerilog sources
        ↓
Parse and resolve
        ↓
Elaborate instances
        ↓
Connect signals and processes
        ↓
Runnable SoC hierarchy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Measuring the scaling curve
&lt;/h2&gt;

&lt;p&gt;WIOWIZ measured the same FSimX front end and elaborator across designs ranging from a three-file testbench to a 588-file automotive SoC.&lt;/p&gt;

&lt;p&gt;The study records:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Source files&lt;/li&gt;
&lt;li&gt;Design units&lt;/li&gt;
&lt;li&gt;Instances&lt;/li&gt;
&lt;li&gt;Signals&lt;/li&gt;
&lt;li&gt;Processes&lt;/li&gt;
&lt;li&gt;Parse and elaboration wall time&lt;/li&gt;
&lt;li&gt;Error count&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwkkx5t15mm89gcb4mm1z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwkkx5t15mm89gcb4mm1z.png" alt="Elaboration scale across the WIOWIZ flagship design hierarchies" width="800" height="218"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The same pipeline is measured across small testbenches, chiplet systems, UVM environments and whole-chip designs.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The largest workload contains:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;588 source files
2,673 instances
~700,000 signals
10,657 processes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;FSimX parses and elaborates the hierarchy in about nine seconds, with zero compile or elaboration errors in the measured run.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the instance tree matters
&lt;/h2&gt;

&lt;p&gt;A summary count is useful, but downstream simulation needs a navigable model.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr994ycmpt1jubqchj8ho.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr994ycmpt1jubqchj8ho.png" alt="DeepFuse elaborated into a 430-instance depth-first hierarchy" width="800" height="1018"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DeepFuse is resolved into a connected hierarchy of module instances, signals and processes.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The elaborated tree establishes what the design actually builds. It distinguishes instantiated hardware from source files that merely exist in a repository.&lt;/p&gt;

&lt;p&gt;That model is then shared by:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Four-state runtime
SVA evaluation
Coverage
UVM execution
SDF back-annotation
Waveform and hierarchy debug
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why time to the first cycle matters
&lt;/h2&gt;

&lt;p&gt;RTL verification is iterative:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Edit
→ Elaborate
→ Simulate
→ Debug
→ Repeat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Even modest front-end delays become expensive when repeated throughout the day.&lt;/p&gt;

&lt;p&gt;A responsive elaborator shortens the distance between a source-code change and the first useful simulation result.&lt;/p&gt;

&lt;h2&gt;
  
  
  Compare stages carefully
&lt;/h2&gt;

&lt;p&gt;Simulator architectures do not always expose equivalent stages.&lt;/p&gt;

&lt;p&gt;For FSimX:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Parse + elaborate
→ Begin simulation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A compiled simulator may use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Analyze
→ Generate backend code
→ Build native model
→ Begin simulation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Comparing wall-clock time to the first cycle can be useful. Calling both measurements “front-end time” would be inaccurate because the pipelines perform different work.&lt;/p&gt;

&lt;p&gt;A fair comparison should identify:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Exactly which stages are timed&lt;/li&gt;
&lt;li&gt;Whether backend compilation is included&lt;/li&gt;
&lt;li&gt;Whether unsupported constructs were removed&lt;/li&gt;
&lt;li&gt;The tool version and machine configuration&lt;/li&gt;
&lt;li&gt;Whether the resulting model is runnable&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Explore the full whole-chip scaling study
&lt;/h2&gt;

&lt;p&gt;The complete WIOWIZ article includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Six measured design points&lt;/li&gt;
&lt;li&gt;The 588-file automotive SoC result&lt;/li&gt;
&lt;li&gt;DeepFuse and chiplet hierarchy views&lt;/li&gt;
&lt;li&gt;A full UVM compile-versus-elaboration measurement&lt;/li&gt;
&lt;li&gt;Zero-error results for every reported row&lt;/li&gt;
&lt;li&gt;The methodology caveat for first-cycle comparisons&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://www.wiowiz.com/elaborating-a-whole-chip.html" rel="noopener noreferrer"&gt;Read the full study: How Fast Can a Simulator Turn RTL Into a Runnable SoC?&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;code&gt;#systemverilog&lt;/code&gt; &lt;code&gt;#semiconductor&lt;/code&gt; &lt;code&gt;#performance&lt;/code&gt; &lt;code&gt;#verification&lt;/code&gt;&lt;/p&gt;

</description>
      <category>systemverilog</category>
      <category>verification</category>
      <category>performance</category>
      <category>semicondutor</category>
    </item>
    <item>
      <title>WIOWIZ FSimX Studio : How FSimX Decides When Compiled Execution Is Safe</title>
      <dc:creator>WIOWIZ Technologies</dc:creator>
      <pubDate>Sun, 16 Aug 2026 04:22:05 +0000</pubDate>
      <link>https://dev.to/wiowiztech/wiowiz-fsimx-studio-how-fsimx-decides-when-compiled-execution-is-safe-5c3b</link>
      <guid>https://dev.to/wiowiztech/wiowiz-fsimx-studio-how-fsimx-decides-when-compiled-execution-is-safe-5c3b</guid>
      <description>&lt;h1&gt;
  
  
  One Engine, No Knobs: How FSimX Decides When Compiled Execution Is Safe
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;Performance optimization should not require users to choose between two simulation flows and hope they produce the same result.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Simulators that offer compiled execution often expose it as a separate mode:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;simulator &lt;span class="nt"&gt;--interpreted&lt;/span&gt; design
simulator &lt;span class="nt"&gt;--compiled&lt;/span&gt; design
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That pushes a difficult decision onto the engineer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Is the faster path correct for this design?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;FSimX presents one user-facing flow. Internally, it selects interpreted or compiled execution for each eligible process—but only after a parity gate accepts the compiled result.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep the interpreter as the oracle
&lt;/h2&gt;

&lt;p&gt;The interpreter is treated as the correctness baseline.&lt;/p&gt;

&lt;p&gt;For a candidate process, FSimX compares compiled and interpreted execution at defined checkpoints:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Candidate process
       ↓
Run both execution paths
       ↓
Hash the signal-state snapshot
       ↓
Compare checkpoint sequences
       ↓
Match → Accept compiled execution
Mismatch → Fall back to interpreter
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The state hash uses the observable signal-state snapshot. If the compiled and interpreted paths produce different hash sequences, the optimization is blocked.&lt;/p&gt;

&lt;p&gt;This is a strong differential check, not a mathematical proof of equivalence. The claim is deliberately narrower: compiled execution is used only where the tested state remains in parity with the interpreter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prevent a vacuous parity result
&lt;/h2&gt;

&lt;p&gt;A comparison can appear successful if the optimized path was never meaningfully exercised.&lt;/p&gt;

&lt;p&gt;The parity gate therefore needs more than a matching hash. It must also establish that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A candidate process genuinely compiled&lt;/li&gt;
&lt;li&gt;The compiled path executed&lt;/li&gt;
&lt;li&gt;Named fallback behavior was exercised&lt;/li&gt;
&lt;li&gt;Reverting the optimization produces a detectable difference&lt;/li&gt;
&lt;li&gt;Both paths reached the same accepted state&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This prevents “nothing compiled” from being misreported as compiled correctness.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fall back instead of guessing
&lt;/h2&gt;

&lt;p&gt;Not every process is currently suitable for compiled execution.&lt;/p&gt;

&lt;p&gt;A process may:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use procedural behavior the compiler does not yet lower&lt;/li&gt;
&lt;li&gt;Contain unsupported operations&lt;/li&gt;
&lt;li&gt;Be too small to amortize compilation overhead&lt;/li&gt;
&lt;li&gt;Fail the parity comparison&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In those cases, FSimX automatically uses the interpreter.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Eligible and equivalent → Compiled path
Unsupported or divergent → Interpreter
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The user does not maintain separate scripts, results or debugging flows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where compiled execution helps
&lt;/h2&gt;

&lt;p&gt;On processes with sufficient work, compiled execution can outperform interpretation. On smaller processes—or when every candidate falls back—the compile attempt may add overhead without improving runtime.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flj01cbd5c55583yoppnb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flj01cbd5c55583yoppnb.png" alt="Simulation throughput showing the compiled tier relative to the interpreter and other tested execution paths" width="799" height="351"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The interpreter remains the correctness floor; eligible processes move to compiled execution only after parity acceptance.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Publishing both wins and fallback cases matters. “Compiled” is not automatically faster if nothing meaningful reaches the compiled tier.&lt;/p&gt;

&lt;h2&gt;
  
  
  What controls the default transition
&lt;/h2&gt;

&lt;p&gt;The interpreter remains the shipping default today. The compiled path handles accepted processes internally.&lt;/p&gt;

&lt;p&gt;Moving to compiled-by-default is tied to a measurable product condition:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Interpreter fallback count
on the reference full chip
              ↓
Must reach zero
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Even after that transition, the interpreter remains available internally as the correctness oracle.&lt;/p&gt;

&lt;h2&gt;
  
  
  See the parity gate, performance results and current limits
&lt;/h2&gt;

&lt;p&gt;The complete WIOWIZ study covers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Checkpoint-by-checkpoint state-hash parity&lt;/li&gt;
&lt;li&gt;Non-vacuity controls&lt;/li&gt;
&lt;li&gt;Automatic interpreter fallback&lt;/li&gt;
&lt;li&gt;Full-chip compiled-process results&lt;/li&gt;
&lt;li&gt;A workload where compilation currently provides no win&lt;/li&gt;
&lt;li&gt;The metric governing the default transition&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://www.wiowiz.com/one-engine-no-knobs.html" rel="noopener noreferrer"&gt;Read the full study: How FSimX Decides When Compiled Execution Is Safe&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;code&gt;#systemverilog&lt;/code&gt; &lt;code&gt;#performance&lt;/code&gt; &lt;code&gt;#verification&lt;/code&gt; &lt;code&gt;#semiconductor&lt;/code&gt;&lt;/p&gt;

</description>
      <category>systemverilog</category>
      <category>verification</category>
      <category>performance</category>
      <category>semicondutor</category>
    </item>
    <item>
      <title>WIOWIZ FSimX Studio : An Assertion That Wasn't Evaluated Did Not Pass</title>
      <dc:creator>WIOWIZ Technologies</dc:creator>
      <pubDate>Sun, 16 Aug 2026 04:09:16 +0000</pubDate>
      <link>https://dev.to/wiowiztech/wiowiz-fsimx-studio-an-assertion-that-wasnt-evaluated-did-not-pass-1bb3</link>
      <guid>https://dev.to/wiowiztech/wiowiz-fsimx-studio-an-assertion-that-wasnt-evaluated-did-not-pass-1bb3</guid>
      <description>&lt;h1&gt;
  
  
  An Assertion That Wasn’t Evaluated Did Not Pass
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;A green simulation log is meaningless if the property you depended on was never evaluated.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Concurrent SystemVerilog assertions contain some of the most valuable checks in a verification environment.&lt;/p&gt;

&lt;p&gt;Consider this property:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;property req_ack;
  @(posedge clk)
    req |-&amp;gt; ##[1:3] ack;
endproperty

assert property (req_ack);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It requires an acknowledgement to arrive one to three cycles after a request.&lt;/p&gt;

&lt;p&gt;If a simulator cannot lower the cycle-delay range, it has three choices:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Reject the property
Warn and skip it
Silently skip it
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Only the first choice is safe by default.&lt;/p&gt;

&lt;p&gt;If the simulation continues without evaluating the assertion, a clean run may look like a pass even though the intended behaviour was never checked.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use a planted failure as proof of evaluation
&lt;/h2&gt;

&lt;p&gt;A reliable assertion test should include a negative control:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Many valid handshakes
+
One deliberate violation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The planted failure proves that the property is active.&lt;/p&gt;

&lt;p&gt;If the simulator reports an all-pass result, the next question should be:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Did the property genuinely pass, or was it never evaluated?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A pass count without an evaluated count cannot answer that question.&lt;/p&gt;

&lt;h2&gt;
  
  
  Track the complete assertion lifecycle
&lt;/h2&gt;

&lt;p&gt;FSimX separates assertion activity into five categories:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;evaluated — lowered, armed and checked
skipped   — parsed but not evaluated
passed    — substantive successful evaluations
failed    — detected violations
vacuous   — antecedent never triggered
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The verdict policy is intentionally strict:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;skipped &amp;gt; 0 → PASS is forbidden
failed  &amp;gt; 0 → Run exits non-zero
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A skipped assertion remains &lt;strong&gt;unproven&lt;/strong&gt;. It cannot contribute to a successful verdict.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vacuous is not the same as passed
&lt;/h2&gt;

&lt;p&gt;Consider:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;req |-&amp;gt; ##1 ack
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If &lt;code&gt;req&lt;/code&gt; never becomes true, the assertion may be vacuously satisfied. No violation occurred—but the stimulus also never exercised the behaviour.&lt;/p&gt;

&lt;p&gt;That result can be useful diagnostically:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;High vacuity
→ Antecedent rarely or never triggered
→ Stimulus may not be testing the intended scenario
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Combining vacuous and substantive passes into one number would exaggerate how much behaviour was actually checked.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make the result machine-readable
&lt;/h2&gt;

&lt;p&gt;The same assertion ledger should be available to CI pipelines and reporting systems:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"assertions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"evaluated"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"skipped"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"passed"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;815&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"failed"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"vacuous"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This allows automation to enforce the same rules as the human-readable log.&lt;/p&gt;

&lt;p&gt;A pipeline can fail when:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;assertions.skipped &amp;gt; 0
assertions.failed &amp;gt; 0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That prevents an unsupported or dropped property from disappearing inside a green build.&lt;/p&gt;

&lt;h2&gt;
  
  
  Compare evaluation—not parsing
&lt;/h2&gt;

&lt;p&gt;Simulator capability should be measured by whether a property was executed, not merely accepted as source text.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdbcl33t1o3adx6b7ajkb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdbcl33t1o3adx6b7ajkb.png" alt="Capability matrix showing concurrent-assertion support across the tested simulator versions" width="800" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The SVA comparison distinguishes evaluated properties from properties the tested tool versions could not compile.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Version-scoped comparison matters because assertion-language support evolves. A reproducible result should identify the exact tool release, property and workload being tested.&lt;/p&gt;

&lt;h2&gt;
  
  
  See the negative control and full assertion evidence
&lt;/h2&gt;

&lt;p&gt;The complete WIOWIZ study includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The ranged-delay SVA probe&lt;/li&gt;
&lt;li&gt;A deliberately planted violation&lt;/li&gt;
&lt;li&gt;Version-specific simulator results&lt;/li&gt;
&lt;li&gt;Machine-readable assertion counts&lt;/li&gt;
&lt;li&gt;Vacuity measurements&lt;/li&gt;
&lt;li&gt;Larger assertion workloads&lt;/li&gt;
&lt;li&gt;Strict CI verdict behaviour&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://www.wiowiz.com/assertions-evaluated-not-skipped.html" rel="noopener noreferrer"&gt;Read the full study: An Assertion That Wasn’t Evaluated Did Not Pass&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;code&gt;#systemverilog&lt;/code&gt; &lt;code&gt;#verification&lt;/code&gt; &lt;code&gt;#testing&lt;/code&gt; &lt;code&gt;#semiconductor&lt;/code&gt;&lt;/p&gt;

</description>
      <category>systemverilog</category>
      <category>verification</category>
      <category>testing</category>
      <category>semiconductor</category>
    </item>
    <item>
      <title>WIOWIZ FSimX Studio : What Does Two-State Simulation Hide?</title>
      <dc:creator>WIOWIZ Technologies</dc:creator>
      <pubDate>Sun, 16 Aug 2026 04:01:06 +0000</pubDate>
      <link>https://dev.to/wiowiztech/wiowiz-fsimx-studio-what-does-two-state-simulation-hide-2lin</link>
      <guid>https://dev.to/wiowiztech/wiowiz-fsimx-studio-what-does-two-state-simulation-hide-2lin</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Treating every unknown as zero can make a design follow a valid-looking path that the RTL has not earned.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;SystemVerilog uses four-state logic:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0 — logic low
1 — logic high
X — unknown
Z — high impedance
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A two-state simulator works with only &lt;code&gt;0&lt;/code&gt; and &lt;code&gt;1&lt;/code&gt;. This is a deliberate performance-oriented modelling choice—but it can produce a different result when the design depends on initialization, reset or unknown propagation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the answers diverge
&lt;/h2&gt;

&lt;p&gt;Consider an uninitialized register:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;logic [7:0] state;

initial begin
  $display("%h", state);
end
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A four-state simulator preserves the value as unknown:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;xx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A two-state model may initialize it to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;00
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That difference can affect:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reset controllers&lt;/li&gt;
&lt;li&gt;Conditional expressions&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;case&lt;/code&gt; selectors&lt;/li&gt;
&lt;li&gt;Arithmetic operations&lt;/li&gt;
&lt;li&gt;State-machine transitions&lt;/li&gt;
&lt;li&gt;Chiplet link training&lt;/li&gt;
&lt;li&gt;Watchdog completion&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A state machine that sees &lt;code&gt;X&lt;/code&gt; may take its default or error path. If the same value becomes zero, it may enter an apparently valid state and continue without revealing the initialization problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  A changed value can change the entire run
&lt;/h2&gt;

&lt;p&gt;The difference is not always limited to one signal in a waveform.&lt;/p&gt;

&lt;p&gt;On larger workloads, the selected modelling approach can determine whether:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A link trains
A completion condition occurs
An assertion is evaluated
A watchdog expires
The testbench reaches its verdict
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is why two-state and four-state results should be understood as answers produced under different semantic models.&lt;/p&gt;

&lt;p&gt;Two-state behaviour is not automatically a defect. The engineering decision depends on which risks the verification run is expected to expose.&lt;/p&gt;

&lt;h2&gt;
  
  
  Throughput is only one part of performance
&lt;/h2&gt;

&lt;p&gt;Compiled two-state execution can deliver much higher sustained throughput on long, compute-bound RTL workloads.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flj01cbd5c55583yoppnb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flj01cbd5c55583yoppnb.png" alt="Simulation throughput comparison across the tested tools and workloads" width="799" height="351"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Compiled two-state execution leads sustained cycle throughput in the measured free-running workload.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;But cycle throughput does not include the full path to a result.&lt;/p&gt;

&lt;p&gt;A simulator may spend time on:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Parsing and elaboration
→ Backend generation
→ Native compilation
→ Runtime execution
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw682qhl97dswp5cnh0z0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw682qhl97dswp5cnh0z0.png" alt="Front-end, backend-build and simulation time across flagship designs" width="800" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The total wall clock includes front-end work, backend build time and simulation.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For long runs, the compiled model may amortize its build cost and dominate runtime performance. For short edit-run-debug loops, time to the first simulated cycle can matter more.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choosing the right question
&lt;/h2&gt;

&lt;p&gt;The practical comparison is not simply:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Fast versus slow
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Which semantics does this test require?
How quickly does the first cycle begin?
How long will the simulation run?
Could X propagation change the verdict?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For initialization-sensitive logic, reset sequencing, state machines and chiplet links, four-state behaviour may expose failures that a two-state model cannot represent.&lt;/p&gt;

&lt;h2&gt;
  
  
  See the measured semantic and performance results
&lt;/h2&gt;

&lt;p&gt;The complete WIOWIZ study includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Five X-semantics checks&lt;/li&gt;
&lt;li&gt;Four-state reference comparisons&lt;/li&gt;
&lt;li&gt;Chiplet workloads where modelling changes completion&lt;/li&gt;
&lt;li&gt;Sustained cycle-throughput measurements&lt;/li&gt;
&lt;li&gt;Time-to-first-cycle analysis&lt;/li&gt;
&lt;li&gt;FSimX’s current disclosed limitation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://www.wiowiz.com/four-state-truth-at-speed.html" rel="noopener noreferrer"&gt;Read the full study: What Does Two-State Simulation Hide?&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;code&gt;#systemverilog&lt;/code&gt; &lt;code&gt;#verification&lt;/code&gt; &lt;code&gt;#semiconductor&lt;/code&gt; &lt;code&gt;#performance&lt;/code&gt;&lt;/p&gt;

</description>
      <category>systemverilog</category>
      <category>verification</category>
      <category>semiconductor</category>
      <category>performance</category>
    </item>
    <item>
      <title>WIOWIZ EDA Platform</title>
      <dc:creator>WIOWIZ Technologies</dc:creator>
      <pubDate>Sat, 15 Aug 2026 14:00:05 +0000</pubDate>
      <link>https://dev.to/wiowiztech/wiowiz-eda-platform-2d8h</link>
      <guid>https://dev.to/wiowiztech/wiowiz-eda-platform-2d8h</guid>
      <description>&lt;p&gt;WIOWIZ EDA Suite is now live&lt;/p&gt;

&lt;p&gt;The connected RTL frontend verification suite, in the cloud.&lt;/p&gt;

&lt;p&gt;Lint → CDC/RDC → Formal → Simulation → Coverage → Power-Aware → Signoff &lt;br&gt;
All engines talking to each other. Full tool output. No install.&lt;/p&gt;

&lt;p&gt;What’s inside the suite:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;FSiMX&lt;/strong&gt; – RTL / GLS / UVM simulation &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Truti&lt;/strong&gt; – CDC &amp;amp; RDC structural analysis &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hetu-Formal&lt;/strong&gt; – Property proofs &amp;amp; counterexamples &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;vWIZ-Coverage&lt;/strong&gt; – Code + functional coverage &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;vWIZ-Wave&lt;/strong&gt; – Waveform debug &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vajra-LP&lt;/strong&gt; – UPF / low-power verification 
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxesv9jo4r29xvhwep64u.jpg" alt=" " width="800" height="537"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Point it at your design. Every stage hands context to the next. &lt;br&gt;
Private workspace. Just your work email.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://platform.wiowiz.ai" rel="noopener noreferrer"&gt;https://platform.wiowiz.ai&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Built for teams who want a real connected flow instead of stitching tools together.&lt;/p&gt;

&lt;p&gt;Try the suite. Tell us what you break. Your feedback helps us improve the platform and make it better for everyone.&lt;/p&gt;

</description>
      <category>wiowiz</category>
      <category>eventdriven</category>
      <category>fsimx</category>
      <category>wiowizeda</category>
    </item>
    <item>
      <title>WIOWIZ FsimX Studio - Can an Open Simulator Run a Real UVM Environment?</title>
      <dc:creator>WIOWIZ Technologies</dc:creator>
      <pubDate>Tue, 11 Aug 2026 13:31:18 +0000</pubDate>
      <link>https://dev.to/wiowiztech/wiowiz-fsimx-studio-can-an-open-simulator-run-a-real-uvm-environment-1h7o</link>
      <guid>https://dev.to/wiowiztech/wiowiz-fsimx-studio-can-an-open-simulator-run-a-real-uvm-environment-1h7o</guid>
      <description>&lt;h1&gt;
  
  
  Can an Open Simulator Run a Real UVM Environment?
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;Compiling UVM headers is not the same as running a verification environment—and reaching the end of a simulation is not automatically a valid pass.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When engineers evaluate an open simulator, one of the first questions is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Will it run our actual UVM environment?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The meaningful test is not a toy sequence. It is an environment containing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Accellera UVM library&lt;/li&gt;
&lt;li&gt;Factory and class resolution&lt;/li&gt;
&lt;li&gt;Phasing&lt;/li&gt;
&lt;li&gt;Drivers and monitors&lt;/li&gt;
&lt;li&gt;Sequences&lt;/li&gt;
&lt;li&gt;Scoreboards&lt;/li&gt;
&lt;li&gt;Register abstraction&lt;/li&gt;
&lt;li&gt;A trustworthy end-of-test verdict&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What “runs UVM” should mean
&lt;/h2&gt;

&lt;p&gt;A valid UVM result needs to satisfy four conditions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. The environment elaborated
2. Transactions occurred
3. Checking occurred
4. The verdict reflects that work
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A simulator can complete while the testbench performs no useful verification.&lt;/p&gt;

&lt;p&gt;For example, if a scoreboard reports zero writes and zero reads, a printed &lt;code&gt;PASS&lt;/code&gt; should be treated as suspicious—not successful.&lt;/p&gt;

&lt;h2&gt;
  
  
  Testing the same environment
&lt;/h2&gt;

&lt;p&gt;WIOWIZ tested three open simulators against the same Accellera IEEE 1800.2-2020 UVM workloads.&lt;/p&gt;

&lt;p&gt;The results are scoped to the exact versions used. Open-source tools evolve quickly, so broad claims such as “Tool X does not support UVM” are less useful than reproducible statements about a specific version, library and workload.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdbcl33t1o3adx6b7ajkb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdbcl33t1o3adx6b7ajkb.png" alt="Capability matrix comparing the tested simulator versions across UVM and verification workloads" width="800" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The matrix records whether each tested version produced a runnable verification result.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The workload increases in complexity:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;UVM hello_world
       ↓
Bus environment with driver, monitor and scoreboard
       ↓
Full upstream RISC-V timer DV environment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Some tools may stop in the UVM library or class type system before simulation begins. That is a compile-time outcome—not a UVM execution result.&lt;/p&gt;

&lt;h2&gt;
  
  
  The scale test
&lt;/h2&gt;

&lt;p&gt;The largest workload is a complete upstream RISC-V timer UVM DV environment.&lt;/p&gt;

&lt;p&gt;It includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;342 source files&lt;/li&gt;
&lt;li&gt;653 design units&lt;/li&gt;
&lt;li&gt;27 packages&lt;/li&gt;
&lt;li&gt;Agents and monitors&lt;/li&gt;
&lt;li&gt;A scoreboard&lt;/li&gt;
&lt;li&gt;Register-abstraction infrastructure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa6kk1ecxz3i8s192ifvb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa6kk1ecxz3i8s192ifvb.png" alt="Full RISC-V timer UVM DV environment elaborated by FSimX" width="800" height="245"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The complete environment is elaborated into packages, instances and signals before runtime begins.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The important result is not simply that FSimX accepts the files.&lt;/p&gt;

&lt;p&gt;The environment must elaborate, run meaningful activity, perform checks and produce an evidence-backed verdict.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why verdict integrity matters
&lt;/h2&gt;

&lt;p&gt;Two common false-positive patterns are:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PASS changes with the launch directory
PASS is reported even though the scoreboard checked nothing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first indicates an unstable build or include-resolution problem. The second indicates that the verification environment did no measurable work.&lt;/p&gt;

&lt;p&gt;A simulator evaluation should detect both conditions instead of presenting them as successful runs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The takeaway
&lt;/h2&gt;

&lt;p&gt;“UVM support” should not mean:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The simulator parsed some UVM source.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It should mean:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A real environment elaborated, transactions occurred, checking occurred and the verdict accurately reflected the work.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is the standard against which FSimX and the tested simulator versions were evaluated.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://www.wiowiz.com/open-frontend-runs-your-uvm.html" rel="noopener noreferrer"&gt;&lt;strong&gt;Read the complete comparison, commands, measured results and version-specific limitations on WIOWIZ&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;code&gt;#systemverilog&lt;/code&gt; &lt;code&gt;#verification&lt;/code&gt; &lt;code&gt;#semiconductor&lt;/code&gt; &lt;code&gt;#opensource&lt;/code&gt;&lt;/p&gt;

</description>
      <category>systemverilog</category>
      <category>verification</category>
      <category>semiconductor</category>
      <category>opensource</category>
    </item>
    <item>
      <title>WIOWIZ FsimX Studio - Why FsimX Built Its Own SystemVerilog Front End</title>
      <dc:creator>WIOWIZ Technologies</dc:creator>
      <pubDate>Tue, 11 Aug 2026 13:24:12 +0000</pubDate>
      <link>https://dev.to/wiowiztech/wiowiz-fsimx-studio-why-fsimx-built-its-own-systemverilog-front-end-4jf5</link>
      <guid>https://dev.to/wiowiztech/wiowiz-fsimx-studio-why-fsimx-built-its-own-systemverilog-front-end-4jf5</guid>
      <description>&lt;h1&gt;
  
  
  Why FSimX Built Its Own SystemVerilog Front End
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;Parsing SystemVerilog is only the beginning. A simulator must turn that source into an executable design.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;FSimX did not begin with a native SystemVerilog front end. Its original architecture used Slang for parsing—and Slang performed that job well.&lt;/p&gt;

&lt;p&gt;The limitation was not parsing quality. It was what FSimX needed to control after parsing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SystemVerilog source
        ↓
Parsing
        ↓
Lowering
        ↓
Elaboration
        ↓
Simulator-owned IR
        ↓
Runtime execution
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Full-chip gate-level timing and complete UVM environments both depend on the lower half of this pipeline.&lt;/p&gt;

&lt;h2&gt;
  
  
  A syntax tree is not an executable design
&lt;/h2&gt;

&lt;p&gt;A parser can confirm that the source is grammatically valid and produce a syntax tree.&lt;/p&gt;

&lt;p&gt;A simulator must also resolve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Parameterized module instances&lt;/li&gt;
&lt;li&gt;Generate-block specialization&lt;/li&gt;
&lt;li&gt;Signal widths and connectivity&lt;/li&gt;
&lt;li&gt;Type and scope relationships&lt;/li&gt;
&lt;li&gt;Class hierarchies and factories&lt;/li&gt;
&lt;li&gt;Timing paths&lt;/li&gt;
&lt;li&gt;Runtime processes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, a module written once may become hundreds of concrete instances, each with different parameters and connections.&lt;/p&gt;

&lt;p&gt;Only elaboration turns the source description into that complete hierarchy.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwkkx5t15mm89gcb4mm1z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwkkx5t15mm89gcb4mm1z.png" alt="FSimX elaboration scale across WIOWIZ design hierarchies" width="800" height="218"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The native front end produces the instances, signals and processes consumed by the simulator runtime.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why gate-level timing needs IR ownership
&lt;/h2&gt;

&lt;p&gt;SDF back-annotation does not attach delays to source tokens.&lt;/p&gt;

&lt;p&gt;The timing data must resolve against:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Elaborated cell instances&lt;/li&gt;
&lt;li&gt;Concrete interconnect paths&lt;/li&gt;
&lt;li&gt;Lowered &lt;code&gt;specify&lt;/code&gt; paths&lt;/li&gt;
&lt;li&gt;Runtime delay objects
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;fsxrun &lt;span class="nt"&gt;-sv&lt;/span&gt; &lt;span class="nt"&gt;-sdf&lt;/span&gt; design.sdf &lt;span class="nt"&gt;-top&lt;/span&gt; tb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For an annotated delay to fire correctly, the simulator must own an intermediate representation where the target path can be located and updated.&lt;/p&gt;

&lt;p&gt;That requirement pushed FSimX beyond a parsing-layer integration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why UVM created the same requirement
&lt;/h2&gt;

&lt;p&gt;A UVM environment adds another kind of elaboration:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Class inheritance&lt;/li&gt;
&lt;li&gt;Factory resolution&lt;/li&gt;
&lt;li&gt;Component hierarchy&lt;/li&gt;
&lt;li&gt;Sequences&lt;/li&gt;
&lt;li&gt;Register abstraction&lt;/li&gt;
&lt;li&gt;Simulation phases&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These relationships must be built before simulation time begins.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa6kk1ecxz3i8s192ifvb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa6kk1ecxz3i8s192ifvb.png" alt="Full UVM DV environment elaborated by the FSimX native front end" width="800" height="245"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The environment is elaborated as packages, design units, instances and signals—not merely accepted as source files.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Although gate-level timing and UVM appear to be different workloads, both require the same architectural capability: control over how SystemVerilog becomes an executable model.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the decision enabled
&lt;/h2&gt;

&lt;p&gt;Owning the front end gave FSimX one design model that downstream features can share:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Elaborated hierarchy
├── Runtime execution
├── SDF timing
├── Four-state values
├── Coverage
├── Assertions
└── UVM scheduling
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This was not about building another parser for its own sake.&lt;/p&gt;

&lt;p&gt;It was about owning the lowering, elaboration and IR required by the simulator.&lt;/p&gt;

&lt;h2&gt;
  
  
  The takeaway
&lt;/h2&gt;

&lt;p&gt;Parsing answers:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Is this SystemVerilog source valid?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Elaboration answers:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What concrete hardware and verification environment does it create?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For linting or lightweight source analysis, parsing may be enough.&lt;/p&gt;

&lt;p&gt;For chip-scale timing, UVM and simulation, the executable design begins after parsing.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://www.wiowiz.com/why-we-wrote-our-own-frontend.html" rel="noopener noreferrer"&gt;&lt;strong&gt;Read the complete engineering rationale, benchmarks and current limitations on WIOWIZ&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;code&gt;#systemverilog&lt;/code&gt; &lt;code&gt;#verification&lt;/code&gt; &lt;code&gt;#semiconductor&lt;/code&gt; &lt;code&gt;#programming&lt;/code&gt;&lt;/p&gt;

</description>
      <category>systemverilog</category>
      <category>verification</category>
      <category>semiconductor</category>
      <category>programming</category>
    </item>
    <item>
      <title>WIOWIZ FsimX Studio - Coverage: Power-Aware Coverage from UPF Intent</title>
      <dc:creator>WIOWIZ Technologies</dc:creator>
      <pubDate>Tue, 11 Aug 2026 12:30:22 +0000</pubDate>
      <link>https://dev.to/wiowiztech/wiowiz-fsimx-studio-coverage-power-aware-coverage-from-upf-intent-4oom</link>
      <guid>https://dev.to/wiowiztech/wiowiz-fsimx-studio-coverage-power-aware-coverage-from-upf-intent-4oom</guid>
      <description>&lt;h1&gt;
  
  
  Functional Coverage Does Not Prove Your Power Intent
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;A low-power SoC can achieve high functional coverage without powering down a single domain.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Traditional coverage answers whether the RTL logic was exercised. It does not automatically verify the behaviour introduced by the UPF power intent.&lt;/p&gt;

&lt;p&gt;A low-power verification plan must answer additional questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Did every power domain enter its required states?&lt;/li&gt;
&lt;li&gt;Were isolation controls applied and released?&lt;/li&gt;
&lt;li&gt;Was retained state saved and restored?&lt;/li&gt;
&lt;li&gt;Were legal power transitions exercised?&lt;/li&gt;
&lt;li&gt;Were illegal transitions detected?&lt;/li&gt;
&lt;li&gt;Did the domain recover correctly after wake-up?&lt;/li&gt;
&lt;li&gt;Were unsafe DVFS sequences prevented?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are separate verification goals and should not be hidden inside an overall functional-coverage percentage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Intent defines the target
&lt;/h2&gt;

&lt;p&gt;Power-aware coverage requires two inputs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;UPF-derived inventory → What should be covered
Runtime event stream  → What actually happened
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The UPF-derived inventory provides the denominator. It identifies the power domains, states, transitions, isolation strategies, retention groups and other power-related points expected from the design.&lt;/p&gt;

&lt;p&gt;The simulator’s runtime events provide the hits.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqgy9yf8qos1void3q5jh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqgy9yf8qos1void3q5jh.png" alt="Power-aware coverage overview with independent collector results" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Each power parameter remains an independent coverage collector with its own result.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A point is covered only when the corresponding power behaviour is observed during execution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Power states and transitions are different questions
&lt;/h2&gt;

&lt;p&gt;Entering every power state does not prove that every required transition between those states occurred.&lt;/p&gt;

&lt;p&gt;The coverage model therefore keeps state and transition coverage separate.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;State coverage      → Was OFF, ON or RETENTION entered?
Transition coverage → Was OFF → ON or ON → RETENTION exercised?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq87c9bsxy01ip21hh5c9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq87c9bsxy01ip21hh5c9.png" alt="Power transition matrix showing legal and illegal transitions" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Legal edges are covered when taken. Illegal edges require negative-control semantics.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;An illegal transition should not be counted like a normal coverage hit. It should count only when the test attempts it and the design correctly detects or blocks it.&lt;/p&gt;

&lt;p&gt;If the illegal transition occurs without detection, the result is a defect—not additional coverage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Detecting the false green
&lt;/h2&gt;

&lt;p&gt;A test may be named “power-down scenario” while never driving the design into a power-down state.&lt;/p&gt;

&lt;p&gt;If the functional test passes, a conventional dashboard may still appear green.&lt;/p&gt;

&lt;p&gt;Power-aware scenario correlation compares the requested scenario with the power activity actually observed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqotzonfggbmspqp4xv57.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqotzonfggbmspqp4xv57.png" alt="Scenario correlation flagging a requested power scenario without an observed power-down" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The requested scenario is checked against the states and transitions that really occurred.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If no domain turned off, no retention sequence ran and no recovery occurred, the test did not validate low-power behaviour—regardless of its name.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep power closure separate
&lt;/h2&gt;

&lt;p&gt;Power-aware coverage should have its own gate and verdict:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PASS_POWER_AWARE_FUNCTIONAL
POWER_COVERAGE_INCOMPLETE
POWER_COVERAGE_DEFECT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It should not be averaged into code or functional coverage. Otherwise, frequently exercised logic may hide incomplete power sequencing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The takeaway
&lt;/h2&gt;

&lt;p&gt;Functional coverage asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Did the logic execute?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Power-aware coverage asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Did the design enter, survive and recover from its power states exactly as the intent required?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A low-power signoff needs both answers.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://www.wiowiz.com/vwiz-coverage-power-aware-coverage-from-upf-intent.html" rel="noopener noreferrer"&gt;&lt;strong&gt;Explore the complete UPF-driven power-aware coverage model on WIOWIZ&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;code&gt;#verification&lt;/code&gt; &lt;code&gt;#semiconductor&lt;/code&gt; &lt;code&gt;#vlsi&lt;/code&gt; &lt;code&gt;#lowpower&lt;/code&gt;&lt;/p&gt;

</description>
      <category>semiconductor</category>
      <category>vlsi</category>
      <category>lowpower</category>
      <category>verification</category>
    </item>
    <item>
      <title>WIOWIZ FsimX Studio - Coverage: Formal Reachability and UNR Closure</title>
      <dc:creator>WIOWIZ Technologies</dc:creator>
      <pubDate>Tue, 11 Aug 2026 12:23:59 +0000</pubDate>
      <link>https://dev.to/wiowiztech/wiowiz-fsimx-studio-coverage-formal-reachability-and-unr-closure-3o1d</link>
      <guid>https://dev.to/wiowiztech/wiowiz-fsimx-studio-coverage-formal-reachability-and-unr-closure-3o1d</guid>
      <description>&lt;h1&gt;
  
  
  Coverage Closure with Proof: Formal Reachability and UNR Analysis
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;An uncovered point is not automatically a verification gap. It may be unreachable—but that conclusion should be proven, not assumed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Near the end of a verification cycle, uncovered points usually fall into different categories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A test has not exercised the point&lt;/li&gt;
&lt;li&gt;The point is reachable but still uncovered&lt;/li&gt;
&lt;li&gt;The point is structurally impossible to reach&lt;/li&gt;
&lt;li&gt;The available analysis cannot determine the answer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Treating every uncovered point the same creates unnecessary tests. Waiving them without evidence creates a different risk.&lt;/p&gt;

&lt;p&gt;Formal reachability provides a stronger path to closure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three outcomes instead of two
&lt;/h2&gt;

&lt;p&gt;vWIZ-Coverage combines simulation coverage with formal unreachability analysis to classify coverage points as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;COVERED
Simulation reached the point

UNREACHABLE
Formal analysis proved the point cannot occur

OPEN
The point is reachable or remains undetermined
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm7r6a6u6zxmxqnzthvml.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm7r6a6u6zxmxqnzthvml.png" alt="UNR closure view classifying uncovered points as reachable, unreachable or undetermined" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Every uncovered point retains its formal verdict and the evidence supporting it.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Only points proven unreachable are retired from the coverage target. Reachable and undetermined points remain in the denominator and continue to count against closure.&lt;/p&gt;

&lt;p&gt;This keeps unknowns visible instead of silently converting them into exclusions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Refine the denominator—not the numerator
&lt;/h2&gt;

&lt;p&gt;Formal analysis does not create coverage hits.&lt;/p&gt;

&lt;p&gt;If three points are proven structurally dead, those points may leave the target denominator. The number of covered points does not increase.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Raw coverage
     ↓
Formal reachability analysis
     ↓
Proof-refined coverage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkzew1mnnulrrzuuauc39.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkzew1mnnulrrzuuauc39.png" alt="Formal closure ladder showing covered, proven-unreachable and undetermined coverage points" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The movement from raw coverage to proof-refined coverage remains visible and traceable.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Every denominator change should be connected to formal evidence—not hidden behind a modified percentage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Simulation evidence must win contradictions
&lt;/h2&gt;

&lt;p&gt;Formal results should not be accepted blindly.&lt;/p&gt;

&lt;p&gt;Consider this conflict:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Formal verdict : UNREACHABLE
Simulation hits: 48
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A point reached during simulation cannot also be unreachable.&lt;/p&gt;

&lt;p&gt;A reliable evidence-join process must reject the contradictory formal bundle, preserve the existing coverage database and identify the offending point.&lt;/p&gt;

&lt;p&gt;This independent check is essential. Otherwise, formal analysis becomes another source of claims instead of an arbiter of evidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  Proof versus waiver
&lt;/h2&gt;

&lt;p&gt;A manual waiver says:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We believe this point cannot happen.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Formal reachability says:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Here is the evidence that this point cannot happen.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That difference matters during reviews, audits and signoff. Proof-refined coverage can be re-derived from the raw data, formal verdicts and exclusion history.&lt;/p&gt;

&lt;h2&gt;
  
  
  The takeaway
&lt;/h2&gt;

&lt;p&gt;Coverage closure should distinguish between:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;What simulation covered
What formal analysis proved impossible
What still remains unknown
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A point should leave the coverage target only when the evidence earns that decision.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://www.wiowiz.com/vwiz-coverage-formal-reachability-and-unr-closure.html" rel="noopener noreferrer"&gt;&lt;strong&gt;Explore the complete formal reachability and UNR-closure workflow on WIOWIZ&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;code&gt;#verification&lt;/code&gt; &lt;code&gt;#formalverification&lt;/code&gt; &lt;code&gt;#semiconductor&lt;/code&gt; &lt;code&gt;#vlsi&lt;/code&gt;&lt;/p&gt;

</description>
      <category>verification</category>
      <category>formalverification</category>
      <category>semiconductor</category>
      <category>vlsi</category>
    </item>
    <item>
      <title>WIOWIZ - VWIZ-COVERAGE: Code, Toggle, FSM, Expression, Covergroup and Assertion in One Database</title>
      <dc:creator>WIOWIZ Technologies</dc:creator>
      <pubDate>Mon, 10 Aug 2026 15:58:12 +0000</pubDate>
      <link>https://dev.to/wiowiztech/wiowiz-vwiz-coverage-code-toggle-fsm-expression-covergroup-and-assertion-in-one-database-4jj1</link>
      <guid>https://dev.to/wiowiztech/wiowiz-vwiz-coverage-code-toggle-fsm-expression-covergroup-and-assertion-in-one-database-4jj1</guid>
      <description>&lt;h1&gt;
  
  
  One Coverage Database Without One Misleading Percentage
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;Statement, branch, toggle, FSM, functional and assertion coverage do not answer the same question. Why reduce them to one number?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A single coverage percentage looks simple—but simplicity can hide verification gaps.&lt;/p&gt;

&lt;p&gt;If multiple coverage families are averaged together, easy-to-hit metrics may compensate for critical areas that remain untested. Even worse, a metric that was never collected may disappear from the final result.&lt;/p&gt;

&lt;p&gt;vWIZ-Coverage keeps every metric family in one database while preserving each as a separate verification question.&lt;/p&gt;

&lt;h2&gt;
  
  
  One database, separate metrics
&lt;/h2&gt;

&lt;p&gt;The coverage database can bring together:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Statement coverage&lt;/li&gt;
&lt;li&gt;Branch coverage&lt;/li&gt;
&lt;li&gt;Toggle coverage&lt;/li&gt;
&lt;li&gt;FSM coverage&lt;/li&gt;
&lt;li&gt;Expression coverage&lt;/li&gt;
&lt;li&gt;Covergroups and crosses&lt;/li&gt;
&lt;li&gt;Assertion coverage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each family retains its own numerator, denominator and collection status.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjwl3g3p5llwiqc3tpvxc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjwl3g3p5llwiqc3tpvxc.png" alt="vWIZ-Coverage dashboard showing separate cards for each metric family" width="800" height="521"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;One database feeds the dashboard, but every coverage family remains independently visible.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This prevents a high toggle score, for example, from hiding an uncovered FSM transition or an untested functional combination.&lt;/p&gt;

&lt;h2&gt;
  
  
  Missing is not zero—or complete
&lt;/h2&gt;

&lt;p&gt;There are three very different conditions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0% coverage    → Measured, but nothing was covered
100% coverage  → Measured, and everything was covered
Not collected  → No valid measurement exists
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An unfed metric should not be silently treated as zero, full or irrelevant.&lt;/p&gt;

&lt;p&gt;vWIZ-Coverage reports it as &lt;strong&gt;Not Collected&lt;/strong&gt;, preserving the distinction between a verified result and missing evidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connect coverage to the source
&lt;/h2&gt;

&lt;p&gt;Summary percentages identify that a gap exists. Engineers still need to find it.&lt;/p&gt;

&lt;p&gt;The code-coverage workspace connects statement and branch results to the source lines that produced them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1sb5bnqt5j3b161599oz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1sb5bnqt5j3b161599oz.png" alt="Code coverage workspace showing covered and uncovered source lines" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Covered and uncovered lines remain visible together in their source context.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This also keeps statement and branch coverage separate. Executing a line does not prove that every outcome of its decision was exercised.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters for signoff
&lt;/h2&gt;

&lt;p&gt;A credible coverage workflow should answer four questions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;What was measured?
What was covered?
What remains open?
What was never collected?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Merging all coverage into a single percentage weakens those answers.&lt;/p&gt;

&lt;p&gt;Keeping the families separate makes gaps visible, evidence traceable and signoff decisions easier to defend.&lt;/p&gt;

&lt;h2&gt;
  
  
  The takeaway
&lt;/h2&gt;

&lt;p&gt;One database should create one place to investigate coverage—not one artificial number.&lt;/p&gt;

&lt;p&gt;A green dashboard is valuable only when engineers can see exactly what contributed to it and what did not.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://www.wiowiz.com/vwiz-coverage-every-metric-in-one-database.html" rel="noopener noreferrer"&gt;&lt;strong&gt;Explore the complete vWIZ-Coverage workflow and technical evidence on WIOWIZ&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;code&gt;#verification&lt;/code&gt; &lt;code&gt;#semiconductor&lt;/code&gt; &lt;code&gt;#vlsi&lt;/code&gt; &lt;code&gt;#testing&lt;/code&gt;&lt;/p&gt;

</description>
      <category>verification</category>
      <category>vlsi</category>
      <category>semiconductor</category>
      <category>testing</category>
    </item>
    <item>
      <title>WIOWIZ SOCVP - Compose. Boot. Repeat.</title>
      <dc:creator>WIOWIZ Technologies</dc:creator>
      <pubDate>Mon, 10 Aug 2026 15:45:23 +0000</pubDate>
      <link>https://dev.to/wiowiztech/wiowiz-socvp-compose-boot-repeat-45ef</link>
      <guid>https://dev.to/wiowiztech/wiowiz-socvp-compose-boot-repeat-45ef</guid>
      <description>&lt;h1&gt;
  
  
  Compose. Boot. Repeat: Building a RISC-V SoC Without Local Toolchain Setup
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;What if exploring a new SoC configuration started with choosing the blocks—not installing and configuring tools?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Traditional SoC bring-up often begins with environment preparation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install a compiler and linker&lt;/li&gt;
&lt;li&gt;Configure the build system&lt;/li&gt;
&lt;li&gt;Define the memory map&lt;/li&gt;
&lt;li&gt;Create register headers&lt;/li&gt;
&lt;li&gt;Prepare firmware&lt;/li&gt;
&lt;li&gt;Connect everything to a simulation environment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With WIOWIZ &lt;code&gt;socvp&lt;/code&gt;, the workflow begins by selecting the components required for the system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Compose the SoC
&lt;/h2&gt;

&lt;p&gt;A project can be created from available memory, peripherals, interrupt controllers and accelerators:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bin/socvp new my-soc &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-blocks&lt;/span&gt; ram,uart0,clint,timer0,plic0,npu0,cnn0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The generated output is not simply a diagram or an empty folder.&lt;/p&gt;

&lt;p&gt;It includes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my-soc/
├── socvp-project.yaml
├── firmware/
├── generated register headers
├── build files
└── output directories
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsfs300b2igw9yuqtod61.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsfs300b2igw9yuqtod61.png" alt="Creating a WIOWIZ SoC project with generated firmware, register headers and build files" width="800" height="1047"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The selected catalogue blocks become a structured project that is ready to build.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The versioned SoC contract records the selected blocks, while generated headers keep the firmware’s register names and addresses aligned with the project configuration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build with the packaged toolchain
&lt;/h2&gt;

&lt;p&gt;The compiler and linker are included inside the &lt;code&gt;socvp&lt;/code&gt; package.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bin/socvp build my-soc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The build does not depend on a separately installed host compiler. This makes the environment more portable and helps different machines build against the same fixed toolchain.&lt;/p&gt;

&lt;h2&gt;
  
  
  Boot the composed system
&lt;/h2&gt;

&lt;p&gt;The resulting project can be booted using the same workflow as the packaged systems:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bin/socvp boot my-soc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The objective is not merely to generate an architecture. The composed project must execute firmware and produce a checked result.&lt;/p&gt;

&lt;h2&gt;
  
  
  Modify and repeat
&lt;/h2&gt;

&lt;p&gt;Engineers can update the generated firmware, rebuild the project and inspect it in Studio:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bin/socvp build my-soc
bin/socvp studio my-soc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates a compact exploration loop:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Choose blocks
     ↓
Generate project
     ↓
Build firmware
     ↓
Boot and check
     ↓
Modify and repeat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The takeaway
&lt;/h2&gt;

&lt;p&gt;A composition tool should deliver more than a block diagram.&lt;/p&gt;

&lt;p&gt;It should turn selected components into a firmware project that can be built, booted and evaluated—without making the first experiment wait for a lengthy host setup.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://www.wiowiz.com/compose-boot-repeat.html" rel="noopener noreferrer"&gt;&lt;strong&gt;Explore the complete “Compose. Boot. Repeat.” workflow on WIOWIZ&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;code&gt;#riscv&lt;/code&gt; &lt;code&gt;#semiconductor&lt;/code&gt; &lt;code&gt;#soc&lt;/code&gt; &lt;code&gt;#embedded&lt;/code&gt;&lt;/p&gt;

</description>
      <category>riscv</category>
      <category>semiconductor</category>
      <category>soc</category>
      <category>embeded</category>
    </item>
    <item>
      <title>WIOWIZ - Wave: Protocol Transaction and Memory Viewers for Debug</title>
      <dc:creator>WIOWIZ Technologies</dc:creator>
      <pubDate>Mon, 10 Aug 2026 15:39:24 +0000</pubDate>
      <link>https://dev.to/wiowiztech/wiowiz-wave-protocol-transaction-and-memory-viewers-for-debug-1ceo</link>
      <guid>https://dev.to/wiowiztech/wiowiz-wave-protocol-transaction-and-memory-viewers-for-debug-1ceo</guid>
      <description>&lt;h1&gt;
  
  
  Beyond Raw Waveforms: Protocol Transaction and Memory Debugging with vWIZ-Wave
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;Signals show what toggled. Engineers still need to understand what happened—and where the resulting data came from.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Raw waveforms are essential for RTL debugging, but they are often the slowest way to investigate a system-level failure.&lt;/p&gt;

&lt;p&gt;In a complex SoC:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Requests and completions may be separated by many cycles&lt;/li&gt;
&lt;li&gt;Multiple transactions may be interleaved&lt;/li&gt;
&lt;li&gt;Signal names may repeat across different instances&lt;/li&gt;
&lt;li&gt;A corrupted memory value may appear long after the write that caused it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Manually connecting these events can mean scrolling through thousands of transitions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Decode signals into transactions
&lt;/h2&gt;

&lt;p&gt;The vWIZ-Wave Protocol Transaction Viewer converts recorded signal activity into meaningful operations.&lt;/p&gt;

&lt;p&gt;A decoded transaction can contain:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Start and end time
Address and direction
Request and completion
Payload and status
Scoped source instance
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3xrjy4cc7ce9mcigepr2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3xrjy4cc7ce9mcigepr2.png" alt="vWIZ-Wave showing a decoded PCIe transaction aligned with the transaction lane and raw signals" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The decoded PCIe transaction remains connected to the exact waveform interval that produced it.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Selecting a transaction moves the waveform directly to the corresponding interval. Engineers can inspect the higher-level operation and the underlying signal evidence without manually rebuilding the transaction.&lt;/p&gt;

&lt;p&gt;This approach can support protocol debugging across interfaces such as PCIe, I²C, SPI and UART.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reconstruct memory with write provenance
&lt;/h2&gt;

&lt;p&gt;Finding an incorrect value is only the beginning. The important question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which write produced it?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The vWIZ-Wave Memory Viewer reconstructs memory contents at the active cursor using recorded writes and available reset information.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8s55cqszbupfsyjeay29.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8s55cqszbupfsyjeay29.png" alt="vWIZ-Wave memory viewer showing reconstructed cells and their write provenance" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Each reconstructed memory value retains a link to the write event that produced it.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A selected cell can guide the engineer back through the evidence:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Incorrect value
       ↓
Producing write
       ↓
Protocol transaction
       ↓
Source instance
       ↓
Raw waveform interval
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why this shortens debugging
&lt;/h2&gt;

&lt;p&gt;The symptom may appear during a processor read, while the cause occurred much earlier during a bus transfer.&lt;/p&gt;

&lt;p&gt;Connecting protocol transactions, memory state, hierarchy and waveforms to one cursor creates a more direct route from symptom to source.&lt;/p&gt;

&lt;p&gt;The viewers do not replace raw signals or invent missing state. They organize the evidence already captured by the run and make its meaning easier to follow.&lt;/p&gt;

&lt;h2&gt;
  
  
  The takeaway
&lt;/h2&gt;

&lt;p&gt;Waveforms tell you what changed.&lt;/p&gt;

&lt;p&gt;Protocol and memory viewers help explain what the change meant, which block caused it, and where to continue debugging.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://www.wiowiz.com/vwiz-wave-protocol-transaction-and-memory-viewers.html" rel="noopener noreferrer"&gt;&lt;strong&gt;Explore the complete vWIZ-Wave protocol transaction and memory-viewer workflow on WIOWIZ&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;code&gt;#semiconductor&lt;/code&gt; &lt;code&gt;#vlsi&lt;/code&gt; &lt;code&gt;#verification&lt;/code&gt; &lt;code&gt;#debugging&lt;/code&gt;&lt;/p&gt;

</description>
      <category>semiconductor</category>
      <category>vlsi</category>
      <category>verification</category>
      <category>debugging</category>
    </item>
  </channel>
</rss>
