Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[SystemC] systemC的SC_CTOR語法

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2008-7-9 14:31:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近被迫看一些systemC的原碼,有一些問題想問人一下:
" j# ]6 [1 `/ F8 \: m" z; E5 ^一般書籍都說SC_CTOR(module name)後就接左大括號{,可是我看的例子不是,如下:' a2 \3 g3 R: f+ P7 F
SC_MODULE(aaa)
( a1 }9 r- a! M" i{
9 d  T& c) r$ Y' r) J9 e        sc_in<sc_logic > aClk;
( v" G# o! F' N8 D9 h2 I        sc_in<sc_logic > bClk;
$ }( ]$ M7 E; }             .. l& W, h1 R  Q* M: @- U0 Y
             .! a2 N7 ]$ |& Q
             .8 }* {1 H" L8 Q; ^) v0 o
        SC_CTOR(aaa) :) O* x+ ]! _4 j" T3 q+ A/ |- [* N' J6 x1 t
                aClk("aClk")," o3 W( s- j) m2 c9 G, h% N
                bClk("bClk"),
% F7 D9 T/ k1 f! w2 R             .9 e7 \; I( E; @+ c
             .! I4 s1 y9 n6 |& @
             .8 V3 N/ D/ Y4 f- i5 k! _/ c/ w9 g8 ]  v
        {% T  }( a; q% D% E9 Q/ ]
             .
* o* m# X9 U- p. ~             .
# D- D# T+ o$ w             ./ }0 Y9 S  d2 _4 j
        }
; c; ~4 Z& C; M9 [        ~aaa()8 h- B, o2 D2 O. B
        {
4 ^4 W' v3 L4 x# a! W* v2 ^3 e6 i. {! v        }& J2 Q& B3 Y# ~; \
};
3 c! y* T! S! ]SC_CTOR(aaa)後接的是:,aClk("aClk")與bClk("bClk"),請問是甚麼意思?" ~2 T2 N2 I* {" B- G# q& K
又這樣的寫法是systemC還是C++定義的?
6 B+ O: c; t1 a; e8 _謝謝。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂2 踩 分享分享
2#
發表於 2008-7-10 17:14:00 | 只看該作者
那應該是做port initializations.) B0 `+ I. Q3 T% M) w7 `
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.4 T0 W9 }7 K9 ?( Y. I7 O
constructor的定義跟C++ member function 的定義類似,SC_MODULE port 宣告是parameter,
( b8 \. [  j8 ?& t然後用SC_CTOR  去assign 這些 ports 的values 到SC_MODULE 的內部private variables
& A, V& Y- P, C$ {( S) {3 [: waClk,bClk 等.當每次SC_MODULE 被called,SC_CTOR  就會把SC_MODULE 的port與aClk,bClk 等
6 S& U3 L$ W# b& y內部variables link起來.. u' }) L2 k! [6 M& v3 Q
如果SC_MODULE 有宣告member module instance,即sub-design 的話,在SC_CTOR  也是要作
- ]% X- R7 s! k# @2 D1 l0 U: k類似的動作.例如,
& o3 w, s6 R( C* I* Q* f8 {SC_MODULE(AAA){
* \" p2 ^7 Z1 k- {7 {; EMemory BBB;9 z0 Z7 Z: C: y0 D
Memory CCC;- g4 e* J. t' c% K3 v0 R, g( U
SC_CTOR(AAA):- [  ?' ]0 c1 C* D
BBB("BBB"),-------------->> member initialized
7 p8 K! q+ r4 p% ?! i9 \CCC("CCC") -------------->> member initialized
+ h( G/ F  E; o, t{) y% e% `6 B- B& _

. k+ X' f" U2 c+ x}0 Z/ @: w' n# r, W( ?
};這種instantiate方式叫direct instantiation.
5#
 樓主| 發表於 2008-7-18 10:02:45 | 只看該作者
謝謝kevin的回答,好多年沒看程式書籍了,一時之間要搞懂,真不容易。/ N7 Y4 U* h/ @
不過您的解釋是否是定義在system C 2.0裡?6 E! s/ x# t4 ^( n- v
5 v0 i' V; D0 _& @/ ^
[ 本帖最後由 jerryyao 於 2008-7-18 10:05 AM 編輯 ]
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2025-2-22 04:45 PM , Processed in 0.168010 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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