SystemC 数据类型

来源:互联网 发布:linux oracle启动 编辑:程序博客网 时间:2024/05/21 22:56

一. 关于赋值语句

    赋值的目标可以是:变量、信号、端口、位选择[]、范围Rang(),位选择运算[]和范围函数Rang()仅能作用于变量(向量类型,如sc_bv、sc_lv、sc_int、sc_uint、sc_bigint、sc_biguint)

二. to_string()

    向量类型变量可以使用to_string函数,第一个参数指定格式:SC_BIN、SC_OCT、SC_DEC、SC_HEX,第二个参数指定是否显示基数信息true、false

三. sc_bit/sc_bv

    常量:'0'以及'1'/0,1串

    局部变量可初始化为全1,如sc_bv<8>  temp  ('1');

四. sc_logic/sc_lv

    常量:'0','1','X','Z'或SC_LOGIC_0,SC_LOGIC_1,SC_LOGIC_X,SC_LOGIC_Z或sc_logic('0'),sc_logic('1'),sc_logic('X'),sc_logic('Z')/0,1,X,Z串

    局部变量可以初始化为全'X'或全'Z',如sc_lv<8>  temp('X');

五. sc_bv/sc_lv

    1. sc_bv/sc_lv不支持算术操作,若要完成算术运算,先赋值给signed/unsigned变量,运算后再回赋。

    2. sc_bv/sc_lv可以和signed/unsigned之间相互赋值,sc_bv/sc_lv之间也可相互赋值,但在赋值给非sc_lv时若包含'X'或'Z'时,则导致运行时警告并且结果不确定。

    3. signed赋值给sc_bv/sc_lv时进行符号扩展,unsigned赋值给sc_bv/sc_lv时进行0扩展。

六. sc_int/sc_uint

    1. 固定精度,最大宽度64位,底层实现以及底层运算均按64位进行,不足64位时按照类型进行扩展,运算结果根据精度进行截断。

    2. sc_int/sc_uint之间可相互赋值,底层按64位进行,最后根据精度截断。

    3. 进行位运算操作时,用等效的位向量表示形式参与运算。

    4. 与其他C++整数类型兼容

七. sc_bigint/sc_biguint

    任意精度类型,同六的3和4。

八. 端口/信号多驱动

    普通类型的端口以及信号不能在多个进程中赋值,但可以通过使用Resolved类型来解决此问题,sc_out_resoleved、sc_inout_resolved、sc_signal_resolved、sc_out_rv<WIDTH>、sc_inout_rv<WIDTH>、sc_signal_rv<WIDTH>

原创粉丝点击