Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[SystemC] systemC的SC_CTOR語法

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2008-7-9 14:31:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近被迫看一些systemC的原碼,有一些問題想問人一下:
2 j6 X% n! W! N. @" d$ q一般書籍都說SC_CTOR(module name)後就接左大括號{,可是我看的例子不是,如下:
1 |4 o- T. x  t2 TSC_MODULE(aaa)# {: D4 K& k1 y* N
{
& C, u7 C7 j, H) H4 ?7 H2 C" Q: W        sc_in<sc_logic > aClk;. [: F2 c9 `/ c1 T
        sc_in<sc_logic > bClk;8 `% E( L6 F! ]% Z0 m) Y! y
             .
7 N- x7 S7 p( o! R             .
2 _+ |3 |2 G9 [6 ]6 a6 }# p+ `             .% A; l* o1 I3 l2 B; S
        SC_CTOR(aaa) :% J% n; ~3 O+ y- v7 s( M
                aClk("aClk"),& W  y/ M+ Q$ ]8 H( h* v
                bClk("bClk"),% f" A1 k! o4 N# K% ~5 R9 r" @
             .
0 Q- |1 g$ y7 g; v+ j             .# u8 F; I  J5 V0 m# V7 o4 ~
             .
/ V6 L! t! W6 |6 T        {6 |; n3 _# [9 K
             .
+ Z4 e1 M2 @. M             .8 o: y# C: Z0 f/ r" r1 S5 t
             .
5 I) {+ ~& J- z/ W6 a/ n# l        }
5 }! f: T# c* m7 Y  D5 z        ~aaa()
, @9 C2 N' R5 q# }1 ?7 Y/ ^        {7 ]- |0 [; k. T- F+ K- ]
        }% F- Y5 l& p2 r( L/ C0 D# F
};; ^( M7 w+ G. |1 L
SC_CTOR(aaa)後接的是:,aClk("aClk")與bClk("bClk"),請問是甚麼意思?8 s0 o9 j- R% j9 U
又這樣的寫法是systemC還是C++定義的?
4 N# l" z2 K+ J謝謝。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂2 踩 分享分享
2#
發表於 2008-7-10 17:14:00 | 只看該作者
那應該是做port initializations.
5 T; j6 w+ y: Y4 sC++ 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.
4 g9 X7 C6 [- h& F5 T' F9 Gconstructor的定義跟C++ member function 的定義類似,SC_MODULE port 宣告是parameter,
2 C' |& b/ ]& ^: e& E7 X( G然後用SC_CTOR  去assign 這些 ports 的values 到SC_MODULE 的內部private variables) o" v$ d/ ?9 k$ o: F- a4 L! B& a
aClk,bClk 等.當每次SC_MODULE 被called,SC_CTOR  就會把SC_MODULE 的port與aClk,bClk 等; A9 }. d- P1 A" q+ W
內部variables link起來.
# u/ r. Z. j; z如果SC_MODULE 有宣告member module instance,即sub-design 的話,在SC_CTOR  也是要作1 X7 I, [) b/ n% d
類似的動作.例如,
0 N* T; Z: Z) i* o. x7 w1 L7 oSC_MODULE(AAA){
( `! f( y- m( p  N2 v2 }Memory BBB;8 i% H5 O& @" @* b+ j* y
Memory CCC;) o( S" w5 d9 T$ Y- R$ Y( }
SC_CTOR(AAA):
# R* Q( l* U8 i- V% u: FBBB("BBB"),-------------->> member initialized
2 q8 A) D2 g1 n- E( FCCC("CCC") -------------->> member initialized , v( F! M+ q  U9 f
{- H9 x+ V# N9 v6 {6 D1 B0 s

) _; s) @9 G8 m  [( v5 g}, u1 n2 d4 ^" x% ]; }% ]+ S
};這種instantiate方式叫direct instantiation.
5#
 樓主| 發表於 2008-7-18 10:02:45 | 只看該作者
謝謝kevin的回答,好多年沒看程式書籍了,一時之間要搞懂,真不容易。1 j6 j: i5 k+ c; V- I! L, T+ m- k
不過您的解釋是否是定義在system C 2.0裡?" D6 ~  ]% Q9 I, q: Y: G/ Y6 [; A

7 K1 ?. J8 d) a( w( W8 b$ U4 d: W[ 本帖最後由 jerryyao 於 2008-7-18 10:05 AM 編輯 ]
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-4-27 11:06 PM , Processed in 0.109006 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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