您的位置:首页 > 编程语言 > Go语言

Chapter 3 -- SystemC From Gound 读书心得

2010-11-26 17:46 274 查看
supported data type = Native C++ data type + STL data type + SystemC datatype( logic, integers and fixed-point)

systemc 还提供了systemc data type 和 C++ data type 之间的转化函数。 所有的systemc data type都属于sc_dt namespace。

1. logic : sc_bv<W>, sc_lv<W>, bool, sc_logic<W>,

注意sc_bit 被 C++里面的 bool取代了。

2. integer: sc_int<W>, sc_uint<W> (其中W<=64) , sc_bigint<BITWIDTH>, sc_biguint<BITWIDTH> (其中BITWIDTH>64)

systemC的integer比传统的C++的integer类型提供了bit操作和concatination以及可配置位宽。

3. fixed point: sc_fixed<WL,IWL[,QUANT[,OVFLW[,NBITS]>

以前DSP算法都是用C++的浮点直接表示,但是为了更精确以及综合的方便,systemC引入了fixed-point类型。它定义了整个的bit宽度以及整数部分的bit宽度(WL,IWL)。加_fast后缀的指定精度限制再53bit之内。ed这个过去式表明在compile的时候就固定了,无法改变。

4. 由于systemc扩展了自己的datatype,这些datatype就是一个类。它们的赋值以及初始化,有时会使用字符串。譬如

sc_lv<6> mask = "10ZX11"

这些datatype变量值的打印,实际上是先把它们转化成字符串,然后打印出来。譬如

cout<<mask.to_string(SC_BIN, true)<<endl;

string to_string(sc_numrep rep, bool wprefix);


当然,也可以直接给mask赋值(因为systemc重载了=以及stream operator << , >>):
sc_lv<6> mask = 15;
cout<< mask

5. SystemC data type重载并扩展了所有C++的操作符。类似于C++,不同类型的data type进行运算必须显示的转化其中之一。

sc_int<64> g("0x7000000000000000");
sc_int<64> h("0x7000000000000000");
sc_int<64> i("0x7000000000000000");
sc_bigint<70> bigsum = g + h + i; // Doesn’t work
bigsum = sc_bigint<70>(g) + h + i;// Works


6. 常用的STL
vector<T>, map<T>,set<T>, List<T>,deque<T>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: