Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 10773|回復: 4
打印 上一主題 下一主題

[SystemC] systemC的SC_CTOR語法

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2008-7-9 14:31:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近被迫看一些systemC的原碼,有一些問題想問人一下:/ x8 `$ t6 Q3 S: v7 x% L7 `
一般書籍都說SC_CTOR(module name)後就接左大括號{,可是我看的例子不是,如下:
3 l3 F% J/ r+ C9 _8 [, K4 [SC_MODULE(aaa)3 f# H! z% D+ {
{
% Y, M: Q$ E) l9 E& I$ j1 w( N" V        sc_in<sc_logic > aClk;
; r9 \! U6 a+ M. `: F8 z  x        sc_in<sc_logic > bClk;
4 R* @8 j' F2 u. E7 z, z             .
. w# u3 l6 G! G; P; h             .
: W$ C$ y2 D# M) u             .9 [5 M# Z& x4 w+ o2 ^  L6 I3 D
        SC_CTOR(aaa) :6 ?# U$ O1 R! U# i" Q0 C
                aClk("aClk"),! S  y( @* ~- u# A4 J
                bClk("bClk"),+ _9 `# C' o! {9 u
             .8 k4 Z3 V- ]( Y- s. d! S
             .
9 ^* a9 F# @+ ^4 B9 T             .
8 a! T, j2 l- e5 p" w7 Q* t        {/ @" M4 Q' g( K9 c
             .
7 w$ j+ S( s. b8 ]' m" o$ Q4 L" G& F             .- ^3 q) v' M  k4 \; f' e
             .; q5 i. L5 z+ k" F' s* N
        }% ?) D9 n/ Y$ M3 H- [3 X7 ]
        ~aaa()
: I3 T/ I' m% L% U) }/ Z        {
" h* R6 z; z7 F1 ^( `3 i        }# u& ]7 B5 b% `. g  p
};# {! n7 p" P3 f! b! D
SC_CTOR(aaa)後接的是:,aClk("aClk")與bClk("bClk"),請問是甚麼意思?7 p1 p2 E/ g1 e. n( w4 E$ v6 R3 V3 o
又這樣的寫法是systemC還是C++定義的?
' Q) Q/ Q! o5 k! k& Q7 L謝謝。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂2 踩 分享分享
2#
發表於 2008-7-10 17:14:00 | 只看該作者
那應該是做port initializations.' n, Z8 \  U3 B7 ]
C++ semantics require use of an initializer list for "direct"(not indirect) approach.
3#
 樓主| 發表於 2008-7-14 16:07:03 | 只看該作者
謝謝您的回覆,不過我不是很懂您的意思,您提到port initializations,感覺是設定port的初值,可是他不是1,0,x,z等值,而是與自己相同名稱aClk("aClk"),能否請您再說明一下,謝謝。
4#
發表於 2008-7-16 13:08:41 | 只看該作者
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.
5#
 樓主| 發表於 2008-7-18 10:02:45 | 只看該作者
謝謝kevin的回答,好多年沒看程式書籍了,一時之間要搞懂,真不容易。
5 q, o. F" Y7 N5 Q* P# u不過您的解釋是否是定義在system C 2.0裡?  J5 x7 {& z( Z, W: m5 @. ]: q: a

2 e2 ]  g4 G% q; W- e. n# T[ 本帖最後由 jerryyao 於 2008-7-18 10:05 AM 編輯 ]
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2025-4-3 08:17 PM , Processed in 0.194011 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表