Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[SystemC] systemC的SC_CTOR語法

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2008-7-9 14:31:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近被迫看一些systemC的原碼,有一些問題想問人一下:
) ~+ y# q# ~% h% R一般書籍都說SC_CTOR(module name)後就接左大括號{,可是我看的例子不是,如下:0 T* U2 B& }$ X* i7 Z+ c0 S* n
SC_MODULE(aaa)% e9 x5 P- V; s0 z0 X
{
4 @' b* l+ R7 Y2 G! i        sc_in<sc_logic > aClk;  t- w% u, h" J5 t4 i
        sc_in<sc_logic > bClk;
6 f0 k8 A0 \4 ?0 k             .+ S1 R/ O+ D! e, c9 P
             .
8 ]) a# f/ ^0 S% @' [- \/ Q             .$ }1 ~8 v3 L% B# U
        SC_CTOR(aaa) :
' _3 r  e' \* B3 i                aClk("aClk"),
. Z* o! V5 X$ V& J                bClk("bClk"),2 A1 ~( M; q6 n# o) H
             .1 k8 |" h5 l# ?
             .
/ N6 Z! E) M# }# M, n             .
9 L& P! |7 p% e% Q1 t; y' D        {
  u" G5 G; ?. {( J6 _: I6 }             .
+ k. }% S8 K6 ]6 p, D1 I0 g8 ]             .
0 v1 r& x" l, k7 L             .! F; n. ~2 Q1 P6 F% l' d
        }' G& f# ?# [" c# S, |; k. I
        ~aaa(): s  z* i1 `( Y/ q& {1 _4 f
        {
2 ]) J3 X1 ]" @        }6 V7 l* w0 I! X* c
};/ H& l! |9 l5 o. D$ Q" m. |
SC_CTOR(aaa)後接的是:,aClk("aClk")與bClk("bClk"),請問是甚麼意思?9 ]2 x5 D9 E5 I/ U: Y/ V
又這樣的寫法是systemC還是C++定義的?4 d' V% x+ N( }8 @: r8 C
謝謝。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂2 踩 分享分享
2#
發表於 2008-7-10 17:14:00 | 只看該作者
那應該是做port initializations.) Q: D2 R3 O+ U
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.+ y! `( a/ m4 ]
constructor的定義跟C++ member function 的定義類似,SC_MODULE port 宣告是parameter,+ `: R0 p8 b' F' N0 ]
然後用SC_CTOR  去assign 這些 ports 的values 到SC_MODULE 的內部private variables/ f) T: w: S' t  D  s
aClk,bClk 等.當每次SC_MODULE 被called,SC_CTOR  就會把SC_MODULE 的port與aClk,bClk 等
7 G# Y- a3 |! z5 E) U內部variables link起來.
3 J! `, y4 G1 d1 y如果SC_MODULE 有宣告member module instance,即sub-design 的話,在SC_CTOR  也是要作$ Y  y8 n/ K  t% T0 C
類似的動作.例如,( i. D' i  E' r* N8 x# @
SC_MODULE(AAA){1 C* g% u5 x# h0 k" w
Memory BBB;
* [$ S) q* j1 |2 h- ?Memory CCC;% @4 e4 r" K  X2 V# {) z1 Z
SC_CTOR(AAA):' z! P  ~7 j2 o2 N/ ]$ z1 U1 O
BBB("BBB"),-------------->> member initialized
3 I* ?8 q# U, w0 [: B$ o+ o0 _* @CCC("CCC") -------------->> member initialized
* I3 D- |2 Z' r+ c8 M{. e3 V, R. ~/ `$ l% x' K

' ^4 ^+ {; T" n- y}
  L; T1 F4 L2 B6 x# f$ p};這種instantiate方式叫direct instantiation.
5#
 樓主| 發表於 2008-7-18 10:02:45 | 只看該作者
謝謝kevin的回答,好多年沒看程式書籍了,一時之間要搞懂,真不容易。
, }1 c1 T9 m5 w- k, J不過您的解釋是否是定義在system C 2.0裡?8 P* I6 u/ T( n9 n" c$ e7 B
: G! D6 l1 o& h( q0 g5 h  {7 b
[ 本帖最後由 jerryyao 於 2008-7-18 10:05 AM 編輯 ]
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-20 12:55 AM , Processed in 0.104014 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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