2014-03-15 3 views
4

Вот моя проблема, я определяю список портов, как так:Нужна помощь Отключение повторного выравнивания комментариев после сигналов в списке портов. (Verilog-Mode)

module spi_jstk ( 
        input  clk,  // System Clock (40MHz) 
        input  reset, // Async Reset 
        input  START, // Initialize SPI Transfer 
        input [39:0] DATA, // Input Data to Transfer 
        input  SS,  // Chip Select 
        output  SCLK, // Serial Clock 
        input  MISO, // Master In Slave Out 
        output  MOSI); // Master Out Slave In 

выглядит довольно мило.

Теперь давайте говорить, что я добавить новый сигнал в этот список или просто нажмите TAB и это то, что происходит:

module spi_jstk ( 
        input  clk, // System Clock (40MHz) 
        input  reset, // Async Reset 
        input  START, // Initialize SPI Transfer 
        input [39:0] DATA, // Input Data to Transfer 
        input  SS, // Chip Select 
        output  SCLK, // Serial Clock 
        output  NEW, // NEW SIGNAL 
        input  MISO, // Master In Slave Out 
        output  MOSI); // Master Out Slave In 

Не знаю, почему он сделал это, чтобы мои комментарии, кто знает, как отключить это? Это действительно расстраивает.

Другая вещь, которую я не понимаю, заключается в том, что если я нажму TAB на список регулярных сигналов (не в списке портов), это не испортит мои комментарии. Эти комментарии остаются выровненными после вкладки.

// Signals 
    reg [2:0] q_state, n_state; 
    reg  q_clk; 
    reg  q_sck; //1 MHz ticks 
    reg [7:0] q_mosi; //1 MHz ticks 
    reg [7:0] q_miso; //1 MHz ticks 

Кто-нибудь знает, как я могу это исправить? Благодарю.

ответ

3

Это похоже на побочный эффект от поведения auto-lineup. Документация Chv Verilog-авто-линейке ввести описывает поведение

Type of statements to lineup across multiple lines. 
If 'all' is selected, then all line ups described below are done. 

If 'declarations', then just declarations are lined up with any 
preceding declarations, taking into account widths and the like, 
so or example the code: 
    reg [31:0] a; 
    reg b; 
would become 
    reg [31:0] a; 
    reg  b; 

If 'assignment', then assignments are lined up with any preceding 
assignments, so for example the code 
    a_long_variable <= b + c; 
    d = e + f; 
would become 
    a_long_variable <= b + c; 
    d    = e + f; 

Однако, кажется, в этом процессе удаляет лишние пробелы между кодом и комментариями, я не мог найти способ не допустить ошибок в комментариях (вы можете сообщить об ошибке своим поддерживающим операторам Mx verilog-submit-bug-report RET). Одним из вариантов может быть отключить это поведение, настроив переменную verilog-auto-lineup. Есть несколько способов сделать это

1) Вы можете использовать пользовательский интерфейс emacs для этого. Просто сделайте M-x customize-variable RET verilog-auto-lineup RET. И выберите нужное значение для переменной.

2) Вы можете добавить одно из следующих действий в файл инициализации

(setq verilog-auto-lineup nil) ;; disable completely 

(setq verilog-auto-lineup 'assignment) ;; disable only for declarations 
+0

Отлично, спасибо за советы и полезные объяснения. Я отправлю отчет об ошибке и буду использовать ваши предложения тем временем. – mrbean

+0

Рад, что я мог бы помочь :) –

 Смежные вопросы

  • Нет связанных вопросов^_^