5 个版本

新版本 0.12.0 2024 年 8 月 21 日
0.11.3 2024 年 8 月 9 日
0.11.2 2024 年 8 月 6 日
0.11.1 2024 年 7 月 3 日
0.11.0 2024 年 6 月 24 日

#2973解析器实现 中排名

Download history 149/week @ 2024-06-24 136/week @ 2024-07-01 15/week @ 2024-07-08 5/week @ 2024-07-15 2/week @ 2024-07-29 226/week @ 2024-08-05 23/week @ 2024-08-12

每月 251 次下载
2 crate 中使用

MIT/Apache 许可协议

12KB
153 代码行

Veryl

Actions Status Crates.io Changelog

Veryl 是一种现代硬件描述语言。

本项目处于语言设计的探索阶段。如果您有任何想法,请提交问题

概述

Veryl 是一种基于 SystemVerilog 的硬件描述语言,具有以下优势

优化语法

Veryl 采用了针对逻辑设计优化的语法,同时基于对 SystemVerilog 专家熟悉的基语法。这种优化包括保证可综合、确保仿真结果一致性,并为常用惯用语法提供大量语法简化。这种方法使学习变得容易,提高了设计过程的可靠性和效率,并便于编写代码。

互操作性

考虑到与 SystemVerilog 的互操作性,Veryl 允许与现有 SystemVerilog 组件和项目平滑集成和部分替换。此外,从 Veryl 转换的 SystemVerilog 源代码保留了高可读性,从而实现无缝集成和调试。

生产力

Veryl 随带丰富的开发支持工具,包括软件包管理器、构建工具、与主要编辑器(如 VSCode、Vim、Emacs)兼容的实时检查器、自动完成和自动格式化。这些工具加速了开发过程,显著提高了生产力。

凭借这些功能,Veryl 为设计师提供了强大的支持,使他们能够高效、高效地开展高质量硬件设计。

示例

Veryl SystemVerilog
/// documentation comment by markdown format
/// * list item1
/// * list item2
pub module Delay #( // visibility control by `pub` keyword
    param WIDTH: u32 = 1, // trailing comma is allowed
) (
    i_clk : input clock       ,
    i_rst : input reset       ,
    i_data: input logic<WIDTH>,
    o_data: input logic<WIDTH>,
) {
    // unused variable which is not started with `_` are warned
    var _unused_variable: logic;

    // clock and reset signals can be omitted
    // because Veryl can infer these signals
    always_ff {
        // abstraction syntax of reset polarity and synchronicity
        if_reset {
            o_data = '0;
        } else {
            o_data = i_data;
        }
    }
}
// comment
//
//
module Delay #(
    parameter int WIDTH = 1
) (
    input              i_clk ,
    input              i_rst ,
    input  [WIDTH-1:0] i_data,
    output [WIDTH-1:0] o_data
);
    logic unused_variable;

    always_ff @ (posedge i_clk or negedge i_rst) begin
        if (!i_rst) begin
            o_data <= '0;
        end else begin
            o_data <= i_data;
        end
    end
endmodule

安装

查看 文档

使用

// Create a new project
veryl new [project name]

// Create a new project in an existing directory
veryl init [path]

// Format the current project
veryl fmt

// Analyze the current project
veryl check

// Build target codes corresponding to the current project
veryl build

// Build the document corresponding to the current project
veryl doc

有关详细信息,请参阅 文档

许可证

许可证为以下之一

任选。

贡献

除非您明确说明,否则您根据Apache-2.0许可证定义的,有意提交以包含在该作品中的任何贡献,将按上述方式双许可,无需任何额外条款或条件。

依赖项

~5.5MB
~128K SLoC