![](/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.