Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[SystemC] systemC的SC_CTOR語法

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2008-7-9 14:31:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近被迫看一些systemC的原碼,有一些問題想問人一下:% y: P6 _. p$ l( a5 Y
一般書籍都說SC_CTOR(module name)後就接左大括號{,可是我看的例子不是,如下:# o( l- T4 E0 R$ A) p
SC_MODULE(aaa)8 @, u/ Q5 h% p% q1 w
{& k; J5 u2 J% l. y2 a
        sc_in<sc_logic > aClk;
# h: \4 O) `% O' o; z9 y% ^2 ~% `# I        sc_in<sc_logic > bClk;2 h) ?$ Y/ K  b% r! l
             ." [1 [# y( g/ R' y4 H9 H$ d: w
             .
8 R& e& a$ H8 W             .2 O! l* N7 C+ z  P
        SC_CTOR(aaa) :6 \! T0 [  u2 X+ Y
                aClk("aClk"),) t9 {. C, y. t/ Q" G5 u
                bClk("bClk"),: {( q# v# x8 `5 Q. Y+ }6 ~( N
             .
1 \( g4 {9 B1 K. h5 I             .( U" a% x+ y+ S% {
             .  H, E9 m) s/ s" j
        {
$ Q6 h& K. M8 V" M1 n* c             .  K/ M5 Y  O/ o: V5 N) }! C
             .6 i! k% M/ ]  K3 g- {! m# Y3 D
             .
5 ^- z* V. o1 S7 o/ ?        }
. w$ v& @( W  ?0 z7 D' L. x/ k        ~aaa()+ X0 k  o9 _. V9 k1 r+ f, `
        {
) c4 s" c" Q# v        }( H' s" a$ ]' H7 k/ g5 \
};
; p1 v0 N$ p( s- J8 N( k) H$ P/ ISC_CTOR(aaa)後接的是:,aClk("aClk")與bClk("bClk"),請問是甚麼意思?
- D4 |. Q( R% P又這樣的寫法是systemC還是C++定義的?
! i, V5 p$ ?4 r8 y. t& H' }謝謝。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂2 踩 分享分享
2#
發表於 2008-7-10 17:14:00 | 只看該作者
那應該是做port initializations.
8 o6 v8 y, ?. g+ S6 u6 @; M, T/ eC++ 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.9 K( W+ c8 b2 M7 `* u$ E: z
constructor的定義跟C++ member function 的定義類似,SC_MODULE port 宣告是parameter,, A& {1 a8 F# i5 n" ^
然後用SC_CTOR  去assign 這些 ports 的values 到SC_MODULE 的內部private variables7 W8 L7 \. a6 A8 _+ [
aClk,bClk 等.當每次SC_MODULE 被called,SC_CTOR  就會把SC_MODULE 的port與aClk,bClk 等% u  H$ S+ O  C3 n3 M7 }% P
內部variables link起來.
1 }: R- ^7 {/ H3 Z7 L/ n3 n3 w如果SC_MODULE 有宣告member module instance,即sub-design 的話,在SC_CTOR  也是要作) K, F0 [1 ^4 V3 G0 B
類似的動作.例如,
0 ]. R: ]. c8 ?4 xSC_MODULE(AAA){1 E! c3 Q/ H$ Y9 n
Memory BBB;
6 {: v* F& }* j5 G# N- DMemory CCC;
, s) u$ Z, g! {6 a2 oSC_CTOR(AAA):
1 Q; f7 l# ?/ n; h6 ^  HBBB("BBB"),-------------->> member initialized. O6 L/ l  r: ?2 U. M4 _# ?
CCC("CCC") -------------->> member initialized
; E  O, z" X% {{
- u/ e  S) B7 n0 d  H6 S8 h
+ u+ m. ~* z; r% T" `4 u}& Q: B1 a3 c  E. U4 L
};這種instantiate方式叫direct instantiation.
5#
 樓主| 發表於 2008-7-18 10:02:45 | 只看該作者
謝謝kevin的回答,好多年沒看程式書籍了,一時之間要搞懂,真不容易。
6 \+ v6 G9 x+ R7 p0 g不過您的解釋是否是定義在system C 2.0裡?
  q9 M( j6 \7 O2 C# @+ _" \/ X8 A. [
[ 本帖最後由 jerryyao 於 2008-7-18 10:05 AM 編輯 ]
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-4 12:48 PM , Processed in 0.109514 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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