はじめに
Verilogのコード整形ソフトを公開しているのを見つけたのでやってみました。
導入
導入方法はGitHubからcloneしてmakeする方法か、実行ファイルを落としてそのまま使用する方法があります。どちらの方法もパスを通して使えるようにします。
GitHub
https://github.com/thomasrussellmurphy/istyle-verilog-formatter
実行ファイル
https://code.google.com/archive/p/istyle-verilog-formatter/
オプション
オプションを数パターン試したものを以下に記載します。
入力テキスト
reg [3:0] cnt;
always @(posedge clk or posedge rst) begin
if(rst) begin
cnt<=4'h0;
end else begin
cnt<=cnt+4'h1;
end
end
--style
ANSI style
./iStyle --style=ansi test.v
reg [3:0] cnt;
always @(posedge clk or posedge rst)
begin
if(rst)
begin
cnt<=4'h0;
end
else
begin
cnt<=cnt+4'h1;
end
end
Kernighan&Ritchie style
./iStyle --style=kr test.v
reg [3:0] cnt;
always @(posedge clk or posedge rst) begin
if(rst) begin
cnt<=4'h0;
end
else begin
cnt<=cnt+4'h1;
end
end
GNU style
./iStyle --style=gnu test.v
reg [3:0] cnt;
always @(posedge clk or posedge rst)
begin
if(rst)
begin
cnt<=4'h0;
end
else
begin
cnt<=cnt+4'h1;
end
end
-s
./iStyle -s2 test.v
スペース挿入オプションで**-s2で各インデントをスペース2で指定する(-s4**ならスペース4)
reg [3:0] cnt;
always @(posedge clk or posedge rst) begin
if(rst) begin
cnt<=4'h0;
end else begin
cnt<=cnt+4'h1;
end
end
-p
オペレータの周りだけにスペースパディングを挿入する。
reg [3: 0] cnt;
always @(posedge clk or posedge rst) begin
if (rst)
begin
cnt <= 4'h0;
end else
begin
cnt <= cnt + 4'h1;
end
end
-P
オペレータと括弧の周囲にスペースパディングを挿入する。
reg [ 3: 0 ] cnt;
always @( posedge clk or posedge rst ) begin
if ( rst )
begin
cnt <= 4'h0;
end else
begin
cnt <= cnt + 4'h1;
end
end
おわりに
ここには載せてはいませんが、module宣言のインデントがいい感じになりませんでした。Verilogは色々な書き方が出来るので何か強力なformatterがあると便利かもしれません。