Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[SystemC] systemC的SC_CTOR語法

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2008-7-9 14:31:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近被迫看一些systemC的原碼,有一些問題想問人一下:
# ]: v: m$ T- D% ]1 p& H5 X5 D一般書籍都說SC_CTOR(module name)後就接左大括號{,可是我看的例子不是,如下:2 M% z/ [' [& u+ \! |) b7 I3 C% e
SC_MODULE(aaa)
+ J% v- a  b8 g2 |# a5 a( k{% c8 e0 H6 h  [7 e+ i9 Y
        sc_in<sc_logic > aClk;& q% e# G# U5 q' a* W) R
        sc_in<sc_logic > bClk;  C; x/ s9 \& w
             .; J# @% @' l) \+ j5 q' c
             ." d& ^6 S3 a0 r9 m) E7 k9 q
             .
( c  S" G6 c! w) A0 K        SC_CTOR(aaa) :/ s# M, U+ A4 @  O' z$ T9 @: V
                aClk("aClk"),
( _9 g* \9 R7 e$ {7 r6 Y  N6 N1 t                bClk("bClk"),
1 }) O) |1 q, T" v8 G  U             .' S/ R& _+ d1 R6 p
             .
& M! X# x" l: z; E+ ?             .
& |3 I( S; G, d# i4 a8 I        {# O2 U7 q* F5 X* R5 Y6 N
             .
4 |# k% |: [# E+ O3 q             .
, [/ p* J. g0 n! q( e% W, I( T# k             .0 p3 Q7 @5 D6 `9 e' C8 F+ ^
        }9 r' \) G' j2 \; E7 V' P
        ~aaa()% G& ^( _  C) L! I! b* v$ k# ~# J
        {
+ B, T6 s, b3 r- J2 n# x- U. B; |        }8 J$ G$ _) L& M- i) ^
};" D9 U( a$ x5 F' w, V6 F4 L
SC_CTOR(aaa)後接的是:,aClk("aClk")與bClk("bClk"),請問是甚麼意思?
3 G" z3 M/ @. E( o' }( g' }又這樣的寫法是systemC還是C++定義的?
2 M3 ]/ n* \$ B5 d; R% r謝謝。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂2 踩 分享分享
2#
發表於 2008-7-10 17:14:00 | 只看該作者
那應該是做port initializations.
% p2 g8 u8 u8 JC++ 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.
; P; d$ g0 U1 Z/ qconstructor的定義跟C++ member function 的定義類似,SC_MODULE port 宣告是parameter,
$ E) U' T7 n8 `  h$ q; m4 R  q: q5 {然後用SC_CTOR  去assign 這些 ports 的values 到SC_MODULE 的內部private variables
" q5 U% j+ V7 [aClk,bClk 等.當每次SC_MODULE 被called,SC_CTOR  就會把SC_MODULE 的port與aClk,bClk 等, k0 r3 N7 Q+ }6 k7 c
內部variables link起來.
3 }( A; h; y8 Z0 ^6 Y  U& ]" D如果SC_MODULE 有宣告member module instance,即sub-design 的話,在SC_CTOR  也是要作
, U9 S4 E8 |# S5 ]' @% `, Y) a' n類似的動作.例如,
; d) s$ A- e' U3 z$ o1 dSC_MODULE(AAA){
/ e# e9 m0 d+ c+ V7 @Memory BBB;4 ~4 d- Z1 M' L' _/ I, o0 T  D
Memory CCC;
9 k" E0 ^: Y2 lSC_CTOR(AAA):
4 K  @5 G- g4 E% i, a5 EBBB("BBB"),-------------->> member initialized
/ X% b0 q! \, iCCC("CCC") -------------->> member initialized 6 K; T% F+ h4 H
{
  w- c! C2 a7 W1 H
' H" c% D. a4 _}) q3 w6 g) M7 X
};這種instantiate方式叫direct instantiation.
5#
 樓主| 發表於 2008-7-18 10:02:45 | 只看該作者
謝謝kevin的回答,好多年沒看程式書籍了,一時之間要搞懂,真不容易。8 ^5 T+ G8 T& m4 q
不過您的解釋是否是定義在system C 2.0裡?
% k& b3 P$ b" I6 H- K. A3 p! H1 I& t% H) [2 B( N( e
[ 本帖最後由 jerryyao 於 2008-7-18 10:05 AM 編輯 ]
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2025-2-22 02:16 AM , Processed in 0.166010 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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