微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 关于SV中扩展类的copy函数的疑问

关于SV中扩展类的copy函数的疑问

时间:10-02 整理:3721RD 点击:
最近在学习systemverilog,读的是经典教材《SystemVerilog for Verification》Chris Spear写的。8.5.1节中对象的复制搞不明白是啥意思。代码如下:
1. 首先在基类中,采用使用copy_data函数的写法
class Transaction;
    rand bit[31:0] src, dst,data[8];
    bit[31:0] crc;
    virtual function void copy_data(input Transaction tr);
        copy.src=src;
        copy.dst=dst;
        copy.data=data;
        copy.crc=crc;
    endfunction
    virtual function Transaction copy();
        copy=new();
        copy_data(copy);
    endfunction
endclass
2. 然后再定义一个使用copy_data函数的扩展类
class BadTr extends Transaction ;
    rand bit bad_crc;
    virtual function void copy_data(input Transaction tr);
        BadTr bad;
        super.copy_data(tr);
        $cast(bad,tr);
        bad.bad_crc=bad_crc;
    endfunction
    virtual function Transaction copy();
        BadTr bad;
        bad=new();
        copy_data(bad);
        return bad;
    endfunction
endclass:BadTr
哪个大神能帮忙一句句的解释一下?尤其是扩展类那里,完全晕了。多谢!

翻了几天前的帖子,还是没有人答,哎,结果都是自己慢慢摸索出来的。继续自答。
个人觉得:
class Transaction;
    rand bit[31:0] src, dst,data[8];
    bit[31:0] crc;
    virtual function void copy_data(input Transaction tr);
        copy.src=src;
        copy.dst=dst;
        copy.data=data;
        copy.crc=crc;
中的copy,应该改为tr。是书中写错了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top