【问题标题】:Using the struct datatype in module in systemverilog在 systemverilog 的模块中使用 struct 数据类型
【发布时间】:2018-03-04 23:51:28
【问题描述】:

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

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];

当我尝试在如下模块中使用“公式”数据类型时,我收到“不兼容的复杂类型分配”错误。以下是代码。

`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

测试台代码:

`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 的新手,我可能没有使用正确的技术术语来描述我的问题。任何帮助表示赞赏。

【问题讨论】:

    标签: verilog system-verilog


    【解决方案1】:

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

    【讨论】:

    • 您的答案中链接的那篇文章非常有用,而且解释非常清楚。从这里“ asic-world.com/systemverilog/hierarchy1.html ”,我知道我必须保留include 语句而不是删除它,除了include 语句之外,我还必须添加import 语句。谢谢!
    猜你喜欢
    • 2014-01-27
    • 2017-06-21
    • 2023-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多