Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[SystemC] systemC的SC_CTOR語法

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2008-7-9 14:31:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近被迫看一些systemC的原碼,有一些問題想問人一下:
/ Q4 K1 r/ I9 \! ^一般書籍都說SC_CTOR(module name)後就接左大括號{,可是我看的例子不是,如下:
% z$ V. E2 P" ]( M+ }SC_MODULE(aaa)
  `* a  }: R) ^+ G( Z: n5 N{& r: ]7 j+ N' z9 g" q+ N
        sc_in<sc_logic > aClk;
: C9 o" Y  B/ K( F        sc_in<sc_logic > bClk;
) W5 u1 r& E( |, L, T             .
* J% t7 l8 O0 n, {             .
1 H4 ^/ g/ [& r             .
" ~5 ~  C% w: a. M( Y- ]) F# N        SC_CTOR(aaa) :7 X; b9 w0 Q4 M' G0 p, l
                aClk("aClk"),, B* \9 M0 }2 @) `3 P
                bClk("bClk"),+ M7 G) k3 }2 w6 @% a# o/ M
             .) g# J% x' `6 R" e5 Y) I2 E
             .
6 P6 z3 h1 H: B             .
( |8 k. L! Y, ~) U* {, d1 `        {
( w1 {# z% @% R: g' n             .& P# G! B+ W. n. x# A$ [2 F; n
             .5 ~: U7 e7 W+ d
             .2 X6 l% }( m7 Z' _) n
        }$ T3 \: {5 L7 Z: ?" p' j
        ~aaa()
% R( d: v, f3 E        {7 c' m- W+ ^7 M; R% `8 Y
        }+ K# a0 a& C' B- T1 i# ^
};
" q& p! I  `) p7 b# w2 E) L( K. fSC_CTOR(aaa)後接的是:,aClk("aClk")與bClk("bClk"),請問是甚麼意思?
% |/ F" w: x9 u$ O2 R4 Q, ~又這樣的寫法是systemC還是C++定義的?
# `9 S% t4 Q3 y) Q8 ]" k$ \3 @+ W謝謝。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂2 踩 分享分享
2#
發表於 2008-7-10 17:14:00 | 只看該作者
那應該是做port initializations.* _: C$ n, O2 D: j
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.& I7 T6 [- b9 Y2 a9 Z
constructor的定義跟C++ member function 的定義類似,SC_MODULE port 宣告是parameter,
$ V3 i8 m& R/ c然後用SC_CTOR  去assign 這些 ports 的values 到SC_MODULE 的內部private variables0 b+ G4 S' W! i, e. H& _5 r- G
aClk,bClk 等.當每次SC_MODULE 被called,SC_CTOR  就會把SC_MODULE 的port與aClk,bClk 等
- j! g0 Y$ K& m4 r2 v/ F; v5 h" a內部variables link起來.
9 f5 B# {) @" y1 g  U如果SC_MODULE 有宣告member module instance,即sub-design 的話,在SC_CTOR  也是要作
2 h" ?7 t+ m- i/ K類似的動作.例如,
0 A- x8 [0 M% a. ^. d# vSC_MODULE(AAA){# z7 D4 x2 r7 y" B) t
Memory BBB;
% M0 e7 {5 y9 E" n) D# TMemory CCC;
0 N7 X3 S; e$ w9 YSC_CTOR(AAA):
' `) ^+ \3 A0 }2 \1 l" D: xBBB("BBB"),-------------->> member initialized
  ]+ G; N- ]4 W/ D$ s9 O6 `: NCCC("CCC") -------------->> member initialized - p! }# A; t4 _7 @) p( L
{
+ o. ]9 g7 D& M3 Q& t2 m6 }' w
; x7 V9 m7 j* G' ~. U3 ?# ~  {}0 r& m0 I; n* L1 y: a! s% D
};這種instantiate方式叫direct instantiation.
5#
 樓主| 發表於 2008-7-18 10:02:45 | 只看該作者
謝謝kevin的回答,好多年沒看程式書籍了,一時之間要搞懂,真不容易。( K) c3 p& D2 x9 g, s
不過您的解釋是否是定義在system C 2.0裡?
/ u) N. g2 e8 B5 b0 x* \' w6 d/ q6 l, y0 r. P+ }8 U
[ 本帖最後由 jerryyao 於 2008-7-18 10:05 AM 編輯 ]
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-17 06:13 AM , Processed in 0.124015 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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