#verilog #ast #v17 #v05

vast

Verilog AST库

8个版本

0.3.3 2022年11月20日
0.3.2 2022年11月20日
0.3.1 2022年10月4日
0.3.0 2021年5月20日
0.1.0 2020年7月23日

#392 in 编程语言

Download history 127/week @ 2024-03-14 45/week @ 2024-03-21 673/week @ 2024-03-28 821/week @ 2024-04-04 760/week @ 2024-04-11 275/week @ 2024-04-18 106/week @ 2024-04-25 119/week @ 2024-05-02 65/week @ 2024-05-09 87/week @ 2024-05-16 210/week @ 2024-05-23 258/week @ 2024-05-30 279/week @ 2024-06-06 286/week @ 2024-06-13 163/week @ 2024-06-20 79/week @ 2024-06-27

884 每月下载量
5 个crate中使用 (直接使用2个)

Apache-2.0

85KB
3K SLoC

Verilog AST (VAST)

Build Status Crates.io

VAST是一个用于构建和操作Verilog抽象语法树的Rust库。目标是支持标准2005年和2017年两个不同版本的特性,分别是 v05v17subset 目录包含两个版本共有的类型。

使用VAST

vast 添加到您的 Cargo.toml 中,如下所示

[dependencies]
vast = "0.3.0"

创建Verilog-2005模块

use vast::v05::ast::Module;

fn main() {
    let mut module = Module::new("foo");
    module.add_input("a", 32);
    let res = module.to_string();
    let exp = r#"module foo (
    input wire [31:0] a
);
endmodule
"#;
    assert_eq!(res, exp);
}

创建SystemVerilog-2017模块

use vast::v17::ast::Module;

fn main() {
    let mut module = Module::new("foo");
    module.add_input("a", 32);
    let res = module.to_string();
    let exp = r#"module foo (
    input logic [31:0] a
);
endmodule
"#;
    assert_eq!(res, exp);
}

依赖项

~1.5MB
~21K SLoC