Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[SystemC] systemC的SC_CTOR語法

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2008-7-9 14:31:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近被迫看一些systemC的原碼,有一些問題想問人一下:1 B& O8 ~8 L& }
一般書籍都說SC_CTOR(module name)後就接左大括號{,可是我看的例子不是,如下:
$ g7 k% s8 P+ e* aSC_MODULE(aaa)2 [5 h3 B4 p  G/ m
{* @: T* _) b2 G# v* _* J- F
        sc_in<sc_logic > aClk;
  y3 {0 M; _" c4 G0 q        sc_in<sc_logic > bClk;" V+ k4 U7 G5 v& Y
             .
3 J5 C. t4 V) d% f7 P             .
4 d) A5 w; t" u* x             .8 e. Y7 w* J! |% U1 H3 R
        SC_CTOR(aaa) :0 [4 b" y0 J/ v6 a
                aClk("aClk"),
6 u( [7 l8 e4 B+ h& {' b                bClk("bClk"),! u# v3 U! [1 y3 {
             .& m- g, q4 F& l- q% c
             .# j! d1 W) _' L5 ]
             .
" p( x. q# f0 ?7 F  \4 |8 z+ p. G& _        {
& W8 t3 w& D7 K/ C3 G             .- }* H9 D3 p7 ~
             .$ h; N. i2 D7 V3 m9 B+ R
             .+ T4 O; _2 A# j1 y* v0 \' @
        }* `1 ^) W$ S0 z" U
        ~aaa()$ ?$ t5 N7 T' U4 {2 `- U7 P
        {" d# s2 A( |" L+ c3 A  E: S
        }& L+ G5 \2 V: l0 @2 {
};$ q' D- R: G8 ^, U' B" f
SC_CTOR(aaa)後接的是:,aClk("aClk")與bClk("bClk"),請問是甚麼意思?7 d) y. u7 Q  G
又這樣的寫法是systemC還是C++定義的?
( E  z; {- ?' X謝謝。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂2 踩 分享分享
2#
發表於 2008-7-10 17:14:00 | 只看該作者
那應該是做port initializations.
  m: b2 Z! W/ i$ M4 bC++ 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.
* N3 R! G7 G9 E2 C7 {) ?% Nconstructor的定義跟C++ member function 的定義類似,SC_MODULE port 宣告是parameter,
- U1 y1 c8 A) m( R4 b- I9 z2 x/ ?8 X然後用SC_CTOR  去assign 這些 ports 的values 到SC_MODULE 的內部private variables
2 |. O( t( u- I6 `& g. uaClk,bClk 等.當每次SC_MODULE 被called,SC_CTOR  就會把SC_MODULE 的port與aClk,bClk 等. n) W+ l8 u, ?' l! @) T
內部variables link起來.! t# G( f, n- M
如果SC_MODULE 有宣告member module instance,即sub-design 的話,在SC_CTOR  也是要作4 C; [  [8 q8 r
類似的動作.例如,
7 O- i% N# I0 i, Y0 d1 R' oSC_MODULE(AAA){
9 w" W$ k& J- P. s0 c5 n; zMemory BBB;" n2 a9 R5 }+ ~7 W/ f2 [
Memory CCC;
' [$ ?, t, T/ e4 I5 M( gSC_CTOR(AAA):; f2 J" W+ p- H# l, @
BBB("BBB"),-------------->> member initialized# P$ K: W+ y4 I% d3 L) K) x
CCC("CCC") -------------->> member initialized " ?. `( _% K9 s8 e: Y2 T
{; d' N, O( }3 d! a: F+ W
7 ?3 g$ `4 B+ }2 |" ]7 b
}, v5 O) u5 q: B* F
};這種instantiate方式叫direct instantiation.
5#
 樓主| 發表於 2008-7-18 10:02:45 | 只看該作者
謝謝kevin的回答,好多年沒看程式書籍了,一時之間要搞懂,真不容易。
. w( p/ F4 x; `* T  ^不過您的解釋是否是定義在system C 2.0裡?/ ?8 c/ V. p: X

6 o1 k& p" ?" r  I, b2 R[ 本帖最後由 jerryyao 於 2008-7-18 10:05 AM 編輯 ]
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-3 03:41 AM , Processed in 0.101006 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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