Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[SystemC] systemC的SC_CTOR語法

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2008-7-9 14:31:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近被迫看一些systemC的原碼,有一些問題想問人一下:0 q/ U6 E% C; K! ~5 a# `' a7 h8 J8 y
一般書籍都說SC_CTOR(module name)後就接左大括號{,可是我看的例子不是,如下:% C" w0 h( q# y' o
SC_MODULE(aaa)
6 ^+ o9 D8 l( N  C* G3 e{
3 Y& s5 h3 h8 i5 r5 ]+ G( n        sc_in<sc_logic > aClk;. C5 ]# ?: ?9 q" R' R
        sc_in<sc_logic > bClk;6 W7 t9 t8 _1 C
             .
/ @- Z3 Q0 H: q! X5 j) ~/ E             .2 }' i4 j: ]+ z: f: U+ |' P1 K- H
             .  Q# B# J1 Y% y
        SC_CTOR(aaa) :$ h4 M  j$ I! {' h* M  {+ b' \
                aClk("aClk"),- O7 y  S/ |, |4 q
                bClk("bClk"),4 B9 t, }. }2 ]) w9 a
             .0 I1 f' Q9 t6 q
             .9 o3 u+ s+ v2 h! Q- b) w3 y
             .
3 b7 a; \$ j1 t% y" Q        {
1 T8 F0 W8 J9 A             .9 b+ o$ A8 D& @" S* Z4 B" ?
             .
, L& z& M9 X0 k( \             .# i, d4 i# `; f. n9 g
        }6 O# Q- C& c- M* d
        ~aaa()
. d' C" P& f% e8 }! A        {
8 g+ ^2 t0 Q: h- K) O) r# Q        }5 s! Y1 Z( y# M, X& U
};
" a2 ~+ A. C+ e2 RSC_CTOR(aaa)後接的是:,aClk("aClk")與bClk("bClk"),請問是甚麼意思?
: p' y& j! u; \/ P又這樣的寫法是systemC還是C++定義的?
3 Y- f, `2 ^  A謝謝。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂2 踩 分享分享
2#
發表於 2008-7-10 17:14:00 | 只看該作者
那應該是做port initializations.; e# e& ~- k+ f- p6 w/ O
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.. @: d- o2 q1 W# n" v  U
constructor的定義跟C++ member function 的定義類似,SC_MODULE port 宣告是parameter,7 O1 I, b9 @( B* Q, ~4 v; i/ C
然後用SC_CTOR  去assign 這些 ports 的values 到SC_MODULE 的內部private variables" j7 g  Y# h" d  j- O9 I) \
aClk,bClk 等.當每次SC_MODULE 被called,SC_CTOR  就會把SC_MODULE 的port與aClk,bClk 等8 [% n0 ^2 ~, @2 L' F; C" S
內部variables link起來.
7 g' o. e! B' w* R' A1 @" a如果SC_MODULE 有宣告member module instance,即sub-design 的話,在SC_CTOR  也是要作" K+ M. W" V- _8 B- A7 Z9 N% h5 m
類似的動作.例如,) M* N7 x7 R/ o5 z2 a
SC_MODULE(AAA){$ X& X& Z: E0 w$ I" G& Z
Memory BBB;
3 R; }/ T( Q" T1 X1 aMemory CCC;6 b3 U8 l( |( r/ y: e8 x
SC_CTOR(AAA):8 B/ Y* Y2 b9 }8 X# I% r$ s
BBB("BBB"),-------------->> member initialized1 p* L4 c5 A# P0 \8 ]* O( e1 c
CCC("CCC") -------------->> member initialized $ p$ w$ K$ B% U& ^
{
9 w2 A% i7 [  ~0 D* a  z- G
$ J! o  H% y9 T/ {" X}( L9 V6 v) j7 t- v7 B
};這種instantiate方式叫direct instantiation.
5#
 樓主| 發表於 2008-7-18 10:02:45 | 只看該作者
謝謝kevin的回答,好多年沒看程式書籍了,一時之間要搞懂,真不容易。
# k# v" k( R0 q) q不過您的解釋是否是定義在system C 2.0裡?+ X# r) H+ p3 Z8 }; ?' T0 e

4 B6 [$ x: x6 _6 \  E, ~" Q[ 本帖最後由 jerryyao 於 2008-7-18 10:05 AM 編輯 ]
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-9-27 08:17 AM , Processed in 0.173010 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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