SystemC 數據類型

一. 關於賦值語句

    賦值的目標可以是:變量、信號、端口、位選擇[]、範圍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>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章