gpt4 book ai didi

emacs - 修改verilog模式缩进

转载 作者:行者123 更新时间:2023-12-01 23:00:55 24 4
gpt4 key购买 nike

我试图让verilog模式缩进除decls和always之外的所有内容,使用2个空格。这是我添加到 .emacs 中的内容:

;; `define are not indented                                                                                                                                                                                                                                                    
(setq verilog-indent-level-directive 0)
;; always, initial etc not indented
(setq verilog-indent-level-module 0)
;; logic declarations are not indented
(setq verilog-indent-level-declaration 0)
;;2 space indent
(setq verilog-indent-level 2)
;; no indent on list and no indent when on multiple lines
(setq verilog-indent-lists nil)
(setq verilog-cexp-indent 0)

这些是测试模块的结果

`ifndef MY_MODULE_SV
`define MY_MODULE_SV

module my_module #(
parameter MyPar1 = 16,
parameter MyPar2 = 32
) (
input logic clk,
input logic reset,
//comment indented weirdly
output logic [3:0] result
);

logic [3:0] count;


always @(posedge clk) begin
//comment indented ok
if (reset) begin
count <= 0;
result <= 0;
end
else begin
result <= count;
count <= count+1;
end
end

endmodule; // my_module

`endif

不正确的部分是端口和参数列表。此外,count 的声明与端口声明对齐,这很奇怪。我希望它看起来像:

module my_module #(                                                                                                                                                                                                                                                            
parameter MyPar1 = 16,
parameter MyPar2 = 32
) (
input logic clk,
input logic reset,
//result signal
output logic [3:0] result
);

我使用的是 emacs 24.3.1我不确定如何仅使用 verilog 模式提供的变量来调整它,有什么建议吗?

最佳答案

这与您请求的布局不完全匹配,但我所做的是将 #( 放在模块关键字下方,并将参数列表中的结束括号和端口列表的开始括号分开到单独的行上。结果如下。我的所有缩进都是 3 个空格,但您可以调整它以满足您的需要:

module my_module 
#(
parameter MyPar1 = 16,
parameter MyPar2 = 32
)
(
input logic clk,
input logic reset,
//comment indented weirdly
output logic [3:0] result
);

logic [3:0] count;

always @(posedge clk) begin
//comment indented ok
if (reset) begin
count <= 0;
result <= 0;
end
else begin
result <= count;
count <= count+1;
end
end

endmodule; // my_module

我的 .emacs 文件的 verilog 模式相关部分如下:

(custom-set-variables
'(verilog-align-ifelse t)
'(verilog-auto-delete-trailing-whitespace t)
'(verilog-auto-inst-param-value t)
'(verilog-auto-inst-vector nil)
'(verilog-auto-lineup (quote all))
'(verilog-auto-newline nil)
'(verilog-auto-save-policy nil)
'(verilog-auto-template-warn-unused t)
'(verilog-case-indent 3)
'(verilog-cexp-indent 3)
'(verilog-highlight-grouping-keywords t)
'(verilog-highlight-modules t)
'(verilog-indent-level 3)
'(verilog-indent-level-behavioral 3)
'(verilog-indent-level-declaration 3)
'(verilog-indent-level-module 3)
'(verilog-tab-to-comment t))

关于emacs - 修改verilog模式缩进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30986217/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com