typedef struct packed signed{
bit valid;
bit tag;
bit signed[31:0] data;
}my_data;
module structure_example5(input clk,input my_data a);
always@(posedge clk) begin
if(a.tag>a.valid)begin
$display("G");
end
else begin
$display("L");
end
end
endmodule:structure_example5
//TEST BENCH
module structure_example5_tb;
reg clk;
reg a.tag,a.valid;
structure_example5 uut (clk,a);
initial begin
#5
clk=0;
forever
#5clk=!clk;
end
initial begin
a.tag=1'b1;
a.valid=1'b0;
#50
$finish();
end
endmodule:structure_example5_tb
答案 0 :(得分:0)
除非结构是单向的,否则将测试平台和DUT端口连接在一起会有任何困难
在这里,您的测试平台代码注释掉结构成员的reg声明和使用结构声明
//reg a.tag,a.valid;
my_data a;
并尝试运行您的代码,可以在link
中找到更正/正常工作的代码<强>更新强>
根据Dave的建议,建议使用包与多个模块共享typedef是更好的解决方案,使用时,在包内定义所有typedef并在所需模块中导入包,它可以是任何模块,包括testbench和DUT。
例如:
package my_pkg;
typedef struct packed signed{
bit valid;
bit tag;
bit signed[31:0] data;
}my_data;
endpackage
无论何时您需要使用模块中的包内容
import my_pkg::*;
还使用包
更新了上述链接