修改verilog模式缩进

时间:2015-06-22 17:29:35

标签: emacs verilog indentation system-verilog emacs24

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

1 个答案:

答案 0 :(得分:3)

这与您请求的布局完全匹配,但我所做的是将RewriteCond %{HTTP_HOST} !^exploreWorlds\.co\.uk$1 [NC] RewriteRule ^(.*)$ http://www.exploreWorlds.co.uk/$1 [R=301,L] 置于模块关键字下方,并将参数列表中的结束列表和端口列表的begin paren拆分为单独的线。结果如下。我的所有缩进都是3个空格,但您可以调整它以满足您的需求:

#(

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

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