Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[SystemC] systemC的SC_CTOR語法

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2008-7-9 14:31:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近被迫看一些systemC的原碼,有一些問題想問人一下:
4 X3 P1 T& Q3 Z7 a6 d一般書籍都說SC_CTOR(module name)後就接左大括號{,可是我看的例子不是,如下:
# @* m9 @8 j  n$ X5 Y7 zSC_MODULE(aaa)$ y: }! h! l9 J, V. M& p7 x6 ?
{! G+ R4 r2 H8 p" O; M% Z# q
        sc_in<sc_logic > aClk;
3 [8 r9 o1 {5 m/ N  v        sc_in<sc_logic > bClk;
/ G$ i1 j/ @" x3 F' u             ., K! ~4 A# {. u% Q: t
             .
3 R7 c' \* _2 W' k) G/ c+ @             .7 d; J- b; K" `( m
        SC_CTOR(aaa) :
- T6 U& a! r  A- a+ O* y                aClk("aClk"),' L& [/ m0 A& M! J& `: }$ w- {
                bClk("bClk"),: q1 C2 H! d* k2 O* B4 z, j: C) p
             .3 L. y9 G( E) w. r6 P  J$ l" Y
             .& C) z9 B! _# r) v5 N* v3 f
             .
8 z! _2 |% K0 K8 ?        {
* C% ?7 f4 }; `% ~7 G             .
3 z8 S6 K( R4 z% e8 _6 [' @             .
6 b' `- L3 c/ |% R( W             .
: G  w" A! ^! ^6 `' [( L+ X        }) r2 K$ _* J. Z  }9 L: E
        ~aaa()6 E& `) }$ K7 O' z% N/ Z$ f
        {. R* V" A& a. {8 E- ~8 x
        }# ~; D  X! `0 G3 \; k. C( S
};
9 {. D$ C* O! `/ C: {- WSC_CTOR(aaa)後接的是:,aClk("aClk")與bClk("bClk"),請問是甚麼意思?. s3 D1 Q0 [& f% h+ C
又這樣的寫法是systemC還是C++定義的?5 A1 Y. t; q6 i9 E8 u
謝謝。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂2 踩 分享分享
2#
發表於 2008-7-10 17:14:00 | 只看該作者
那應該是做port initializations.. V6 U- E$ q5 A6 w7 w/ l
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.) r5 d3 [$ v! _3 ~+ L
constructor的定義跟C++ member function 的定義類似,SC_MODULE port 宣告是parameter,. Z7 o6 \: [# _3 R: W
然後用SC_CTOR  去assign 這些 ports 的values 到SC_MODULE 的內部private variables
, c/ b4 ?% U/ _  ]0 N" UaClk,bClk 等.當每次SC_MODULE 被called,SC_CTOR  就會把SC_MODULE 的port與aClk,bClk 等9 @; S. _0 ~/ C* E& ^
內部variables link起來.
, F! ^) T4 B9 _: i+ m如果SC_MODULE 有宣告member module instance,即sub-design 的話,在SC_CTOR  也是要作
! c8 |2 K( |8 R類似的動作.例如,
/ R0 m8 D* w9 k  a" _SC_MODULE(AAA){
0 ^" k. H* e* ~! CMemory BBB;3 G# C$ P9 f  F1 }: w) x
Memory CCC;& |& z" V* A/ g/ |
SC_CTOR(AAA):
1 _/ \; Y) p% z; h0 Z# a) w4 aBBB("BBB"),-------------->> member initialized+ r( s/ A+ y5 Q- ?0 [: `4 y+ T8 M4 E
CCC("CCC") -------------->> member initialized
, ?1 j1 x) ?6 Q{
+ ?; X  u( ]" E7 Q5 _
8 f) O. F2 O8 Y! Y}) Y1 o6 H" i' s8 f+ U: M! T6 C
};這種instantiate方式叫direct instantiation.
5#
 樓主| 發表於 2008-7-18 10:02:45 | 只看該作者
謝謝kevin的回答,好多年沒看程式書籍了,一時之間要搞懂,真不容易。7 [7 r: p$ Q( R8 ?- x9 D
不過您的解釋是否是定義在system C 2.0裡?
" S( J0 c2 w4 \" I* S" R' u% p3 h1 A8 j( `& V& u
[ 本帖最後由 jerryyao 於 2008-7-18 10:05 AM 編輯 ]
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-9-26 12:52 PM , Processed in 0.168010 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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