|
SC_CTOR 從冒號:到大括號 { 之間 是 constructor SC_CTOR 的 initialization section.. b3 c: ~- H7 X7 l' D
constructor的定義跟C++ member function 的定義類似,SC_MODULE port 宣告是parameter,
R: m+ ]$ ^8 Y3 g# } `6 ^然後用SC_CTOR 去assign 這些 ports 的values 到SC_MODULE 的內部private variables
# o9 ^3 v' X/ i5 _ UaClk,bClk 等.當每次SC_MODULE 被called,SC_CTOR 就會把SC_MODULE 的port與aClk,bClk 等& g; g8 b# G/ s0 L
內部variables link起來.' R7 |* y# z5 }5 r: K8 T+ w! C
如果SC_MODULE 有宣告member module instance,即sub-design 的話,在SC_CTOR 也是要作
* N+ S2 U+ n, |1 P8 e) L9 n& I類似的動作.例如,7 G7 Y; Y5 c: E) E, ~
SC_MODULE(AAA){' b1 j) i! l5 y" k7 S! }/ W; {
Memory BBB;
* j+ i; C' [% S+ qMemory CCC;$ W" I. J5 F6 y- t1 o2 \
SC_CTOR(AAA): f. S& E2 K1 ~; }% n0 a4 t
BBB("BBB"),-------------->> member initialized
: l. [: K" z$ q/ U9 jCCC("CCC") -------------->> member initialized % w4 c9 k2 s1 ~1 P
{8 i0 Z2 v+ l! E& R
* i/ a8 o+ U+ ^* S}
! T# S8 i7 `- F* b0 H};這種instantiate方式叫direct instantiation. |
|