Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[SystemC] systemC的SC_CTOR語法

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2008-7-9 14:31:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近被迫看一些systemC的原碼,有一些問題想問人一下:
% \2 R# i( B3 P1 _# D. G9 y5 X一般書籍都說SC_CTOR(module name)後就接左大括號{,可是我看的例子不是,如下:7 P; ^5 W  A' r$ k4 o5 Y/ B
SC_MODULE(aaa)
3 h) M/ D  _5 `. p{' }/ P1 n+ t# m/ x
        sc_in<sc_logic > aClk;
9 J0 E) J0 z( g# F2 \, r/ I6 A        sc_in<sc_logic > bClk;( ]0 m) o- d2 O( k  m
             .
, i& ^1 n0 _3 I$ W/ C1 a. F             .
* E3 b$ Q; s. @, v8 x7 S  e             .
6 v6 l1 V5 M5 M; u        SC_CTOR(aaa) :
: k5 t: R' p( V6 c6 K                aClk("aClk"),0 `) O/ Q2 m1 ~& _# F# e
                bClk("bClk"),
; C" K) b% E4 l             .
% P0 H4 l' {( x2 ], t             .# B) f% J# l& O5 }( p
             .; Z. q: l# r, P' O9 @5 }/ a4 p5 N: z
        {8 r1 \. W  \2 U" P8 D$ q4 F+ {) K
             .
5 a8 e( V/ c# }: S+ h; b2 V& }             .
# l( i2 G( H- w; K7 P; |7 ]; l             .0 ^1 H$ T- D9 |0 K
        }
5 {! {0 w$ `$ S9 b9 k/ z7 y1 W2 p        ~aaa()
/ A5 j9 z6 c4 p* C        {
" f$ ]6 @. g4 y4 u4 o" g+ S  w% n        }
7 O7 j: o8 M$ p};( J/ O4 W  b6 x& H4 e  c, U
SC_CTOR(aaa)後接的是:,aClk("aClk")與bClk("bClk"),請問是甚麼意思?
) a- c0 \' ^. \1 H( T+ q' a又這樣的寫法是systemC還是C++定義的?1 b: i3 f+ k  u+ ~
謝謝。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂2 踩 分享分享
2#
發表於 2008-7-10 17:14:00 | 只看該作者
那應該是做port initializations.. m# X5 y7 N0 k0 n1 `) F
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.  J2 m9 j& p# [* g9 I6 v
constructor的定義跟C++ member function 的定義類似,SC_MODULE port 宣告是parameter,6 z+ N: l# Z9 l# u, u
然後用SC_CTOR  去assign 這些 ports 的values 到SC_MODULE 的內部private variables
9 k& p9 d3 ]% |/ |: FaClk,bClk 等.當每次SC_MODULE 被called,SC_CTOR  就會把SC_MODULE 的port與aClk,bClk 等4 K: R- D1 R7 [! v
內部variables link起來.
# l- m3 N; P* e: H, U: K$ P如果SC_MODULE 有宣告member module instance,即sub-design 的話,在SC_CTOR  也是要作
* \8 o' I1 p# {類似的動作.例如,
1 n" B. w/ _8 V5 D' [0 [SC_MODULE(AAA){$ A5 N6 D! b. b/ u0 {8 a
Memory BBB;/ @: P. y& `9 [! \$ j5 y. R
Memory CCC;9 y/ X2 H- G9 J; ?; O5 n
SC_CTOR(AAA):
; \: G$ z8 g" |' MBBB("BBB"),-------------->> member initialized1 m) ]3 S; T, o; s9 |( x# x7 U) ^. ^2 x
CCC("CCC") -------------->> member initialized
) `( n$ |* N$ R- B% r{
: h  R! D) t6 R- v6 n* U9 e
2 |" o7 L6 o+ s- O" a0 L* y}! G$ f9 x! }; z& h) d2 w+ {
};這種instantiate方式叫direct instantiation.
5#
 樓主| 發表於 2008-7-18 10:02:45 | 只看該作者
謝謝kevin的回答,好多年沒看程式書籍了,一時之間要搞懂,真不容易。
; {0 K# y# D) a不過您的解釋是否是定義在system C 2.0裡?
0 v/ h5 ]* N/ e6 D6 s) q  P3 M( ^
[ 本帖最後由 jerryyao 於 2008-7-18 10:05 AM 編輯 ]
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-14 11:08 PM , Processed in 0.127516 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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