Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[SystemC] systemC的SC_CTOR語法

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2008-7-9 14:31:13 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
最近被迫看一些systemC的原碼,有一些問題想問人一下:
- l, ^8 e7 s  e# F0 z# P) H一般書籍都說SC_CTOR(module name)後就接左大括號{,可是我看的例子不是,如下:
3 B: b. |6 L% [% t1 bSC_MODULE(aaa)
+ Q0 |. ?0 i0 t* W, [7 I{
1 R4 n' M# Z6 ?, h0 T8 L. c        sc_in<sc_logic > aClk;2 ?8 a( d1 j# O+ U6 y
        sc_in<sc_logic > bClk;
7 `& y7 K# |- {; B) Y) x$ @2 ]$ W. g             .7 T9 L; ^5 j4 [
             .' Z+ o& t8 R# {8 k$ p3 T! |
             .
6 l/ F; \% w. u, h/ P" S: m        SC_CTOR(aaa) :# ]$ P  O8 l1 t. v. n
                aClk("aClk"),
2 r0 ?9 H! }3 ]+ _  x% Z                bClk("bClk"),
* |; G; Q3 H: z             ." D' s/ `! w, j" }6 e
             .+ A) u+ ~3 `* g! i
             .+ \7 I7 b: V7 J( q
        {' X4 @% e8 I4 Y7 J. s* T
             .% V" u" a$ w, U# h! \
             .
3 ]9 y' g6 ~  H             .
8 B  J0 Y2 I% D! ~. Q! n7 v        }
2 f) d. l: k8 y- x9 Y        ~aaa()
3 ]# y  y! R2 i9 m9 `( m        {4 o* R( W$ i3 ~0 v; R( q# l5 w
        }/ m9 L! E+ f8 s; |8 n/ U  k
};1 X0 ~% {7 ~  k' U, _. C
SC_CTOR(aaa)後接的是:,aClk("aClk")與bClk("bClk"),請問是甚麼意思?
5 X: n6 ?8 p: J, k) K1 ]* s又這樣的寫法是systemC還是C++定義的?" N: v& r. Q( M! C* K
謝謝。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂2 踩 分享分享
5#
 樓主| 發表於 2008-7-18 10:02:45 | 只看該作者
謝謝kevin的回答,好多年沒看程式書籍了,一時之間要搞懂,真不容易。
4 h9 g" K) a, x9 @不過您的解釋是否是定義在system C 2.0裡?  H) \6 s4 t: T5 e* Q/ M, @
) N7 I) |7 u7 a' O2 v
[ 本帖最後由 jerryyao 於 2008-7-18 10:05 AM 編輯 ]
4#
發表於 2008-7-16 13:08:41 | 只看該作者
SC_CTOR 從冒號:到大括號 { 之間 是 constructor SC_CTOR  的 initialization section.8 G& s% L3 K# A; F! V  v
constructor的定義跟C++ member function 的定義類似,SC_MODULE port 宣告是parameter,! X0 L8 b' R, F
然後用SC_CTOR  去assign 這些 ports 的values 到SC_MODULE 的內部private variables
+ E. i9 K5 [! S! F% A6 QaClk,bClk 等.當每次SC_MODULE 被called,SC_CTOR  就會把SC_MODULE 的port與aClk,bClk 等* _$ {$ y; O- X
內部variables link起來.
) v6 w0 W6 A3 l& M如果SC_MODULE 有宣告member module instance,即sub-design 的話,在SC_CTOR  也是要作4 I8 \! G6 u" ]2 A$ ]! r
類似的動作.例如,
; r' J; J2 _, |SC_MODULE(AAA){
8 S( U8 V  l# ~$ d$ l" `Memory BBB;
, }; a  c' W3 W# @$ L) LMemory CCC;/ d/ t  R8 ~# A
SC_CTOR(AAA):( r+ d1 t! S. `. F
BBB("BBB"),-------------->> member initialized% w, z6 B7 F3 P4 |" [( g3 U5 n+ V
CCC("CCC") -------------->> member initialized " R8 k! \- Q1 `# O4 O3 m
{
' [. P, i& E# Y0 M8 l
. S; T9 X; s1 K3 }* @- Q2 c5 G}
0 C' f, T, y1 P};這種instantiate方式叫direct instantiation.
3#
 樓主| 發表於 2008-7-14 16:07:03 | 只看該作者
謝謝您的回覆,不過我不是很懂您的意思,您提到port initializations,感覺是設定port的初值,可是他不是1,0,x,z等值,而是與自己相同名稱aClk("aClk"),能否請您再說明一下,謝謝。
2#
發表於 2008-7-10 17:14:00 | 只看該作者
那應該是做port initializations.6 z5 r! L8 K/ ~1 G# U5 M' X, n9 H
C++ semantics require use of an initializer list for "direct"(not indirect) approach.
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2025-2-24 01:32 AM , Processed in 0.167010 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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