首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在systemverilog中使用模块中的struct数据类型

在systemverilog中使用模块中的struct数据类型
EN

Stack Overflow用户
提问于 2018-03-04 23:51:28
回答 1查看 1.6K关注 0票数 2

我需要在SystemVerilog的模块中使用struct。结构的某些成员包含一个数组。我得到错误“不兼容的复杂类型分配”。Common.sv中包含了以下结构:

代码语言:javascript
复制
typedef struct {
     logic[1:0] num;
     logic val;
   } lit;

typedef lit lit_array[1:0];

typedef struct {
    lit_array lits;
    logic[1:0] len;
   } clause;

typedef clause clause_array[2:0];

typedef struct {
     clause_array clauses;
     logic[2:0] len;
   } formula;

typedef formula formula_array[4:0];

当我试图像下面这样在模块中使用“公式”数据类型时,我会得到“不兼容的复杂类型赋值”错误。下面是代码。

代码语言:javascript
复制
`include "common.sv"
module propagateliteral(input logic clock, reset, find, 
                        input lit in_lit, 
                        input formula in_formula, 
                        output logic ended, empty_clause, empty_formula);
//my system-verilog code

testbench代码:

代码语言:javascript
复制
`include "common.sv"
module pl_test();
logic clock, reset, find;
lit in_lit;
formula in_formula;
logic ended, empty_clause, empty_formula;

propagateliteral test1(clock, reset, find, in_lit, in_formula, ended, 
                       empty_clause, empty_formula);
always
begin
clock=1'b1; #50; clock=1'b0; #50;
end

initial
begin
reset=1'b1; find=1'b0;
#160;
reset=1'b0; find=1'b0;
#100;
reset=1'b0; find=1'b1; in_lit='{2'b01,1'b1};
in_formula='{{{{{2'b01,1'b1},{2'b10,1'b1},{2'b00,1'b1}},2'b10}, //clause0
        {{{2'b10,1'b1},{2'b11,1'b1},{2'b00,1'b1}},2'b10}, //clause1
        {{{2'b01,1'b1},{2'b10,1'b1},{2'b11,1'b1}},2'b11}, //clause2
        {{{2'b01,1'b0},{2'b10,1'b1},{2'b11,1'b0}},2'b11}, //clause3
        {{{2'b01,1'b0},{2'b10,1'b1},{2'b11,1'b0}},2'b11}, //clause4
        {{{2'b01,1'b0},{2'b10,1'b1},{2'b11,1'b0}},2'b11}, //clause5
        {{{2'b01,1'b0},{2'b10,1'b1},{2'b11,1'b0}},2'b11}},3'b100}; //clause6
end
endmodule

在进行了一些搜索之后,我发现无法传递未打包的struct数据类型。是否有更好的方法来重新定义这些结构,以便我可以在模块中使用它们。对不起,我是SystemVerilog的新手,我可能没有使用正确的技术术语来描述我的问题。任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-05 00:11:11

您需要确保struct定义来自同一个包,然后为每个模块重复导入相同的包。请参阅http://go.mentor.com/package-import-versus-include

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49101741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档