systemc编译遇到的几个错误,急求
时间:10-02
整理:3721RD
点击:
有几个错误,总是不知道怎么回事,求点拨1.if( ~( (xa_t.or_reduce())|(ya_t.or_reduce()) ) )
这里xa_t和ya_t都是sc_bv<256>变量
出错
error C2666: '|' : 10 overloads have similar conversions
2.divide_negya_t = (1,~ya_t) + 1;
divide_negya_t和ya_t都是sc_biguint类型
出错
error C2678: binary '+' : no operator defined which takes a left-hand operand of type 'class sc_dt::sc_unsigned_concref_r<class sc_dt::sc_unsigned,class sc_dt::sc_unsigned>' (or there is no acceptable conversion)
这个error C2678还有好几处同样的问题
比如
gety_resultxac_t = (0,gety_xa_t) + gety_negxc_t;
这个_t都是sc_biguint型,是由信号赋值过来的
3.multi_datax_t = ( 0,0,multi_x_t );
_t也是sc_biguint,并由信号赋值过来
出错
error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'class sc_dt::sc_unsigned_concref_r<class sc_dt::sc_unsigned,class sc_dt::sc_unsigned>' (or there is no acceptable conversion)
这个错也有好几处
困扰好几天了,也不知道怎么回事
这里xa_t和ya_t都是sc_bv<256>变量
出错
error C2666: '|' : 10 overloads have similar conversions
2.divide_negya_t = (1,~ya_t) + 1;
divide_negya_t和ya_t都是sc_biguint类型
出错
error C2678: binary '+' : no operator defined which takes a left-hand operand of type 'class sc_dt::sc_unsigned_concref_r<class sc_dt::sc_unsigned,class sc_dt::sc_unsigned>' (or there is no acceptable conversion)
这个error C2678还有好几处同样的问题
比如
gety_resultxac_t = (0,gety_xa_t) + gety_negxc_t;
这个_t都是sc_biguint型,是由信号赋值过来的
3.multi_datax_t = ( 0,0,multi_x_t );
_t也是sc_biguint,并由信号赋值过来
出错
error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'class sc_dt::sc_unsigned_concref_r<class sc_dt::sc_unsigned,class sc_dt::sc_unsigned>' (or there is no acceptable conversion)
这个错也有好几处
困扰好几天了,也不知道怎么回事
基本都是强制类型转换出错,我觉得是你的括号操作出了问题。
SC不像verilog等语言那样数据类型少,而是有多种类型。
你不要想当然的认为各种数据间的操作都是自然而然的,最好参考SC的2011标准,里面有些例子。