Typedef Enum - 在顶层模块和端口连接处实例化
Typedef Enum - Instantiation at top module and port connection
我正在尝试在顶层模块实例化一个状态机,并连接顶层端口的状态以在调试过程中探测它们。我正在尝试如下示例中的类似操作:
.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
端口。
我正在尝试在顶层模块实例化一个状态机,并连接顶层端口的状态以在调试过程中探测它们。我正在尝试如下示例中的类似操作:
.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
端口。