diff --git a/404.html b/404.html new file mode 100644 index 0000000..f8414f0 --- /dev/null +++ b/404.html @@ -0,0 +1,3 @@ + +404 Not Found +

404 Not Found

diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..c0121be --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +veryl-lang.org diff --git a/blog/annoucing-veryl-0-11-0/index.html b/blog/annoucing-veryl-0-11-0/index.html new file mode 100644 index 0000000..b259352 --- /dev/null +++ b/blog/annoucing-veryl-0-11-0/index.html @@ -0,0 +1,314 @@ + + + + + + Announcing Veryl 0.11.0 | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + +
+ + + + + +
+ +
+ + + +
+ +
Announcing Veryl 0.11.0
+

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.

+

The latest version of Veryl can be downloaded from release page.

+

Breaking Changes

+

Clock domain annotation support #789 +

+

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 unsafe (cdc) block.

+
module ModuleA (
+    // clock domain 'a
+    i_clk_a: input  'a clock,
+    i_dat_a: input  'a logic,
+    o_dat_a: output 'a logic,
+
+    // clock domain 'b
+    i_clk_b: input  'b clock,
+    i_dat_b: input  'b logic,
+    o_dat_b: output 'b logic,
+) {
+    unsafe (cdc) {
+        // assignment from 'a domain to 'b domain
+        assign o_dat_b = i_dat_a;
+    }
+}
+
+

New Features

+

Support importing functions into modport #742 +

+

Function in interface can be imported through import direction in modport declaration.

+
interface InterfaceA {
+    var a: logic;
+
+    function get_a () -> logic {
+        return a;
+    }
+
+    modport slave {
+        a    : input ,
+        get_a: import,
+    }
+}
+
+

Add signed literal support #770 +

+

Signed literal with s prefix is supported.

+
module ModuleA {
+    local a: u32 = 32'sb1111;
+    local b: u32 = 32'so7777;
+    local c: u32 = 32'sd9999;
+    local d: u32 = 32'shffff;
+}
+
+

Enhance case statement/expression #783 +

+

As case item, range expression and expression with constant value can be used. +switch which has arbitrary expression as the condition items is added too.

+
module Module16 {
+    local P: bit = 1;
+
+    var a: logic;
+    var b: logic;
+    let x: logic = 1;
+    let y: logic = 1;
+
+    always_comb {
+        case x {
+            5..=7  : a = 1;
+            P - 1  : a = 1;
+            // Error because y is not constant value
+            //y - 1  : a = 1;
+            default: a = 1;
+        }
+    }
+
+    always_comb {
+        switch {
+            // arbitrary expression includuing variable can be used
+            y == 0 : b = 1;
+            default: b = 1;
+        }
+    }
+}
+
+

Other Changes

+

Check out everything that changed in Release v0.11.0.

+ + +
+ + + +
+ + + + + + + + diff --git a/blog/annoucing-veryl-0-11-1/index.html b/blog/annoucing-veryl-0-11-1/index.html new file mode 100644 index 0000000..2f0a68b --- /dev/null +++ b/blog/annoucing-veryl-0-11-1/index.html @@ -0,0 +1,267 @@ + + + + + + Announcing Veryl 0.11.1 | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + +
+ + + + + +
+ +
+ + + +
+ +
Announcing Veryl 0.11.1
+

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.

+

The latest version of Veryl can be downloaded from release page.

+

New Features

+

Add sourcemap-resolver to release build #810 +

+

sourcemap-resolver binary was added to release package. +It can be used as filter program throught pipe like below:

+
$ make | sourcemap-resolver
+
+

By sourcemap-resolver, file location in log can be resolved to the location in Veryl.

+ +
%Error: /path/test.sv:23:1: syntax error, unexpected endmodule
+   23 | endmodule
+      | ^~~~~~~~~
+
+ +
%Error: /path/test.sv:23:1: syntax error, unexpected endmodule
+        ^ from: /path/test.veryl:18:18
+   23 | endmodule
+      | ^~~~~~~~~
+
+

Add raw identifier #806 +

+

Some Veryl's keyword can be used as identifier in SystemVerilog. +So instantiating a SystemVerilog module may cause syntax error.

