Typedef Enum - 在顶层模块和端口连接处实例化

Typedef Enum - Instantiation at top module and port connection

我正在尝试在顶层模块实例化一个状态机,并连接顶层端口的状态以在调试过程中探测它们。我正在尝试如下示例中的类似操作:

 .state[0](DEBUG_1),
 .state[1](DEBUG_2),

DEBUG_1DEBUG_2是顶层模块的输出端口,我想在顶层逻辑探测这些信号。

以上在 SystemVerilog 中不工作并给出错误。还有什么方法可以做到这一点?


      package states;

      typedef enum logic [2:0] {RE = 3'b000, 
                    NOR = 3'b001, 
                    WD = 3'b011,
                    TO = 3'b010,
                    EVL = 3'b110,
                    DEC = 3'b111} state_t;

       endpackage

     import states::*; 
     module fsm (
     input                   clk,                    
     input                   reset,
      output  state_t state
     );

    import rtl_pkg::*;
    import states::*; 
    module top (
    output   logic        DEBUG_1,                       
    output   logic        DEBUG_2                      
    );  

 fsm fsm_inst (
.clk(sys_clk),                    
.reset(sys_reset), 
.state[0](DEBUG_1),
.state[1](DEBUG_2),
.state[2](DEBUG_3),
);

 ERROR - (VERI-1137) syntax error near '['
 ERROR -  module top ignored due to previous errors

这是消除编译错误的一种方法:

module top (
    output   logic        DEBUG_1,                       
    output   logic        DEBUG_2, DEBUG_3                      
);  

     // ... signal declarations

     fsm fsm_inst (
        .clk   (sys_clk),                    
        .reset (sys_reset), 
        .state ({DEBUG_3, DEBUG_2, DEBUG_1})
    );
endmodule

使用 {} 连接 3 个 DEBUG 位,然后将其直接连接到 state 端口。