You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让verilog-mode的AUTOINST不按输入输出分组展开实例?

Verilog-mode AUTOINST 定制需求解决方案

场景1:普通模块实例按端口声明顺序展开(取消输入输出分组)

原模块定义

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

实例声明

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-auto-inst-sort仅调整组内端口顺序,无法取消分组。要实现需求,可通过以下两种方式:

  • 变量配置尝试:先设置变量取消分组注释并强制保留原顺序,部分版本可生效:
    ;; 取消AUTOINST的分组注释
    (setq verilog-auto-inst-groups nil)
    ;; 自定义排序函数,直接返回原端口顺序
    (defun verilog-auto-inst-sort-function (ports) ports)
    (setq verilog-auto-inst-sort #'verilog-auto-inst-sort-function)
    
  • 修改核心代码:若上述配置无效,需修改verilog-mode.el:
    1. 找到verilog-auto-inst-make-port-alist函数,注释掉按输入/输出分组的筛选逻辑,保留模块原端口顺序的列表
    2. 修改verilog-auto-inst-print函数,去掉输出/输入的分组注释行,直接遍历端口列表生成连接代码

场景2:SystemVerilog Interface实例展开为modport端口而非接口连接

原Interface与模块定义

interface interface_io;
    modport A(
        input i1 ,
        output [31:0] o1
    );
    modport B(
        input i2 ,
        output [31:0] o2
    );
endinterface

module_a U_A(/*AUTOINST*/);

interface_io U_IF(clk);

当前展开结果

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]));

解决方法

verilog-mode默认将Interface作为整体实例连接,要展开为modport内的端口,需修改verilog-mode.el的Interface处理逻辑:

  1. 定位到处理/*AUTOINST*/中Interface的代码段(通常在verilog-auto-inst-scan或相关函数内)
  2. 修改识别逻辑,当检测到Interface的modport连接时,遍历modport内的所有端口,生成对应的单个端口连接行,而非生成整体Interface实例连接
  3. 添加对应modport的注释行,匹配期望的格式

内容的提问来源于stack exchange,提问作者sue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 06:50:41