+
module ModuleA (
+    i_clk: input clock,
+    i_rst: input reset,
+) {
+    inst u0: $sv::ModuleSV (
+        clock: i_clk, //syntax error because `clock` is Veryl's keyword
+        reset: i_rst, //syntax error because `reset` is Veryl's keyword
+    );
+}
+
+

To fix it, raw identifier was introduced. +It starts with r# prefix and transpiled into an identifier without the prefix.

+
module ModuleA (
+    i_clk: input clock,
+    i_rst: input reset,
+) {
+    inst u0: $sv::ModuleSV (
+        r#clock: i_clk, // transpiled into `.clock(i_clk),`
+        r#reset: i_rst, // transpiled into `.reset(i_rst),`
+    );
+}
+
+

Other Changes

+

Check out everything that changed in Release v0.11.1.

+ + +
+ + + +
+ + + + + + + + diff --git a/blog/annoucing-veryl-0-11-2/index.html b/blog/annoucing-veryl-0-11-2/index.html new file mode 100644 index 0000000..25cbf56 --- /dev/null +++ b/blog/annoucing-veryl-0-11-2/index.html @@ -0,0 +1,210 @@ + + + + + + Announcing Veryl 0.11.2 | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + +
+ + + + + +
+
+ + + + + + + +
+
+ + + +
+ +
Announcing Veryl 0.11.2
+

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.

+

The latest version of Veryl can be downloaded from release page.

+

New Features

+

This version doesn't contain new features.

+

Other Changes

+

Check out everything that changed in Release v0.11.2.

+ + +
+ + + +
+ + + + + + + + diff --git a/blog/annoucing-veryl-0-11-3/index.html b/blog/annoucing-veryl-0-11-3/index.html new file mode 100644 index 0000000..c29bfc1 --- /dev/null +++ b/blog/annoucing-veryl-0-11-3/index.html @@ -0,0 +1,244 @@ + + + + + + Announcing Veryl 0.11.3 | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + +
+ + + + + +
+ +
+ + + +
+ +
Announcing Veryl 0.11.3
+

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.

+

The latest version of Veryl can be downloaded from release page.

+

New Features

+

Improve naming lint #858 + #870 +

+

Some missing rules of naming lint was added. +They are suffix rules and rules for function argument.

+
[lint.naming]
+suffix_enum = "_enum"
+
+

Check missing clock domain #864 +

+

If there are some clocks in a module, clock domain annotation became mandatory. +The following code causes missing_clock_domain error.

+
module ModuleA (
+    clk0: input clock, // should be `clk0: input 'a clock`
+    clk1: input clock, // should be `clk1: input 'b clock`
+) {
+}
+
+

If the two clocks belong the same clock domain, implicit clock domain can be specified like below:

+
module ModuleA (
+    clk0: input '_ clock,
+    clk1: input '_ clock,
+) {
+}
+
+

Other Changes

+

Check out everything that changed in Release v0.11.3.

+ + +
+ + + +
+ + + + + + + + diff --git a/blog/annoucing-veryl-0-12-0/index.html b/blog/annoucing-veryl-0-12-0/index.html new file mode 100644 index 0000000..5cfdb89 --- /dev/null +++ b/blog/annoucing-veryl-0-12-0/index.html @@ -0,0 +1,329 @@ + + + + + + Announcing Veryl 0.12.0 | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + +
+ + + + + +
+ +
+ + + +
+ +
Announcing Veryl 0.12.0
+

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.

+

The latest version of Veryl can be downloaded from release page.

+

Breaking Changes

+

Forbid continuous casting #887 +

+

Until Veryl 0.12.0, casting by as could be continuous, but it is forbidden by Veryl 0.12.0. +If continuous casting is required, it can be achieved by inserting ().

+
// Syntax error
+assign a = x as u32 as i32;
+// OK
+assign a = (x as u32) as i32;
+
+

Change symbol of clock domain annotation #883 +

+

Until Veryl 0.12.0, clock domain annotation used single quotation mark like 'x. +Veryl 0.12.0 changes it to backtick mark like `x.

