![](/img/trans.png)
[英]How to get declaration order AUTOINST with emacs verilog-mode?
[英]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]));
另一个人也创建了一个类似的问题,说他/她会尝试添加这个功能。 我会指望他/她。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.