reda-v
A verilog file library in Rust.
Features
- Parse complete Verilog source files into a structured
VerilogAST - Support for multiple modules within one file
- Module parsing, including:
- Ports (
input,output,inout) with optional ranges - Parameters with constant expressions
- Nets (
wire,reg) with optional ranges - Continuous assignments (
assign) - Always blocks with sensitivity lists (
posedge,negedge, or*) - Instantiations of other modules
- Ports (
- Statement parsing inside procedural blocks:
- Blocking assignments (
=) - Non-blocking assignments (
<=) if/elseconditionals- Sequential
begin ... endblocks
- Blocking assignments (
- Hierarchical AST representation with structs like:
Verilog,ModulePort,Parameter,Net,Assign,Always,InstanceStmt,Expr,Range, etc.
Examples
let source = r#"
module adder (a, b, sum);
input [3:0] a;
input [3:0] b;
output [4:0] sum;
assign sum = a + b;
endmodule
"#;
let verilog = from_str.unwrap;
let adder = verilog.modules.get.unwrap;
for p in adder.ports.iter
LICENSE
MIT