+
// Syntax error
+var a: 'x clock;
+// OK
+var a: `x clock;
+
+

New Features

+

Expand inside operation #873 +

+

Some EDA tools doesn't support inside operation. +For these tools, expand_inside_operation configuration of Veryl.toml can be used like below:

+
[build]
+expand_inside_operation = true
+
+

If the configuration is enabled, inside operations in the generated SystemVerilog are expanded like below:

+ +
assign a = ((1 + 2 / 3) inside {0, 0..10, 1..=10});
+
+ +
assign a = ((1 + 2 / 3) ==? 0) ||
+           ((1 + 2 / 3) >= 0 && (1 + 2 / 3) < 10) ||
+           ((1 + 2 / 3) >= 0 && (1 + 2 / 3) <= 10);
+
+

Waveform dump support through veryl test --wave #898 +

+

Waveform dump in integrated test is supported. +If --wave option is specified at veryl test, [test name].vcd files are generated. +The generation place is the same as generated SystemVerilog code by default. +It can be configured through waveform_target in Veryl.toml.

+
[test]
+waveform_target = {type = "directory", path = "[dst dir]"}
+
+

Cocotb support for integrated test #899 +

+

As the way of embed and language specifier, cocotb and py are supported now. +If cocotb 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 #[test] attribute.

+

To use this feature, python3 environment in which cocotb 1.9.0 is installed is required.

+
#[test(test1, ModuleA)]
+embed (cocotb) py{{{
+import cocotb
+
+@cocotb.test()
+async def test(dut):
+    dut.i_d.value = 0
+}}}
+
+
+

Embed standard library into compiler #878 +

+

Standard library is embeded into Veryl compiler, and it can be used through std namespace. +For example, std::fifo is FIFO module in standard library, and can be used without adding dependency like below. +All list and documentation is https://std.veryl-lang.org.

+
module ModuleA {
+    inst u: std::fifo (
+        i_clk        : _,
+        i_rst        : _,
+        i_clear      : _,
+        o_empty      : _,
+        o_almost_full: _,
+        o_full       : _,
+        o_word_count : _,
+        i_push       : _,
+        i_data       : _,
+        i_pop        : _,
+        o_data       : _,
+    );
+}
+
+

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 https://github.com/veryl-lang/std.

+

Other Changes

+

Check out everything that changed in Release v0.12.0.

+ + +
+ + + +
+ + + + + + + + diff --git a/blog/annoucing-veryl-0-13-0/index.html b/blog/annoucing-veryl-0-13-0/index.html new file mode 100644 index 0000000..e699747 --- /dev/null +++ b/blog/annoucing-veryl-0-13-0/index.html @@ -0,0 +1,381 @@ + + + + + + Announcing Veryl 0.13.0 | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + +
+ + + + + +
+ +
+ + + +
+ +
Announcing Veryl 0.13.0
+

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.

+

If you have a previous version of Veryl installed via verylup, you can get the latest version with:

+
$ verylup update
+
+

If you don't have it already, you can get verylup from release page.

+

Breaking Changes

+

Bounded generic parameter #917 +

+

Until Veryl 0.13.0, generic parameter couldn't have any restriction. +So Veryl compiler couldn't judge whether the passed parameter is correct at the instantiation, +and it generated the complicated error message.

+
module ModuleA {
+    inst u: GenericModule::<X /* X is OK??? */> (
+    };
+}
+
+

Veryl 0.13.0 adds the following bounds to generic parameter.

+ +

const means a constant value, type means any type. The example const and type is below:

+
// Generic module with const generic parameter
+module ModuleA::<X: const> {
+}
+
+// Generic module with type generic parameter
+module ModuleB::<X: type> {
+}
+
+

Module prototype is more complicated, it shows what a module for the generic parameter should has as parameters and ports. +The following ProtoA shows a module should have A and i_clk, and ModuleA satisfies the restriction. +So ModuleA can be used as generic parameter of ModuleB which is bounded by ProtoA.

+
// Module prorotype
+proto ProtoA #(
+    param A: u32 = 1,
+) (
+    i_clk: input clock,
+);
+
+// ModuleA satisfies ProtoA
+module ModuleA for ProtoA #(
+    param A: u32 = 1,
+) (
+    i_clk: input clock,
+) {
+}
+
+// Generic module with module prototype
+module ModuleB::<X: ProtoA> {
+}
+
+module ModuleC {
+    // ModuleA can be used as the generic parameter
+    inst u: ModuleB::<ModuleA>;
+}
+
+

Change from std to $std #930 +

+

Veryl 0.13.0 change the namespace of standard library from std to $std. +This is because it clears that it is built-in namespace, and reduces conflict with general identifiers.

+

Change local to const #932 +

+

local keyword is derived from localparam of SystemVerilog. +The naming is confusable becasue local looks "local scoped" and actually local of package can be seen globally. +So Veryl 0.13.0 changes local to const because const is used for this usage in general programming languages.

+
module #(
+    param X: u32 = 1    ,
+    const Y: u32 = X + 1,
+) {
+    const Z: u32 = 1;
+}
+
+

New Features

+

Support untyped enum declaration #902 +

+

If the type is omitted in enum declaration, Veryl compiler inserts appropriate type automatically.

+
enum A {
+  FOO,
+  BAR,
+  BAZ,
+}
+
+// This is equivalence with the above code
+enum A: logic<2> {
+  FOO,
+  BAR,
+  BAZ,
+}
+
+

Mermaid support for documentation comment #904 +

+

Mermaid is syntax to write diagrams. +If ```mermaid is used in documentation comment, the code block is interpreted as Mermaid, +and the generated diagram is shown in documentation.

