Typedef枚举-在顶部模块和端口连接处实例化



作为调试的一部分,我正在尝试在顶级模块上实例化一个状态机,并连接顶级端口上的状态以探测它们。我正在尝试下面的例子:

.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端口。

最新更新