繁体   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