我正在尝试使用Java创建一个解析器(使用Netbeans),该解析器可以将任意Verilog文件作为输入并生成一个包含gates的网表作为输出。网表不必进行优化。

我有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


我想确定输入和输出端口的名称以及它们的大小。我还想标识出always块以及case语句块以及Case语句中的每个赋值。

所以我的疑问是:

1)如何将其集成到我的Java程序中

2)如何使用此Verilog语法文件并阅读上述Verilog代码以识别输入,输出,case语句,assign语句。

谢谢

最佳答案

我最近解决了类似的任务。我开始使用与ANTLR相同的语法文件为Verilog创建IntelliJ插件。当前,它可以成功解析Verilog文件并进行一些突出显示/完成操作等。

这是我的代码https://github.com/MrTsepa/jetbrains-verilog-plugin

首先,我使用一些ANTLR工具(嵌入在Idea的ANTLR插件中)生成ANTLR AST树,然后通过ANTLR adapter将该树调整为IntelliJ的AST格式(PSI树)。

关于java - 使用ANTLR语法进行Verilog解析,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20507920/

10-12 03:15