这与我以前的question有关。请考虑以下模块声明:
module DFF(d, q, CLK, RESET);
parameter W = 2;
input [W-1:0] d;
input CLK;
input RESET;
output logic [W-1:0] q;
//....
endmodule
在d和q是struct类型的情况下实例化它的正确方法是什么?这是我的结构类型:
typedef struct { logic s1; logic s2} T_STATE;
我想为T_STATE变量类型实例化DFF:
T_STATE d, q;
DFF dff_inst (.d(d), .q(q), .CLK(CLK), .RESET(RESET));
我未能成功尝试以下事项:
typedef logic [$bits(T_STATE) - 1 : 0] T_STATE_LOGIC;
DFF dff_inst (.d(T_STATE_LOGIC'(d)), .q(T_STATE_LOGIC'(q)), .CLK(CLK), .RESET(RESET));
和
DFF dff_inst (.d({d}), .q({q}), .CLK(CLK), .RESET(RESET));
我需要代码可以合成。
答案 0 :(得分:4)
使其成为打包位的结构。
变化:
typedef struct { logic s1; logic s2} T_STATE;
为:
typedef struct packed { logic s1; logic s2;} T_STATE;
您的DDF
可以实例化为:
DFF dff_inst (.d(d), .q(q), .CLK(CLK), .RESET(RESET));
注意:您在结构定义中缺少s2
的分号。