微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > 关于SV中mailbox的问题

关于SV中mailbox的问题

时间:10-02 整理:3721RD 点击:
下面程序在Questa6.4中运行时,如果没有加#(Transaction),就会报下面的错误:
Cannot assign an unpacked type to a packed type.
请大牛解释一下为什么呢?
谢谢了。
class Transaction;
..................
endclass

class Generator;
mailbox #(Transaction) gen2drv;//Transaction tr;

function new(input mailbox #(Transaction) gen2drv);
this.gen2drv = gen2drv;//this->类一级变量
endfunction

task run;
forever begin
tr = new();//创建事务
assert(tr.randomize);//随机化
gen2drv.put(tr);//送入驱动器
end
endtask
endclass

请问这是运行时的错吗?能够编译对吧

vsim 时出错的

有了transaction的定义,会使得该mailbox的使用在定义的时候就限制在某一类型的class,减少出错机会,a trade off

那这里为什么会出错呢?
如果function new的输入接口中去掉input 这个关键字是不是会比较好?
如果有input 没有类型,是否会直接默认为logic类型?
试试把input去掉,把transaction去掉看看吧

我改这个错 ,改了几天啦
非常感谢

questasim 对SV语法的支持中,针对untype的mailbox是不支持的!

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

网站地图

Top