1、sc_int<x>和sc_uint<x>的位宽不固定,位宽范围是1~64。例如:sc_int<35>/sc_uint<35>表示35bit数据类型。进行加减乘除运算时,会自动将数据扩展为64bit,进行运算后再根据目标结果进行位宽截断。
2、sc_bigint<x>/sc_biguint<x>可以表示超过64bit的大位宽数据。可以表示从1~任意值位宽的数据。使用sc_bigint<x>/sc_biguint<x>会影响仿真速度。sc_in<sc_uint<2> >中需要加空格。
3、sc_bit表示单bit数据,可以赋值为0或1。单bit signal推荐使用sc_signal<bool>。
4、sc_logic是一个枚举,里面封装了不同的逻辑状态,表示信号逻辑状态。0:逻辑0;1:逻辑1;Z:高阻态,断开连接;X:未知状态,不确定。W:弱驱动态,冲突连接;L:逻辑低电平;H:逻辑高电平;U:未定义状态,未初始化。
5、sc_bv<n> 中的每一位表示0或1,通过双引号赋值,如sc_bv<10> = “0101010011”,可以通过to_string()将sc_bv转化为字符串。sc_lv<n>每一位表示0/1/z/x,也是通过双引号赋值,如sc_lv<10> = “010x01z011”,也可以通过to_string()将sc_lv转化为字符串。
6、sc_fixed有符号小数、sc_ufixed无符号小数、sc_fix有符号可变位数小数、sc_ufix无符号可变位数小数。例子:sc_fixed<w1(总bit位数),iw1(整数部分字长),q_mode(去掉尾数),o_mode(溢出处理),n_bits(饱和bit位数)> fixed_x;其中iw1可以超过w1。
去掉尾数模式:
SC_RND四舍六入五成双、SC_RND_CONV四舍五入、SC_TRN:截断
对称饱和就是最小值正好是最大值的负数,循环饱和就是y随着x的增大进行循环饱和。
8、is_neg()查询定点对象是否是一个负数;is_zero查询定点对象是否为0;overflow_flag()查询定点对象是否发生过溢出;quantization_flag()查询定点对象是否发生过量化。
9、(a,b)把a和b串联起来,构成更大的数。a.and_reduce() 数a所有位与之后的结果;a.nand_reduce()数a所有位与之后取反的结果;a.or_reduce()数a所有位或之后的结果;a.nor_reduce()数a所有位或之后取反的结果;a.xor_reduce()数a所有位异或之后的结果;a.nxor_reduce()数a所有位异或后取反的结果。
10、to_string(NumberRepresentation,Format)方法将定点数据转化为字符串。