在 systemC
中变量分三种
- 变量(variable):普通 C 变量
- 信号(signal):组件内连接(
sc_signal
) - 端口(port):I/O 口(
sc_in / sc_out
)
注意这里也有“变量”,所以在 systemC
中一般把常规意义上的“变量”称呼为“值保持器”
1 | // 1. 变量 |
注意这里信号和端口都是用来描述硬件结构的,所有想要对于“值保持器”的操作都应该传递给“变量”后再操作,具体见下节。
所有的值保持器都可以作为 C 语法中的“变量”,使用数组、指针等。
在 SC 中,特色的可作为左值和右值的有五种:
- 变量
- 信号
- 端口
- 位选取结果
[]
- 位区间选取结果
.range()
位选取[]
和位区间选取.range()
1 | sc_signal<sc_bv<4>> dval; |
还有一种比较有特色的分配方式,只有当是位向量 vector 类型时(如 sc_bv 或者 sc_lv 等)
1 | sc_bv<8> ctrl_bus; |
位 / 逻辑类型
此类型只能做逻辑运算与或非,不能做算数运算
位类型 ('1' / '0')
1 | // 1 bit |
逻辑类型 ('1' / '0' / 'X' / 'Z')
1 | sc_logic_0 // '0' |
1 | // 1 bit |