<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Veryl</title>
    <subtitle>Veryl is a hardware description language which is designed as a SystemVerilog alternative.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://veryl-lang.org/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://veryl-lang.org"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-06-01T00:00:00+00:00</updated>
    <id>https://veryl-lang.org/atom.xml</id>
    <author>
        <name>Veryl team</name>
        <uri>https://github.com/veryl-lang/veryl</uri>
    </author>
    <entry xml:lang="en">
        <title>Announcing Veryl 0.20.1</title>
        <published>2026-06-01T00:00:00+00:00</published>
        <updated>2026-06-01T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-veryl-0-20-1/"/>
        <id>https://veryl-lang.org/blog/announcing-veryl-0-20-1/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-veryl-0-20-1/">&lt;p&gt;The Veryl team has published a new release of Veryl, 0.20.1.
Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Veryl installed via &lt;code&gt;verylup&lt;&#x2F;code&gt;, you can get the latest version with:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can get &lt;code&gt;verylup&lt;&#x2F;code&gt; from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;new-language-features&quot;&gt;New Language Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;enum-member-import&quot;&gt;Enum member import &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2599&quot;&gt;#2599&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Enum members can now be imported via &lt;code&gt;import&lt;&#x2F;code&gt;, so they can be referenced without
the enclosing enum&#x27;s namespace prefix.
This is particularly useful when an enum is used heavily inside a single scope.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;package &lt;&#x2F;span&gt;&lt;span&gt;PackageA {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;enum &lt;&#x2F;span&gt;&lt;span&gt;EnumA: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;3&amp;gt; {
&lt;&#x2F;span&gt;&lt;span&gt;        A,
&lt;&#x2F;span&gt;&lt;span&gt;        B,
&lt;&#x2F;span&gt;&lt;span&gt;        C,
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA (
&lt;&#x2F;span&gt;&lt;span&gt;    i_a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input  &lt;&#x2F;span&gt;&lt;span&gt;PackageA::EnumA,
&lt;&#x2F;span&gt;&lt;span&gt;    o_d: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;output logic&lt;&#x2F;span&gt;&lt;span&gt;         ,
&lt;&#x2F;span&gt;&lt;span&gt;) {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;import &lt;&#x2F;span&gt;&lt;span&gt;PackageA::EnumA::*;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; Members can be referenced directly after `import`.
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;assign &lt;&#x2F;span&gt;&lt;span&gt;o_d = &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inside &lt;&#x2F;span&gt;&lt;span&gt;i_a {A, B, C};
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;new-tool-features&quot;&gt;New Tool Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;combinational-loop-detection&quot;&gt;Combinational loop detection &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2610&quot;&gt;#2610&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;The analyzer now reports combinational loops at compile time, including loops
that traverse function calls and submodule instances.
Catching these statically avoids relying on the downstream simulator or synthesis
tool to discover the cycle.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA (
&lt;&#x2F;span&gt;&lt;span&gt;    a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input  logic&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;8&amp;gt;,
&lt;&#x2F;span&gt;&lt;span&gt;    b: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;output logic&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;8&amp;gt;,
&lt;&#x2F;span&gt;&lt;span&gt;) {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;c: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;8&amp;gt;;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;assign &lt;&#x2F;span&gt;&lt;span&gt;b = c;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;assign &lt;&#x2F;span&gt;&lt;span&gt;c = b;   &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; error: combinational loop detected
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;wadler-lindig-based-formatter&quot;&gt;Wadler&#x2F;Lindig based formatter &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2614&quot;&gt;#2614&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;The formatter has been rewritten on top of a Wadler&#x2F;Lindig style pretty printer.
Line breaks are now decided by the target line width rather than purely by syntax,
so long expressions wrap into a readable shape instead of overflowing on a single
line.
The target width is configurable via &lt;code&gt;format.max_width&lt;&#x2F;code&gt; in &lt;code&gt;Veryl.toml&lt;&#x2F;code&gt;
(default: 120).&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; before
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;let &lt;&#x2F;span&gt;&lt;span&gt;a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;8&amp;gt; = aaaaaaaaaaaa + bbbbbbbbbbbb + cccccccccccc + dddddddddddd + eeeeeeeeeeee;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; after
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;let &lt;&#x2F;span&gt;&lt;span&gt;a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;8&amp;gt; =
&lt;&#x2F;span&gt;&lt;span&gt;    aaaaaaaaaaaa + bbbbbbbbbbbb + cccccccccccc + dddddddddddd
&lt;&#x2F;span&gt;&lt;span&gt;    + eeeeeeeeeeee;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;In addition, several long-standing formatter bugs around &lt;code&gt;case&lt;&#x2F;code&gt; expressions and
related constructs have been fixed as part of the rewrite.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;c-compiler-backend-for-the-native-simulator&quot;&gt;C compiler backend for the native simulator &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2662&quot;&gt;#2662&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;The native simulator gains a new &lt;code&gt;cc&lt;&#x2F;code&gt; backend that emits C code and compiles it
with a system C compiler in the background, producing a more heavily optimized
binary than the existing Cranelift JIT path.
The simulation starts immediately on the Cranelift output and then transparently
switches over to the C-compiled binary once it is ready, combining low startup
latency with high steady-state throughput.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ veryl test --backend cc
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The backend used during a run can be selected via &lt;code&gt;--backend {interpret,cranelift,cc}&lt;&#x2F;code&gt;.
If no C compiler is available, the backend falls back to Cranelift automatically.
See &lt;a href=&quot;https:&#x2F;&#x2F;veryl-lang.org&#x2F;blog&#x2F;veryl-simulator-performance&#x2F;&quot;&gt;the previous post&lt;&#x2F;a&gt; for
performance numbers from this combined backend setup.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;define-support-for-veryl-test&quot;&gt;&lt;code&gt;--define&lt;&#x2F;code&gt; support for &lt;code&gt;veryl test&lt;&#x2F;code&gt; &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2597&quot;&gt;#2597&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;veryl test&lt;&#x2F;code&gt; now accepts &lt;code&gt;--define&lt;&#x2F;code&gt; on the command line, and &lt;code&gt;test.defines&lt;&#x2F;code&gt; in
&lt;code&gt;Veryl.toml&lt;&#x2F;code&gt;, so testbenches can be parameterized via macros in the same way as
&lt;code&gt;veryl build&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;toml&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-toml &quot;&gt;&lt;code class=&quot;language-toml&quot; data-lang=&quot;toml&quot;&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; Veryl.toml
&lt;&#x2F;span&gt;&lt;span&gt;[test]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d7af;&quot;&gt;defines &lt;&#x2F;span&gt;&lt;span&gt;= [&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d68686;&quot;&gt;SIM_FAST&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;]
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ veryl test --define EXTRA_TRACE
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;gitoxide-as-the-default-git-backend&quot;&gt;Gitoxide as the default Git backend &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2640&quot;&gt;#2640&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;The metadata layer now uses &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;GitoxideLabs&#x2F;gitoxide&quot;&gt;&lt;code&gt;gitoxide&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;
by default for resolving Git dependencies, instead of shelling out to the system
&lt;code&gt;git&lt;&#x2F;code&gt; command.
This removes the hard runtime requirement on an external &lt;code&gt;git&lt;&#x2F;code&gt; binary — useful
in minimal container images and other environments where &lt;code&gt;git&lt;&#x2F;code&gt; is not preinstalled.
If &lt;code&gt;gitoxide&lt;&#x2F;code&gt; cannot handle a particular repository, Veryl transparently falls
back to the system &lt;code&gt;git&lt;&#x2F;code&gt; command when it is available.&lt;&#x2F;p&gt;
&lt;p&gt;The backend can be selected explicitly with the &lt;code&gt;VERYL_GIT_BACKEND&lt;&#x2F;code&gt; environment
variable (&lt;code&gt;auto&lt;&#x2F;code&gt;, &lt;code&gt;gitoxide&lt;&#x2F;code&gt;, or &lt;code&gt;command&lt;&#x2F;code&gt;).&lt;&#x2F;p&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;tag&#x2F;v0.20.1&quot;&gt;Release v0.20.1&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Veryl Simulator: Performance Comparison with Verilator</title>
        <published>2026-05-26T00:00:00+00:00</published>
        <updated>2026-05-26T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/veryl-simulator-performance/"/>
        <id>https://veryl-lang.org/blog/veryl-simulator-performance/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/veryl-simulator-performance/">&lt;p&gt;We have been working on a native Veryl simulator built on the new IR-based analyzer
introduced earlier this year. This post shares early performance numbers
comparing it against &lt;a href=&quot;https:&#x2F;&#x2F;www.veripool.org&#x2F;verilator&#x2F;&quot;&gt;Verilator&lt;&#x2F;a&gt;, the de facto
standard open source SystemVerilog simulator.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;approach&quot;&gt;Approach&lt;&#x2F;h2&gt;
&lt;p&gt;The Veryl simulator combines two execution backends:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;&lt;a href=&quot;https:&#x2F;&#x2F;cranelift.dev&#x2F;&quot;&gt;Cranelift&lt;&#x2F;a&gt;-based backend&lt;&#x2F;strong&gt; that trades
optimization quality for compile speed, so the first run starts with little
upfront cost.&lt;&#x2F;li&gt;
&lt;li&gt;A &lt;strong&gt;GCC-based backend&lt;&#x2F;strong&gt; that runs in the background to produce a more
heavily optimized binary. Once the optimized binary is ready, the running
simulation switches over to it dynamically.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;In practice the simulation starts running almost immediately on the Cranelift
output, and then speeds up mid-run once GCC has finished compiling.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;benchmark&quot;&gt;Benchmark&lt;&#x2F;h2&gt;
&lt;p&gt;We ran a Linux boot (about 30M simulated cycles) on
&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;dalance&#x2F;heliodor&quot;&gt;Heliodor&lt;&#x2F;a&gt;, an Out-of-Order RISC-V core
written in Veryl, with 1, 2, and 4 core configurations.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Veryl: latest nightly (2026-05-26)&lt;&#x2F;li&gt;
&lt;li&gt;Verilator: v5.040&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;The Veryl simulator also supports 4-state simulation. We used 2-state mode for
this benchmark because this version of Verilator is 2-state only.&lt;&#x2F;p&gt;
&lt;p&gt;For each configuration we measured both the &lt;em&gt;first run&lt;&#x2F;em&gt; (no cached artifacts) and
the &lt;em&gt;cached run&lt;&#x2F;em&gt; (re-running after the optimized binary has been built), on two
machines representing different CPU generations.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Intel Xeon Gold 6434 (Sapphire Rapids, 2023)&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;img src=&quot;..&#x2F;..&#x2F;img&#x2F;sim_compare_intel.png&quot;&gt;
&lt;p&gt;&lt;strong&gt;AMD Ryzen Threadripper 1950X (Zen 1, 2017)&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;img src=&quot;..&#x2F;..&#x2F;img&#x2F;sim_compare_amd.png&quot;&gt;
&lt;h2 id=&quot;observations&quot;&gt;Observations&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;On the &lt;strong&gt;first run&lt;&#x2F;strong&gt;, Cranelift&#x27;s fast compilation lets Veryl start executing
noticeably sooner than Verilator, which spends a significant portion of the
wall-clock time on C++ compilation. The first-run improvement ranges from
about 33 % to 61 % across the two machines.&lt;&#x2F;li&gt;
&lt;li&gt;On the &lt;strong&gt;cached run&lt;&#x2F;strong&gt;, both simulators reuse a previously built native binary,
so the comparison is between the GCC-optimized output of each toolchain. Veryl
is still consistently faster.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Across CPU generations&lt;&#x2F;strong&gt;, the gap is larger on the older Threadripper
1950X (Zen 1) than on the Xeon Gold 6434 (Sapphire Rapids) — the smallest
cached-run cases shrink to 4–8 % on Sapphire Rapids but stay at 24–49 % on
Zen 1. We suspect Verilator&#x27;s generated C++ is more sensitive to older
microarchitectures than the Veryl backends.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Veryl is faster than Verilator in both modes: substantially on the first run,
and more modestly on the cached run. Most edit-compile-run cycles during
development are dominated by the first-run number. Once a simulation runs long
enough — regression sweeps, full OS boots — the cached-run number takes over.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;what-s-next&quot;&gt;What&#x27;s next&lt;&#x2F;h2&gt;
&lt;p&gt;The simulator is still under active development. We plan to extend the benchmark
to other CPU architectures and a wider range of designs, and to publish the
benchmark setup so the numbers can be reproduced.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Veryl 0.20.0</title>
        <published>2026-05-01T00:00:00+00:00</published>
        <updated>2026-05-01T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-veryl-0-20-0/"/>
        <id>https://veryl-lang.org/blog/announcing-veryl-0-20-0/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-veryl-0-20-0/">&lt;p&gt;The Veryl team has published a new release of Veryl, 0.20.0.
Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Veryl installed via &lt;code&gt;verylup&lt;&#x2F;code&gt;, you can get the latest version with:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can get &lt;code&gt;verylup&lt;&#x2F;code&gt; from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;breaking-changes&quot;&gt;Breaking Changes&lt;&#x2F;h1&gt;
&lt;p&gt;To migrate some syntax changes, &lt;code&gt;veryl migrate&lt;&#x2F;code&gt; can be used:&lt;&#x2F;p&gt;
&lt;details&gt;
&lt;pre data-lang=&quot;console&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-console &quot;&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span&gt;&#x2F;&#x2F; Check how changes will be applied
&lt;&#x2F;span&gt;&lt;span&gt;$ veryl migrate --check
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&#x2F; Migrate
&lt;&#x2F;span&gt;&lt;span&gt;$ veryl migrate
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;&#x2F;details&gt;
&lt;h2 id=&quot;remove-type-specification-on-for-iterator&quot;&gt;Remove type specification on &lt;code&gt;for&lt;&#x2F;code&gt; iterator &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2516&quot;&gt;#2516&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;The iterator variable in &lt;code&gt;for&lt;&#x2F;code&gt; no longer accepts a type specification.
&lt;code&gt;i32&lt;&#x2F;code&gt; is always used as the iterator type, which is more than sufficient for any
practical hardware loop bound and matches the syntax of &lt;code&gt;generate for&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;To migrate, drop the type annotation on the iterator. &lt;code&gt;veryl migrate&lt;&#x2F;code&gt; rewrites this
automatically.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; before
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;for &lt;&#x2F;span&gt;&lt;span&gt;i: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32 &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;in &lt;&#x2F;span&gt;&lt;span&gt;0..10 {
&lt;&#x2F;span&gt;&lt;span&gt;    a[i] = &amp;#39;0;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; after
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;for &lt;&#x2F;span&gt;&lt;span&gt;i &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;in &lt;&#x2F;span&gt;&lt;span&gt;0..10 {
&lt;&#x2F;span&gt;&lt;span&gt;    a[i] = &amp;#39;0;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;tb-reset-gen-takes-a-clk-port&quot;&gt;&lt;code&gt;$tb::reset_gen&lt;&#x2F;code&gt; takes a &lt;code&gt;clk&lt;&#x2F;code&gt; port &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2574&quot;&gt;#2574&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;$tb::reset_gen&lt;&#x2F;code&gt; now binds to its clock at instantiation time instead of receiving the
clock as an argument to each &lt;code&gt;assert&lt;&#x2F;code&gt; call. Reset timing is always bound to a specific
clock in practice, so this makes the binding explicit at the connection site.&lt;&#x2F;p&gt;
&lt;p&gt;To migrate, move the clock from the &lt;code&gt;assert&lt;&#x2F;code&gt; argument list to the &lt;code&gt;reset_gen&lt;&#x2F;code&gt; instance
port list.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; before
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;rst: $tb::reset_gen();
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;initial&lt;&#x2F;span&gt;&lt;span&gt; {
&lt;&#x2F;span&gt;&lt;span&gt;    rst.assert(clk);
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; ...
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; after
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;rst: $tb::reset_gen(clk);
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;initial&lt;&#x2F;span&gt;&lt;span&gt; {
&lt;&#x2F;span&gt;&lt;span&gt;    rst.assert();
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; ...
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;new-language-features&quot;&gt;New Language Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;type-inference&quot;&gt;Type inference &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2478&quot;&gt;#2478&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Type annotations on &lt;code&gt;let&lt;&#x2F;code&gt;, &lt;code&gt;const&lt;&#x2F;code&gt;, and &lt;code&gt;var&lt;&#x2F;code&gt; declarations are now optional.
The type is inferred from the right-hand side expression, or for &lt;code&gt;var&lt;&#x2F;code&gt; declarations,
from the first subsequent assignment.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;let &lt;&#x2F;span&gt;&lt;span&gt;_a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;8&amp;gt; = 0;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; Variable reference: type copied from the referenced variable.
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;let &lt;&#x2F;span&gt;&lt;span&gt;_b = _a;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; Sized literal: type implied by the literal itself.
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;let &lt;&#x2F;span&gt;&lt;span&gt;_c = 8&amp;#39;d255;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; const declarations also support inference.
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;const &lt;&#x2F;span&gt;&lt;span&gt;_D = 16&amp;#39;d100;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; var without annotation: inferred from the first assignment,
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; including assignments inside always_comb blocks.
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;_e;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;always_comb&lt;&#x2F;span&gt;&lt;span&gt; {
&lt;&#x2F;span&gt;&lt;span&gt;        _e = _a;
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;introduce-gen-declaration&quot;&gt;Introduce &lt;code&gt;gen&lt;&#x2F;code&gt; declaration &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2412&quot;&gt;#2412&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;A new &lt;code&gt;gen&lt;&#x2F;code&gt; declaration lets generic modules compute values — including derived
types — that can themselves be passed as generic arguments to inner instances.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA::&amp;lt;W: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt;, T: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;type&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt; (
&lt;&#x2F;span&gt;&lt;span&gt;    a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;output logic&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;W&amp;gt;,
&lt;&#x2F;span&gt;&lt;span&gt;    b: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;output &lt;&#x2F;span&gt;&lt;span&gt;T       ,
&lt;&#x2F;span&gt;&lt;span&gt;) {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;always_comb&lt;&#x2F;span&gt;&lt;span&gt; {
&lt;&#x2F;span&gt;&lt;span&gt;        a = &amp;#39;0;
&lt;&#x2F;span&gt;&lt;span&gt;        b = &amp;#39;0;
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleB::&amp;lt;A: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt;, B: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt;, C: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt; {
&lt;&#x2F;span&gt;&lt;span&gt;    gen W: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt;  = A + B;
&lt;&#x2F;span&gt;&lt;span&gt;    gen T: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;type&lt;&#x2F;span&gt;&lt;span&gt; = &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;C&amp;gt;;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;u: ModuleA::&amp;lt;W, T&amp;gt; (a: _, b: _);
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;new-tool-features&quot;&gt;New Tool Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;logic-synthesis-support&quot;&gt;Logic synthesis support &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2553&quot;&gt;#2553&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;veryl synth&lt;&#x2F;code&gt; performs a lightweight gate-level synthesis directly from the toolchain
and reports area, critical-path timing, and power for the chosen top module.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ veryl synth --top Counter
&lt;&#x2F;span&gt;&lt;span&gt;synth: Counter — 137 gates, 32 FFs
&lt;&#x2F;span&gt;&lt;span&gt;library: SKY130 (SkyWater 130nm) &#x2F; sky130_fd_sc_hd &#x2F; tt_025C_1v80
&lt;&#x2F;span&gt;&lt;span&gt;summary:
&lt;&#x2F;span&gt;&lt;span&gt;  area:        1542.50 um²  (comb 822.50, seq 720.00)
&lt;&#x2F;span&gt;&lt;span&gt;  timing:        0.540 ns       6 levels  r_cnt[15] → r_cnt[24]
&lt;&#x2F;span&gt;&lt;span&gt;  power:         0.0990 mW   (leak 0.0001 mW, dyn 0.0989 mW)
&lt;&#x2F;span&gt;&lt;span&gt;                 @ f_clk = 100 MHz, activity = 0.10
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Cell area, delay, and power figures are calibrated against public Liberty data from
open PDKs — SKY130 (SkyWater 130nm), ASAP7, GF180MCU, and IHP SG13G2 — so
estimates are based on real silicon ratios rather than abstract gate counts.
The numbers are intended as reference values for early-stage exploration, not signoff.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;systemverilog-veryl-translator&quot;&gt;SystemVerilog → Veryl translator &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2480&quot;&gt;#2480&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;veryl translate&lt;&#x2F;code&gt; converts SystemVerilog source files to equivalent Veryl, helpful for
incrementally migrating existing designs.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ veryl translate counter.sv
&lt;&#x2F;span&gt;&lt;span&gt;$ ls counter.veryl
&lt;&#x2F;span&gt;&lt;span&gt;counter.veryl
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;improve-assert-assert-continue-in-testbench&quot;&gt;Improve &lt;code&gt;$assert&lt;&#x2F;code&gt; &#x2F; &lt;code&gt;$assert_continue&lt;&#x2F;code&gt; in testbench &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2578&quot;&gt;#2578&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Native testbench assertions now report values and source locations on failure,
making test debugging significantly easier.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;configurable-newline-style&quot;&gt;Configurable newline style &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2470&quot;&gt;#2470&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;The formatter and the SystemVerilog translator now preserve the newline style of the
input file by default. Files originally written with CRLF stay CRLF after formatting
or translation, instead of being silently rewritten to LF. The behavior is
configurable via &lt;code&gt;format.newline_style&lt;&#x2F;code&gt; in &lt;code&gt;Veryl.toml&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;new-standard-library&quot;&gt;New Standard Library&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;add-utility-functions&quot;&gt;Add utility functions &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2444&quot;&gt;#2444&lt;&#x2F;a&gt;
 &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2447&quot;&gt;#2447&lt;&#x2F;a&gt;
 &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2451&quot;&gt;#2451&lt;&#x2F;a&gt;
 &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2577&quot;&gt;#2577&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;The following utility functions have been added under &lt;code&gt;$std::utils&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;min&lt;&#x2F;code&gt;, &lt;code&gt;max&lt;&#x2F;code&gt; — element-wise minimum&#x2F;maximum&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;zero_extend&lt;&#x2F;code&gt;, &lt;code&gt;one_extend&lt;&#x2F;code&gt;, &lt;code&gt;sign_extend&lt;&#x2F;code&gt;, &lt;code&gt;truncate&lt;&#x2F;code&gt; — width manipulation primitives&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;select_*&lt;&#x2F;code&gt;, &lt;code&gt;dispatch_*&lt;&#x2F;code&gt; — mux&#x2F;demux building blocks usable outside of the &lt;code&gt;mux&lt;&#x2F;code&gt; and &lt;code&gt;demux&lt;&#x2F;code&gt; modules&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;clog2_clipped&lt;&#x2F;code&gt; — a clipped variant of &lt;code&gt;clog2&lt;&#x2F;code&gt; that stays well-defined for small ranges&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;tag&#x2F;v0.20.0&quot;&gt;Release v0.20.0&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Veryl 0.19.1</title>
        <published>2026-04-01T00:00:00+00:00</published>
        <updated>2026-04-01T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-veryl-0-19-1/"/>
        <id>https://veryl-lang.org/blog/announcing-veryl-0-19-1/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-veryl-0-19-1/">&lt;p&gt;The Veryl team has published a new release of Veryl, 0.19.1.
Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Veryl installed via &lt;code&gt;verylup&lt;&#x2F;code&gt;, you can get the latest version with:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can get &lt;code&gt;verylup&lt;&#x2F;code&gt; from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;new-language-features&quot;&gt;New Language Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;infer-clock-domain&quot;&gt;Infer clock domain &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2400&quot;&gt;#2400&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Variables without explicit clock domain annotation can now be inferred from their context.
For example, when a variable is assigned from a signal with a known clock domain, the variable&#x27;s domain is automatically inferred.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA (
&lt;&#x2F;span&gt;&lt;span&gt;    i_clk_a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input&lt;&#x2F;span&gt;&lt;span&gt;  &amp;#39;a &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;clock&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;    i_rst_a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input&lt;&#x2F;span&gt;&lt;span&gt;  &amp;#39;a &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;reset&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;    i_dat_a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input&lt;&#x2F;span&gt;&lt;span&gt;  &amp;#39;a &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;    o_dat_a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;output&lt;&#x2F;span&gt;&lt;span&gt; &amp;#39;a &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;) {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;x: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;assign &lt;&#x2F;span&gt;&lt;span&gt;x = i_dat_a;   &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; x is inferred as &amp;#39;a domain
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;assign &lt;&#x2F;span&gt;&lt;span&gt;o_dat_a = x;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;support-global-function&quot;&gt;Support global function &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2366&quot;&gt;#2366&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Functions can now be defined at the project root (outside of &lt;code&gt;module&lt;&#x2F;code&gt;, &lt;code&gt;interface&lt;&#x2F;code&gt;, and &lt;code&gt;package&lt;&#x2F;code&gt;).
Global functions support generic type parameters and public visibility via &lt;code&gt;pub&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;pub function &lt;&#x2F;span&gt;&lt;span&gt;add::&amp;lt;W: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt; (
&lt;&#x2F;span&gt;&lt;span&gt;    a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input logic&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;W&amp;gt;,
&lt;&#x2F;span&gt;&lt;span&gt;    b: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input logic&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;W&amp;gt;,
&lt;&#x2F;span&gt;&lt;span&gt;) -&amp;gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;W&amp;gt; {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;return &lt;&#x2F;span&gt;&lt;span&gt;a + b;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA #(
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;param &lt;&#x2F;span&gt;&lt;span&gt;WIDTH: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt; = 8,
&lt;&#x2F;span&gt;&lt;span&gt;) (
&lt;&#x2F;span&gt;&lt;span&gt;    i_a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input  logic&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;WIDTH&amp;gt;,
&lt;&#x2F;span&gt;&lt;span&gt;    i_b: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input  logic&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;WIDTH&amp;gt;,
&lt;&#x2F;span&gt;&lt;span&gt;    o_c: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;output logic&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;WIDTH&amp;gt;,
&lt;&#x2F;span&gt;&lt;span&gt;) {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;assign &lt;&#x2F;span&gt;&lt;span&gt;o_c = add::&amp;lt;WIDTH&amp;gt;(i_a, i_b);
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;allow-to-specify-multiple-modports-as-default-modport-target&quot;&gt;Allow to specify multiple modports as default modport target &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2306&quot;&gt;#2306&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Multiple modports can now be specified as default modport targets using &lt;code&gt;..same()&lt;&#x2F;code&gt; or &lt;code&gt;..converse()&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;interface &lt;&#x2F;span&gt;&lt;span&gt;InterfaceA {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;b: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;modport &lt;&#x2F;span&gt;&lt;span&gt;mp_a { a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input&lt;&#x2F;span&gt;&lt;span&gt; }
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;modport &lt;&#x2F;span&gt;&lt;span&gt;mp_b { b: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input&lt;&#x2F;span&gt;&lt;span&gt; }
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;modport &lt;&#x2F;span&gt;&lt;span&gt;mp_ab {
&lt;&#x2F;span&gt;&lt;span&gt;        ..&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;same&lt;&#x2F;span&gt;&lt;span&gt;(mp_a, mp_b)
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;copy-imported-functions-from-target-modports-of-same-default-member&quot;&gt;Copy imported functions from target modports of &lt;code&gt;same&lt;&#x2F;code&gt; default member &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2326&quot;&gt;#2326&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;When using &lt;code&gt;..same()&lt;&#x2F;code&gt; to inherit from another modport, imported functions from the target modport are now automatically copied.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;interface &lt;&#x2F;span&gt;&lt;span&gt;InterfaceA {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;modport &lt;&#x2F;span&gt;&lt;span&gt;mp_a {
&lt;&#x2F;span&gt;&lt;span&gt;        a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;import &lt;&#x2F;span&gt;&lt;span&gt;get_a(),
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;modport &lt;&#x2F;span&gt;&lt;span&gt;mp_b {
&lt;&#x2F;span&gt;&lt;span&gt;        ..&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;same&lt;&#x2F;span&gt;&lt;span&gt;(mp_a)   &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; get_a() is automatically copied
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;add-positive-integer-types&quot;&gt;Add positive integer types &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2281&quot;&gt;#2281&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;New integer types &lt;code&gt;p8&lt;&#x2F;code&gt;, &lt;code&gt;p16&lt;&#x2F;code&gt;, &lt;code&gt;p32&lt;&#x2F;code&gt;, and &lt;code&gt;p64&lt;&#x2F;code&gt; are introduced, which restrict values to positive numbers only.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;const &lt;&#x2F;span&gt;&lt;span&gt;X: p32 = 10;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;new-tool-features&quot;&gt;New Tool Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;minimal-support-of-veryl-native-testbench&quot;&gt;Minimal support of Veryl native testbench &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2338&quot;&gt;#2338&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Veryl now supports native testbench syntax. You can write testbenches directly in Veryl using &lt;code&gt;$tb::clock_gen&lt;&#x2F;code&gt; and &lt;code&gt;$tb::reset_gen&lt;&#x2F;code&gt; for clock and reset generation, and &lt;code&gt;initial&lt;&#x2F;code&gt; blocks for test scenarios.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span&gt;#[test(test_counter)]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;test_counter {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;clk: $tb::clock_gen;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;rst: $tb::reset_gen;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;cnt: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;32&amp;gt;;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;dut: Counter (
&lt;&#x2F;span&gt;&lt;span&gt;        clk: clk,
&lt;&#x2F;span&gt;&lt;span&gt;        rst: rst,
&lt;&#x2F;span&gt;&lt;span&gt;        cnt: cnt,
&lt;&#x2F;span&gt;&lt;span&gt;    );
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;initial&lt;&#x2F;span&gt;&lt;span&gt; {
&lt;&#x2F;span&gt;&lt;span&gt;        rst.assert(clk);
&lt;&#x2F;span&gt;&lt;span&gt;        clk.next  (10);
&lt;&#x2F;span&gt;&lt;span&gt;        $assert   (cnt == 32&amp;#39;d10);
&lt;&#x2F;span&gt;&lt;span&gt;        $finish   ();
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Note that the native simulator used for native tests may still contain bugs. Please use with caution. If you find any bugs, please report them via &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;issues&quot;&gt;GitHub Issues&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;add-ignore-attribute-for-test&quot;&gt;Add &lt;code&gt;#[ignore]&lt;&#x2F;code&gt; attribute for &lt;code&gt;#[test]&lt;&#x2F;code&gt; &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2418&quot;&gt;#2418&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Tests can now be marked with &lt;code&gt;#[ignore]&lt;&#x2F;code&gt; to skip them during test execution.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span&gt;#[test(test_counter)]
&lt;&#x2F;span&gt;&lt;span&gt;#[ignore]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;test_counter {
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;documentation-test-by-wavedrom&quot;&gt;Documentation test by WaveDrom &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2363&quot;&gt;#2363&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;WaveDrom timing diagrams in documentation comments can now be tested by using the &lt;code&gt;wavedrom,test&lt;&#x2F;code&gt; tag. This validates the WaveDrom JSON syntax at build time.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt;&#x2F; ```wavedrom,test
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt;&#x2F; { &amp;quot;signal&amp;quot;: [{ &amp;quot;name&amp;quot;: &amp;quot;clk&amp;quot;, &amp;quot;wave&amp;quot;: &amp;quot;p...&amp;quot; }] }
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt;&#x2F; ```
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;pub module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA {}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;playground-improvements&quot;&gt;Playground improvements&lt;&#x2F;h2&gt;
&lt;p&gt;The &lt;a href=&quot;https:&#x2F;&#x2F;doc.veryl-lang.org&#x2F;playground&#x2F;&quot;&gt;Veryl Playground&lt;&#x2F;a&gt; has been redesigned with the following improvements:&lt;&#x2F;p&gt;
&lt;img src=&quot;..&#x2F;..&#x2F;img&#x2F;playground.png&quot;&gt;
&lt;ul&gt;
&lt;li&gt;UI overhaul with dark&#x2F;light theme support&lt;&#x2F;li&gt;
&lt;li&gt;Auto-save of code to browser storage&lt;&#x2F;li&gt;
&lt;li&gt;Shareable link generation&lt;&#x2F;li&gt;
&lt;li&gt;Simulation with waveform viewer and VCD download&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;tag&#x2F;v0.19.1&quot;&gt;Release v0.19.1&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Veryl 0.19.0</title>
        <published>2026-03-04T00:00:00+00:00</published>
        <updated>2026-03-04T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-veryl-0-19-0/"/>
        <id>https://veryl-lang.org/blog/announcing-veryl-0-19-0/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-veryl-0-19-0/">&lt;p&gt;The Veryl team has published a new release of Veryl, 0.19.0.
Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Veryl installed via &lt;code&gt;verylup&lt;&#x2F;code&gt;, you can get the latest version with:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can get &lt;code&gt;verylup&lt;&#x2F;code&gt; from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;breaking-changes&quot;&gt;Breaking Changes&lt;&#x2F;h1&gt;
&lt;p&gt;To migrate some syntax changes, &lt;code&gt;veryl migrate&lt;&#x2F;code&gt; can be used:&lt;&#x2F;p&gt;
&lt;details&gt;
&lt;pre data-lang=&quot;console&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-console &quot;&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span&gt;&#x2F;&#x2F; Check how changes will be applied
&lt;&#x2F;span&gt;&lt;span&gt;$ veryl migrate --check
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&#x2F; Migrate
&lt;&#x2F;span&gt;&lt;span&gt;$ veryl migrate
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;&#x2F;details&gt;
&lt;h2 id=&quot;report-error-for-calling-function-which-has-references-to-variables-defined-after-the-call&quot;&gt;Report error for calling function which has references to variables defined after the call &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2240&quot;&gt;#2240&lt;&#x2F;a&gt;
 &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2284&quot;&gt;#2284&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;The following code worked until Veryl 0.19.0, but these code sometimes caused false-positive warning&#x2F;error.
To resolve this issue, Veryl 0.19.0 reports error for these code.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;always_comb&lt;&#x2F;span&gt;&lt;span&gt; {
&lt;&#x2F;span&gt;&lt;span&gt;    a = func(); &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; function call before `b` definition
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;b: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;function &lt;&#x2F;span&gt;&lt;span&gt;func() -&amp;gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt; {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;return &lt;&#x2F;span&gt;&lt;span&gt;b;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The following code is still valid, because &lt;code&gt;b&lt;&#x2F;code&gt; is defined before the function call.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;b: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;always_comb&lt;&#x2F;span&gt;&lt;span&gt; {
&lt;&#x2F;span&gt;&lt;span&gt;    a = func(); &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; function call after `b` definition
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;function &lt;&#x2F;span&gt;&lt;span&gt;func() -&amp;gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt; {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;return &lt;&#x2F;span&gt;&lt;span&gt;b;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;new-language-features&quot;&gt;New Language Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;support-inferable-enum-width&quot;&gt;Support inferable enum width &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2199&quot;&gt;#2199&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;The type of enum can be omitted like &lt;code&gt;enum A {}&lt;&#x2F;code&gt;, but in this case the base type of enum is fixed to &lt;code&gt;logic&lt;&#x2F;code&gt;.
We introduced a new syntax to specify the base type of enum like below.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;enum &lt;&#x2F;span&gt;&lt;span&gt;A: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;bit&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;_&amp;gt; {
&lt;&#x2F;span&gt;&lt;span&gt;   X,
&lt;&#x2F;span&gt;&lt;span&gt;   Y,
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;enum &lt;&#x2F;span&gt;&lt;span&gt;B: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;_&amp;gt; {
&lt;&#x2F;span&gt;&lt;span&gt;   X,
&lt;&#x2F;span&gt;&lt;span&gt;   Y,
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;new-standard-library&quot;&gt;New Standard Library&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;add-interface-definition-of-axi-stream-as-std-library&quot;&gt;Add interface definition of AXI stream as std library &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2208&quot;&gt;#2208&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;The interface definition of AXI stream is added.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;std.veryl-lang.org&#x2F;axi4_stream_if.html&quot;&gt;https:&#x2F;&#x2F;std.veryl-lang.org&#x2F;axi4_stream_if.html&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;tag&#x2F;v0.19.0&quot;&gt;Release v0.19.0&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Veryl 0.18.0</title>
        <published>2026-02-02T00:00:00+00:00</published>
        <updated>2026-02-02T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-veryl-0-18-0/"/>
        <id>https://veryl-lang.org/blog/announcing-veryl-0-18-0/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-veryl-0-18-0/">&lt;p&gt;The Veryl team has published a new release of Veryl, 0.18.0.
Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Veryl installed via &lt;code&gt;verylup&lt;&#x2F;code&gt;, you can get the latest version with:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can get &lt;code&gt;verylup&lt;&#x2F;code&gt; from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;breaking-changes&quot;&gt;Breaking Changes&lt;&#x2F;h1&gt;
&lt;p&gt;To migrate some syntax changes, &lt;code&gt;veryl migrate&lt;&#x2F;code&gt; can be used:&lt;&#x2F;p&gt;
&lt;details&gt;
&lt;pre data-lang=&quot;console&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-console &quot;&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span&gt;&#x2F;&#x2F; Check how changes will be applied
&lt;&#x2F;span&gt;&lt;span&gt;$ veryl migrate --check
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&#x2F; Migrate
&lt;&#x2F;span&gt;&lt;span&gt;$ veryl migrate
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;&#x2F;details&gt;
&lt;h2 id=&quot;allow-concatenation-assignment-in-always-and-add-block-keyword&quot;&gt;Allow concatenation assignment in always, and add &lt;code&gt;block&lt;&#x2F;code&gt; keyword &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2175&quot;&gt;#2175&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Bit concatenation in left-hand side of &lt;code&gt;always_comb&lt;&#x2F;code&gt; and &lt;code&gt;always_ff&lt;&#x2F;code&gt; is allowed now.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;always_comb&lt;&#x2F;span&gt;&lt;span&gt; {
&lt;&#x2F;span&gt;&lt;span&gt;    {a, b} = 1;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;On the other hand, this feature conflicts the existing statement grouping syntax by &lt;code&gt;{}&lt;&#x2F;code&gt;.
So new &lt;code&gt;block&lt;&#x2F;code&gt; keyword is introduced to avoid the conflicts.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;always_comb&lt;&#x2F;span&gt;&lt;span&gt; {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; grouping by `{}` is not allowed
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt;{
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt;    a = 1;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt;    b = 1;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;block&lt;&#x2F;span&gt;&lt;span&gt; {
&lt;&#x2F;span&gt;&lt;span&gt;        a = 1;
&lt;&#x2F;span&gt;&lt;span&gt;        b = 1;
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;split-bool-type-to-bbool-and-lbool-types&quot;&gt;Split &lt;code&gt;bool&lt;&#x2F;code&gt; type to &lt;code&gt;bbool&lt;&#x2F;code&gt; and &lt;code&gt;lbool&lt;&#x2F;code&gt; types &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2186&quot;&gt;#2186&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Using &lt;code&gt;bool&lt;&#x2F;code&gt; in const context caused assigning 4-state variable to 2-state variable because &lt;code&gt;bool&lt;&#x2F;code&gt; is type alias of &lt;code&gt;logic&amp;lt;1&amp;gt;&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;const &lt;&#x2F;span&gt;&lt;span&gt;flag: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;bool&lt;&#x2F;span&gt;&lt;span&gt; = &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;true&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;const &lt;&#x2F;span&gt;&lt;span&gt;X: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt; = &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;if &lt;&#x2F;span&gt;&lt;span&gt;flag ? 10 : 20; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; 4-state variable is used in const context
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;To avoid this mismatch, &lt;code&gt;bbool&lt;&#x2F;code&gt; and &lt;code&gt;lbool&lt;&#x2F;code&gt; is introduced instead of &lt;code&gt;bool&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;bbool&lt;&#x2F;code&gt;: the type alias of &lt;code&gt;bit&amp;lt;1&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;lbool&lt;&#x2F;code&gt;: the type alias of &lt;code&gt;logic&amp;lt;1&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;const &lt;&#x2F;span&gt;&lt;span&gt;flag: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;bbool&lt;&#x2F;span&gt;&lt;span&gt; = &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;true&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;const &lt;&#x2F;span&gt;&lt;span&gt;X: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt; = &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;if &lt;&#x2F;span&gt;&lt;span&gt;flag ? 10 : 20;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;new-language-features&quot;&gt;New Language Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;allow-unassign-variable-attribute&quot;&gt;&lt;code&gt;#[allow(unassign_variable)]&lt;&#x2F;code&gt; attribute &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2147&quot;&gt;#2147&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;By IR-based semantic analyzer, unassign check was enhanced.
If you want to disable the check, &lt;code&gt;#[allow(unassign_variable)]&lt;&#x2F;code&gt; attribute can be used.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span&gt;#[allow(unassign_variable)]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;Module A {
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;new-tool-features&quot;&gt;New Tool Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;introduce-ir-based-semantic-analyzer&quot;&gt;Introduce IR-based semantic analyzer &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2005&quot;&gt;#2005&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;The new IR-based semantic analyzer is introduced.
Please refer the following post for the detailed changes.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;veryl-lang.org&#x2F;blog&#x2F;ir-based-analysis&#x2F;&quot;&gt;Semantic Analysis based on Intermediate Representation&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;tag&#x2F;v0.18.0&quot;&gt;Release v0.18.0&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Verylup 0.1.12</title>
        <published>2026-01-23T00:00:00+00:00</published>
        <updated>2026-01-23T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-verylup-0-1-12/"/>
        <id>https://veryl-lang.org/blog/announcing-verylup-0-1-12/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-verylup-0-1-12/">&lt;p&gt;The Veryl team has published a new release of Verylup, 0.1.12.
Verylup is the official toolchain installer of Veryl.
It installs the latest Veryl toolchain and eases to update and switch the toolchains.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Verylup installed, getting Verylup 0.1.12 is as easy as stopping any programs which may be using Verylup (e.g. closing your IDE) and running:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, please refer &lt;a href=&quot;https:&#x2F;&#x2F;doc.veryl-lang.org&#x2F;book&#x2F;03_getting_started&#x2F;01_installation.html&quot;&gt;Getting Started&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;important-notice&quot;&gt;Important Notice&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;verylup-install-nightly-failure&quot;&gt;&lt;code&gt;verylup install nightly&lt;&#x2F;code&gt; failure&lt;&#x2F;h2&gt;
&lt;p&gt;From Verylup 0.1.10 to 0.1.11, &lt;code&gt;verylup install nightly&lt;&#x2F;code&gt; fails like below if the nightly installation is the first time.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ verylup install nightly
&lt;&#x2F;span&gt;&lt;span&gt;Error: No such file or directory (os error 2)
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Please update to Verylup 0.1.12 if you encountered this issue.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;tag&#x2F;v0.1.12&quot;&gt;Release v0.1.12&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Semantic Analysis based on Intermediate Representation</title>
        <published>2026-01-20T00:00:00+00:00</published>
        <updated>2026-01-20T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/ir-based-analysis/"/>
        <id>https://veryl-lang.org/blog/ir-based-analysis/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/ir-based-analysis/">&lt;p&gt;We plan to introduce a new semantic analyzer based on intermediate representation at the next release.
This enables the following features.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Bit-wise latch &#x2F; unassign detection&lt;&#x2F;li&gt;
&lt;li&gt;More detailed type check considering parameter override and generics&lt;&#x2F;li&gt;
&lt;li&gt;Performance improvement&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;For example, the new analyzer can detect the following error.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;2&amp;gt;;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;always_comb&lt;&#x2F;span&gt;&lt;span&gt; {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;if &lt;&#x2F;span&gt;&lt;span&gt;x {
&lt;&#x2F;span&gt;&lt;span&gt;        a = 1;
&lt;&#x2F;span&gt;&lt;span&gt;    } &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;else&lt;&#x2F;span&gt;&lt;span&gt; {
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; a[0] is latch error
&lt;&#x2F;span&gt;&lt;span&gt;        a[1] = 1;
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;About performance improvement, we got the following results.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Small testcase (unit tests of Veryl compiler): 448ms to 330ms (+36%)&lt;&#x2F;li&gt;
&lt;li&gt;Large testcase (A real project with 66K lines): 68s to 14s (+386%)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Additionally, the introduced intermediate representation can be used for native Veryl simulator.
We plan to work on implementing it after releasing the new version.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;important-change&quot;&gt;Important change&lt;&#x2F;h2&gt;
&lt;p&gt;The new analyzer can handle several errors which can&#x27;t be detected by the previous version.&lt;&#x2F;p&gt;
&lt;p&gt;Some tools, including Verilator, ignore these error, so existing Veryl files may contain this error.
In that case, you&#x27;ll need to fix your code, as it will no longer compile after an update to the Veryl compiler.&lt;&#x2F;p&gt;
&lt;p&gt;Here are some common errors we see in Veryl code on GitHub:&lt;&#x2F;p&gt;
&lt;h3 id=&quot;refering-before-definition&quot;&gt;Refering before definition&lt;&#x2F;h3&gt;
&lt;p&gt;In the following code, &lt;code&gt;a&lt;&#x2F;code&gt; is referred before it&#x27;s definition.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;let &lt;&#x2F;span&gt;&lt;span&gt;b: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt; = a;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The next version Veryl compiler detects the following error.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;Error: referring_before_definition ()
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;  × a is referred before it is defined.
&lt;&#x2F;span&gt;&lt;span&gt;   ╭─[...&#x2F;test.veryl:2:20]
&lt;&#x2F;span&gt;&lt;span&gt; 1 │ module ModuleA {
&lt;&#x2F;span&gt;&lt;span&gt; 2 │     let b: logic = a;
&lt;&#x2F;span&gt;&lt;span&gt;   ·                    ┬
&lt;&#x2F;span&gt;&lt;span&gt;   ·                    ╰── Error location
&lt;&#x2F;span&gt;&lt;span&gt; 3 │     var a: logic;
&lt;&#x2F;span&gt;&lt;span&gt;   ╰────
&lt;&#x2F;span&gt;&lt;span&gt;  help: move definition before reference point
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h3 id=&quot;multiple-assignment-of-interface-member&quot;&gt;Multiple assignment of interface member&lt;&#x2F;h3&gt;
&lt;p&gt;In the following code, &lt;code&gt;p&lt;&#x2F;code&gt; is driven by both &lt;code&gt;u0&lt;&#x2F;code&gt; and &lt;code&gt;u1&lt;&#x2F;code&gt;.
Actually &lt;code&gt;u0&lt;&#x2F;code&gt; only drives &lt;code&gt;p.x&lt;&#x2F;code&gt; and &lt;code&gt;u1&lt;&#x2F;code&gt; only drives &lt;code&gt;p.y&lt;&#x2F;code&gt;, so it is not multiple assignment exactly.
However new Veryl compiler treats this case as multiple assignment.
This is because determining multiple assignment depending on the module implementation requires traversing the entire instance hierarchy,
which is expensive and makes the location of the error and the cause of the error far apart, making the error message difficult to interpret.&lt;&#x2F;p&gt;
&lt;p&gt;In this case, you can divide &lt;code&gt;master&lt;&#x2F;code&gt; modport into &lt;code&gt;master_x&lt;&#x2F;code&gt; and &lt;code&gt;master_y&lt;&#x2F;code&gt; to resolve this error.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;interface &lt;&#x2F;span&gt;&lt;span&gt;InterfaceA {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;x: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;y: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;modport &lt;&#x2F;span&gt;&lt;span&gt;master {
&lt;&#x2F;span&gt;&lt;span&gt;        x: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;output&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;        y: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;output&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;p: InterfaceA;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;u0: ModuleB ( p, );
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;u1: ModuleC ( p, );
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleB (
&lt;&#x2F;span&gt;&lt;span&gt;    p: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;modport &lt;&#x2F;span&gt;&lt;span&gt;InterfaceA::master,
&lt;&#x2F;span&gt;&lt;span&gt;) {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;assign &lt;&#x2F;span&gt;&lt;span&gt;p.x = 0;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleC (
&lt;&#x2F;span&gt;&lt;span&gt;    p: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;modport &lt;&#x2F;span&gt;&lt;span&gt;InterfaceA::master,
&lt;&#x2F;span&gt;&lt;span&gt;) {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;assign &lt;&#x2F;span&gt;&lt;span&gt;p.y = 0;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;release-plan&quot;&gt;Release plan&lt;&#x2F;h2&gt;
&lt;p&gt;We plan to release the next version including the new analyzer at the beginning of Feb. 2026.
If you want to try it before the release, you can use nightly compiler like below after 2026-01-22 02:00 (UTC).&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$verylup install nightly
&lt;&#x2F;span&gt;&lt;span&gt;$veryl +nightly --version
&lt;&#x2F;span&gt;&lt;span&gt;veryl 0.17.2-nightly (f63dc84 2026-01-20)
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The new analyzer may introduce false positive error because it replaces the whole analyzer by new code.
If you find any unexpected behaviour, please open an &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;issues&quot;&gt;issue&lt;&#x2F;a&gt; on GitHub.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Veryl 0.17.2</title>
        <published>2026-01-05T00:00:00+00:00</published>
        <updated>2026-01-05T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-veryl-0-17-2/"/>
        <id>https://veryl-lang.org/blog/announcing-veryl-0-17-2/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-veryl-0-17-2/">&lt;p&gt;The Veryl team has published a new release of Veryl, 0.17.2.
Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Veryl installed via &lt;code&gt;verylup&lt;&#x2F;code&gt;, you can get the latest version with:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can get &lt;code&gt;verylup&lt;&#x2F;code&gt; from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;new-tool-features&quot;&gt;New Tool Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;zed-extension&quot;&gt;Zed extension &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2139&quot;&gt;#2139&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Veryl extension for &lt;a href=&quot;https:&#x2F;&#x2F;zed.dev&quot;&gt;Zed&lt;&#x2F;a&gt; is added.
It supports syntax highlighting and language server.
The extension can be installed through the following URL.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;zed.dev&#x2F;extensions&#x2F;veryl&quot;&gt;https:&#x2F;&#x2F;zed.dev&#x2F;extensions&#x2F;veryl&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;tag&#x2F;v0.17.2&quot;&gt;Release v0.17.2&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Veryl 0.17.1</title>
        <published>2025-12-01T00:00:00+00:00</published>
        <updated>2025-12-01T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-veryl-0-17-1/"/>
        <id>https://veryl-lang.org/blog/announcing-veryl-0-17-1/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-veryl-0-17-1/">&lt;p&gt;The Veryl team has published a new release of Veryl, 0.17.1.
Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Veryl installed via &lt;code&gt;verylup&lt;&#x2F;code&gt;, you can get the latest version with:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can get &lt;code&gt;verylup&lt;&#x2F;code&gt; from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;new-tool-features&quot;&gt;New Tool Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;dsim-runner&quot;&gt;DSim runner &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2034&quot;&gt;#2034&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;altair.com&#x2F;dsim&quot;&gt;Altair DSim&lt;&#x2F;a&gt; support for &lt;code&gt;veryl test&lt;&#x2F;code&gt; is added.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ veryl test --sim dsim
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;vertical-align-format-option&quot;&gt;&lt;code&gt;vertical_align&lt;&#x2F;code&gt; format option &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2065&quot;&gt;#2065&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;By default, &lt;code&gt;veryl fmt&lt;&#x2F;code&gt; formats with keeping vertial alignment like below.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;let a : logic    = 1;
&lt;&#x2F;span&gt;&lt;span&gt;let aa: logic&amp;lt;2&amp;gt; = 1;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;However, this causes unexpected differences by revision control systems like git.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;let a  : logic    = 1; &#x2F;&#x2F; not changed logically, but diff occurs
&lt;&#x2F;span&gt;&lt;span&gt;let aa : logic&amp;lt;2&amp;gt; = 1; &#x2F;&#x2F; not changed logically, but diff occurs
&lt;&#x2F;span&gt;&lt;span&gt;let aaa: logic&amp;lt;2&amp;gt; = 1;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;To prevent this behaviour, you can use &lt;code&gt;vertical_align&lt;&#x2F;code&gt; option.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;toml&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-toml &quot;&gt;&lt;code class=&quot;language-toml&quot; data-lang=&quot;toml&quot;&gt;&lt;span&gt;[format]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d7af;&quot;&gt;vertical_align &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;font-weight:bold;color:#d6d6ae;&quot;&gt;false
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;new-standard-library&quot;&gt;New Standard Library&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;basic-synchronizer-implementation&quot;&gt;Basic synchronizer implementation &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2036&quot;&gt;#2036&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;The default implementation of &lt;code&gt;std::synchronizer&lt;&#x2F;code&gt;, which uses single-bit FF scheme, is added.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;std.veryl-lang.org&#x2F;synchronizer_basic.html&quot;&gt;https:&#x2F;&#x2F;std.veryl-lang.org&#x2F;synchronizer_basic.html&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;tag&#x2F;v0.17.1&quot;&gt;Release v0.17.1&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Verylup 0.1.11</title>
        <published>2025-11-19T00:00:00+00:00</published>
        <updated>2025-11-19T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-verylup-0-1-11/"/>
        <id>https://veryl-lang.org/blog/announcing-verylup-0-1-11/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-verylup-0-1-11/">&lt;p&gt;The Veryl team has published a new release of Verylup, 0.1.11.
Verylup is the official toolchain installer of Veryl.
It installs the latest Veryl toolchain and eases to update and switch the toolchains.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Verylup installed, getting Verylup 0.1.11 is as easy as stopping any programs which may be using Verylup (e.g. closing your IDE) and running:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, please refer &lt;a href=&quot;https:&#x2F;&#x2F;doc.veryl-lang.org&#x2F;book&#x2F;03_getting_started&#x2F;01_installation.html&quot;&gt;Getting Started&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;new-features&quot;&gt;New Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;custom-ca-bundle-support-for-downloads&quot;&gt;Custom CA bundle support for downloads&lt;&#x2F;h2&gt;
&lt;p&gt;In environments behind a proxy that re-signs HTTPS traffic with an enterprise root CA, custom CA bundle support is necessary.
verylup becomes to load a custom CA bundle through &lt;code&gt;SSL_CERT_FILE&lt;&#x2F;code&gt; environment variable or OS-dependent CA stores.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;tag&#x2F;v0.1.11&quot;&gt;Release v0.1.11&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Verylup 0.1.10</title>
        <published>2025-11-05T00:00:00+00:00</published>
        <updated>2025-11-05T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-verylup-0-1-10/"/>
        <id>https://veryl-lang.org/blog/announcing-verylup-0-1-10/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-verylup-0-1-10/">&lt;p&gt;The Veryl team has published a new release of Verylup, 0.1.10.
Verylup is the official toolchain installer of Veryl.
It installs the latest Veryl toolchain and eases to update and switch the toolchains.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Verylup installed, getting Verylup 0.1.10 is as easy as stopping any programs which may be using Verylup (e.g. closing your IDE) and running:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, please refer &lt;a href=&quot;https:&#x2F;&#x2F;doc.veryl-lang.org&#x2F;book&#x2F;03_getting_started&#x2F;01_installation.html&quot;&gt;Getting Started&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;new-features&quot;&gt;New Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;versionreq-syntax-support&quot;&gt;VersionReq syntax support&lt;&#x2F;h2&gt;
&lt;p&gt;VersionReq syntax like &lt;code&gt;+0.16&lt;&#x2F;code&gt; instead of complete version &lt;code&gt;+0.16.0&lt;&#x2F;code&gt; can be used.
If &lt;code&gt;+0.16&lt;&#x2F;code&gt; is specified, the latest version in &lt;code&gt;0.16.x&lt;&#x2F;code&gt; is selected.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ veryl +0.16.0 --version
&lt;&#x2F;span&gt;&lt;span&gt;veryl 0.16.0 (56a6056 2025-05-05)
&lt;&#x2F;span&gt;&lt;span&gt;$ veryl +0.16 --version
&lt;&#x2F;span&gt;&lt;span&gt;veryl 0.16.5 (617da3e 2025-10-06)
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;aarch64-windows-support&quot;&gt;aarch64-windows support&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;aarch64-windows&lt;&#x2F;code&gt; platform support is added.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;version-check-of-nightly-channel&quot;&gt;Version check of nightly channel&lt;&#x2F;h2&gt;
&lt;p&gt;Before this version, &lt;code&gt;verylup update&lt;&#x2F;code&gt; always downloaded nightly build.
Now version checking of nightly channel is added, and &lt;code&gt;verylup update&lt;&#x2F;code&gt; becomes faster when there is no update of nightly build.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ verylup update
&lt;&#x2F;span&gt;&lt;span&gt;[INFO ]     checking toolchain: latest (up-to-date)
&lt;&#x2F;span&gt;&lt;span&gt;[INFO ]     checking toolchain: nightly (up-to-date)
&lt;&#x2F;span&gt;&lt;span&gt;[INFO ]     checking verylup: 0.1.10 (up-to-date)
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;tag&#x2F;v0.1.10&quot;&gt;Release v0.1.10&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Veryl 0.17.0</title>
        <published>2025-11-04T00:00:00+00:00</published>
        <updated>2025-11-04T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-veryl-0-17-0/"/>
        <id>https://veryl-lang.org/blog/announcing-veryl-0-17-0/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-veryl-0-17-0/">&lt;p&gt;The Veryl team has published a new release of Veryl, 0.17.0.
Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Veryl installed via &lt;code&gt;verylup&lt;&#x2F;code&gt;, you can get the latest version with:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can get &lt;code&gt;verylup&lt;&#x2F;code&gt; from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;breaking-changes&quot;&gt;Breaking Changes&lt;&#x2F;h1&gt;
&lt;p&gt;To migrate some syntax changes, &lt;code&gt;veryl migrate&lt;&#x2F;code&gt; can be used:&lt;&#x2F;p&gt;
&lt;details&gt;
&lt;pre data-lang=&quot;console&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-console &quot;&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span&gt;&#x2F;&#x2F; Check how changes will be applied
&lt;&#x2F;span&gt;&lt;span&gt;$ veryl migrate --check
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&#x2F; Migrate
&lt;&#x2F;span&gt;&lt;span&gt;$ veryl migrate
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;&#x2F;details&gt;
&lt;h2 id=&quot;remove-and-operator&quot;&gt;Remove &lt;code&gt;===&lt;&#x2F;code&gt; and &lt;code&gt;!==&lt;&#x2F;code&gt; operator &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2006&quot;&gt;#2006&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;===&lt;&#x2F;code&gt; and &lt;code&gt;!==&lt;&#x2F;code&gt; operator are removed because they are not synthesizable.
Please use &lt;code&gt;==&lt;&#x2F;code&gt; and &lt;code&gt;!=&lt;&#x2F;code&gt; instead of them.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;remove-operator&quot;&gt;Remove &lt;code&gt;^~&lt;&#x2F;code&gt; operator &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;2008&quot;&gt;#2008&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Both &lt;code&gt;~^&lt;&#x2F;code&gt; and &lt;code&gt;^~&lt;&#x2F;code&gt; was XNOR operator.
Now &lt;code&gt;^~&lt;&#x2F;code&gt; operator is removed and XNOR operator is &lt;code&gt;~^&lt;&#x2F;code&gt;.
This change improves consistency with NAND (&lt;code&gt;~&amp;amp;&lt;&#x2F;code&gt;) and NOR (&lt;code&gt;~|&lt;&#x2F;code&gt;) operator.
After this change, &lt;code&gt;^~&lt;&#x2F;code&gt; is interpreted as combination of &lt;code&gt;^&lt;&#x2F;code&gt; and &lt;code&gt;~&lt;&#x2F;code&gt; like below.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span&gt;x ^~ y &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; x XOR (NOT y)
&lt;&#x2F;span&gt;&lt;span&gt;^~ x   &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; Reduction XOR (NOT x)
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;new-tool-features&quot;&gt;New Tool Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;add-cocotb-2-0-support&quot;&gt;Add cocotb 2.0 support &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1958&quot;&gt;#1958&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;docs.cocotb.org&#x2F;en&#x2F;development&#x2F;upgrade-2.0.html&quot;&gt;Cocotb 2.0&lt;&#x2F;a&gt; has been released and we have added support for it in &lt;code&gt;veryl test&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;information&quot;&gt;Information&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;doi-of-veryl-release&quot;&gt;DOI of Veryl release&lt;&#x2F;h2&gt;
&lt;p&gt;After this version, DOI (Digital Object Identifier) is added to all Veryl release.
If you refer Veryl in your paper, please use the following DOI.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Concept DOI: &lt;a href=&quot;https:&#x2F;&#x2F;doi.org&#x2F;10.5281&#x2F;zenodo.17518832&quot;&gt;https:&#x2F;&#x2F;doi.org&#x2F;10.5281&#x2F;zenodo.17518832&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;v0.17.0 DOI: &lt;a href=&quot;https:&#x2F;&#x2F;doi.org&#x2F;10.5281&#x2F;zenodo.17518833&quot;&gt;https:&#x2F;&#x2F;doi.org&#x2F;10.5281&#x2F;zenodo.17518833&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;tag&#x2F;v0.17.0&quot;&gt;Release v0.17.0&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Update the Visual Studio Code extension</title>
        <published>2025-10-16T00:00:00+00:00</published>
        <updated>2025-10-16T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/update-vscode-extension/"/>
        <id>https://veryl-lang.org/blog/update-vscode-extension/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/update-vscode-extension/">&lt;p&gt;Today we announce a new version of the Veryl extension for Visual Studio Code.
The new version has the complete same functionality as the previous version.
The only change is that the publisher is now the veryl-lang organization.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;marketplace.visualstudio.com&#x2F;items?itemName=veryl-lang.veryl-vscode&quot;&gt;Veryl extension for Visual Studio Code&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;For existing Veryl developers using VS Code, the transition should be seamless:
the old release should automatically install the new extension and disable itself,
and moving forward all language features will be provided by the new extension.
You’re welcome to uninstall the original extension, which has been renamed to reflect its deprecated status.&lt;&#x2F;p&gt;
&lt;p&gt;If you have any issues migrating, please &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;issues&quot;&gt;send an issue&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Veryl 0.16.5</title>
        <published>2025-10-06T00:00:00+00:00</published>
        <updated>2025-10-06T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-veryl-0-16-5/"/>
        <id>https://veryl-lang.org/blog/announcing-veryl-0-16-5/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-veryl-0-16-5/">&lt;p&gt;The Veryl team has published a new release of Veryl, 0.16.5.
Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Veryl installed via &lt;code&gt;verylup&lt;&#x2F;code&gt;, you can get the latest version with:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can get &lt;code&gt;verylup&lt;&#x2F;code&gt; from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;new-features&quot;&gt;New Features&lt;&#x2F;h1&gt;
&lt;p&gt;This version doesn&#x27;t contain new features.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;tag&#x2F;v0.16.5&quot;&gt;Release v0.16.5&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Official Docker image</title>
        <published>2025-10-01T00:00:00+00:00</published>
        <updated>2025-10-01T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/official-docker-image/"/>
        <id>https://veryl-lang.org/blog/official-docker-image/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/official-docker-image/">&lt;p&gt;The Veryl team has published the official Docker image of Veryl.
It can be used as the base image for your custormized image, GitLab CI&#x2F;CD and so on.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;hub.docker.com&#x2F;r&#x2F;veryllang&#x2F;veryl&quot;&gt;https:&#x2F;&#x2F;hub.docker.com&#x2F;r&#x2F;veryllang&#x2F;veryl&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Additionally, this project was approved for &lt;a href=&quot;https:&#x2F;&#x2F;www.docker.com&#x2F;community&#x2F;open-source&#x2F;application&#x2F;&quot;&gt;&quot;Docker-Sponsored Open Source program&quot;&lt;&#x2F;a&gt;.
By collaborating with Docker Inc., unlimited pull rate is provided.&lt;&#x2F;p&gt;
&lt;p&gt;Here is some examples to use the Docker image.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;docker-command&quot;&gt;&lt;code&gt;docker&lt;&#x2F;code&gt; command&lt;&#x2F;h2&gt;
&lt;p&gt;You can pull the docker image from &lt;code&gt;veryllang&#x2F;veryl&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;console&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-console &quot;&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span&gt;$ docker pull veryllang&#x2F;veryl
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;dockerfile&quot;&gt;&lt;code&gt;Dockerfile&lt;&#x2F;code&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;If you want to use the official image as a base of your Docker image, the following &lt;code&gt;FROM&lt;&#x2F;code&gt; directive can be used.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;FROM veryllang&#x2F;veryl:latest
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;gitlab-ci-cd&quot;&gt;GitLab CI&#x2F;CD&lt;&#x2F;h2&gt;
&lt;p&gt;The following is an example of &lt;code&gt;.gitlab-ci.yml&lt;&#x2F;code&gt; for &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&quot;&gt;GitLab&lt;&#x2F;a&gt; CI&#x2F;CD.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;yaml&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-yaml &quot;&gt;&lt;code class=&quot;language-yaml&quot; data-lang=&quot;yaml&quot;&gt;&lt;span style=&quot;font-weight:bold;color:#fed6af;&quot;&gt;image&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d68686;&quot;&gt;veryllang&#x2F;veryl&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;font-weight:bold;color:#fed6af;&quot;&gt;build&lt;&#x2F;span&gt;&lt;span&gt;:
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;font-weight:bold;color:#fed6af;&quot;&gt;stage&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d68686;&quot;&gt;build
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;font-weight:bold;color:#fed6af;&quot;&gt;script&lt;&#x2F;span&gt;&lt;span&gt;:
&lt;&#x2F;span&gt;&lt;span&gt;    - &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d68686;&quot;&gt;veryl build
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;font-weight:bold;color:#fed6af;&quot;&gt;fmt&lt;&#x2F;span&gt;&lt;span&gt;:
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;font-weight:bold;color:#fed6af;&quot;&gt;stage&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d68686;&quot;&gt;build
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;font-weight:bold;color:#fed6af;&quot;&gt;script&lt;&#x2F;span&gt;&lt;span&gt;:
&lt;&#x2F;span&gt;&lt;span&gt;    - &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d68686;&quot;&gt;veryl fmt --check
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Additional Maintainer</title>
        <published>2025-09-16T00:00:00+00:00</published>
        <updated>2025-09-16T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/additional-maintainer/"/>
        <id>https://veryl-lang.org/blog/additional-maintainer/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/additional-maintainer/">&lt;p&gt;This project was started as a personal project of Naoya Hatta ( &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;dalance&quot;&gt;dalance&lt;&#x2F;a&gt; ), and all administrator privileges are owned by him.
This status is called &quot;Bus factor 1&quot;, it means the project stops completely if he leaves this project unexpectedly.&lt;&#x2F;p&gt;
&lt;p&gt;To resolve this issue, Taichi Ishitani ( &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;taichi-ishitani&quot;&gt;taichi-ishitani&lt;&#x2F;a&gt; ) was added as a maintainer to this project.
He is the 2nd place of the contributor list, and implements many language features.&lt;&#x2F;p&gt;
&lt;p&gt;Now we share almost all privileges, including GitHub organization, veryl-lang.org domain, and so on.
This significantly reduced the risk of the project being stopped due to unforeseen circumstances.
Naoya Hatta will contribute to this project as the language owner continuously.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Verylup 0.1.9</title>
        <published>2025-09-12T00:00:00+00:00</published>
        <updated>2025-09-12T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-verylup-0-1-9/"/>
        <id>https://veryl-lang.org/blog/announcing-verylup-0-1-9/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-verylup-0-1-9/">&lt;p&gt;The Veryl team has published a new release of Verylup, 0.1.9.
Verylup is the official toolchain installer of Veryl.
It installs the latest Veryl toolchain and eases to update and switch the toolchains.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Verylup installed, getting Verylup 0.1.9 is as easy as stopping any programs which may be using Verylup (e.g. closing your IDE) and running:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, please refer &lt;a href=&quot;https:&#x2F;&#x2F;doc.veryl-lang.org&#x2F;book&#x2F;03_getting_started&#x2F;01_installation.html&quot;&gt;Getting Started&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;important-notice&quot;&gt;Important Notice&lt;&#x2F;h1&gt;
&lt;p&gt;Verylup 0.1.7 unexpectedly disabled the self-update feature by default. If you see the following message at &lt;code&gt;verylup update&lt;&#x2F;code&gt;, please update to Verylup 0.1.8 manually.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ verylup update
&lt;&#x2F;span&gt;&lt;span&gt;...
&lt;&#x2F;span&gt;&lt;span&gt;[INFO ]  self-update is disabled
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;new-features&quot;&gt;New Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;verylup-home-environment-variable-support&quot;&gt;&lt;code&gt;VERYLUP_HOME&lt;&#x2F;code&gt; environment variable support&lt;&#x2F;h2&gt;
&lt;p&gt;By default, verylup uses the data directory defined by &lt;a href=&quot;https:&#x2F;&#x2F;specifications.freedesktop.org&#x2F;basedir-spec&#x2F;latest&#x2F;&quot;&gt;XDG Base Directory Specification&lt;&#x2F;a&gt; to store Veryl toolchains.
This directory is defined every users, therefore it cannot be share by some users.&lt;&#x2F;p&gt;
&lt;p&gt;This behaviour causes a problem in cases like creating container image, in which the user installing Veryl and the actual user are different.
To resolve the issue, &lt;code&gt;VERYLUP_HOME&lt;&#x2F;code&gt; environment variable can be used.
If it is defined, verylup installs Veryl toolchains under the &lt;code&gt;VERYLUP_HOME&lt;&#x2F;code&gt; directory.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;add-toolchain-option-for-setup&quot;&gt;Add &lt;code&gt;toolchain&lt;&#x2F;code&gt; option for setup&lt;&#x2F;h2&gt;
&lt;p&gt;If you want to specify the toolchain at &lt;code&gt;verylup setup&lt;&#x2F;code&gt;, &lt;code&gt;--toolchain&lt;&#x2F;code&gt; option can be used.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;verylup setup --toolchain 0.16.4
&lt;&#x2F;span&gt;&lt;span&gt;verylup setup --toolchain nightly
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;tag&#x2F;v0.1.9&quot;&gt;Release v0.1.9&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Veryl 0.16.4</title>
        <published>2025-09-08T00:00:00+00:00</published>
        <updated>2025-09-08T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-veryl-0-16-4/"/>
        <id>https://veryl-lang.org/blog/announcing-veryl-0-16-4/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-veryl-0-16-4/">&lt;p&gt;The Veryl team has published a new release of Veryl, 0.16.4.
Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Veryl installed via &lt;code&gt;verylup&lt;&#x2F;code&gt;, you can get the latest version with:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can get &lt;code&gt;verylup&lt;&#x2F;code&gt; from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;new-language-features&quot;&gt;New Language Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;support-embed-identifier&quot;&gt;Support embed identifier &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1836&quot;&gt;#1836&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;If you want to refer Veryl&#x27;s identifier in &lt;code&gt;embed&lt;&#x2F;code&gt; declaration, the identifier can be placed with &lt;code&gt;\{&lt;&#x2F;code&gt; and &lt;code&gt;\}&lt;&#x2F;code&gt;.
This is useful when you want to use complex identifiers such as generics.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;embed&lt;&#x2F;span&gt;&lt;span&gt; (inline) sv{{{
&lt;&#x2F;span&gt;&lt;span&gt;        \{ ModuleB::&amp;lt;1&amp;gt; \} u_b ();
&lt;&#x2F;span&gt;&lt;span&gt;    }}}
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;support-bind-declaration&quot;&gt;Support bind declaration &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1887&quot;&gt;#1887&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;bind&lt;&#x2F;code&gt; declaration is supported to specify to bind a module to another module.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;bind &lt;&#x2F;span&gt;&lt;span&gt;ModuleA &amp;lt;- u: ModuleB (
&lt;&#x2F;span&gt;&lt;span&gt;  i_clk: i_clk,
&lt;&#x2F;span&gt;&lt;span&gt;  i_rst: i_rst,
&lt;&#x2F;span&gt;&lt;span&gt;  i_a  : a    ,
&lt;&#x2F;span&gt;&lt;span&gt;  o_b  : b    ,
&lt;&#x2F;span&gt;&lt;span&gt;);
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;new-tool-features&quot;&gt;New Tool Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;add-error-count-limit-build-option&quot;&gt;Add &lt;code&gt;error_count_limit&lt;&#x2F;code&gt; build option &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1864&quot;&gt;#1864&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;By default, Veryl compiler prints all errors. To specify maximum error count, &lt;code&gt;error_count_limit&lt;&#x2F;code&gt; can be used.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;toml&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-toml &quot;&gt;&lt;code class=&quot;language-toml&quot; data-lang=&quot;toml&quot;&gt;&lt;span&gt;[build]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d7af;&quot;&gt;error_count_limit &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;font-weight:bold;color:#87d6d5;&quot;&gt;10
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;tag&#x2F;v0.16.4&quot;&gt;Release v0.16.4&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>GitLab supports syntax highlighting of Veryl</title>
        <published>2025-09-03T00:00:00+00:00</published>
        <updated>2025-09-03T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/gitlab-support-syntax-highlighting/"/>
        <id>https://veryl-lang.org/blog/gitlab-support-syntax-highlighting/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/gitlab-support-syntax-highlighting/">&lt;p&gt;Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;GitLab 18.3, which was released at 2025&#x2F;08&#x2F;21, includes syntax highlighting support of Veryl.
This feature can be used for on-premise environment, and it was already reflected to &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&quot;&gt;https:&#x2F;&#x2F;gitlab.com&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;img src=&quot;..&#x2F;..&#x2F;img&#x2F;gitlab.png&quot;&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Veryl 0.16.3</title>
        <published>2025-08-04T00:00:00+00:00</published>
        <updated>2025-08-04T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-veryl-0-16-3/"/>
        <id>https://veryl-lang.org/blog/announcing-veryl-0-16-3/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-veryl-0-16-3/">&lt;p&gt;The Veryl team has published a new release of Veryl, 0.16.3.
Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Veryl installed via &lt;code&gt;verylup&lt;&#x2F;code&gt;, you can get the latest version with:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can get &lt;code&gt;verylup&lt;&#x2F;code&gt; from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;new-language-features&quot;&gt;New Language Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;support-omittable-rhs-value-of-proto-param&quot;&gt;Support omittable RHS value of proto param &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1778&quot;&gt;#1778&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;In proto modules, the right-hand side value of &lt;code&gt;param&lt;&#x2F;code&gt; &#x2F; &lt;code&gt;const&lt;&#x2F;code&gt; is not necessary.
So it becomes to be omittable.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;proto module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA #(
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;param &lt;&#x2F;span&gt;&lt;span&gt;A: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt; = 0,
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;param &lt;&#x2F;span&gt;&lt;span&gt;B: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt;    , &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; RHS value can be omitted
&lt;&#x2F;span&gt;&lt;span&gt;);
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;support-for-loop-in-descending-order&quot;&gt;Support for loop in descending order &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1783&quot;&gt;#1783&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;rev&lt;&#x2F;code&gt; keyword is introduced to indicate loop in descending order.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;for &lt;&#x2F;span&gt;&lt;span&gt;i: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;i32 &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;in rev &lt;&#x2F;span&gt;&lt;span&gt;0..32 {
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; Generated SV
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; for (int i = 32 - 1; i &amp;gt;= 0; i--) begin
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; end
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;add-fmt-skip-attribute&quot;&gt;Add &lt;code&gt;fmt(skip)&lt;&#x2F;code&gt; attribute &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1804&quot;&gt;#1804&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;fmt(skip)&lt;&#x2F;code&gt; attribute is introduced to indicate the following block is not formatted by &lt;code&gt;veryl fmt&lt;&#x2F;code&gt;.
It can be added to module, interface and package.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span&gt;#[fmt(skip)]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA {
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;new-tool-features&quot;&gt;New Tool Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;incremental-build-support&quot;&gt;Incremental build support &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1823&quot;&gt;#1823&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;In large projects, &lt;code&gt;veryl build&lt;&#x2F;code&gt; sometimes takes a long time.
To accelarate such case, incremental build is introduced.
If incremental build is enabled, Veryl compiler traces the last modified time and generated time of files,
and re-generates only files related modified source code.&lt;&#x2F;p&gt;
&lt;p&gt;The reliability of tracing is not yet high, so incremental build is not enabled by default.
To enable it, you can specify in &lt;code&gt;Veryl.toml&lt;&#x2F;code&gt; like below:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;toml&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-toml &quot;&gt;&lt;code class=&quot;language-toml&quot; data-lang=&quot;toml&quot;&gt;&lt;span&gt;[build]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d7af;&quot;&gt;incremental &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;font-weight:bold;color:#d6d6ae;&quot;&gt;true
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;tag&#x2F;v0.16.3&quot;&gt;Release v0.16.3&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Verylup 0.1.7</title>
        <published>2025-07-22T00:00:00+00:00</published>
        <updated>2025-07-22T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-verylup-0-1-7/"/>
        <id>https://veryl-lang.org/blog/announcing-verylup-0-1-7/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-verylup-0-1-7/">&lt;p&gt;The Veryl team has published a new release of Verylup, 0.1.7.
Verylup is the official toolchain installer of Veryl.
It installs the latest Veryl toolchain and eases to update and switch the toolchains.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Verylup installed, getting Verylup 0.1.7 is as easy as stopping any programs which may be using Verylup (e.g. closing your IDE) and running:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, please refer &lt;a href=&quot;https:&#x2F;&#x2F;doc.veryl-lang.org&#x2F;book&#x2F;03_getting_started&#x2F;01_installation.html&quot;&gt;Getting Started&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;new-features&quot;&gt;New Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;add-no-self-update-option-and-no-self-update-feature-support&quot;&gt;Add &lt;code&gt;--no-self-update&lt;&#x2F;code&gt; option and &lt;code&gt;no-self-update&lt;&#x2F;code&gt; feature support&lt;&#x2F;h2&gt;
&lt;p&gt;If users don&#x27;t have write permission for the verylup binary, various commands of verylup are failed.
For example, installing verylup through Linux distribution&#x27;s packaging system causes this issue.&lt;&#x2F;p&gt;
&lt;p&gt;To avoid this issue, the two option is provided.
&lt;code&gt;--no-self-update&lt;&#x2F;code&gt; option can be used at &lt;code&gt;verylup setup&lt;&#x2F;code&gt;.
This option disables self-update of verylup for users who executed &lt;code&gt;verylup setup&lt;&#x2F;code&gt;.
This is for users who don&#x27;t prefer self-update feature.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;verylup setup --no-self-update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;code&gt;no-self-update&lt;&#x2F;code&gt; feature can be used at &lt;code&gt;cargo build&lt;&#x2F;code&gt; or &lt;code&gt;cargo install&lt;&#x2F;code&gt;.
This feature permanently disables self-update.
This is for Linux distribution&#x27;s packaging.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;cargo build --release --features no-self-update
&lt;&#x2F;span&gt;&lt;span&gt;cargo install verylup --features no-self-update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;tag&#x2F;v0.1.7&quot;&gt;Release v0.1.7&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Veryl 0.16.2</title>
        <published>2025-07-08T00:00:00+00:00</published>
        <updated>2025-07-08T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-veryl-0-16-2/"/>
        <id>https://veryl-lang.org/blog/announcing-veryl-0-16-2/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-veryl-0-16-2/">&lt;p&gt;The Veryl team has published a new release of Veryl, 0.16.2.
Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Veryl installed via &lt;code&gt;verylup&lt;&#x2F;code&gt;, you can get the latest version with:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can get &lt;code&gt;verylup&lt;&#x2F;code&gt; from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;new-language-features&quot;&gt;New Language Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;support-reference-to-type-defiend-in-existing-package-via-proto-package&quot;&gt;Support reference to type defiend in existing package via proto package &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1691&quot;&gt;#1691&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Proto typedefs are allowed to have their actual types. This allows a type symbol defined in a different package to be imported into the proto package and referenced from other components through it.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;package &lt;&#x2F;span&gt;&lt;span&gt;FooPkg {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;struct &lt;&#x2F;span&gt;&lt;span&gt;Foo {
&lt;&#x2F;span&gt;&lt;span&gt;        foo: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;proto package &lt;&#x2F;span&gt;&lt;span&gt;BarProtoPkg {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;type &lt;&#x2F;span&gt;&lt;span&gt;Foo = FooPkg::Foo;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;package &lt;&#x2F;span&gt;&lt;span&gt;BarPkg &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;for &lt;&#x2F;span&gt;&lt;span&gt;BarProtoPkg {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;type &lt;&#x2F;span&gt;&lt;span&gt;Foo = FooPkg::Foo;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA::&amp;lt;PKG: BarProtoPkg&amp;gt; {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;_foo    : PKG::Foo;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;assign &lt;&#x2F;span&gt;&lt;span&gt;_foo.foo = 0;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleB {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;u: ModuleA::&amp;lt;BarPkg&amp;gt;;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;add-const-declarations-to-statementblockitems&quot;&gt;Add const declarations to StatementBlockItems &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1695&quot;&gt;#1695&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;const&lt;&#x2F;code&gt; declaration can be used in statement blocks.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;function &lt;&#x2F;span&gt;&lt;span&gt;foo () -&amp;gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt; {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;const &lt;&#x2F;span&gt;&lt;span&gt;bar: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt; = 2;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;return &lt;&#x2F;span&gt;&lt;span&gt;bar;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;support-embed-declaration-in-component-declaration&quot;&gt;Support embed declaration in component declaration &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1712&quot;&gt;#1712&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;embed&lt;&#x2F;code&gt; declaration with &lt;code&gt;sv&lt;&#x2F;code&gt; block can be used in component declaration like module, interface and package.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;embed&lt;&#x2F;span&gt;&lt;span&gt; (inline) sv{{{
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;initial &lt;&#x2F;span&gt;&lt;span&gt;begin
&lt;&#x2F;span&gt;&lt;span&gt;            $display(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d68686;&quot;&gt;&amp;quot;hello&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;);
&lt;&#x2F;span&gt;&lt;span&gt;        end
&lt;&#x2F;span&gt;&lt;span&gt;    }}}
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;new-tool-features&quot;&gt;New Tool Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;merge-waveform-render-into-veryl-vs-code-extension&quot;&gt;Merge Waveform Render into Veryl VS Code Extension &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1713&quot;&gt;#1713&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;VSCode Extension supports preview of waveform in documentation comments.&lt;&#x2F;p&gt;
&lt;img src=&quot;..&#x2F;..&#x2F;img&#x2F;vscode_waveform.png&quot;&gt;
&lt;h2 id=&quot;add-support-for-including-additional-files-for-tests&quot;&gt;Add support for including additional files for tests &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1718&quot;&gt;#1718&lt;&#x2F;a&gt;
 &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1729&quot;&gt;#1729&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Additional files for test can be specified by &lt;code&gt;include_files&lt;&#x2F;code&gt;. For example, it can be used to specify HEX files which are read by &lt;code&gt;$readmemh&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;toml&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-toml &quot;&gt;&lt;code class=&quot;language-toml&quot; data-lang=&quot;toml&quot;&gt;&lt;span&gt;[test]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d7af;&quot;&gt;include_files &lt;&#x2F;span&gt;&lt;span&gt;= [&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d68686;&quot;&gt;test.hex&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;]
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;allow-to-specify-multiple-source-directories&quot;&gt;Allow to specify multiple source directories &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1747&quot;&gt;#1747&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Multiple source directories can be specified via &lt;code&gt;sources&lt;&#x2F;code&gt; instead of &lt;code&gt;source&lt;&#x2F;code&gt;.
&lt;code&gt;source&lt;&#x2F;code&gt; becomes deprecated, and will be removed after a few versions.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;toml&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-toml &quot;&gt;&lt;code class=&quot;language-toml&quot; data-lang=&quot;toml&quot;&gt;&lt;span&gt;[build]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d7af;&quot;&gt;sources &lt;&#x2F;span&gt;&lt;span&gt;= [&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d68686;&quot;&gt;rtl&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d68686;&quot;&gt;tb&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;]
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;tag&#x2F;v0.16.2&quot;&gt;Release v0.16.2&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Verylup 0.1.6</title>
        <published>2025-07-08T00:00:00+00:00</published>
        <updated>2025-07-08T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-verylup-0-1-6/"/>
        <id>https://veryl-lang.org/blog/announcing-verylup-0-1-6/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-verylup-0-1-6/">&lt;p&gt;The Veryl team has published a new release of Verylup, 0.1.6.
Verylup is the official toolchain installer of Veryl.
It installs the latest Veryl toolchain and eases to update and switch the toolchains.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Verylup installed, getting Verylup 0.1.6 is as easy as stopping any programs which may be using Verylup (e.g. closing your IDE) and running:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, please refer &lt;a href=&quot;https:&#x2F;&#x2F;doc.veryl-lang.org&#x2F;book&#x2F;03_getting_started&#x2F;01_installation.html&quot;&gt;Getting Started&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;new-features&quot;&gt;New Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;add-proxy-support&quot;&gt;Add proxy support&lt;&#x2F;h2&gt;
&lt;p&gt;Verylup supports HTTP&#x2F;SOCKS5 proxy.
By default, verylup refers system proxy configuration via the following environment variables:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;HTTPS_PROXY&lt;&#x2F;code&gt; &#x2F; &lt;code&gt;https_proxy&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;ALL_PROXY&lt;&#x2F;code&gt; &#x2F; &lt;code&gt;all_proxy&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;If you want to specify proxy for verylup only, the following command can be used.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;verylup config set proxy socks5:&#x2F;&#x2F;127.0.0.1:1086
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;add-aarch64-linux-support&quot;&gt;Add aarch64-linux support&lt;&#x2F;h2&gt;
&lt;p&gt;Now verylup supports aarch64-linux. The supported platforms are below:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;x86_64-linux&lt;&#x2F;li&gt;
&lt;li&gt;x86_64-mac&lt;&#x2F;li&gt;
&lt;li&gt;x86_64-windows&lt;&#x2F;li&gt;
&lt;li&gt;aarch64-linux&lt;&#x2F;li&gt;
&lt;li&gt;aarch64-mac&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;tag&#x2F;v0.1.6&quot;&gt;Release v0.1.6&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Veryl 0.16.1</title>
        <published>2025-06-02T00:00:00+00:00</published>
        <updated>2025-06-02T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-veryl-0-16-1/"/>
        <id>https://veryl-lang.org/blog/announcing-veryl-0-16-1/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-veryl-0-16-1/">&lt;p&gt;The Veryl team has published a new release of Veryl, 0.16.1.
Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Veryl installed via &lt;code&gt;verylup&lt;&#x2F;code&gt;, you can get the latest version with:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can get &lt;code&gt;verylup&lt;&#x2F;code&gt; from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;new-language-features&quot;&gt;New Language Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;support-flattened-array-modport-instance&quot;&gt;Support flattened array modport&#x2F;instance &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1566&quot;&gt;#1566&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Some EDA tools don&#x27;t support multi-dimentional array modport&#x2F;instance.
To support such tools, &lt;code&gt;flatten_array_interface&lt;&#x2F;code&gt; can be used.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;toml&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-toml &quot;&gt;&lt;code class=&quot;language-toml&quot; data-lang=&quot;toml&quot;&gt;&lt;span&gt;[build]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d7af;&quot;&gt;flatten_array_interface &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;font-weight:bold;color:#d6d6ae;&quot;&gt;true
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The following is an example of code generation.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Veryl&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;if_a: InterfaceA[2, 3];
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;SystemVerilog&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre data-lang=&quot;verilog&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-verilog &quot;&gt;&lt;code class=&quot;language-verilog&quot; data-lang=&quot;verilog&quot;&gt;&lt;span&gt;InterfaceA if_a[6]();
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;add-a-build-option-to-hashed-mangle-name&quot;&gt;Add a build option to hashed mangle-name &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1614&quot;&gt;#1614&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;If an generic instance has many arguments, the mangled name becomes too long.
To shorten such names, &lt;code&gt;hashed_mangled_name&lt;&#x2F;code&gt; can be used.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;toml&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-toml &quot;&gt;&lt;code class=&quot;language-toml&quot; data-lang=&quot;toml&quot;&gt;&lt;span&gt;[build]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d7af;&quot;&gt;hashed_mangled_name &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;font-weight:bold;color:#d6d6ae;&quot;&gt;true
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Example:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Un-hashed name: &lt;code&gt;prj___PkgA__0__1__2__3__4__5__6__7&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Hashed name: &lt;code&gt;prj___PkgA__3894375d1deadabb&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;tag&#x2F;v0.16.1&quot;&gt;Release v0.16.1&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Veryl 0.16.0</title>
        <published>2025-05-05T00:00:00+00:00</published>
        <updated>2025-05-05T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-veryl-0-16-0/"/>
        <id>https://veryl-lang.org/blog/announcing-veryl-0-16-0/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-veryl-0-16-0/">&lt;p&gt;The Veryl team has published a new release of Veryl, 0.16.0.
Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Veryl installed via &lt;code&gt;verylup&lt;&#x2F;code&gt;, you can get the latest version with:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can get &lt;code&gt;verylup&lt;&#x2F;code&gt; from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;breaking-changes&quot;&gt;Breaking Changes&lt;&#x2F;h1&gt;
&lt;p&gt;To migrate some syntax changes, &lt;code&gt;veryl migrate&lt;&#x2F;code&gt; can be used:&lt;&#x2F;p&gt;
&lt;details&gt;
&lt;pre data-lang=&quot;console&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-console &quot;&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span&gt;&#x2F;&#x2F; Check how changes will be applied
&lt;&#x2F;span&gt;&lt;span&gt;$ veryl migrate --check
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&#x2F; Migrate
&lt;&#x2F;span&gt;&lt;span&gt;$ veryl migrate
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;&#x2F;details&gt;
&lt;h2 id=&quot;keep-directory-hierarchy-for-target-type-directory&quot;&gt;Keep directory hierarchy for &lt;code&gt;target = {type = &quot;directory&quot;}&lt;&#x2F;code&gt; &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1513&quot;&gt;#1513&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;target = {type = &quot;directory&quot;}&lt;&#x2F;code&gt; caused to break files which have the same name and belong different source directory, because it forces all output files to a single directory.
To avoid this issue, the behaviour of this option is changed to keep directory hierarchy of source.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;change-clock-domain-annotation-symbol-to&quot;&gt;Change clock domain annotation symbol to &lt;code&gt;&#x27;&lt;&#x2F;code&gt; &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1517&quot;&gt;#1517&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Clock domain annotation symbol was &lt;code&gt;`&lt;&#x2F;code&gt; by parser restriction.
But it is changed to &lt;code&gt;&#x27;&lt;&#x2F;code&gt; as the same as Rust&#x27;s lifetime annotation by improving parser implementation.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; Before
&lt;&#x2F;span&gt;&lt;span&gt;i_clk: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input &lt;&#x2F;span&gt;&lt;span style=&quot;font-weight:bold;color:#d6d6ae;&quot;&gt;`a &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;clock&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; After
&lt;&#x2F;span&gt;&lt;span&gt;i_clk: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input&lt;&#x2F;span&gt;&lt;span&gt; &amp;#39;a &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;clock&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;unsupport-enum-struct-union-declarations-in-interface-declaration&quot;&gt;Unsupport &lt;code&gt;enum&lt;&#x2F;code&gt; &#x2F; &lt;code&gt;struct&lt;&#x2F;code&gt; &#x2F; &lt;code&gt;union&lt;&#x2F;code&gt; declarations in interface declaration &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1521&quot;&gt;#1521&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;enum&lt;&#x2F;code&gt;, &lt;code&gt;struct&lt;&#x2F;code&gt; and &lt;code&gt;union&lt;&#x2F;code&gt; in interface declaration were removed because they can&#x27;t be refered from the outside of the interface.
If you use them, please move them to a package.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;typed-generic-boundary&quot;&gt;Typed generic boundary &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1548&quot;&gt;#1548&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;const&lt;&#x2F;code&gt; as generic boundary was removed, and typed generic boundary is introduced.
This is because &lt;code&gt;const&lt;&#x2F;code&gt; can&#x27;t express a boundary for &lt;code&gt;enum&lt;&#x2F;code&gt;.
&lt;code&gt;veryl migrate&lt;&#x2F;code&gt; converts all &lt;code&gt;const&lt;&#x2F;code&gt; to &lt;code&gt;u32&lt;&#x2F;code&gt; boundary.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; Before
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;package &lt;&#x2F;span&gt;&lt;span&gt;PkgA::&amp;lt;X: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;const&lt;&#x2F;span&gt;&lt;span&gt;, Y: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;const&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt; {}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; After
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;package &lt;&#x2F;span&gt;&lt;span&gt;PkgA::&amp;lt;X: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt;, Y: EnumX&amp;gt; {}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;forbid-last-item-with-ifdef-in-comma-separated-list&quot;&gt;Forbid last item with ifdef in comma-separated list &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1572&quot;&gt;#1572&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;The last item with &lt;code&gt;ifdef&lt;&#x2F;code&gt; in comma-separated list becomes to be forbidden.
This is because adjusting last comma by complex &lt;code&gt;ifdef&lt;&#x2F;code&gt; combination is difficult.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA (
&lt;&#x2F;span&gt;&lt;span&gt;    a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input logic&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;    #[ifdef(B)] &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; this `ifdef` is forbidden
&lt;&#x2F;span&gt;&lt;span&gt;    b: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input logic&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;) {}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;forbid-project-name-starting-with&quot;&gt;Forbid project name starting with &lt;code&gt;__&lt;&#x2F;code&gt; &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1580&quot;&gt;#1580&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;A project name starting with &lt;code&gt;__&lt;&#x2F;code&gt; becomes to be forbidden, because it is used for Veryl compiler internally.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;console&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-console &quot;&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span&gt;$ veryl new __a
&lt;&#x2F;span&gt;&lt;span&gt;Error:   × project name &amp;quot;__a&amp;quot; is reserved by system
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;new-language-features&quot;&gt;New Language Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;elsif-else-attribute&quot;&gt;&lt;code&gt;elsif&lt;&#x2F;code&gt; &#x2F; &lt;code&gt;else&lt;&#x2F;code&gt; attribute &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1453&quot;&gt;#1453&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;elsif&lt;&#x2F;code&gt; and &lt;code&gt;else&lt;&#x2F;code&gt; attribute can be used with &lt;code&gt;ifdef&lt;&#x2F;code&gt; or &lt;code&gt;ifndef&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;always_comb&lt;&#x2F;span&gt;&lt;span&gt; {
&lt;&#x2F;span&gt;&lt;span&gt;    #[ifdef(DEFINE_A)]
&lt;&#x2F;span&gt;&lt;span&gt;    a = 1;
&lt;&#x2F;span&gt;&lt;span&gt;    #[elsif(DEFINE_B)]
&lt;&#x2F;span&gt;&lt;span&gt;    b = 1;
&lt;&#x2F;span&gt;&lt;span&gt;    #[&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;else&lt;&#x2F;span&gt;&lt;span&gt;]
&lt;&#x2F;span&gt;&lt;span&gt;    c = 1;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;proto-alias-declaration&quot;&gt;Proto alias declaration &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1473&quot;&gt;#1473&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;alias&lt;&#x2F;code&gt; can be used in proto declaration.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;proto package &lt;&#x2F;span&gt;&lt;span&gt;ProtoPackageA {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;alias module &lt;&#x2F;span&gt;&lt;span&gt;InstModule: ProtoModuleA;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;package &lt;&#x2F;span&gt;&lt;span&gt;PackageA::&amp;lt;M: ProtoModuleA&amp;gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;for &lt;&#x2F;span&gt;&lt;span&gt;ProtoPackageA {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;alias module &lt;&#x2F;span&gt;&lt;span&gt;InstModule = M;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;modport-expansion&quot;&gt;Modport expansion &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1512&quot;&gt;#1512&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Some synthesis tools don&#x27;t support &lt;code&gt;modport&lt;&#x2F;code&gt; as ports of the top module or boundary of hiererchical synthesis.
For such cases, if &lt;code&gt;#[expand(modport)]&lt;&#x2F;code&gt; is specified, Veryl compiler expands &lt;code&gt;modport&lt;&#x2F;code&gt; of the module.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span&gt;#[expand(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;modport&lt;&#x2F;span&gt;&lt;span&gt;)]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA (
&lt;&#x2F;span&gt;&lt;span&gt;    slv_if: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;modport &lt;&#x2F;span&gt;&lt;span&gt;InterfaceA::slave ,
&lt;&#x2F;span&gt;&lt;span&gt;    mst_if: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;modport &lt;&#x2F;span&gt;&lt;span&gt;InterfaceA::master,
&lt;&#x2F;span&gt;&lt;span&gt;) {}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;skip-to-write-files-if-no-change&quot;&gt;Skip to write files if no change &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1518&quot;&gt;#1518&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;If the existing generated files have the same contents which Veryl compiler is trying to emit, writing files is skipped.
By this change, the compatibility with timestamp based tools like GNU make is improved.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;default-project-structure&quot;&gt;Default project structure &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1531&quot;&gt;#1531&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;As the default project structure, &lt;code&gt;veryl new&lt;&#x2F;code&gt; will create the following file and directories.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;.gitignore
&lt;&#x2F;span&gt;&lt;span&gt;Veryl.toml
&lt;&#x2F;span&gt;&lt;span&gt;src&#x2F;
&lt;&#x2F;span&gt;&lt;span&gt;target&#x2F;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;interface-prototype&quot;&gt;Interface prototype &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1532&quot;&gt;#1532&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Interface prototype becomes to be supported like below:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;proto interface &lt;&#x2F;span&gt;&lt;span&gt;InterfaceA {
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;function &lt;&#x2F;span&gt;&lt;span&gt;FuncA(a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input logic&lt;&#x2F;span&gt;&lt;span&gt;, b: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input logic&lt;&#x2F;span&gt;&lt;span&gt;) -&amp;gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;modport &lt;&#x2F;span&gt;&lt;span&gt;mp {
&lt;&#x2F;span&gt;&lt;span&gt;    FuncA: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;  }
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;u8-u16-i8-and-i16-fixed-types&quot;&gt;&lt;code&gt;u8&lt;&#x2F;code&gt;, &lt;code&gt;u16&lt;&#x2F;code&gt;, &lt;code&gt;i8&lt;&#x2F;code&gt; and &lt;code&gt;i16&lt;&#x2F;code&gt; fixed types &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1537&quot;&gt;#1537&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;u8&lt;&#x2F;code&gt;, &lt;code&gt;u16&lt;&#x2F;code&gt;, &lt;code&gt;i8&lt;&#x2F;code&gt; and &lt;code&gt;i16&lt;&#x2F;code&gt; become to be supported as primitive types.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;let &lt;&#x2F;span&gt;&lt;span&gt;a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u8&lt;&#x2F;span&gt;&lt;span&gt;  = 0;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;let &lt;&#x2F;span&gt;&lt;span&gt;a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u16&lt;&#x2F;span&gt;&lt;span&gt; = 0;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;let &lt;&#x2F;span&gt;&lt;span&gt;a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;i8&lt;&#x2F;span&gt;&lt;span&gt;  = 0;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;let &lt;&#x2F;span&gt;&lt;span&gt;a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;i16&lt;&#x2F;span&gt;&lt;span&gt; = 0;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;use-modport-as-function-argument&quot;&gt;Use modport as function argument &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1554&quot;&gt;#1554&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Now &lt;code&gt;modport&lt;&#x2F;code&gt; can be used as function argument.
Veryl compiler expands these modport to separated variables.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;function &lt;&#x2F;span&gt;&lt;span&gt;FunctionA (
&lt;&#x2F;span&gt;&lt;span&gt;    slv_if: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;modport &lt;&#x2F;span&gt;&lt;span&gt;InterfaceA::slave ,
&lt;&#x2F;span&gt;&lt;span&gt;    mst_if: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;modport &lt;&#x2F;span&gt;&lt;span&gt;InterfaceA::master,
&lt;&#x2F;span&gt;&lt;span&gt;) {}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;axi3-axi4-axi4-lite-interfaces-and-prototypes-in-veryl-standard-library&quot;&gt;AXI3, AXI4, AXI4-Lite interfaces and prototypes in Veryl standard library &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1577&quot;&gt;#1577&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Generic AXI3, AXI4, AXI4-Lite interfaces are added in Veryl standard library.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;alias package &lt;&#x2F;span&gt;&lt;span&gt;axi3_pkg = $std::axi3_pkg::&amp;lt;32, 4, 8&amp;gt;;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA (
&lt;&#x2F;span&gt;&lt;span&gt;    slv_if: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;modport&lt;&#x2F;span&gt;&lt;span&gt; $std::axi3_if::&amp;lt;axi3_pkg&amp;gt;::slave,
&lt;&#x2F;span&gt;&lt;span&gt;) {}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;tag&#x2F;v0.16.0&quot;&gt;Release v0.16.0&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Call for publishing Veryl source code on GitHub</title>
        <published>2025-04-16T00:00:00+00:00</published>
        <updated>2025-04-16T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/call-for-publishing-on-github/"/>
        <id>https://veryl-lang.org/blog/call-for-publishing-on-github/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/call-for-publishing-on-github/">&lt;p&gt;Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;This article is written to call you for publishing Veryl source code on GitHub.
By publishing your source code, even if it is very simple like just &quot;Hello World&quot;, the followings become possible.
Please cooperate with us!&lt;&#x2F;p&gt;
&lt;h2 id=&quot;syntax-highlighting-support-on-github&quot;&gt;Syntax highlighting support on GitHub&lt;&#x2F;h2&gt;
&lt;p&gt;The criteria of adding a language to the syntax highlighting library of GitHub is defined like below:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;at least 2000 files per extension indexed in the last year (the number you see at the top of the search results), unless the extension is expected to only occur once per repo, then 200 files.&lt;&#x2F;li&gt;
&lt;li&gt;with a reasonable distribution across unique &lt;code&gt;:user&#x2F;:repo&lt;&#x2F;code&gt; combinations assessed by manually and randomly clicking through the results.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;The first means that at least 2000 &lt;code&gt;*.veryl&lt;&#x2F;code&gt; files are necessary, and the second means that the bias to the specific repositories like &lt;code&gt;veryl-lang&#x2F;veryl&lt;&#x2F;code&gt; is excluded.
The current status is gathered periodically, and published at the following site.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;veryl-lang.org&#x2F;statistics&#x2F;&quot;&gt;https:&#x2F;&#x2F;veryl-lang.org&#x2F;statistics&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;unexpected-breaking-change-detection&quot;&gt;Unexpected breaking change detection&lt;&#x2F;h2&gt;
&lt;p&gt;The repository of Veryl compiler has some testcases to detect unexpected breaking changes, but they are insufficient to cover all cases.
So we are periodically gathering Veryl projects published on GitHub, and checking whether they are compiled successfully.
Along with increasing actual Veryl projects, various use cases become to be covered.&lt;&#x2F;p&gt;
&lt;p&gt;The gathering tool and gathered DB is in the following repository.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;discovery&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;discovery&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Veryl 0.15.0</title>
        <published>2025-04-01T00:00:00+00:00</published>
        <updated>2025-04-01T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-veryl-0-15-0/"/>
        <id>https://veryl-lang.org/blog/announcing-veryl-0-15-0/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-veryl-0-15-0/">&lt;p&gt;The Veryl team has published a new release of Veryl, 0.15.0.
Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Veryl installed via &lt;code&gt;verylup&lt;&#x2F;code&gt;, you can get the latest version with:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can get &lt;code&gt;verylup&lt;&#x2F;code&gt; from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;breaking-changes&quot;&gt;Breaking Changes&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;simplify-if-expression-notation&quot;&gt;Simplify if expression notation &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1457&quot;&gt;#1457&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;If expression is a relpacement of conditional operator in SystemVerilog, but it is pretty long than conditional operator.
And the &lt;code&gt;{}&lt;&#x2F;code&gt; is redundant because only single expression can be placed in &lt;code&gt;{}&lt;&#x2F;code&gt;.
Therefore, the notation is changed to more simplified style like conditional operator.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; Before
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;assign &lt;&#x2F;span&gt;&lt;span&gt;a = &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;if &lt;&#x2F;span&gt;&lt;span&gt;b { c } &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;else&lt;&#x2F;span&gt;&lt;span&gt; { d };
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; After
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;assign &lt;&#x2F;span&gt;&lt;span&gt;a = &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;if &lt;&#x2F;span&gt;&lt;span&gt;b ? c : d;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;We added &lt;code&gt;veryl migrate&lt;&#x2F;code&gt; to migrate this change automatically, because it will affect many existing codebase.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;console&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-console &quot;&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span&gt;&#x2F;&#x2F; Check how changes will be applied
&lt;&#x2F;span&gt;&lt;span&gt;$ veryl migrate --check
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&#x2F; Migrate
&lt;&#x2F;span&gt;&lt;span&gt;$ veryl migrate
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;change-dependency-syntax&quot;&gt;Change dependency syntax &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1373&quot;&gt;#1373&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;The notation of &lt;code&gt;[dependencies]&lt;&#x2F;code&gt; section in &lt;code&gt;Veryl.toml&lt;&#x2F;code&gt; is changed.
This is for multiple project support in a repository.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;toml&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-toml &quot;&gt;&lt;code class=&quot;language-toml&quot; data-lang=&quot;toml&quot;&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; Before
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d68686;&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;sample&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot; &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d68686;&quot;&gt;0.1.0&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; After
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d7af;&quot;&gt;veryl_sample &lt;&#x2F;span&gt;&lt;span&gt;= {&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d7af;&quot;&gt;github &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d68686;&quot;&gt;veryl-lang&#x2F;veryl_sample&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d7af;&quot;&gt;version &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d68686;&quot;&gt;0.1.0&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;remove-export-declaration-ref-direction&quot;&gt;Remove &lt;code&gt;export&lt;&#x2F;code&gt; declaration &#x2F; &lt;code&gt;ref&lt;&#x2F;code&gt; direction &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1367&quot;&gt;#1367&lt;&#x2F;a&gt;
 &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1351&quot;&gt;#1351&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Veryl compiler can&#x27;t resolve symbols correctly through &lt;code&gt;export&lt;&#x2F;code&gt; declaration, so it is removed until the reasonable use case is found.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;ref&lt;&#x2F;code&gt; direction is removed because it can&#x27;t be used in synthesizable RTL.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;new-language-features&quot;&gt;New Language Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;introduce-connect-operation&quot;&gt;Introduce &lt;code&gt;connect&lt;&#x2F;code&gt; operation &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1423&quot;&gt;#1423&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;To simplify connection between interface, &lt;code&gt;connect&lt;&#x2F;code&gt; operation is introduced.
All members of the interface are connected automatically.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA (
&lt;&#x2F;span&gt;&lt;span&gt;    mst_if: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;modport &lt;&#x2F;span&gt;&lt;span&gt;InterfaceA::master,
&lt;&#x2F;span&gt;&lt;span&gt;    slv_if: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;modport &lt;&#x2F;span&gt;&lt;span&gt;InterfaceA::slave ,
&lt;&#x2F;span&gt;&lt;span&gt;) {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;bus_if: InterfaceA;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;connect &lt;&#x2F;span&gt;&lt;span&gt;mst_if &amp;lt;&amp;gt; bus_if.slave;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;connect &lt;&#x2F;span&gt;&lt;span&gt;slv_if &amp;lt;&amp;gt; bus_if.master;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;struct-constructor-support&quot;&gt;Struct constructor support &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1418&quot;&gt;#1418&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;To initialize struct, Struct constructor can be used instead of assigning each members.
This is especially useful to initialize &lt;code&gt;const&lt;&#x2F;code&gt; because it can&#x27;t be assigned by each members.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;..default&lt;&#x2F;code&gt; specifier can speficy the default value for unspecified members in the struct.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;struct &lt;&#x2F;span&gt;&lt;span&gt;Param {
&lt;&#x2F;span&gt;&lt;span&gt;        a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;bit&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;10&amp;gt;,
&lt;&#x2F;span&gt;&lt;span&gt;        b: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;bit&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;10&amp;gt;,
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;const &lt;&#x2F;span&gt;&lt;span&gt;p: Param = Param&amp;#39;{
&lt;&#x2F;span&gt;&lt;span&gt;        a: 10,
&lt;&#x2F;span&gt;&lt;span&gt;        b: 10,
&lt;&#x2F;span&gt;&lt;span&gt;    };
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;const &lt;&#x2F;span&gt;&lt;span&gt;q: Param = Param&amp;#39;{
&lt;&#x2F;span&gt;&lt;span&gt;        a: 1,
&lt;&#x2F;span&gt;&lt;span&gt;        ..&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;default&lt;&#x2F;span&gt;&lt;span&gt;(0) &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; means `b: 0`
&lt;&#x2F;span&gt;&lt;span&gt;    };
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;introduce-bool-type&quot;&gt;Introduce &lt;code&gt;bool&lt;&#x2F;code&gt; type &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1389&quot;&gt;#1389&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;bool&lt;&#x2F;code&gt; is a type alias of &lt;code&gt;logic&amp;lt;1&amp;gt;&lt;&#x2F;code&gt; to express boolean.
&lt;code&gt;true&lt;&#x2F;code&gt; and &lt;code&gt;false&lt;&#x2F;code&gt; literal which express &lt;code&gt;1&#x27;b1&lt;&#x2F;code&gt; and &lt;code&gt;1&#x27;b0&lt;&#x2F;code&gt; can be used.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;const &lt;&#x2F;span&gt;&lt;span&gt;a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;bool&lt;&#x2F;span&gt;&lt;span&gt; = &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;true&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;const &lt;&#x2F;span&gt;&lt;span&gt;b: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;bool&lt;&#x2F;span&gt;&lt;span&gt; = &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;false&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;support-default-clock-and-reset&quot;&gt;Support default clock and reset &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1386&quot;&gt;#1386&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;In some cases, there are some clocks, but only single clock is used in all &lt;code&gt;always_ff&lt;&#x2F;code&gt;.
For such case, &lt;code&gt;default&lt;&#x2F;code&gt; type modifier can be used to specify the default clock and reset explicitly.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA (
&lt;&#x2F;span&gt;&lt;span&gt;    i_clk   : &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input clock&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;    i_clk_en: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input logic&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;) {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;let &lt;&#x2F;span&gt;&lt;span&gt;clk: &lt;&#x2F;span&gt;&lt;span style=&quot;font-weight:bold;color:#d6d6ae;&quot;&gt;`_ &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;default &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;clock&lt;&#x2F;span&gt;&lt;span&gt; = i_clk &amp;amp; i_clk_en;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;always_ff&lt;&#x2F;span&gt;&lt;span&gt; {
&lt;&#x2F;span&gt;&lt;span&gt;        a = 0;
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;add-same-direction-to-modport-default-member&quot;&gt;Add &lt;code&gt;same&lt;&#x2F;code&gt; direction to modport default member &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1381&quot;&gt;#1381&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;same&lt;&#x2F;code&gt; direction which copies all members of the existing modport can be used.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;interface &lt;&#x2F;span&gt;&lt;span&gt;InterfaceA {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;b: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;c: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;modport &lt;&#x2F;span&gt;&lt;span&gt;master {
&lt;&#x2F;span&gt;&lt;span&gt;        a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;output&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;        b: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input&lt;&#x2F;span&gt;&lt;span&gt; ,
&lt;&#x2F;span&gt;&lt;span&gt;        c: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input&lt;&#x2F;span&gt;&lt;span&gt; ,
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;modport &lt;&#x2F;span&gt;&lt;span&gt;driver {
&lt;&#x2F;span&gt;&lt;span&gt;        b: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;output&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;        ..&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;same&lt;&#x2F;span&gt;&lt;span&gt;(master)
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;support-module-interface-package-alias&quot;&gt;Support module &#x2F; interface &#x2F; package alias &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1342&quot;&gt;#1342&lt;&#x2F;a&gt;
 &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1374&quot;&gt;#1374&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;To shorten long item with many generic parameters, &lt;code&gt;alias&lt;&#x2F;code&gt; can be used.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;package &lt;&#x2F;span&gt;&lt;span&gt;PkgA::&amp;lt;X: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;const&lt;&#x2F;span&gt;&lt;span&gt;, Y: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;const&lt;&#x2F;span&gt;&lt;span&gt;, Z: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;const&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt; {}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;alias package &lt;&#x2F;span&gt;&lt;span&gt;PkgA123 = PkgA::&amp;lt;1, 2, 3&amp;gt;;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;introduce-proto-package&quot;&gt;Introduce proto package &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1336&quot;&gt;#1336&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;As generic bound, proto package can be used.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;proto package &lt;&#x2F;span&gt;&lt;span&gt;ProtoA {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;type &lt;&#x2F;span&gt;&lt;span&gt;data_a;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;type &lt;&#x2F;span&gt;&lt;span&gt;data_b;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;package &lt;&#x2F;span&gt;&lt;span&gt;PackageA::&amp;lt;A: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;const&lt;&#x2F;span&gt;&lt;span&gt;, B: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;const&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;for &lt;&#x2F;span&gt;&lt;span&gt;ProtoA {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;type &lt;&#x2F;span&gt;&lt;span&gt;data_a = &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;A&amp;gt;;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;type &lt;&#x2F;span&gt;&lt;span&gt;data_b = &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;B&amp;gt;;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA::&amp;lt;PKG: ProtoA&amp;gt; {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;let &lt;&#x2F;span&gt;&lt;span&gt;_a: PKG::data_a = 0;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;function-call-with-named-argument&quot;&gt;Function call with named argument &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1452&quot;&gt;#1452&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Function call with named arguments can be used to make easy to see function with many arguments.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;function &lt;&#x2F;span&gt;&lt;span&gt;FunctionA (
&lt;&#x2F;span&gt;&lt;span&gt;        a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input logic&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;        b: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input logic&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;        c: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input logic&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;        d: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input logic&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;    ) {}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;let &lt;&#x2F;span&gt;&lt;span&gt;_a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt; = FunctionA(
&lt;&#x2F;span&gt;&lt;span&gt;        a: 1,
&lt;&#x2F;span&gt;&lt;span&gt;        b: 1,
&lt;&#x2F;span&gt;&lt;span&gt;        c: 1,
&lt;&#x2F;span&gt;&lt;span&gt;        d: 1,
&lt;&#x2F;span&gt;&lt;span&gt;    );
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;new-tool-features&quot;&gt;New Tool Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;build-directory&quot;&gt;&lt;code&gt;.build&lt;&#x2F;code&gt; directory&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;.build&lt;&#x2F;code&gt; directory to store build related information is created after &lt;code&gt;veryl build&lt;&#x2F;code&gt;.
We recommend to add the following entry to your &lt;code&gt;.gitignore&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;.build&#x2F;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;add-waveform-format-option-implement-waveform-for-cocotb&quot;&gt;Add waveform format option &#x2F; Implement waveform for cocotb &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1388&quot;&gt;#1388&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;To specify waveform format, &lt;code&gt;waveform_format&lt;&#x2F;code&gt; field in &lt;code&gt;Veryl.toml&lt;&#x2F;code&gt; is added.
Waveform dump support for cocotb is added too.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;toml&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-toml &quot;&gt;&lt;code class=&quot;language-toml&quot; data-lang=&quot;toml&quot;&gt;&lt;span&gt;[test]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d7af;&quot;&gt;waveform_format &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d68686;&quot;&gt;vcd&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;#&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; or &amp;quot;fst&amp;quot;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;add-check-option-for-veryl-build&quot;&gt;Add &lt;code&gt;--check&lt;&#x2F;code&gt; option for &lt;code&gt;veryl build&lt;&#x2F;code&gt; &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1348&quot;&gt;#1348&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;veryl build --check&lt;&#x2F;code&gt; can be used to check whether the generated files will be changed.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;create-git-repo-and-default-gitignore-at-veryl-new-init&quot;&gt;Create git repo and default &lt;code&gt;.gitignore&lt;&#x2F;code&gt; at &lt;code&gt;veryl new&#x2F;init&lt;&#x2F;code&gt; &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1437&quot;&gt;#1437&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;If &lt;code&gt;git&lt;&#x2F;code&gt; command is available, &lt;code&gt;veryl new&lt;&#x2F;code&gt; and &lt;code&gt;veryl init&lt;&#x2F;code&gt; initialize the project directory as git repository, and put the default &lt;code&gt;.gitignore&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;add-fmt-compact-attribute&quot;&gt;Add &lt;code&gt;fmt(compact)&lt;&#x2F;code&gt; attribute &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1335&quot;&gt;#1335&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;fmt(compact)&lt;&#x2F;code&gt; attribute enables compact formatting without newlines.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA {
&lt;&#x2F;span&gt;&lt;span&gt;    #[fmt(compact)]
&lt;&#x2F;span&gt;&lt;span&gt;    {
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;u1: $sv::Module #( A: 1, B: 2 ) ( x: 1, y: _ );
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;u2: $sv::Module #( A: 1, B: 2 ) ( x: 1, y: _ );
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;u3: $sv::Module #( A: 1, B: 2 ) ( x: 1, y: _ );
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;u4: $sv::Module #( A: 1, B: 2 ) ( x: 1, y: _ );
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;tag&#x2F;v0.15.0&quot;&gt;Release v0.15.0&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Verylup 0.1.5</title>
        <published>2025-03-24T00:00:00+00:00</published>
        <updated>2025-03-24T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-verylup-0-1-5/"/>
        <id>https://veryl-lang.org/blog/announcing-verylup-0-1-5/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-verylup-0-1-5/">&lt;p&gt;The Veryl team has published a new release of Verylup, 0.1.5.
Verylup is the official toolchain installer of Veryl.
It installs the latest Veryl toolchain and eases to update and switch the toolchains.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Verylup installed, getting Verylup 0.1.5 is as easy as stopping any programs which may be using Verylup (e.g. closing your IDE) and running:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, please refer &lt;a href=&quot;https:&#x2F;&#x2F;doc.veryl-lang.org&#x2F;book&#x2F;03_getting_started&#x2F;01_installation.html&quot;&gt;Getting Started&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;new-features&quot;&gt;New Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;nightly-channel&quot;&gt;Nightly channel&lt;&#x2F;h2&gt;
&lt;p&gt;To use the latest features easily, nightly channel is added.
Nightly channel is built daily from the master branch.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;verylup install nightly
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;By default, nightly channel is not enabled after installation.
So the following ways can be used to enable it.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;# Use +nightly
&lt;&#x2F;span&gt;&lt;span&gt;veryl +nightly build
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;# Set default to nightly
&lt;&#x2F;span&gt;&lt;span&gt;verylup default nightly
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;# Override by nightly for a specific project
&lt;&#x2F;span&gt;&lt;span&gt;verylup override set nightly
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;tag&#x2F;v0.1.5&quot;&gt;Release v0.1.5&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Veryl 0.14.1</title>
        <published>2025-03-05T00:00:00+00:00</published>
        <updated>2025-03-05T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-veryl-0-14-1/"/>
        <id>https://veryl-lang.org/blog/announcing-veryl-0-14-1/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-veryl-0-14-1/">&lt;p&gt;The Veryl team has published a new release of Veryl, 0.14.1.
Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Veryl installed via &lt;code&gt;verylup&lt;&#x2F;code&gt;, you can get the latest version with:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can get &lt;code&gt;verylup&lt;&#x2F;code&gt; from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;resolving-regressions&quot;&gt;Resolving Regressions&lt;&#x2F;h1&gt;
&lt;p&gt;This version aims to resolve regressions introduced in the previous version.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Fix broken msb  &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1329&quot;&gt;#1329&lt;&#x2F;a&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h1 id=&quot;new-features&quot;&gt;New Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;improve-port-connection-check&quot;&gt;Improve port connection check &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1327&quot;&gt;#1327&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Type cast at port connection caused reset type error, it is fixed correctly.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;u: $sv::SvModule (
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; v0.14.0: `sv_with_implicit_reset` error
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; v0.14.1: no error
&lt;&#x2F;span&gt;&lt;span&gt;    i_rst_n: i_rst &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;as &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;reset_async_low&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;);
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Connecting unassignable type to output port becomes to be detected.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;u: Module (
&lt;&#x2F;span&gt;&lt;span&gt;    out0: 1    , &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; error
&lt;&#x2F;span&gt;&lt;span&gt;    out1: x + 1, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; error
&lt;&#x2F;span&gt;&lt;span&gt;);
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;tag&#x2F;v0.14.1&quot;&gt;Release v0.14.1&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Veryl 0.14.0</title>
        <published>2025-03-03T00:00:00+00:00</published>
        <updated>2025-03-03T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-veryl-0-14-0/"/>
        <id>https://veryl-lang.org/blog/announcing-veryl-0-14-0/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-veryl-0-14-0/">&lt;p&gt;The Veryl team has published a new release of Veryl, 0.14.0.
Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Veryl installed via &lt;code&gt;verylup&lt;&#x2F;code&gt;, you can get the latest version with:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can get &lt;code&gt;verylup&lt;&#x2F;code&gt; from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;breaking-changes&quot;&gt;Breaking Changes&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;new-type-checker&quot;&gt;New type checker &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1216&quot;&gt;#1216&lt;&#x2F;a&gt;
 &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1239&quot;&gt;#1239&lt;&#x2F;a&gt;
 &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1240&quot;&gt;#1240&lt;&#x2F;a&gt;
 &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1264&quot;&gt;#1264&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;New type checker is introduced to enable the following checks.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Mismatch in array dimensions during assignment&lt;&#x2F;li&gt;
&lt;li&gt;Assigning a 4-state value to a 2-state type&lt;&#x2F;li&gt;
&lt;li&gt;Out-of-range selection for arrays or bits&lt;&#x2F;li&gt;
&lt;li&gt;Interface mismatch during port connection&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Please see the following blog for the detailed information.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;veryl-lang.org&#x2F;blog&#x2F;new-type-checker&#x2F;&quot;&gt;https:&#x2F;&#x2F;veryl-lang.org&#x2F;blog&#x2F;new-type-checker&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;This is not a breaking chage ideally, but the existing code may be broken by mistakes of new checker.
If there is any mistake, please open an &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;issues&quot;&gt;issue&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;remove-variable-declaration-from-package&quot;&gt;Remove variable declaration from package &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1305&quot;&gt;#1305&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Variable declaration in package is removed because it is not synthesizable.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;package &lt;&#x2F;span&gt;&lt;span&gt;PackageA {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;X: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; Error
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;new-features&quot;&gt;New Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;lsp-support-for-file-renaming-and-deleting&quot;&gt;LSP support for file renaming and deleting &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1226&quot;&gt;#1226&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;veryl-ls becomes to support file renaming and deleting to avoid unexpected errors caused by these file operation.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;support-clock-domain-annotation-for-interface-instance&quot;&gt;Support clock domain annotation for interface instance &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1279&quot;&gt;#1279&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Interface instances can have clock domain annotation as the same as normal variables.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;x: &lt;&#x2F;span&gt;&lt;span style=&quot;font-weight:bold;color:#d6d6ae;&quot;&gt;`a &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;intf: &lt;&#x2F;span&gt;&lt;span style=&quot;font-weight:bold;color:#d6d6ae;&quot;&gt;`a &lt;&#x2F;span&gt;&lt;span&gt;InterfaceA;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;add-align-attribute&quot;&gt;Add &lt;code&gt;align&lt;&#x2F;code&gt; attribute &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1283&quot;&gt;#1283&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;To improve readability of complex expression, &lt;code&gt;align&lt;&#x2F;code&gt; attribute was added.
For example, by adding &lt;code&gt;#[align(number)]&lt;&#x2F;code&gt;, all numbers in expression is aligned.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA {
&lt;&#x2F;span&gt;&lt;span&gt;    #[align(number, identifier)]
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;let &lt;&#x2F;span&gt;&lt;span&gt;_c : &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt; = {
&lt;&#x2F;span&gt;&lt;span&gt;        a  [0 ] &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;repeat &lt;&#x2F;span&gt;&lt;span&gt;1 , a  [0 ] &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;repeat &lt;&#x2F;span&gt;&lt;span&gt;1 ,
&lt;&#x2F;span&gt;&lt;span&gt;        aa [1 ] &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;repeat &lt;&#x2F;span&gt;&lt;span&gt;8 , aa [1 ] &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;repeat &lt;&#x2F;span&gt;&lt;span&gt;8 ,
&lt;&#x2F;span&gt;&lt;span&gt;        aaa[2 ] &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;repeat &lt;&#x2F;span&gt;&lt;span&gt;16, aaa[2 ] &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;repeat &lt;&#x2F;span&gt;&lt;span&gt;16,
&lt;&#x2F;span&gt;&lt;span&gt;    };
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;support-default-member-of-modport&quot;&gt;Support default member of modport &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1288&quot;&gt;#1288&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Default member syntax &lt;code&gt;..[direction]&lt;&#x2F;code&gt; is introduced to make modport definition concise.
In most cases, the direction of slave-like modport is converse of master-like modport.
So the special direction &lt;code&gt;converse([modport_name])&lt;&#x2F;code&gt; is useful to make clear the definition of master&#x2F;slave pair.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;interface &lt;&#x2F;span&gt;&lt;span&gt;InterfaceA {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;b: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;modport &lt;&#x2F;span&gt;&lt;span&gt;master {
&lt;&#x2F;span&gt;&lt;span&gt;        a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;output&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;        b: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input&lt;&#x2F;span&gt;&lt;span&gt; ,
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;modport &lt;&#x2F;span&gt;&lt;span&gt;slave {
&lt;&#x2F;span&gt;&lt;span&gt;        ..&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;converse&lt;&#x2F;span&gt;&lt;span&gt;(master)
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;modport &lt;&#x2F;span&gt;&lt;span&gt;monitor {
&lt;&#x2F;span&gt;&lt;span&gt;        ..&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;enable-assign-to-concatenation&quot;&gt;Enable &lt;code&gt;assign&lt;&#x2F;code&gt; to concatenation &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1298&quot;&gt;#1298&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Concatenation can be used as the left hand side of &lt;code&gt;assign&lt;&#x2F;code&gt; declaration.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;assign&lt;&#x2F;span&gt;&lt;span&gt; {a, b} = 1;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;tag&#x2F;v0.14.0&quot;&gt;Release v0.14.0&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>New Type Checker</title>
        <published>2025-02-24T00:00:00+00:00</published>
        <updated>2025-02-24T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/new-type-checker/"/>
        <id>https://veryl-lang.org/blog/new-type-checker/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/new-type-checker/">&lt;p&gt;With the new type checker currently under development, it will become possible to perform various type checks that were previously impossible.
As an initial implementation, the following checks are scheduled to be introduced in the next version:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Mismatch in array dimensions during assignment&lt;&#x2F;li&gt;
&lt;li&gt;Assigning a 4-state value to a 2-state type&lt;&#x2F;li&gt;
&lt;li&gt;Out-of-range selection for arrays or bits&lt;&#x2F;li&gt;
&lt;li&gt;Interface mismatch during port connection&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Furthermore, the Veryl compiler will track parameter overrides across all instances,
including those with recursion, ensuring that it can reliably catch issues that only occur with specific overrides.&lt;&#x2F;p&gt;
&lt;p&gt;For example,&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleX #(
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;param &lt;&#x2F;span&gt;&lt;span&gt;A: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt; = 1,
&lt;&#x2F;span&gt;&lt;span&gt;) {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;let &lt;&#x2F;span&gt;&lt;span&gt;a : &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;2&amp;gt; = 1;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;let &lt;&#x2F;span&gt;&lt;span&gt;_b: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;2&amp;gt; = a[A]; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; This bit select causes out-of-range error when A &amp;gt; 2
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleY #(
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;param &lt;&#x2F;span&gt;&lt;span&gt;A: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt; = 1,
&lt;&#x2F;span&gt;&lt;span&gt;) {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;u: ModuleX #(A,);
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleZ {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;u: ModuleY #(A: 3,);
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;it will display a warning as follows:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;Warning: invalid_select (https:&#x2F;&#x2F;doc.veryl-lang.org&#x2F;book&#x2F;07_appendix&#x2F;02_semantic_error.html#invalid_select)
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;  ⚠ invalid select caused by out of range [3:3] &amp;gt; 2
&lt;&#x2F;span&gt;&lt;span&gt;   ╭─[...&#x2F;test.veryl:5:24]
&lt;&#x2F;span&gt;&lt;span&gt; 4 │     let a : logic&amp;lt;2&amp;gt; = 1;
&lt;&#x2F;span&gt;&lt;span&gt; 5 │     let _b: logic&amp;lt;2&amp;gt; = a[A]; &#x2F;&#x2F; This bit select causes out-of-range error when A &amp;gt; 2
&lt;&#x2F;span&gt;&lt;span&gt;   ·                        ──┬─
&lt;&#x2F;span&gt;&lt;span&gt;   ·                          ╰── Error location
&lt;&#x2F;span&gt;&lt;span&gt; 6 │ }
&lt;&#x2F;span&gt;&lt;span&gt;   ╰────
&lt;&#x2F;span&gt;&lt;span&gt;    ╭─[...&#x2F;test.veryl:11:10]
&lt;&#x2F;span&gt;&lt;span&gt; 10 │ ) {
&lt;&#x2F;span&gt;&lt;span&gt; 11 │     inst u: ModuleX #(A,);
&lt;&#x2F;span&gt;&lt;span&gt;    ·          ┬
&lt;&#x2F;span&gt;&lt;span&gt;    ·          ╰── instantiated at
&lt;&#x2F;span&gt;&lt;span&gt; 12 │ }
&lt;&#x2F;span&gt;&lt;span&gt;    ╰────
&lt;&#x2F;span&gt;&lt;span&gt;    ╭─[...&#x2F;test.veryl:15:10]
&lt;&#x2F;span&gt;&lt;span&gt; 14 │ module ModuleZ {
&lt;&#x2F;span&gt;&lt;span&gt; 15 │     inst u: ModuleY #(A: 3,);
&lt;&#x2F;span&gt;&lt;span&gt;    ·          ┬
&lt;&#x2F;span&gt;&lt;span&gt;    ·          ╰── instantiated at
&lt;&#x2F;span&gt;&lt;span&gt; 16 │ }
&lt;&#x2F;span&gt;&lt;span&gt;    ╰────
&lt;&#x2F;span&gt;&lt;span&gt;  help:
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;We believe such warnings should ideally be treated as errors.
However, due to the potential for false positives caused by the type checker’s current imperfections,
they will remain warnings until the implementation stabilizes, with plans to upgrade them to errors in the future.&lt;&#x2F;p&gt;
&lt;p&gt;Checks related to bit-width, such as bit-width mismatches during assignment or carry overflow in operations, are ready for implementation.
However, we are still deliberating on the policy regarding which checks should be performed.
Those interested in this issue are encouraged to refer to &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;issues&#x2F;1257&quot;&gt;the Issue page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;The next version, which includes these features, may introduce breaking changes due to significant updates to the checking functionality and is planned to be v0.14.0.
It is scheduled for release within 1-2 weeks, so please look forward to it.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Veryl 0.13.5</title>
        <published>2025-01-31T00:00:00+00:00</published>
        <updated>2025-01-31T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-veryl-0-13-5/"/>
        <id>https://veryl-lang.org/blog/announcing-veryl-0-13-5/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-veryl-0-13-5/">&lt;p&gt;The Veryl team has published a new release of Veryl, 0.13.5.
Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Veryl installed via &lt;code&gt;verylup&lt;&#x2F;code&gt;, you can get the latest version with:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can get &lt;code&gt;verylup&lt;&#x2F;code&gt; from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;new-features&quot;&gt;New Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;support-to-override-dependencies-with-local-path&quot;&gt;Support to override dependencies with local path &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1206&quot;&gt;#1206&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Sometimes, using dependencies of locally modified version becomes necessary.
In the case, overriding dependencies by local path can be used like below:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;toml&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-toml &quot;&gt;&lt;code class=&quot;language-toml&quot; data-lang=&quot;toml&quot;&gt;&lt;span&gt;[dependencies]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d68686;&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;sample&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot; &lt;&#x2F;span&gt;&lt;span&gt;= {&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d7af;&quot;&gt;version &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d68686;&quot;&gt;0.1.0&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d7af;&quot;&gt;path &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d68686;&quot;&gt;..&#x2F;sample&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This means that if there is &lt;code&gt;..&#x2F;sample&lt;&#x2F;code&gt;, it is used, and if not, it is pulled from the Git repository.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;introduce-inst-generic-boundary&quot;&gt;Introduce inst generic boundary &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1192&quot;&gt;#1192&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Now instance can be spacified as generics boundary.
The boundary is written like &lt;code&gt;inst X&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;function &lt;&#x2F;span&gt;&lt;span&gt;FuncA::&amp;lt;IF: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;InterfaceA&amp;gt; () -&amp;gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt; {
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;return &lt;&#x2F;span&gt;&lt;span&gt;IF.a;
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;u: InterfaceA;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;let &lt;&#x2F;span&gt;&lt;span&gt;x: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt; = FuncA::&amp;lt;u&amp;gt;();
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;interface &lt;&#x2F;span&gt;&lt;span&gt;InterfaceA {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;tag&#x2F;v0.13.5&quot;&gt;Release v0.13.5&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Veryl 0.13.4</title>
        <published>2025-01-04T00:00:00+00:00</published>
        <updated>2025-01-04T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-veryl-0-13-4/"/>
        <id>https://veryl-lang.org/blog/announcing-veryl-0-13-4/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-veryl-0-13-4/">&lt;p&gt;The Veryl team has published a new release of Veryl, 0.13.4.
Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Veryl installed via &lt;code&gt;verylup&lt;&#x2F;code&gt;, you can get the latest version with:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can get &lt;code&gt;verylup&lt;&#x2F;code&gt; from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;new-features&quot;&gt;New Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;support-port-default-value&quot;&gt;Support port default value &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1164&quot;&gt;#1164&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Ports of module becomes to be able to have default value.
Ports which have default value can be omitted at the instantiation, and the default values are assigned to the omitted ports.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA (
&lt;&#x2F;span&gt;&lt;span&gt;    a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input  logic&lt;&#x2F;span&gt;&lt;span&gt;    ,
&lt;&#x2F;span&gt;&lt;span&gt;    b: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input  logic&lt;&#x2F;span&gt;&lt;span&gt; = 1, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; default value
&lt;&#x2F;span&gt;&lt;span&gt;    x: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;output logic&lt;&#x2F;span&gt;&lt;span&gt;    ,
&lt;&#x2F;span&gt;&lt;span&gt;    y: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;output logic&lt;&#x2F;span&gt;&lt;span&gt; = _, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; default value
&lt;&#x2F;span&gt;&lt;span&gt;) {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;assign &lt;&#x2F;span&gt;&lt;span&gt;x = a;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;assign &lt;&#x2F;span&gt;&lt;span&gt;y = b;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModubeB {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;instA: ModuleA (
&lt;&#x2F;span&gt;&lt;span&gt;        a: 1,
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; b is omitted
&lt;&#x2F;span&gt;&lt;span&gt;        x: _,
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; y is omitted
&lt;&#x2F;span&gt;&lt;span&gt;    );
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;add-mux-demux-modules-to-std-library&quot;&gt;Add mux&#x2F;demux modules to std library &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1148&quot;&gt;#1148&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Multiplexer and demultiplexer are added to the standard library.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;u_mux: $std::mux (
&lt;&#x2F;span&gt;&lt;span&gt;    i_select: _,
&lt;&#x2F;span&gt;&lt;span&gt;    i_data  : _,
&lt;&#x2F;span&gt;&lt;span&gt;    o_data  : _,
&lt;&#x2F;span&gt;&lt;span&gt;);
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;u_demux: $std::demux (
&lt;&#x2F;span&gt;&lt;span&gt;    i_select: _,
&lt;&#x2F;span&gt;&lt;span&gt;    i_data  : _,
&lt;&#x2F;span&gt;&lt;span&gt;    o_data  : _,
&lt;&#x2F;span&gt;&lt;span&gt;);
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;apply-ifdef-attributes-in-statement-block&quot;&gt;Apply ifdef attributes in statement block &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1136&quot;&gt;#1136&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;ifdef&lt;&#x2F;code&gt; attribute can be used in statement block.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;always_comb&lt;&#x2F;span&gt;&lt;span&gt; {
&lt;&#x2F;span&gt;&lt;span&gt;    #[ifdef(DEFINE_A)]
&lt;&#x2F;span&gt;&lt;span&gt;    {
&lt;&#x2F;span&gt;&lt;span&gt;        a = 1;
&lt;&#x2F;span&gt;&lt;span&gt;        b = 1;
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;    #[ifdef(DEFINE_B)]
&lt;&#x2F;span&gt;&lt;span&gt;    c = 1;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;support-relative-path-dependency&quot;&gt;Support relative path dependency &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1099&quot;&gt;#1099&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Dependencies to the project through local relative paths can be specified.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;toml&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-toml &quot;&gt;&lt;code class=&quot;language-toml&quot; data-lang=&quot;toml&quot;&gt;&lt;span&gt;[dependencies]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d68686;&quot;&gt;..&#x2F;..&#x2F;library&#x2F;path&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot; &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d68686;&quot;&gt;0.1.0&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;tag&#x2F;v0.13.4&quot;&gt;Release v0.13.4&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Verylup 0.1.4</title>
        <published>2024-12-16T00:00:00+00:00</published>
        <updated>2024-12-16T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-verylup-0-1-4/"/>
        <id>https://veryl-lang.org/blog/announcing-verylup-0-1-4/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-verylup-0-1-4/">&lt;p&gt;The Veryl team has published a new release of Verylup, 0.1.4.
Verylup is the official toolchain installer of Veryl.
It installs the latest Veryl toolchain and eases to update and switch the toolchains.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Verylup installed, getting Verylup 0.1.4 is as easy as stopping any programs which may be using Verylup (e.g. closing your IDE) and running:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, please refer &lt;a href=&quot;https:&#x2F;&#x2F;doc.veryl-lang.org&#x2F;book&#x2F;03_getting_started&#x2F;01_installation.html&quot;&gt;Getting Started&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;new-features&quot;&gt;New Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;add-config-subcommand&quot;&gt;Add config subcommand&lt;&#x2F;h2&gt;
&lt;p&gt;Now &lt;code&gt;config&lt;&#x2F;code&gt; subcommand is added.
Through the command, you can show the current configuration and change the value.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;verylup config show
&lt;&#x2F;span&gt;&lt;span&gt;verylup config set offline true
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;show-the-latest-toolchain-version&quot;&gt;Show the latest toolchain version&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;verylup show&lt;&#x2F;code&gt; shows the latest toolchain version like below:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ verylup show
&lt;&#x2F;span&gt;&lt;span&gt;installed toolchains
&lt;&#x2F;span&gt;&lt;span&gt;--------------------
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;latest: 0.13.3 (default)
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;tag&#x2F;v0.1.4&quot;&gt;Release v0.1.4&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Veryl 0.13.3</title>
        <published>2024-11-25T00:00:00+00:00</published>
        <updated>2024-11-25T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-veryl-0-13-3/"/>
        <id>https://veryl-lang.org/blog/announcing-veryl-0-13-3/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-veryl-0-13-3/">&lt;p&gt;The Veryl team has published a new release of Veryl, 0.13.3.
Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Veryl installed via &lt;code&gt;verylup&lt;&#x2F;code&gt;, you can get the latest version with:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can get &lt;code&gt;verylup&lt;&#x2F;code&gt; from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;new-features&quot;&gt;New Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;support-width-cast&quot;&gt;Support width cast &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1095&quot;&gt;#1095&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Bit width cast is added. Now arbitrary expression is not allowed yet as the width, and &lt;code&gt;based&lt;&#x2F;code&gt; and &lt;code&gt;baseless&lt;&#x2F;code&gt; number are only allowed.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;assign &lt;&#x2F;span&gt;&lt;span&gt;a = x &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;as &lt;&#x2F;span&gt;&lt;span&gt;2;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;assign &lt;&#x2F;span&gt;&lt;span&gt;b = x &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;as &lt;&#x2F;span&gt;&lt;span&gt;10&amp;#39;h2;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;support-generic-interface-with-modport&quot;&gt;Support generic interface with modport &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1089&quot;&gt;#1089&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Generic interface with modport which means arbitrary interface which has the specified modport are supported.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA (
&lt;&#x2F;span&gt;&lt;span&gt;    bus_if: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;interface&lt;&#x2F;span&gt;&lt;span&gt;::slave,
&lt;&#x2F;span&gt;&lt;span&gt;) {
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;remove-map-and-doc-files-by-clean-command&quot;&gt;Remove map and doc files by &lt;code&gt;clean&lt;&#x2F;code&gt; command &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1061&quot;&gt;#1061&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;veryl clean&lt;&#x2F;code&gt; command becomes to clean the generated map files and document files.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ veryl clean
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;add-pre-defined-vector-types&quot;&gt;Add pre-defined vector types &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1044&quot;&gt;#1044&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Some frequent vector types are added to the standard library.
They are combination of 8&#x2F;16&#x2F;32&#x2F;64bit, signed&#x2F;unsigned and bit&#x2F;logic.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;a: $std::types::ul8; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; 8bit unsigned logic 
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;b: $std::types::il8; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; 8bit signed   logic
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;c: $std::types::ub8; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; 8bit unsigned bit
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;d: $std::types::ib8; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; 8bit signed   bit
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;cond-type-attribute&quot;&gt;&lt;code&gt;cond_type&lt;&#x2F;code&gt; attribute &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1043&quot;&gt;#1043&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;To specify &lt;code&gt;unique&lt;&#x2F;code&gt;, &lt;code&gt;unique0&lt;&#x2F;code&gt; and &lt;code&gt;priority&lt;&#x2F;code&gt; in SystemVerilog, &lt;code&gt;cond_type&lt;&#x2F;code&gt; attribute is added.
The attribute can be annotated to &lt;code&gt;case&lt;&#x2F;code&gt; or &lt;code&gt;if&lt;&#x2F;code&gt; statement.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;unique&lt;&#x2F;code&gt;: There are no overlapping items. Error if no item matches.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;unique0&lt;&#x2F;code&gt;: There are no overlapping items. No error if no item matches.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;priority&lt;&#x2F;code&gt;: The first match is used only. Error if no item matches.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span&gt;#[cond_type(unique)]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;case &lt;&#x2F;span&gt;&lt;span&gt;a {
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;#[cond_type(priority)]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;case &lt;&#x2F;span&gt;&lt;span&gt;a {
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;#[cond_type(unique0)]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;if &lt;&#x2F;span&gt;&lt;span&gt;a {
&lt;&#x2F;span&gt;&lt;span&gt;} &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;else if &lt;&#x2F;span&gt;&lt;span&gt;b {
&lt;&#x2F;span&gt;&lt;span&gt;} &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;else&lt;&#x2F;span&gt;&lt;span&gt; {
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;These attributes enable more aggressive optimization in synthesis, but if the expected condition is not complied, the result of synthesis will be broken.
So these attributes are ignored by default, and if there is the following configuration, Veryl compiler emits them.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;toml&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-toml &quot;&gt;&lt;code class=&quot;language-toml&quot; data-lang=&quot;toml&quot;&gt;&lt;span&gt;[build]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d7af;&quot;&gt;emit_cond_type &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;font-weight:bold;color:#d6d6ae;&quot;&gt;true
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;tag&#x2F;v0.13.3&quot;&gt;Release v0.13.3&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Veryl 0.13.2</title>
        <published>2024-10-30T00:00:00+00:00</published>
        <updated>2024-10-30T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-veryl-0-13-2/"/>
        <id>https://veryl-lang.org/blog/announcing-veryl-0-13-2/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-veryl-0-13-2/">&lt;p&gt;The Veryl team has published a new release of Veryl, 0.13.2.
Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Veryl installed via &lt;code&gt;verylup&lt;&#x2F;code&gt;, you can get the latest version with:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can get &lt;code&gt;verylup&lt;&#x2F;code&gt; from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;new-features&quot;&gt;New Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;allow-type-as-expression&quot;&gt;Allow type as expression &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;1016&quot;&gt;#1016&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Arbitrary type including built-in types becomes to be able to be used in expression context.
For example, &lt;code&gt;logic&amp;lt;10&amp;gt;&lt;&#x2F;code&gt; type can be passed as parameter override.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;x: ModuleB #(
&lt;&#x2F;span&gt;&lt;span&gt;        X: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;10&amp;gt;
&lt;&#x2F;span&gt;&lt;span&gt;    );
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleB #(
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;param &lt;&#x2F;span&gt;&lt;span&gt;X: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;type&lt;&#x2F;span&gt;&lt;span&gt; = &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;) {}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;shell-completion&quot;&gt;Shell completion&lt;&#x2F;h2&gt;
&lt;p&gt;Now shell completion for &lt;code&gt;veryl&lt;&#x2F;code&gt; command is supported through &lt;code&gt;verylup&lt;&#x2F;code&gt; installer.
The supported shells are below:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Bash&lt;&#x2F;li&gt;
&lt;li&gt;Elvish&lt;&#x2F;li&gt;
&lt;li&gt;Fish&lt;&#x2F;li&gt;
&lt;li&gt;PowerShell&lt;&#x2F;li&gt;
&lt;li&gt;Zsh&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;If you have already installed &lt;code&gt;verylup&lt;&#x2F;code&gt;, a completion for zsh can be generated by the following command.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;verylup completion zsh veryl
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;tag&#x2F;v0.13.2&quot;&gt;Release v0.13.2&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Veryl 0.13.1</title>
        <published>2024-10-11T00:00:00+00:00</published>
        <updated>2024-10-11T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-veryl-0-13-1/"/>
        <id>https://veryl-lang.org/blog/announcing-veryl-0-13-1/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-veryl-0-13-1/">&lt;p&gt;The Veryl team has published a new release of Veryl, 0.13.1.
Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Veryl installed via &lt;code&gt;verylup&lt;&#x2F;code&gt;, you can get the latest version with:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can get &lt;code&gt;verylup&lt;&#x2F;code&gt; from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;new-features&quot;&gt;New Features&lt;&#x2F;h1&gt;
&lt;p&gt;This version doesn&#x27;t contain new features.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;tag&#x2F;v0.13.1&quot;&gt;Release v0.13.1&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Verylup 0.1.3</title>
        <published>2024-10-11T00:00:00+00:00</published>
        <updated>2024-10-11T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-verylup-0-1-3/"/>
        <id>https://veryl-lang.org/blog/announcing-verylup-0-1-3/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-verylup-0-1-3/">&lt;p&gt;The Veryl team has published a new release of Verylup, 0.1.3.
Verylup is the official toolchain installer of Veryl.
It installs the latest Veryl toolchain and eases to update and switch the toolchains.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Verylup installed, getting Verylup 0.1.3 is as easy as stopping any programs which may be using Verylup (e.g. closing your IDE) and running:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, please refer &lt;a href=&quot;https:&#x2F;&#x2F;doc.veryl-lang.org&#x2F;book&#x2F;03_getting_started&#x2F;01_installation.html&quot;&gt;Getting Started&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;new-features&quot;&gt;New Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;offline-installation-support&quot;&gt;Offline installation support&lt;&#x2F;h2&gt;
&lt;p&gt;Verylup 0.1.3 supports offline installation for environments without internet access.
The procedure of offline installation is below:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Download the latest toolchain package from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&quot;&gt;Veryl release page&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;Execute &lt;code&gt;veryl setup&lt;&#x2F;code&gt; with &lt;code&gt;--pkg&lt;&#x2F;code&gt; specification like the following command.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;verylup setup --offline --pkg veryl-x86_64-linux.zip
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you want to update&#x2F;install toolchain, &lt;code&gt;--pkg&lt;&#x2F;code&gt; specification is required as the same as setup.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;tag&#x2F;v0.1.3&quot;&gt;Release v0.1.3&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Verylup 0.1.2</title>
        <published>2024-09-18T00:00:00+00:00</published>
        <updated>2024-09-18T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-verylup-0-1-2/"/>
        <id>https://veryl-lang.org/blog/announcing-verylup-0-1-2/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-verylup-0-1-2/">&lt;p&gt;The Veryl team has published a new release of Verylup, 0.1.2.
Verylup is the official toolchain installer of Veryl.
It installs the latest Veryl toolchain and eases to update and switch the toolchains.&lt;&#x2F;p&gt;
&lt;p&gt;There are two installation ways. In either case, executing &lt;code&gt;verylup setup&lt;&#x2F;code&gt; is required after installing.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;download-binary&quot;&gt;Download binary&lt;&#x2F;h2&gt;
&lt;p&gt;Download from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;, and extract to the directory in &lt;code&gt;PATH&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;cargo&quot;&gt;Cargo&lt;&#x2F;h2&gt;
&lt;p&gt;You can install with &lt;a href=&quot;https:&#x2F;&#x2F;crates.io&#x2F;crates&#x2F;verylup&quot;&gt;cargo&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;cargo install verylup
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;new-features&quot;&gt;New Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;self-update-support&quot;&gt;Self update support&lt;&#x2F;h2&gt;
&lt;p&gt;Verylup 0.1.2 supports self binary updating.
When &lt;code&gt;verylup update&lt;&#x2F;code&gt; is executed, both toolchain update and self update is done.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;console&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-console &quot;&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span&gt;verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;configuable-default-toolchain&quot;&gt;Configuable default toolchain&lt;&#x2F;h2&gt;
&lt;p&gt;If you want to change the default toolchain to a specific toolchain, &lt;code&gt;verylup default&lt;&#x2F;code&gt; can be used.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;console&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-console &quot;&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span&gt;# set 0.11.0 as default toolchain
&lt;&#x2F;span&gt;&lt;span&gt;verylup default 0.11.0
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Additionally, overriding default toolchain per directory is supported too.
You can do &lt;code&gt;verylup override set&lt;&#x2F;code&gt; in your Veryl project.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;console&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-console &quot;&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span&gt;# set 0.9.0 as default toolchain for the current project
&lt;&#x2F;span&gt;&lt;span&gt;verylup override set 0.9.0
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;shell-completion&quot;&gt;Shell completion&lt;&#x2F;h2&gt;
&lt;p&gt;Shell completion script can be generated by &lt;code&gt;verylup completion&lt;&#x2F;code&gt;.
The supported shells are below:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Bash&lt;&#x2F;li&gt;
&lt;li&gt;Elvish&lt;&#x2F;li&gt;
&lt;li&gt;Fish&lt;&#x2F;li&gt;
&lt;li&gt;PowerShell&lt;&#x2F;li&gt;
&lt;li&gt;Zsh&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;For example, the following command generates a completion script of Verylup for zsh.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;verylup completion zsh verylup
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;After Veryl 0.13.1 (which is not released yet), a completion script of veryl will be supported too like below:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;verylup completion zsh veryl
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;About the usage of generated scripts, please refer the documentation of each shell.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;tag&#x2F;v0.1.2&quot;&gt;Release v0.1.2&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Veryl 0.13.0</title>
        <published>2024-09-12T00:00:00+00:00</published>
        <updated>2024-09-12T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-veryl-0-13-0/"/>
        <id>https://veryl-lang.org/blog/announcing-veryl-0-13-0/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-veryl-0-13-0/">&lt;p&gt;The Veryl team has published a new release of Veryl, 0.13.0.
Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;If you have a previous version of Veryl installed via &lt;code&gt;verylup&lt;&#x2F;code&gt;, you can get the latest version with:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;$ verylup update
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If you don&#x27;t have it already, you can get &lt;code&gt;verylup&lt;&#x2F;code&gt; from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;breaking-changes&quot;&gt;Breaking Changes&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;bounded-generic-parameter&quot;&gt;Bounded generic parameter &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;917&quot;&gt;#917&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Until Veryl 0.13.0, generic parameter couldn&#x27;t have any restriction.
So Veryl compiler couldn&#x27;t judge whether the passed parameter is correct at the instantiation,
and it generated the complicated error message.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;u: GenericModule::&amp;lt;X &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;*&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; X is OK??? *&#x2F;&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt; (
&lt;&#x2F;span&gt;&lt;span&gt;    };
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Veryl 0.13.0 adds the following bounds to generic parameter.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;const&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;type&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;module prototype&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;code&gt;const&lt;&#x2F;code&gt; means a constant value, &lt;code&gt;type&lt;&#x2F;code&gt; means any type. The example &lt;code&gt;const&lt;&#x2F;code&gt; and &lt;code&gt;type&lt;&#x2F;code&gt; is below:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; Generic module with const generic parameter
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA::&amp;lt;X: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;const&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt; {
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; Generic module with type generic parameter
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleB::&amp;lt;X: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;type&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt; {
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Module prototype is more complicated, it shows what a module for the generic parameter should has as parameters and ports.
The following &lt;code&gt;ProtoA&lt;&#x2F;code&gt; shows a module should have &lt;code&gt;A&lt;&#x2F;code&gt; and &lt;code&gt;i_clk&lt;&#x2F;code&gt;, and &lt;code&gt;ModuleA&lt;&#x2F;code&gt; satisfies the restriction.
So &lt;code&gt;ModuleA&lt;&#x2F;code&gt; can be used as generic parameter of &lt;code&gt;ModuleB&lt;&#x2F;code&gt; which is bounded by &lt;code&gt;ProtoA&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; Module prorotype
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;proto &lt;&#x2F;span&gt;&lt;span&gt;ProtoA #(
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;param &lt;&#x2F;span&gt;&lt;span&gt;A: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt; = 1,
&lt;&#x2F;span&gt;&lt;span&gt;) (
&lt;&#x2F;span&gt;&lt;span&gt;    i_clk: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input clock&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;);
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; ModuleA satisfies ProtoA
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;for &lt;&#x2F;span&gt;&lt;span&gt;ProtoA #(
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;param &lt;&#x2F;span&gt;&lt;span&gt;A: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt; = 1,
&lt;&#x2F;span&gt;&lt;span&gt;) (
&lt;&#x2F;span&gt;&lt;span&gt;    i_clk: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input clock&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;) {
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; Generic module with module prototype
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleB::&amp;lt;X: ProtoA&amp;gt; {
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleC {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; ModuleA can be used as the generic parameter
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;u: ModuleB::&amp;lt;ModuleA&amp;gt;;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;change-from-std-to-std&quot;&gt;Change from &lt;code&gt;std&lt;&#x2F;code&gt; to &lt;code&gt;$std&lt;&#x2F;code&gt; &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;930&quot;&gt;#930&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Veryl 0.13.0 change the namespace of standard library from &lt;code&gt;std&lt;&#x2F;code&gt; to &lt;code&gt;$std&lt;&#x2F;code&gt;.
This is because it clears that it is built-in namespace, and reduces conflict with general identifiers.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;change-local-to-const&quot;&gt;Change &lt;code&gt;local&lt;&#x2F;code&gt; to &lt;code&gt;const&lt;&#x2F;code&gt; &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;932&quot;&gt;#932&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;local&lt;&#x2F;code&gt; keyword is derived from &lt;code&gt;localparam&lt;&#x2F;code&gt; of SystemVerilog.
The naming is confusable becasue &lt;code&gt;local&lt;&#x2F;code&gt; looks &quot;local scoped&quot; and actually &lt;code&gt;local&lt;&#x2F;code&gt; of package can be seen globally.
So Veryl 0.13.0 changes &lt;code&gt;local&lt;&#x2F;code&gt; to &lt;code&gt;const&lt;&#x2F;code&gt; because &lt;code&gt;const&lt;&#x2F;code&gt; is used for this usage in general programming languages.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module&lt;&#x2F;span&gt;&lt;span&gt; #(
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;param &lt;&#x2F;span&gt;&lt;span&gt;X: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt; = 1    ,
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;const &lt;&#x2F;span&gt;&lt;span&gt;Y: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt; = X + 1,
&lt;&#x2F;span&gt;&lt;span&gt;) {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;const &lt;&#x2F;span&gt;&lt;span&gt;Z: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt; = 1;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;new-features&quot;&gt;New Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;support-untyped-enum-declaration&quot;&gt;Support untyped enum declaration &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;902&quot;&gt;#902&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;If the type is omitted in enum declaration, Veryl compiler inserts appropriate type automatically.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;enum &lt;&#x2F;span&gt;&lt;span&gt;A {
&lt;&#x2F;span&gt;&lt;span&gt;  FOO,
&lt;&#x2F;span&gt;&lt;span&gt;  BAR,
&lt;&#x2F;span&gt;&lt;span&gt;  BAZ,
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; This is equivalence with the above code
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;enum &lt;&#x2F;span&gt;&lt;span&gt;A: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;2&amp;gt; {
&lt;&#x2F;span&gt;&lt;span&gt;  FOO,
&lt;&#x2F;span&gt;&lt;span&gt;  BAR,
&lt;&#x2F;span&gt;&lt;span&gt;  BAZ,
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;mermaid-support-for-documentation-comment&quot;&gt;Mermaid support for documentation comment &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;904&quot;&gt;#904&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;mermaid.js.org&quot;&gt;Mermaid&lt;&#x2F;a&gt; is syntax to write diagrams.
If &lt;code&gt;```mermaid&lt;&#x2F;code&gt; is used in documentation comment, the code block is interpreted as Mermaid,
and the generated diagram is shown in documentation.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt;&#x2F; ```mermaid
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt;&#x2F; graph TD;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt;&#x2F;     A--&amp;gt;B;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt;&#x2F;     A--&amp;gt;C;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt;&#x2F;     B--&amp;gt;D;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt;&#x2F;     C--&amp;gt;D;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt;&#x2F; ```
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;add-enum-encoding-attribute&quot;&gt;Add &lt;code&gt;enum_encoding&lt;&#x2F;code&gt; attribute &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;915&quot;&gt;#915&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Encoding of variant values in enum can be specified through &lt;code&gt;enum_encoding&lt;&#x2F;code&gt; attribute.
The available encodings are &lt;code&gt;sequential&lt;&#x2F;code&gt;, &lt;code&gt;onehot&lt;&#x2F;code&gt; and &lt;code&gt;gray&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span&gt;#[enum_encoding(sequential)]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;enum &lt;&#x2F;span&gt;&lt;span&gt;A {
&lt;&#x2F;span&gt;&lt;span&gt;  FOO,
&lt;&#x2F;span&gt;&lt;span&gt;  BAR,
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;#[enum_encoding(onehot)]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;enum &lt;&#x2F;span&gt;&lt;span&gt;B {
&lt;&#x2F;span&gt;&lt;span&gt;  FOO,
&lt;&#x2F;span&gt;&lt;span&gt;  BAR,
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;#[enum_encoding(gray)]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;enum &lt;&#x2F;span&gt;&lt;span&gt;C {
&lt;&#x2F;span&gt;&lt;span&gt;  FOO,
&lt;&#x2F;span&gt;&lt;span&gt;  BAR,
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;completion-of-modport-and-struct-member&quot;&gt;Completion of modport and struct member &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;934&quot;&gt;#934&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;veryl-ls&lt;&#x2F;code&gt; supports completion of modport and struct member.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;struct &lt;&#x2F;span&gt;&lt;span&gt;A {
&lt;&#x2F;span&gt;&lt;span&gt;    x: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;    y: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;a: A;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;let &lt;&#x2F;span&gt;&lt;span&gt;b: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt; = a.
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt;              | `x` and `y` will be listed as completion candidates at inputting this period
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;tag&#x2F;v0.13.0&quot;&gt;Release v0.13.0&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>verylup: Veryl toolchain installer</title>
        <published>2024-09-05T00:00:00+00:00</published>
        <updated>2024-09-05T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/verylup-veryl-toolchain-installer/"/>
        <id>https://veryl-lang.org/blog/verylup-veryl-toolchain-installer/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/verylup-veryl-toolchain-installer/">&lt;p&gt;verylup is the official toolchain installer of Veryl.
It installs the latest Veryl toolchain and eases to update and switch the toolchains.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;installation&quot;&gt;Installation&lt;&#x2F;h1&gt;
&lt;p&gt;There are two installation ways. In either case, executing &lt;code&gt;verylup setup&lt;&#x2F;code&gt; is required after installing.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;download-binary&quot;&gt;Download binary&lt;&#x2F;h2&gt;
&lt;p&gt;Download from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;verylup&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;, and extract to the directory in &lt;code&gt;PATH&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;cargo&quot;&gt;Cargo&lt;&#x2F;h2&gt;
&lt;p&gt;You can install with &lt;a href=&quot;https:&#x2F;&#x2F;crates.io&#x2F;crates&#x2F;verylup&quot;&gt;cargo&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;cargo install verylup
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;usage&quot;&gt;Usage&lt;&#x2F;h1&gt;
&lt;p&gt;&lt;code&gt;verylup&lt;&#x2F;code&gt; can be used like below:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;&#x2F;&#x2F; Setup verylup (only once at first)
&lt;&#x2F;span&gt;&lt;span&gt;verylup setup
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&#x2F; Update the latest toolchain
&lt;&#x2F;span&gt;&lt;span&gt;verylup update
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&#x2F; Install a specific toolchain
&lt;&#x2F;span&gt;&lt;span&gt;verylup install 0.12.0
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&#x2F; Show installed toolchains
&lt;&#x2F;span&gt;&lt;span&gt;verylup show
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;After installing &lt;code&gt;verylup&lt;&#x2F;code&gt;, verion specifier by &lt;code&gt;+&lt;&#x2F;code&gt; can be used in &lt;code&gt;veryl&lt;&#x2F;code&gt; command like below:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;&#x2F;&#x2F; Use the latest toolchain
&lt;&#x2F;span&gt;&lt;span&gt;veryl build
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&#x2F; Use a specific toolchain
&lt;&#x2F;span&gt;&lt;span&gt;veryl +0.12.0 build
&lt;&#x2F;span&gt;&lt;span&gt;veryl +latest build
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;for-veryl-developer&quot;&gt;For Veryl Developer&lt;&#x2F;h1&gt;
&lt;p&gt;For Veryl developer, a special toolchain target &lt;code&gt;local&lt;&#x2F;code&gt; is prepared.
If &lt;code&gt;verylup install local&lt;&#x2F;code&gt; is executed in your local Veryl repository, the built toolchain is installed as &lt;code&gt;local&lt;&#x2F;code&gt; toolchain.
&lt;code&gt;local&lt;&#x2F;code&gt; becomes the default toolchain if it exists.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;&#x2F;&#x2F; Build and install the toolchain from local Veryl repository
&lt;&#x2F;span&gt;&lt;span&gt;verylup install local
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&#x2F; Use the built toolchain
&lt;&#x2F;span&gt;&lt;span&gt;veryl build
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&#x2F; Use the latest toolchain
&lt;&#x2F;span&gt;&lt;span&gt;veryl +latest build
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Veryl 0.12.0</title>
        <published>2024-08-21T00:00:00+00:00</published>
        <updated>2024-08-21T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-veryl-0-12-0/"/>
        <id>https://veryl-lang.org/blog/announcing-veryl-0-12-0/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-veryl-0-12-0/">&lt;p&gt;The Veryl team has published a new release of Veryl, 0.12.0.
Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;The latest version of Veryl can be downloaded from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;breaking-changes&quot;&gt;Breaking Changes&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;forbid-continuous-casting&quot;&gt;Forbid continuous casting &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;887&quot;&gt;#887&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Until Veryl 0.12.0, casting by &lt;code&gt;as&lt;&#x2F;code&gt; could be continuous, but it is forbidden by Veryl 0.12.0.
If continuous casting is required, it can be achieved by inserting &lt;code&gt;()&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; Syntax error
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;assign &lt;&#x2F;span&gt;&lt;span&gt;a = x &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;as &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32 &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;as &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;i32&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; OK
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;assign &lt;&#x2F;span&gt;&lt;span&gt;a = (x &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;as &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt;) &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;as &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;i32&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;change-symbol-of-clock-domain-annotation&quot;&gt;Change symbol of clock domain annotation &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;883&quot;&gt;#883&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Until Veryl 0.12.0, clock domain annotation used single quotation mark like &lt;code&gt;&#x27;x&lt;&#x2F;code&gt;.
Veryl 0.12.0 changes it to backtick mark like &lt;code&gt;`x&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; Syntax error
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;a: &amp;#39;x &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;clock&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; OK
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;a: &lt;&#x2F;span&gt;&lt;span style=&quot;font-weight:bold;color:#d6d6ae;&quot;&gt;`x &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;clock&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;new-features&quot;&gt;New Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;expand-inside-operation&quot;&gt;Expand &lt;code&gt;inside&lt;&#x2F;code&gt; operation &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;873&quot;&gt;#873&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Some EDA tools doesn&#x27;t support &lt;code&gt;inside&lt;&#x2F;code&gt; operation.
For these tools, &lt;code&gt;expand_inside_operation&lt;&#x2F;code&gt; configuration of &lt;code&gt;Veryl.toml&lt;&#x2F;code&gt; can be used like below:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;toml&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-toml &quot;&gt;&lt;code class=&quot;language-toml&quot; data-lang=&quot;toml&quot;&gt;&lt;span&gt;[build]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d7af;&quot;&gt;expand_inside_operation &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;font-weight:bold;color:#d6d6ae;&quot;&gt;true
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If the configuration is enabled, &lt;code&gt;inside&lt;&#x2F;code&gt; operations in the generated SystemVerilog are expanded like below:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Default&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;assign &lt;&#x2F;span&gt;&lt;span&gt;a = ((1 + 2 &#x2F; 3) &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inside&lt;&#x2F;span&gt;&lt;span&gt; {0, 0..10, 1..=10});
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;Expand&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;assign &lt;&#x2F;span&gt;&lt;span&gt;a = ((1 + 2 &#x2F; 3) ==? 0) ||
&lt;&#x2F;span&gt;&lt;span&gt;           ((1 + 2 &#x2F; 3) &amp;gt;= 0 &amp;amp;&amp;amp; (1 + 2 &#x2F; 3) &amp;lt; 10) ||
&lt;&#x2F;span&gt;&lt;span&gt;           ((1 + 2 &#x2F; 3) &amp;gt;= 0 &amp;amp;&amp;amp; (1 + 2 &#x2F; 3) &amp;lt;= 10);
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;waveform-dump-support-through-veryl-test-wave&quot;&gt;Waveform dump support through &lt;code&gt;veryl test --wave&lt;&#x2F;code&gt; &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;898&quot;&gt;#898&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Waveform dump in integrated test is supported.
If &lt;code&gt;--wave&lt;&#x2F;code&gt; option is specified at &lt;code&gt;veryl test&lt;&#x2F;code&gt;, &lt;code&gt;[test name].vcd&lt;&#x2F;code&gt; files are generated.
The generation place is the same as generated SystemVerilog code by default.
It can be configured through &lt;code&gt;waveform_target&lt;&#x2F;code&gt; in &lt;code&gt;Veryl.toml&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;toml&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-toml &quot;&gt;&lt;code class=&quot;language-toml&quot; data-lang=&quot;toml&quot;&gt;&lt;span&gt;[test]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d7af;&quot;&gt;waveform_target &lt;&#x2F;span&gt;&lt;span&gt;= {&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d7af;&quot;&gt;type &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d68686;&quot;&gt;directory&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d7af;&quot;&gt;path &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d68686;&quot;&gt;[dst dir]&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;cocotb-support-for-integrated-test&quot;&gt;Cocotb support for integrated test &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;899&quot;&gt;#899&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;As the way of &lt;code&gt;embed&lt;&#x2F;code&gt; and language specifier, &lt;code&gt;cocotb&lt;&#x2F;code&gt; and &lt;code&gt;py&lt;&#x2F;code&gt; are supported now.
If &lt;code&gt;cocotb&lt;&#x2F;code&gt; is specified, the embeded code are interpreted as cocotb code and executed through external Python3 environment.
cocotb requires to specify the name of top module, so it should be specified through the second argument of &lt;code&gt;#[test]&lt;&#x2F;code&gt; attribute.&lt;&#x2F;p&gt;
&lt;p&gt;To use this feature, &lt;code&gt;python3&lt;&#x2F;code&gt; environment in which &lt;code&gt;cocotb&lt;&#x2F;code&gt; 1.9.0 is installed is required.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span&gt;#[test(test1, ModuleA)]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;embed&lt;&#x2F;span&gt;&lt;span&gt; (cocotb) py{{{
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;import &lt;&#x2F;span&gt;&lt;span&gt;cocotb
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;@cocotb.test()
&lt;&#x2F;span&gt;&lt;span&gt;async def test(dut):
&lt;&#x2F;span&gt;&lt;span&gt;    dut.i_d.value = 0
&lt;&#x2F;span&gt;&lt;span&gt;}}}
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;embed-standard-library-into-compiler&quot;&gt;Embed standard library into compiler &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;878&quot;&gt;#878&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Standard library is embeded into Veryl compiler, and it can be used through &lt;code&gt;std&lt;&#x2F;code&gt; namespace.
For example, &lt;code&gt;std::fifo&lt;&#x2F;code&gt; is FIFO module in standard library, and can be used without adding dependency like below.
All list and documentation is &lt;a href=&quot;https:&#x2F;&#x2F;std.veryl-lang.org&quot;&gt;https:&#x2F;&#x2F;std.veryl-lang.org&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;u: std::fifo (
&lt;&#x2F;span&gt;&lt;span&gt;        i_clk        : _,
&lt;&#x2F;span&gt;&lt;span&gt;        i_rst        : _,
&lt;&#x2F;span&gt;&lt;span&gt;        i_clear      : _,
&lt;&#x2F;span&gt;&lt;span&gt;        o_empty      : _,
&lt;&#x2F;span&gt;&lt;span&gt;        o_almost_full: _,
&lt;&#x2F;span&gt;&lt;span&gt;        o_full       : _,
&lt;&#x2F;span&gt;&lt;span&gt;        o_word_count : _,
&lt;&#x2F;span&gt;&lt;span&gt;        i_push       : _,
&lt;&#x2F;span&gt;&lt;span&gt;        i_data       : _,
&lt;&#x2F;span&gt;&lt;span&gt;        i_pop        : _,
&lt;&#x2F;span&gt;&lt;span&gt;        o_data       : _,
&lt;&#x2F;span&gt;&lt;span&gt;    );
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The public API of standard library is not stable until Veryl 1.0.
If there is any idea or suggestion, please open issue or pull request at &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;std&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;std&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;tag&#x2F;v0.12.0&quot;&gt;Release v0.12.0&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Veryl 0.11.3</title>
        <published>2024-08-09T00:00:00+00:00</published>
        <updated>2024-08-09T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-veryl-0-11-3/"/>
        <id>https://veryl-lang.org/blog/announcing-veryl-0-11-3/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-veryl-0-11-3/">&lt;p&gt;The Veryl team has published a new release of Veryl, 0.11.3.
Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;The latest version of Veryl can be downloaded from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;new-features&quot;&gt;New Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;improve-naming-lint&quot;&gt;Improve naming lint &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;858&quot;&gt;#858&lt;&#x2F;a&gt;
 &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;870&quot;&gt;#870&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Some missing rules of naming lint was added.
They are suffix rules and rules for function argument.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;toml&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-toml &quot;&gt;&lt;code class=&quot;language-toml&quot; data-lang=&quot;toml&quot;&gt;&lt;span&gt;[lint.naming]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d7af;&quot;&gt;suffix_enum &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d68686;&quot;&gt;_enum&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d6d6d680;&quot;&gt;&amp;quot;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;check-missing-clock-domain&quot;&gt;Check missing clock domain &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;864&quot;&gt;#864&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;If there are some clocks in a module, clock domain annotation became mandatory.
The following code causes &lt;code&gt;missing_clock_domain&lt;&#x2F;code&gt; error.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA (
&lt;&#x2F;span&gt;&lt;span&gt;    clk0: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input clock&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; should be `clk0: input &amp;#39;a clock`
&lt;&#x2F;span&gt;&lt;span&gt;    clk1: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input clock&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; should be `clk1: input &amp;#39;b clock`
&lt;&#x2F;span&gt;&lt;span&gt;) {
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If the two clocks belong the same clock domain, implicit clock domain can be specified like below:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA (
&lt;&#x2F;span&gt;&lt;span&gt;    clk0: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input&lt;&#x2F;span&gt;&lt;span&gt; &amp;#39;_ &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;clock&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;    clk1: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input&lt;&#x2F;span&gt;&lt;span&gt; &amp;#39;_ &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;clock&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;) {
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;tag&#x2F;v0.11.3&quot;&gt;Release v0.11.3&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Veryl 0.11.2</title>
        <published>2024-08-06T00:00:00+00:00</published>
        <updated>2024-08-06T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-veryl-0-11-2/"/>
        <id>https://veryl-lang.org/blog/announcing-veryl-0-11-2/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-veryl-0-11-2/">&lt;p&gt;The Veryl team has published a new release of Veryl, 0.11.2.
Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;The latest version of Veryl can be downloaded from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;new-features&quot;&gt;New Features&lt;&#x2F;h1&gt;
&lt;p&gt;This version doesn&#x27;t contain new features.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;tag&#x2F;v0.11.2&quot;&gt;Release v0.11.2&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Veryl 0.11.1</title>
        <published>2024-07-03T00:00:00+00:00</published>
        <updated>2024-07-03T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-veryl-0-11-1/"/>
        <id>https://veryl-lang.org/blog/announcing-veryl-0-11-1/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-veryl-0-11-1/">&lt;p&gt;The Veryl team has published a new release of Veryl, 0.11.1.
Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;The latest version of Veryl can be downloaded from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;new-features&quot;&gt;New Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;add-sourcemap-resolver-to-release-build&quot;&gt;Add sourcemap-resolver to release build &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;810&quot;&gt;#810&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;sourcemap-resolver&lt;&#x2F;code&gt; binary was added to release package.
It can be used as filter program throught pipe like below:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;console&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-console &quot;&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span&gt;$ make | sourcemap-resolver
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;By &lt;code&gt;sourcemap-resolver&lt;&#x2F;code&gt;, file location in log can be resolved to the location in Veryl.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Before pipe&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;%Error: &#x2F;path&#x2F;test.sv:23:1: syntax error, unexpected endmodule
&lt;&#x2F;span&gt;&lt;span&gt;   23 | endmodule
&lt;&#x2F;span&gt;&lt;span&gt;      | ^~~~~~~~~
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;After pipe&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre style=&quot;background-color:#393939;color:#dedede;&quot;&gt;&lt;code&gt;&lt;span&gt;%Error: &#x2F;path&#x2F;test.sv:23:1: syntax error, unexpected endmodule
&lt;&#x2F;span&gt;&lt;span&gt;        ^ from: &#x2F;path&#x2F;test.veryl:18:18
&lt;&#x2F;span&gt;&lt;span&gt;   23 | endmodule
&lt;&#x2F;span&gt;&lt;span&gt;      | ^~~~~~~~~
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;add-raw-identifier&quot;&gt;Add raw identifier &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;806&quot;&gt;#806&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Some Veryl&#x27;s keyword can be used as identifier in SystemVerilog.
So instantiating a SystemVerilog module may cause syntax error.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA (
&lt;&#x2F;span&gt;&lt;span&gt;    i_clk: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input clock&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;    i_rst: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input reset&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;) {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;u0: $sv::ModuleSV (
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;clock&lt;&#x2F;span&gt;&lt;span&gt;: i_clk, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt;syntax error because `clock` is Veryl&amp;#39;s keyword
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;reset&lt;&#x2F;span&gt;&lt;span&gt;: i_rst, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt;syntax error because `reset` is Veryl&amp;#39;s keyword
&lt;&#x2F;span&gt;&lt;span&gt;    );
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;To fix it, raw identifier was introduced.
It starts with &lt;code&gt;r#&lt;&#x2F;code&gt; prefix and transpiled into an identifier without the prefix.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA (
&lt;&#x2F;span&gt;&lt;span&gt;    i_clk: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input clock&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;    i_rst: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input reset&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;) {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;inst &lt;&#x2F;span&gt;&lt;span&gt;u0: $sv::ModuleSV (
&lt;&#x2F;span&gt;&lt;span&gt;        r#&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;clock&lt;&#x2F;span&gt;&lt;span&gt;: i_clk, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; transpiled into `.clock(i_clk),`
&lt;&#x2F;span&gt;&lt;span&gt;        r#&lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;reset&lt;&#x2F;span&gt;&lt;span&gt;: i_rst, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; transpiled into `.reset(i_rst),`
&lt;&#x2F;span&gt;&lt;span&gt;    );
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;tag&#x2F;v0.11.1&quot;&gt;Release v0.11.1&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Announcing Veryl 0.11.0</title>
        <published>2024-06-24T00:00:00+00:00</published>
        <updated>2024-06-24T00:00:00+00:00</updated>
        <author>
            <name>Veryl team</name>
        </author>
        <link rel="alternate" type="text/html" href="https://veryl-lang.org/blog/announcing-veryl-0-11-0/"/>
        <id>https://veryl-lang.org/blog/announcing-veryl-0-11-0/</id>
        
        <content type="html" xml:base="https://veryl-lang.org/blog/announcing-veryl-0-11-0/">&lt;p&gt;The Veryl team has published a new release of Veryl, 0.11.0.
Veryl is a new hardware description language as an alternate to SystemVerilog.&lt;&#x2F;p&gt;
&lt;p&gt;The latest version of Veryl can be downloaded from &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;latest&quot;&gt;release page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;breaking-changes&quot;&gt;Breaking Changes&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;clock-domain-annotation-support&quot;&gt;Clock domain annotation support &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;789&quot;&gt;#789&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;If there are some clocks in a module, clock domain annotation is required.
Clock domain annotation represents which clock domain each port belongs to.
Additionally, assignment over different clock domains requires &lt;code&gt;unsafe (cdc)&lt;&#x2F;code&gt; block.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA (
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; clock domain &amp;#39;a
&lt;&#x2F;span&gt;&lt;span&gt;    i_clk_a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input&lt;&#x2F;span&gt;&lt;span&gt;  &amp;#39;a &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;clock&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;    i_dat_a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input&lt;&#x2F;span&gt;&lt;span&gt;  &amp;#39;a &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;    o_dat_a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;output&lt;&#x2F;span&gt;&lt;span&gt; &amp;#39;a &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; clock domain &amp;#39;b
&lt;&#x2F;span&gt;&lt;span&gt;    i_clk_b: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input&lt;&#x2F;span&gt;&lt;span&gt;  &amp;#39;b &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;clock&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;    i_dat_b: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input&lt;&#x2F;span&gt;&lt;span&gt;  &amp;#39;b &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;    o_dat_b: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;output&lt;&#x2F;span&gt;&lt;span&gt; &amp;#39;b &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;) {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;unsafe&lt;&#x2F;span&gt;&lt;span&gt; (cdc) {
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; assignment from &amp;#39;a domain to &amp;#39;b domain
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;assign &lt;&#x2F;span&gt;&lt;span&gt;o_dat_b = i_dat_a;
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;new-features&quot;&gt;New Features&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;support-importing-functions-into-modport&quot;&gt;Support importing functions into modport &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;742&quot;&gt;#742&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Function in interface can be imported through &lt;code&gt;import&lt;&#x2F;code&gt; direction in &lt;code&gt;modport&lt;&#x2F;code&gt; declaration.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;interface &lt;&#x2F;span&gt;&lt;span&gt;InterfaceA {
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;function &lt;&#x2F;span&gt;&lt;span&gt;get_a () -&amp;gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt; {
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;return &lt;&#x2F;span&gt;&lt;span&gt;a;
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;modport &lt;&#x2F;span&gt;&lt;span&gt;slave {
&lt;&#x2F;span&gt;&lt;span&gt;        a    : &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;input&lt;&#x2F;span&gt;&lt;span&gt; ,
&lt;&#x2F;span&gt;&lt;span&gt;        get_a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;add-signed-literal-support&quot;&gt;Add signed literal support &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;770&quot;&gt;#770&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Signed literal with &lt;code&gt;s&lt;&#x2F;code&gt; prefix is supported.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;ModuleA {
&lt;&#x2F;span&gt;&lt;span&gt;    local a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt; = 32&amp;#39;sb1111;
&lt;&#x2F;span&gt;&lt;span&gt;    local b: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt; = 32&amp;#39;so7777;
&lt;&#x2F;span&gt;&lt;span&gt;    local c: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt; = 32&amp;#39;sd9999;
&lt;&#x2F;span&gt;&lt;span&gt;    local d: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt; = 32&amp;#39;shffff;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;enhance-case-statement-expression&quot;&gt;Enhance case statement&#x2F;expression &lt;a style=&quot;font-size: 0.8em&quot; href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;veryl-lang&amp;#x2F;veryl&#x2F;pull&#x2F;783&quot;&gt;#783&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;As case item, range expression and expression with constant value can be used.
&lt;code&gt;switch&lt;&#x2F;code&gt; which has arbitrary expression as the condition items is added too.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;veryl&quot; style=&quot;background-color:#393939;color:#dedede;&quot; class=&quot;language-veryl &quot;&gt;&lt;code class=&quot;language-veryl&quot; data-lang=&quot;veryl&quot;&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;module &lt;&#x2F;span&gt;&lt;span&gt;Module16 {
&lt;&#x2F;span&gt;&lt;span&gt;    local P: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;bit&lt;&#x2F;span&gt;&lt;span&gt; = 1;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;a: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;var &lt;&#x2F;span&gt;&lt;span&gt;b: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;let &lt;&#x2F;span&gt;&lt;span&gt;x: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt; = 1;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;let &lt;&#x2F;span&gt;&lt;span&gt;y: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fffb9d;&quot;&gt;logic&lt;&#x2F;span&gt;&lt;span&gt; = 1;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;always_comb&lt;&#x2F;span&gt;&lt;span&gt; {
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;case &lt;&#x2F;span&gt;&lt;span&gt;x {
&lt;&#x2F;span&gt;&lt;span&gt;            5..=7  : a = 1;
&lt;&#x2F;span&gt;&lt;span&gt;            P - 1  : a = 1;
&lt;&#x2F;span&gt;&lt;span&gt;            &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; Error because y is not constant value
&lt;&#x2F;span&gt;&lt;span&gt;            &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt;y - 1  : a = 1;
&lt;&#x2F;span&gt;&lt;span&gt;            &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;default&lt;&#x2F;span&gt;&lt;span&gt;: a = 1;
&lt;&#x2F;span&gt;&lt;span&gt;        }
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;always_comb&lt;&#x2F;span&gt;&lt;span&gt; {
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;switch&lt;&#x2F;span&gt;&lt;span&gt; {
&lt;&#x2F;span&gt;&lt;span&gt;            &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a0cfa1;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#87ae86;&quot;&gt; arbitrary expression includuing variable can be used
&lt;&#x2F;span&gt;&lt;span&gt;            y == 0 : b = 1;
&lt;&#x2F;span&gt;&lt;span&gt;            &lt;&#x2F;span&gt;&lt;span style=&quot;color:#fed6af;&quot;&gt;default&lt;&#x2F;span&gt;&lt;span&gt;: b = 1;
&lt;&#x2F;span&gt;&lt;span&gt;        }
&lt;&#x2F;span&gt;&lt;span&gt;    }
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;&#x2F;h1&gt;
&lt;p&gt;Check out everything that changed in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;veryl-lang&#x2F;veryl&#x2F;releases&#x2F;tag&#x2F;v0.11.0&quot;&gt;Release v0.11.0&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
    </entry>
</feed>