+
/// ```mermaid
+/// graph TD;
+///     A-->B;
+///     A-->C;
+///     B-->D;
+///     C-->D;
+/// ```
+
+

Add enum_encoding attribute #915 +

+

Encoding of variant values in enum can be specified through enum_encoding attribute. +The available encodings are sequential, onehot and gray.

+
#[enum_encoding(sequential)]
+enum A {
+  FOO,
+  BAR,
+}
+
+#[enum_encoding(onehot)]
+enum B {
+  FOO,
+  BAR,
+}
+
+#[enum_encoding(gray)]
+enum C {
+  FOO,
+  BAR,
+}
+
+

Completion of modport and struct member #934 +

+

veryl-ls supports completion of modport and struct member.

+
struct A {
+    x: logic,
+    y: logic,
+}
+
+var a: A;
+let b: logic = a.
+//              | `x` and `y` will be listed as completion candidates at inputting this period
+
+

Other Changes

+

Check out everything that changed in Release v0.13.0.

+ + +
+ + + +
+ + + + + + + + diff --git a/blog/annoucing-veryl-0-13-1/index.html b/blog/annoucing-veryl-0-13-1/index.html new file mode 100644 index 0000000..98d6ca0 --- /dev/null +++ b/blog/annoucing-veryl-0-13-1/index.html @@ -0,0 +1,213 @@ + + + + + + Announcing Veryl 0.13.1 | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + +
+ + + + + +
+
+ + + + + + + +
+
+ + + +
+ +
Announcing Veryl 0.13.1
+

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.

+

If you have a previous version of Veryl installed via verylup, you can get the latest version with:

+
$ verylup update
+
+

If you don't have it already, you can get verylup from release page.

+

New Features

+

This version doesn't contain new features.

+

Other Changes

+

Check out everything that changed in Release v0.13.1.

+ + +
+ + + +
+ + + + + + + + diff --git a/blog/annoucing-veryl-0-13-2/index.html b/blog/annoucing-veryl-0-13-2/index.html new file mode 100644 index 0000000..77a2581 --- /dev/null +++ b/blog/annoucing-veryl-0-13-2/index.html @@ -0,0 +1,249 @@ + + + + + + Announcing Veryl 0.13.2 | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + +
+ + + + + +
+
+ + + + + + + + + + + + + +
+
+ + + +
+ +
Announcing Veryl 0.13.2
+

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.

+

If you have a previous version of Veryl installed via verylup, you can get the latest version with:

+
$ verylup update
+
+

If you don't have it already, you can get verylup from release page.

+

New Features

+

Allow type as expression #1016 +

+

Arbitrary type including built-in types becomes to be able to be used in expression context. +For example, logic<10> type can be passed as parameter override.

