2015-06-22 25 views
8

Sto provando a fare rientrare la verilog mode tutto usando 2 spazi eccetto decl e sempre. Questo è quello che ho aggiunto ai miei .emacs:Modifica rientranza della modalità verilog

;; `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) 

Questi è il risultato su un modulo di test

`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 

La parte che non è corretto è la lista di porta e il parametro. Anche la dichiarazione di count viene allineata alle dichiarazioni di porta, il che è strano. Vorrei che questo per assomigliare:

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

Sto usando emacs 24.3.1 io non sono sicuro di come tweak questo utilizzando solo le variabili previste dalla modalità di Verilog, qualsiasi suggerimento?

risposta

3

Questo non corrisponde esattamente al layout richiesto, ma quello che faccio è mettere il #( sotto la parola chiave del modulo e dividere il paren finale dall'elenco dei parametri e il paren iniziale per l'elenco delle porte su linee separate. Il risultato è sotto Tutta la mia rientro è per 3 spazi, ma si potrebbe tweak che per soddisfare le vostre esigenze:

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                                                               

La sezione Verilog modalità relative del mio file .emacs è qui sotto:

(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)) 
+0

cosa c'è nel vostro .emacs ? – igon