Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[SystemC] systemC的SC_CTOR語法

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2008-7-9 14:31:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近被迫看一些systemC的原碼,有一些問題想問人一下:
6 Y, u( B$ e" G+ [一般書籍都說SC_CTOR(module name)後就接左大括號{,可是我看的例子不是,如下:  q2 y1 f/ d' r- x3 z7 D
SC_MODULE(aaa)
, e' H3 i" b- x0 u{/ Q0 L2 X) t( g% T* d- Y
        sc_in<sc_logic > aClk;) M9 p) V8 u3 A" a0 h' K  X
        sc_in<sc_logic > bClk;# G$ L. B& ^  m- B+ y( \
             .
9 x( \# z+ |6 J, N9 s; x/ k, x             .7 I* ?$ F+ P3 x4 g3 m3 s
             .
. `6 }" K" ?6 s# v        SC_CTOR(aaa) :
0 q2 [" E8 j- |1 e+ ?7 S                aClk("aClk"),, n; Y( p7 {2 Q
                bClk("bClk"),
+ O7 j& L! Y0 ^. g/ {' _5 M             .- J' P5 ?( {$ Y1 s
             .$ I* S" i" c- w" Z0 Y
             .  z" J) [9 k$ U
        {
/ C9 F4 W4 W. M& O& e( F9 o             .
$ T+ C1 U# r4 b0 @% B6 P# t( A0 V- i0 `             .8 ?% W. a0 ^6 q. w
             .
- j  g% }4 [( g8 P/ ]6 w- M        }
. W, i3 M; O& Z# V- u$ Q9 ~0 `# H        ~aaa()
" O6 I6 Y4 C7 m% A        {$ W# u2 J8 R$ `1 R- F5 }
        }
' z& l9 f& Y1 b! [8 F- V" p4 n" P};% W7 W4 m* N8 C3 o5 _% i5 k1 F
SC_CTOR(aaa)後接的是:,aClk("aClk")與bClk("bClk"),請問是甚麼意思?' I( D3 e9 M& ?. P" A% j
又這樣的寫法是systemC還是C++定義的?
# n- {. U& U* [5 a謝謝。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂2 踩 分享分享
2#
發表於 2008-7-10 17:14:00 | 只看該作者
那應該是做port initializations.3 x3 t* w$ S3 X3 Q  }0 }% V  M
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.
0 h! W' \! w; @3 H. ]constructor的定義跟C++ member function 的定義類似,SC_MODULE port 宣告是parameter,6 _% g$ ?) l+ U+ d4 u
然後用SC_CTOR  去assign 這些 ports 的values 到SC_MODULE 的內部private variables) M: C* q* |( {% t
aClk,bClk 等.當每次SC_MODULE 被called,SC_CTOR  就會把SC_MODULE 的port與aClk,bClk 等
& u2 h1 z% [% t& I3 Z內部variables link起來.; }9 C; n% F1 Y. w0 P/ A% v
如果SC_MODULE 有宣告member module instance,即sub-design 的話,在SC_CTOR  也是要作4 L# `" ?% ^, z& h" F& }6 L2 [9 H
類似的動作.例如,' m" w$ N1 l' F' T, J6 R7 g4 `
SC_MODULE(AAA){
! X! o! s& g7 ]* ZMemory BBB;8 d: P' y: X! ~2 J% Q/ g
Memory CCC;
8 a/ [: O) k1 GSC_CTOR(AAA):
$ H3 X: d- T, N4 }7 G2 C' _! Y, h$ x0 LBBB("BBB"),-------------->> member initialized/ D0 H0 r5 i/ ^% y3 R/ H
CCC("CCC") -------------->> member initialized 5 ^7 S/ z. P' t& t/ C
{2 S4 j' _$ i6 K' b3 Q' j" \
, |/ H& u! g# Z: `% q5 `
}" ^1 L' w2 T) g" U/ o
};這種instantiate方式叫direct instantiation.
5#
 樓主| 發表於 2008-7-18 10:02:45 | 只看該作者
謝謝kevin的回答,好多年沒看程式書籍了,一時之間要搞懂,真不容易。' W8 d2 r' X$ l  g
不過您的解釋是否是定義在system C 2.0裡?7 T* f6 ^# e, Y' a9 M/ R! l: E

1 j4 n& }: \* i+ N& [1 b[ 本帖最後由 jerryyao 於 2008-7-18 10:05 AM 編輯 ]
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-4 01:00 PM , Processed in 0.105006 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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