Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[SystemC] systemC的SC_CTOR語法

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2008-7-9 14:31:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近被迫看一些systemC的原碼,有一些問題想問人一下:# C, a0 n- s8 w6 K
一般書籍都說SC_CTOR(module name)後就接左大括號{,可是我看的例子不是,如下:
6 R$ k# R- U/ Z8 h' O$ V" LSC_MODULE(aaa)
8 X3 r0 {$ ]% N7 S{! W5 Q" N+ }' i$ W+ H
        sc_in<sc_logic > aClk;
3 q. M2 Q" u2 n5 G" p& r- X        sc_in<sc_logic > bClk;
! i  _2 X% U8 z             .
8 H2 @$ b" Z+ N             .
# o7 Z6 A# r6 B4 ^! a) M# V             .
5 _/ j# S7 `' k/ I) w7 a        SC_CTOR(aaa) :
' `1 T0 s! x0 y- W. ^                aClk("aClk"),% n+ M' x) n/ [* K" |
                bClk("bClk"),/ V- A& c7 b+ J/ ]( C
             .
+ ~+ _1 o; |; {& d             .# w7 d, u& x0 B6 N; U
             .5 d% }, A4 a7 ~# p8 H8 o# }% r
        {* ~3 C' n1 v3 H+ M7 P
             .
, ]3 j& V9 R4 b3 k/ }' N             .: ?# R3 R7 _# i
             .$ f, Q0 [; \( L
        }
2 x8 N- U/ u" @" j9 _  K        ~aaa()
: Z" U1 J4 T2 s3 `+ L        {
, V8 @" q) a5 S* @        }4 v9 o* H! E8 K  G
};
* C- o: r+ a4 G$ {; vSC_CTOR(aaa)後接的是:,aClk("aClk")與bClk("bClk"),請問是甚麼意思?# O4 F  a! \. F4 y- [7 W
又這樣的寫法是systemC還是C++定義的?0 {8 {3 u7 @) H/ ^
謝謝。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂2 踩 分享分享
2#
發表於 2008-7-10 17:14:00 | 只看該作者
那應該是做port initializations.
% c) a. \3 D, @0 P+ P7 i) K1 S. zC++ 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.
8 q" N# R) N# |3 `! m7 ~constructor的定義跟C++ member function 的定義類似,SC_MODULE port 宣告是parameter,. V' D" }) ^# B# Y5 \6 x% i4 y
然後用SC_CTOR  去assign 這些 ports 的values 到SC_MODULE 的內部private variables
# ?1 H$ C6 c/ t# C7 j* {aClk,bClk 等.當每次SC_MODULE 被called,SC_CTOR  就會把SC_MODULE 的port與aClk,bClk 等
) j) J" M! H* j. }內部variables link起來.9 ?, }% U! Z% B8 G# Q  X) m
如果SC_MODULE 有宣告member module instance,即sub-design 的話,在SC_CTOR  也是要作% o7 k" v7 C# k* l: H
類似的動作.例如,9 b7 _2 R7 i( }; s! x
SC_MODULE(AAA){
9 p" q% |8 N& ?Memory BBB;
- [- ?% R, G7 N" zMemory CCC;
- F$ q; q, `1 ?/ t9 ZSC_CTOR(AAA):
2 X  l2 n4 G1 y" ~8 HBBB("BBB"),-------------->> member initialized
' y2 ^7 m; g9 s$ H* QCCC("CCC") -------------->> member initialized
  \  {8 Q+ O: ^9 }8 h, Q3 g3 [{5 x% W* Q/ I* Z0 E( r" X
0 P" w- O/ C5 E2 ]" j% o
}
! C, \" F( c# G9 N! M6 g};這種instantiate方式叫direct instantiation.
5#
 樓主| 發表於 2008-7-18 10:02:45 | 只看該作者
謝謝kevin的回答,好多年沒看程式書籍了,一時之間要搞懂,真不容易。
) Y) y. N/ P) ?% t) D) g不過您的解釋是否是定義在system C 2.0裡?! l1 \$ C2 M( Z) W

4 Y2 s/ |" E  p) h7 W' K: Y[ 本帖最後由 jerryyao 於 2008-7-18 10:05 AM 編輯 ]
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-16 03:19 AM , Processed in 0.125516 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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