+
module ModuleA {
+    inst x: ModuleB #(
+        X: logic<10>
+    );
+}
+
+module ModuleB #(
+    param X: type = logic,
+) {}
+
+

Shell completion

+

Now shell completion for veryl command is supported through verylup installer. +The supported shells are below:

+ +

If you have already installed verylup, a completion for zsh can be generated by the following command.

+
verylup completion zsh veryl
+
+

Other Changes

+

Check out everything that changed in Release v0.13.2.

+ + +
+ + + +
+ + + + + + + + diff --git a/blog/annoucing-verylup-0-1-2/index.html b/blog/annoucing-verylup-0-1-2/index.html new file mode 100644 index 0000000..4f52846 --- /dev/null +++ b/blog/annoucing-verylup-0-1-2/index.html @@ -0,0 +1,272 @@ + + + + + + Announcing Verylup 0.1.2 | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + +
+ + + + + +
+
+ + + + +
+ Cargo +
+ + + + + + + + + + + + + + + + +
+
+ + + +
+ +
Announcing Verylup 0.1.2
+

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.

+

There are two installation ways. In either case, executing verylup setup is required after installing.

+

Download binary

+

Download from release page, and extract to the directory in PATH.

+

Cargo

+

You can install with cargo.

+
cargo install verylup
+
+

New Features

+

Self update support

+

Verylup 0.1.2 supports self binary updating. +When verylup update is executed, both toolchain update and self update is done.

+
verylup update
+
+

Configuable default toolchain

+

If you want to change the default toolchain to a specific toolchain, verylup default can be used.

+
# set 0.11.0 as default toolchain
+verylup default 0.11.0
+
+

Additionally, overriding default toolchain per directory is supported too. +You can do verylup override set in your Veryl project.

+
# set 0.9.0 as default toolchain for the current project
+verylup override set 0.9.0
+
+

Shell completion

+

Shell completion script can be generated by verylup completion. +The supported shells are below:

+ +

For example, the following command generates a completion script of Verylup for zsh.

+
verylup completion zsh verylup
+
+

After Veryl 0.13.1 (which is not released yet), a completion script of veryl will be supported too like below:

+
verylup completion zsh veryl
+
+

About the usage of generated scripts, please refer the documentation of each shell.

+

Other Changes

+

Check out everything that changed in Release v0.1.2.

+ + +
+ + + +
+ + + + + + + + diff --git a/blog/annoucing-verylup-0-1-3/index.html b/blog/annoucing-verylup-0-1-3/index.html new file mode 100644 index 0000000..60856a0 --- /dev/null +++ b/blog/annoucing-verylup-0-1-3/index.html @@ -0,0 +1,229 @@ + + + + + + Announcing Verylup 0.1.3 | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + +
+ + + + + +
+
+ + + + + + + + + + + +
+
+ + + +
+ +
Announcing Verylup 0.1.3
+

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.

+

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:

+
verylup update
+
+

If you don't have it already, please refer Getting Started.

+

New Features

+

Offline installation support

+

Verylup 0.1.3 supports offline installation for environments without internet access. +The procedure of offline installation is below:

+ +
verylup setup --offline --pkg veryl-x86_64-linux.zip
+
+

If you want to update/install toolchain, --pkg specification is required as the same as setup.

+

Other Changes

+

Check out everything that changed in Release v0.1.3.

+ + +
+ + + +
+ + + + + + + + diff --git a/blog/index.html b/blog/index.html new file mode 100644 index 0000000..a49e031 --- /dev/null +++ b/blog/index.html @@ -0,0 +1,204 @@ + + + + + + Blog | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + +
+ + + + + +
+ + +

2024-10-30 Announcing Veryl 0.13.2

+ +

2024-10-11 Announcing Veryl 0.13.1

+ +

2024-10-11 Announcing Verylup 0.1.3

+ +

2024-09-18 Announcing Verylup 0.1.2

+ +

2024-09-12 Announcing Veryl 0.13.0

+ +

2024-09-05 verylup: Veryl toolchain installer

+ +

2024-08-21 Announcing Veryl 0.12.0

+ +

2024-08-09 Announcing Veryl 0.11.3

