代码之家  ›  专栏  ›  技术社区  ›  None

如何将“结构数组”与“信号数组”匹配?(未打包)

  •  0
  • None  · 技术社区  · 6 年前

    我有一个模块:

    module test(
        inout logic [3:0] data [NUM],
        ...
        inout logic       anything [NUM]
    );
    

    通过

    struct {
      logic [3:0] data; // tri-states, can't use tri in struct
      ...
      logic       anything; 
    } dut [NUM];
    
    test test_i(
      .data     (dut.data), // should be same as [3:0] data [NUM]
      ...
      .anything (dut.anything)
    );
    

    我得到: 无法选择 data 在里面 dut 由于尺寸不匹配。

    为什么? 我该怎么做才能将我的解包结构与modport匹配?

    有很多信号,所以我想用 struct 而不是几个逻辑阵列信号。

    0 回复  |  直到 6 年前
        1
  •  2
  •   dave_59    6 年前

    可以将结构用作连接的数据类型,只需 typedef

    typedef struct {
      logic [3:0] data;
      ...
      logic       anything; 
    } dut_t;
    tri dut_t dut[NUM];
    

    (见 this post (如需更详细的解释)

    但更大的问题是,不能对结构的数组进行切片以获得结构成员数组。只能选择数组的一个元素,然后选择一个成员,即。 dut[0].data

    你必须这么做

    typedef struct {
      logic [3:0] data[NUM];
      ...
      logic       anything[NUM]; 
    } dut_t;
    tri dut_t dut;
    

    这可能会破坏你想做的事情的目的。

    推荐文章