8 releases

0.3.3 Nov 20, 2022
0.3.2 Nov 20, 2022
0.3.1 Oct 4, 2022
0.3.0 May 20, 2021
0.1.0 Jul 23, 2020

#513 in Programming languages

Download history 207/week @ 2024-07-27 143/week @ 2024-08-03 47/week @ 2024-08-10 41/week @ 2024-08-17 139/week @ 2024-08-24 76/week @ 2024-08-31 61/week @ 2024-09-07 45/week @ 2024-09-14 65/week @ 2024-09-21 63/week @ 2024-09-28 56/week @ 2024-10-05 75/week @ 2024-10-12 125/week @ 2024-10-19 141/week @ 2024-10-26 134/week @ 2024-11-02 72/week @ 2024-11-09

482 downloads per month
Used in 5 crates (2 directly)

Apache-2.0

85KB
3K SLoC

Verilog AST (VAST)

Build Status Crates.io

VAST is a Rust library for building and manipulating Verilog ASTs. The goal is to support features from two different versions of the standard 2005 and 2017, v05 and v17 respectively. The subset directory contains types that are common between the two.

Using VAST

Add vast to your Cargo.toml like this:

[dependencies]
vast = "0.3.0"

Creating a module in 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);
}

Creating a module in 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);
}

Dependencies

~1MB
~18K SLoC