+ +

2024-08-06 Announcing Veryl 0.11.2

+ +

2024-07-03 Announcing Veryl 0.11.1

+ +

2024-06-24 Announcing Veryl 0.11.0

+ + +
+ + + +
+ + + + + + + + diff --git a/blog/verylup-veryl-toolchain-installer/index.html b/blog/verylup-veryl-toolchain-installer/index.html new file mode 100644 index 0000000..f4b6b40 --- /dev/null +++ b/blog/verylup-veryl-toolchain-installer/index.html @@ -0,0 +1,263 @@ + + + + + + verylup: Veryl toolchain installer | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + +
+ + + + + +
+
+ + + + + + +
+ - Cargo +
+ + + +
+ Usage +
+ + + + + +
+
+ + + +
+ +
verylup: Veryl toolchain installer
+

verylup is the official toolchain installer of Veryl. +It installs the latest Veryl toolchain and eases to update and switch the toolchains.

+

Installation

+

There are two installation ways. In either case, executing verylup setup is required after installing.

+

Download binary

+

Download from release page, and extract to the directory in PATH.

+

Cargo

+

You can install with cargo.

+
cargo install verylup
+
+

Usage

+

verylup can be used like below:

+
// Setup verylup (only once at first)
+verylup setup
+
+// Update the latest toolchain
+verylup update
+
+// Install a specific toolchain
+verylup install 0.12.0
+
+// Show installed toolchains
+verylup show
+
+

After installing verylup, verion specifier by + can be used in veryl command like below:

+
// Use the latest toolchain
+veryl build
+
+// Use a specific toolchain
+veryl +0.12.0 build
+veryl +latest build
+
+

For Veryl Developer

+

For Veryl developer, a special toolchain target local is prepared. +If verylup install local is executed in your local Veryl repository, the built toolchain is installed as local toolchain. +local becomes the default toolchain if it exists.

+
// Build and install the toolchain from local Veryl repository
+verylup install local
+
+// Use the built toolchain
+veryl build
+
+// Use the latest toolchain
+veryl +latest build
+
+ + +
+ + + +
+ + + + + + + + diff --git a/code.png b/code.png new file mode 100644 index 0000000..a8ec29f Binary files /dev/null and b/code.png differ diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..a9fafc3 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,205 @@ + + + + + + Docs | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + +
+ + + + + +
+
+ +
+ Reference +
+ + +
+
+ + + +
+ +
Docs
+

Reference

+ + + +
+ + + +
+ + + + + + + + diff --git a/index.html b/index.html new file mode 100644 index 0000000..98a6b78 --- /dev/null +++ b/index.html @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ +
+ + +
+

+ Veryl Hardware Description Language +

+

+ A modern hardware description language designed as SystemVerilog alternative. +

+ +
+ Star + Sponsor +
+
+ + +
+ Explore Veryl ⇩ +
+ + +
+ + + +
+ + + + + +
+
+ + + + + + + + + + +
+
+ + + +
+ +
Overview
+

Veryl is a hardware description language based on SystemVerilog, providing the following advantages:

+

Optimized Syntax

+

Veryl adopts syntax optimized for logic design while being based on a familiar basic syntax for SystemVerilog experts. +This optimization includes guarantees for synthesizability, ensuring consistency between simulation results, and providing numerous syntax simplifications for common idioms. +This approach enables ease of learning, improves the reliability and efficiency of the design process, and facilitates ease of code writing.

+

Interoperability

+

Designed with interoperability with SystemVerilog in mind, Veryl allows smooth integration and partial replacement with existing SystemVerilog components and projects. +Furthermore, SystemVerilog source code transpiled from Veryl retains high readability, enabling seamless integration and debugging.

+

Productivity

+

Veryl comes with a rich set of development support tools, including package managers, build tools, real-time checkers compatible with major editors such as VSCode, Vim, Emacs, automatic completion, and automatic formatting. +These tools accelerate the development process and significantly enhance productivity.

+

With these features, Veryl provides powerful support for designers to efficiently and productively conduct high-quality hardware design.

