【问题标题】:Decode name of packed struct member based on bit position根据位位置解码打包结构成员的名称
【发布时间】:2016-03-25 20:55:27
【问题描述】:

我有一个用脚本生成的寄存器映射。模块的输出是一个巨大的打包结构。这通常不是问题,但是当我对代码进行 lint 时,会收到如下警告:

*W,UNCONO (./module_name.v,158):: 'reg[1415]' 未连接。

所以我可以看到我的一个寄存器位没有被使用,这很糟糕,但它是哪一个?如何将打包结构中的位位置映射回命名的结构成员?

为了澄清,我正在寻找某种函数,它将位位置作为输入并返回结构成员名称作为输出。

【问题讨论】:

    标签: system-verilog


    【解决方案1】:

    在压缩结构中,位从右到左编号,从 0 到 N-1。所以,如果你有

    typedef struct packed {
    logic sign;
    logic [7:0] exponent;
    logic [22:0] mantissa;
    } Float32;
    
    Float32 F;
    

    然后

    assert (F.sign === F[31]);
    assert (F.exponent === F[30:23]);
    assert (F.mantissa === F[22:0]);
    

    【讨论】:

    • 是的,我明白这一点,但在这种情况下,我的结构有数千个元素,所以我不确定将#1415 位映射到结构成员而不计数的简单方法。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多