我正在尝试用Java创建一个解析器(使用Netbeans),它可以接受任何任意的Verilog文件作为输入,并生成一个包含门的网表作为输出。网表不必进行优化。
我有ANTLR语法文件https://github.com/antlr/grammarsv4/blob/master/verilog/Verilog2001.g4
然而,我真的不太确定如何将它集成到我的Java程序中。
例如,如果我有以下Verilog文件作为输入,
module and3(output out, input in1, in2,in3);
reg r_out;
assign out = r_out;
always@(in1, in2, in3)
begin
case({in3,in2,in1})
000: out = 0;
001: out = 1;
010: out = 1;
011: out = 1;
100: out = 0;
101: out = 1;
110: out = 0;
111: out = 1;
default: out = 0;
endcase
end
endmodule
我想确定输入和输出端口的名称以及它们的大小。我还想确定始终块、事例语句块以及事例语句中的每个赋值。
所以我的疑虑是:
1) 如何将其集成到我的java程序中
2) 我如何使用这个Verilog语法文件并阅读上面提到的Verilog代码来识别输入、输出、大小写语句和赋值语句。
感谢
我最近解决了一个类似的任务。我开始为Verilog创建一个IntelliJ插件,使用与ANTLR相同的语法文件。目前,它成功地解析了Verilog文件,并进行了一些突出显示/完成等
这是我的代码https://github.com/MrTsepa/jetbrains-verilog-plugin
首先,我使用一些ANTLR工具(嵌入Idea的ANTLR插件中)生成ANTLR AST树,然后通过ANTLR适配器