+ + +
+ + + +
+ + + + + + + + diff --git a/install/index.html b/install/index.html new file mode 100644 index 0000000..6dc1d66 --- /dev/null +++ b/install/index.html @@ -0,0 +1,256 @@ + + + + + + Install | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + +
+ + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ +
Install
+

Veryl can be intalled through the official toolchain installer verylup. +We recommend to use verylup because it provides some usefule features like toolchain update.

+

Requirement

+

Veryl uses git command internally. Please confirm git can be launched.

+

Install verylup

+

Download binary

+

Download from release page, and extract to the directory in PATH.

+

Cargo

+

You can install with cargo.

+
cargo install verylup
+
+

Setup verylup

+

After installing verylup, the following command is required once at first. +It downloads the latest toolchain and creates veryl and veryl-ls command at the same location as verylup.

+
verylup setup
+
+

Now veryl command can be used!

+

Editor integration

+

Visual Studio Code and Vim / Neovim are supported officially.

+

Visual Studio Code

+

For Visual Studio Code, Veryl extension is provided. +The extension provides file type detection, syntex highlight and language server integration. +You can install it by searching "Veryl" in extension panel or the following URL.

+

Veryl extension for Visual Studio Code

+

Vim / Neovim

+

For Vim / Neovim, Veryl plugin is provided. +The plugin provides file type detection, syntex highlight. +There are some instructions for plugin installation and language server integration in the following URL.

+

Vim / Neovim plugin

+

Other Editors

+

Veryl provides language server. So other editors supporting language server (ex. Emacs) can use it.

