【问题标题】:Modify verilog mode indentation修改verilog模式缩进
【发布时间】:2015-06-22 17:29:35
【问题描述】:

我试图让 verilog 模式使用 2 个空格缩进除 decls 之外的所有内容,并且总是。这是我添加到我的 .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 模式提供的变量来调整它,有什么建议吗?

【问题讨论】:

    标签: emacs verilog indentation system-verilog emacs24


    【解决方案1】:

    这与您请求的布局不完全匹配,但我所做的是将#( 放在模块关键字下方,并将参数列表的结尾括号和端口列表的开始括号分开到单独的行中。结果如下。我所有的缩进都是 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 中有什么?
    猜你喜欢
    • 2020-07-24
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    相关资源
    最近更新 更多