Verilog/System Verilog ファイルからモジュール名とインスタンス名を抽出する

Verilog/System Verilog ファイルからモジュール名とインスタンス名を抽出する

module_nameとinstance_nameを抽出したいVerilog / System Verilogファイルがあります。

次の1行から:

module_name#(.ANY_PARAMETER(.ANY_PARAMETER)、.ANY_PARAMETER_1(.ANY_PARAMETER_1))インスタンス名(.any_connection(any_connection));

出力は次のようになります。

モジュール名インスタンス名

どうすればいいですか?

ベストアンサー1

私たちはバランスをとり、中かっこが入れ子になった状況に対処する必要がありますrecursive regex

最初に角かっこ「(」で始まる正規表現を作成し、角かっこでは$rないコンテンツ(*のために存在しない可能性があります)を見つけて、角かっこではないコンテンツをもう一度繰り返し、最後に閉じる角かっこのバランスをとります。

$ perl -lne '
    $r = qr/\( [^()]* (?:(??{ $r }) [^()]*)* \)/x;
    print $1 =~ y/\t #//dr while /\G([^()]*) $r/xg;
' file.sv

結果:

module_name
instance_name

おすすめ記事