+ + +
+ + + +
+ + + + + + + + diff --git a/juice.css b/juice.css new file mode 100644 index 0000000..b0fd876 --- /dev/null +++ b/juice.css @@ -0,0 +1 @@ +.text-center{text-align:center}.pos-absolute{right:0;left:0;position:absolute}.box-shadow{box-shadow:0 2px 10px 2px var(--shadow-color)}.heading-text{font-family:var(--header-font-family);font-size:32px;font-weight:600;padding:10px 0 25px 0;color:var(--primary-text-color)}h1,.title-text{font-family:var(--header-font-family);font-size:25px;font-weight:500;color:var(--primary-text-color);border-left:var(--primary-color) 8px solid;padding-left:10px}h2,.subtitle-text{font-family:var(--header-font-family);font-size:20px;font-weight:500;color:var(--primary-text-color)}.text{font-family:var(--text-font-family);font-size:18px;font-weight:400;line-height:26px;letter-spacing:.2px;color:var(--primary-text-color)}.subtext{font-family:var(--text-font-family);font-size:16px;font-weight:400;letter-spacing:.1px}.content{padding:0 40px;display:flex;flex-direction:column;overflow-x:auto}.content pre{overflow-x:auto;padding:1.25em 1.5em;white-space:pre;word-wrap:normal;background-color:var(--code-background-color);color:var(--code-color);font-family:monospace}.content code{background-color:var(--code-background-color);color:var(--code-color);font-size:1em;font-weight:normal;padding:.25em .5em;font-family:monospace}.content pre code{padding:0}.content a{color:var(--primary-link-color)}.content a:hover{text-decoration:underline}.content blockquote{border-left:#e2dede 8px solid;margin:0;background-color:#f2f1f0;padding:0 20px}.content h2{font-size:1.2em;border-bottom:#e2dede 1px solid}body{padding:0;margin:0;box-sizing:border-box;background-color:var(--secondary-color);display:flex;flex-direction:column;min-height:100vh}a{text-decoration:none}ul{margin-top:.5rem}ul>li{padding:.3rem 0}p>img{width:100%;height:auto}header{background-color:var(--primary-color);color:var(--primary-text-color);padding:20px 50px;display:flex;align-items:center;justify-content:space-between}.logo{font-family:"Alfa Slab One",serif;font-size:32px;color:var(--primary-text-color);display:flex;align-items:center;margin:0 40px}.logo img{width:60px;margin:0 25px}.nav-item{margin:0 10px;text-decoration:none;font-size:18px;font-weight:bold}.nav-item:hover{color:var(--primary-text-color-over);text-decoration:underline}.hero{display:flex;align-items:center;justify-content:space-evenly;height:100vh;background-color:var(--primary-color);overflow-x:hidden;padding:0 40px}.hero .explore-more{position:absolute;bottom:20px;cursor:pointer}main{display:flex;padding:50px 100px;flex-grow:1}main .toc{max-width:260px;min-width:240px}main .toc-item{padding:10px 20px;color:#424242}main .toc-item a,main .toc-item-child a{color:var(--secondary-text-color)}main .toc-item a:hover,main .toc-item-child a:hover{cursor:pointer;text-decoration:underline}main .toc-item a.active,main .toc-item-child a.active{color:var(--toc-highlight-text-color)}main .toc-item-child{padding:0 30px 5px;color:#424242}.toc-sticky{border-radius:3px;border-top:5px solid var(--primary-color);background-color:var(--toc-background-color);position:sticky;position:-webkit-sticky;position:-moz-sticky;position:-ms-sticky;position:-o-sticky;top:10px;padding:10px 0 20px;max-height:100vh;overflow:auto}footer{padding:50px;display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:#202020;color:#fcfcfc}footer a{color:#fcfcfc;text-decoration:underline}@media screen and (min-width: 1280px){.content{max-width:60%;min-width:800px}}@media screen and (max-width: 768px){header{padding:10px 30px;flex-direction:column;align-items:center;justify-content:center}.logo{font-size:28px;margin:10px}.logo img{width:45px;margin:0 10px 0 0}.nav-item{margin:0 5px;font-size:14px}.hero{padding:40px 30px}main{padding:30px}.content{padding:0}.explore-more,.toc{display:none}} \ No newline at end of file diff --git a/logo.png b/logo.png new file mode 100644 index 0000000..9f33710 Binary files /dev/null and b/logo.png differ diff --git a/normalize.css b/normalize.css new file mode 100644 index 0000000..192eb9c --- /dev/null +++ b/normalize.css @@ -0,0 +1,349 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; +} + +/** + * Render the `main` element consistently in IE. + */ + +main { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove the border on images inside links in IE 10. + */ + +img { + border-style: none; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..a741d47 --- /dev/null +++ b/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Disallow: +Allow: / +Sitemap: https://veryl-lang.org/sitemap.xml diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..544ad48 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,62 @@ + + + + https://veryl-lang.org/ + + + https://veryl-lang.org/blog/ + + + https://veryl-lang.org/blog/annoucing-veryl-0-11-0/ + 2024-06-24 + + + https://veryl-lang.org/blog/annoucing-veryl-0-11-1/ + 2024-07-03 + + + https://veryl-lang.org/blog/annoucing-veryl-0-11-2/ + 2024-08-06 + + + https://veryl-lang.org/blog/annoucing-veryl-0-11-3/ + 2024-08-09 + + + https://veryl-lang.org/blog/annoucing-veryl-0-12-0/ + 2024-08-21 + + + https://veryl-lang.org/blog/annoucing-veryl-0-13-0/ + 2024-09-12 + + + https://veryl-lang.org/blog/annoucing-veryl-0-13-1/ + 2024-10-11 + + + https://veryl-lang.org/blog/annoucing-veryl-0-13-2/ + 2024-10-30 + + + https://veryl-lang.org/blog/annoucing-verylup-0-1-2/ + 2024-09-18 + + + https://veryl-lang.org/blog/annoucing-verylup-0-1-3/ + 2024-10-11 + + + https://veryl-lang.org/blog/verylup-veryl-toolchain-installer/ + 2024-09-05 + + + https://veryl-lang.org/docs/ + + + https://veryl-lang.org/install/ + + + https://veryl-lang.org/statistics/ + + diff --git a/statistics/index.html b/statistics/index.html new file mode 100644 index 0000000..7e70e3a --- /dev/null +++ b/statistics/index.html @@ -0,0 +1,485 @@ + + + + + + Statistics | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + +
+ + + + + +
+
+ + + + + + + +
+ - Total +
+ + + + + + + +
+
+ + + +
+ +
Statistics
+

Projects on GitHub

+
+ +
+

Release Downloads

+

Total

+
+ +
+

By Version

+
+ +
+

Platform

+
+ +
+ + + + + +
+ + + +
+ + + + + + + +