作为调试的一部分,我正在尝试在顶级模块上实例化一个状态机,并连接顶级端口上的状态以探测它们。我正在尝试下面的例子:
.state[0](DEBUG_1),
.state[1](DEBUG_2),
DEBUG_1
和DEBUG_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
端口。