Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[SystemC] systemC的SC_CTOR語法

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2008-7-9 14:31:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近被迫看一些systemC的原碼,有一些問題想問人一下:% \2 V# {* n( }; t6 o
一般書籍都說SC_CTOR(module name)後就接左大括號{,可是我看的例子不是,如下:
; D$ n1 [+ w, N" l& O! eSC_MODULE(aaa)7 `5 U9 z9 W4 b, T- ^
{
* {1 h- I4 |5 ~# _. @0 J        sc_in<sc_logic > aClk;
( u# g& i% ?- L0 {        sc_in<sc_logic > bClk;
2 m: H4 F* l# G0 m; H$ j8 k             .& k- a; N) q' x; v* r& ]: \9 W) P
             .+ ]/ ?. d7 o0 u4 I1 r/ Z  M+ y7 K9 ]
             .% l- l5 G' Y% y5 x2 e1 F
        SC_CTOR(aaa) :
/ Q4 c2 J0 r6 v* a! q2 P4 E                aClk("aClk"),$ T/ G- y. u$ \$ J( |
                bClk("bClk"),
8 K# b" G7 Y! y7 o) a1 E. y  }             .
- x* Z* C+ T0 v+ l% Q             .5 P5 x6 ]; r1 w, V+ ?
             .; R# J& e. _) H1 q
        {
: X! v8 K% x  ]! M7 O             .
) |& J* U5 G8 K1 a             .9 a1 d  k" [8 F2 ~4 A9 q$ n8 [
             .
( o+ X2 H% a0 R1 u; p. M  X# _        }
& ]# z3 s  n5 [' R2 P; N, a! G        ~aaa()
# g. x3 v- T  ?- f8 F, [        {
  R: Y. L9 k  X* y& W; d+ e! j        }
& J( E) T" Y8 q( ?9 `1 t: D; Y};4 R: t! [9 j4 F- }! G8 s. Z- B
SC_CTOR(aaa)後接的是:,aClk("aClk")與bClk("bClk"),請問是甚麼意思?
& R) \" F" f' `又這樣的寫法是systemC還是C++定義的?
, j% J' I: A1 N( G2 j* n$ \  a$ O謝謝。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂2 踩 分享分享
2#
發表於 2008-7-10 17:14:00 | 只看該作者
那應該是做port initializations.+ H7 a6 f) |- C; T( D/ y4 N
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.
5 ~+ z# W% z% R. y! J9 Q3 I& Pconstructor的定義跟C++ member function 的定義類似,SC_MODULE port 宣告是parameter,
2 `$ q( _/ j/ Y6 X4 r7 @$ m# M/ O然後用SC_CTOR  去assign 這些 ports 的values 到SC_MODULE 的內部private variables* M8 u4 T' ~; v3 h( w' E
aClk,bClk 等.當每次SC_MODULE 被called,SC_CTOR  就會把SC_MODULE 的port與aClk,bClk 等5 t1 w$ o# J5 w$ ?/ T& K
內部variables link起來.
* M0 {9 W' t+ o3 D如果SC_MODULE 有宣告member module instance,即sub-design 的話,在SC_CTOR  也是要作, C: Q' u( C  y" ^- c9 J: |" u! T
類似的動作.例如,7 S' g3 k: U  M( B* H; Y
SC_MODULE(AAA){
% v" e+ x- {' k$ h5 d6 LMemory BBB;- k. C8 w. k# E: l. d
Memory CCC;  ^9 l7 k) D) C: ?) E
SC_CTOR(AAA):" q+ t' n: H1 b0 o2 _  n
BBB("BBB"),-------------->> member initialized: \+ _! V9 v# h
CCC("CCC") -------------->> member initialized . J8 n* H8 w9 k$ S# h* @, Y
{
0 ^6 d& j+ L( D0 `& g$ G
" U. Z1 j6 C9 t1 `* s}
8 m$ Y' @5 D% {  o/ F};這種instantiate方式叫direct instantiation.
5#
 樓主| 發表於 2008-7-18 10:02:45 | 只看該作者
謝謝kevin的回答,好多年沒看程式書籍了,一時之間要搞懂,真不容易。5 |: A; q( W* O$ |. W2 F
不過您的解釋是否是定義在system C 2.0裡?
2 N! k5 c' C8 C& F/ C% @! O: Y8 _3 ^" Z. p1 |/ x+ r& O* f% N; {
[ 本帖最後由 jerryyao 於 2008-7-18 10:05 AM 編輯 ]
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-9-28 12:22 AM , Processed in 0.171010 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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