【UVM学习笔记】类的继承,string元素注意


class MSG_TRANSACTION extends uvm_sequence_item;
            int             index               =0          ;
            int             index_inpkg         =0          ;
            
            bit [07:00]     msgtype                         ;
            bit [15:00]     msglen                          ;
            byte unsigned   msgbody[$]                      ;
endclass

class MSG05_TRANSACTION extends MSG_TRANSACTION;
    bit     [4*8-1:00]      TradeDate   ;
    bit     [1*8-1:00]      Type        ;
    bit     [2*8-1:00]      Index       ;
    string                  MyString    ;

    `uvm_object_utils_begin(MSG05_TRANSACTION)
        `uvm_field_int(TradeDate   , UVM_ALL_ON | UVM_DEC | UVM_NOPACK)
        `uvm_field_int(Type        , UVM_ALL_ON | UVM_DEC | UVM_NOPACK)
        `uvm_field_int(Index       , UVM_ALL_ON | UVM_DEC | UVM_NOPACK)
        `uvm_field_int(MyString    , UVM_ALL_ON | UVM_STRING | UVM_NOPACK)
    `uvm_object_utils_end
    
endclass


initial begin
    MSG_TRANSACTION    tmpq[$];
    MSG05_TRANSACTION  msg05_tr;
    for(int i=0;i<10;i++) begin
        msg05_tr = new("msg05_tr");
        msg05_tr.MyString     = $sformatf("%0d", i);
        tmpq.push_back(msg05_tr);
    end

    foreach(tmpq[i])
        msg05_tr.print();  //你会发现,MyString    全都打印出最后一个值
    
end

猜测:string是不定长度的,内存分配空间可能不是跟固定长度的在一起的,所以改成定长的就可以了 如 bit [63:00] MyString    ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值