2015-06-22 33 views
8

Próbuję ustawić tryb verilog wciskając wszystko za pomocą 2 spacji, z wyjątkiem dekodowania i zawsze. To właśnie dodałem do moich .emacs:Modyfikowanie wcięcia trybu 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) 

Są to wynik na module testowym

`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 

Część, która nie jest poprawna znajduje się lista portów i parametr. Również deklaracja count jest dopasowywana do deklaracji portu, co jest dziwne. Chciałabym to wyglądać:

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

Używam emacs 24.3.1 nie jestem pewien, jak to przy użyciu tylko dostosować do zmiennych udostępnianych przez trybie verilog, jakieś sugestie?

Odpowiedz

3

To nie pasuje dokładnie do żądanego układu, ale to, co robię, umieszcza pod słowem kluczowym moduł #( i dzieli końcowy paren z listy parametrów i rozpoczyna paren dla listy portów na osobne linie. Wynik znajduje się poniżej. Wszystkie moje wcięcia jest na 3 pomieszczenia, ale można dostosować, że w zależności od potrzeb:

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                                                               

Tryb Verilog sekcja związana z moim pliku .emacs poniżej:

(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

Co znajduje się w .emacs ? – igon