Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[SystemC] systemC的SC_CTOR語法

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2008-7-9 14:31:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近被迫看一些systemC的原碼,有一些問題想問人一下:
/ Z) a# z3 d: ~' i1 A/ k一般書籍都說SC_CTOR(module name)後就接左大括號{,可是我看的例子不是,如下:8 `9 ^; u: ~( P/ V- f5 v% h& e0 H
SC_MODULE(aaa)+ D# V0 b3 H; X% f
{
0 j0 z) S  W4 }0 P- J$ {3 `        sc_in<sc_logic > aClk;
* I9 Q' a+ F; _3 p        sc_in<sc_logic > bClk;
' i9 E! o' t* e- n3 K! {8 X( m/ d             .' _' O9 B) V! Q  K0 `7 G
             .
) f& j4 l$ U. W/ ?3 z( Z8 D7 w             ./ k$ i+ [8 W0 j/ ~
        SC_CTOR(aaa) :
' h+ K7 `8 x! [                aClk("aClk"),
) B4 h0 P) A; ]+ k  T: T( o                bClk("bClk"),
! @3 D3 j  K- n% l8 p             .; \8 O0 i, \# ]0 F6 C; D
             .
) O7 U- W. [3 H8 m' K& c6 W             .  K: c. R+ a2 J! F# t
        {# I6 w# l7 W) }
             .
  r8 z6 H" h! a$ ?$ _, K8 A/ ]$ n             .
' s+ l, F  P! v' K- ^" [5 I             .
% X% y; H1 ^* I0 y        }
. k8 y0 c7 \& |        ~aaa()7 U! S/ J( I5 Q4 _
        {8 g" E9 h( _& t
        }
$ s+ a9 ^5 \1 m/ t! m};
1 }/ W1 X5 t/ |SC_CTOR(aaa)後接的是:,aClk("aClk")與bClk("bClk"),請問是甚麼意思?
8 G2 F  T1 \8 f# h又這樣的寫法是systemC還是C++定義的?& F2 m  X; z, z9 k
謝謝。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂2 踩 分享分享
2#
發表於 2008-7-10 17:14:00 | 只看該作者
那應該是做port initializations., H9 ]5 M1 w, h  m- ~
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.
. p9 B' F% n+ A* @3 ~constructor的定義跟C++ member function 的定義類似,SC_MODULE port 宣告是parameter,9 e! w8 L6 y- U+ w3 Q$ S" f
然後用SC_CTOR  去assign 這些 ports 的values 到SC_MODULE 的內部private variables6 B" m+ }# G1 R' U$ q; {
aClk,bClk 等.當每次SC_MODULE 被called,SC_CTOR  就會把SC_MODULE 的port與aClk,bClk 等" S/ w3 E6 _' Z# ?6 d. F
內部variables link起來.
4 j; E+ H% `  K6 y$ C; \' \如果SC_MODULE 有宣告member module instance,即sub-design 的話,在SC_CTOR  也是要作( j2 {: a, Y; f
類似的動作.例如,
: d1 [  q2 T2 t2 ~SC_MODULE(AAA){' b6 b& c9 p- n- {8 E
Memory BBB;
  A; c0 ^3 o7 h$ O) cMemory CCC;: ~- S, ?  C" g( r% F
SC_CTOR(AAA):
0 d1 Q1 K& N0 e0 [; BBBB("BBB"),-------------->> member initialized
4 A- ?3 J" G* wCCC("CCC") -------------->> member initialized 6 T, _) v1 x: b; n. m! v. b
{
( @" J# Z) x; {& j; l& s1 r) F4 Q& k9 b: r$ C! b& y/ N5 w
}
* K, e4 F8 h5 F; g0 M: p};這種instantiate方式叫direct instantiation.
5#
 樓主| 發表於 2008-7-18 10:02:45 | 只看該作者
謝謝kevin的回答,好多年沒看程式書籍了,一時之間要搞懂,真不容易。
( R, x8 N1 w6 W9 x6 r不過您的解釋是否是定義在system C 2.0裡?! ~. Z4 \2 h0 w, E7 i8 m

) H  Y1 z% f% Y6 ?. C* I# Q[ 本帖最後由 jerryyao 於 2008-7-18 10:05 AM 編輯 ]
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-2 10:42 AM , Processed in 0.117015 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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