簡體   English   中英

在 verilog 模式下使用 AUTOINST 時如何不分離輸出和輸入

[英]How to no separate into Output and Input when using AUTOINST with verilog-mode

對於像這樣的 InstModule

        module InstModule (
           input i1,
           output [31:0] o1,
           input i2,
           output [31:0] o2);
        endmodule

verilog-mode 將擴展它

           InstModule instName
             (/*AUTOINST*/);

進入這個

           InstModule instName
             (/*AUTOINST*/
          // Outputs
          .o1           (o1[31:0]),
          .o2           (o2[31:0]),
          // Inputs
          .i1           (i1),
          .i2           (i2));

但是,我希望它可以是這樣的。 就像聲明順序一樣,不分成兩組。

           InstModule instName
             (/*AUTOINST*/
          .i1           (i1),
          .o1           (o1[31:0]),
          .i2           (i2),
          .o2           (o2[31:0]));

是否有我可以依賴的 verilog 模式設置?

或者有沒有辦法修改 verilog-mode.el 來實現這個?

我搜索了https://veripool.org/verilog-mode/help/並且 verilog-auto-inst-sort 不是我需要的。

它改變了輸出和輸入列表中的順序,但仍然分成兩組。

做了一些進一步的研究,發現它可能與 system-verilog 的接口有關。

    module_a U_A(/*AUTOINST*/);
        
    interface_io U_IF(clk);
    interface interface_io;
        modport A(
            input i1 ,
            output [31:0] o1
        );  
        modport B(
            input i2 ,
            output [31:0] o2
        );  
    endinterface

然而,它導致了這個,類似於 2010 年的實施https://github.com/veripool/verilog-mode/issues/270

    module_a U_A(/*AUTOINST*/
         // Interfaces
         .U_IFA         (U_IFA.A),
         .U_IFB         (U_IFB.B));

我期待這樣的事情,這就是我想要的。

    module_a U_A(/*AUTOINST*/
         // U_IFA Interface
          .i1           (i1),
          .o1           (o1[31:0]),
         // UIFB Interface
          .i2           (i2),
          .o2           (o2[31:0]));

TL:DR有人已經在嘗試添加此功能,請稍等。

有人已經創建了一個問題,詢問完全相同的問題。

https://github.com/veripool/verilog-mode/issues/1745

貢獻者的回答如下。

不,因為 // Input 和 // Output 注釋是“神奇的”,所以它們需要按此順序排列。 對不起。

根據這個答案,我能期望的最好結果是這樣的。

    module_a U_A(/*AUTOINST*/
         // U_IFA Interface
           // Inputs
          .i1           (i1),
           // Outputs
          .o1           (o1[31:0]),
         // UIFB Interface
           // Inputs
          .i2           (i2),
           // Outputs
          .o2           (o2[31:0]));

另一個人也創建了一個類似的問題,說他/她會嘗試添加這個功能。 我會指望他/她。

https://github.com/veripool/verilog-mode/issues/1816

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM