Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[SystemC] systemC的SC_CTOR語法

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2008-7-9 14:31:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近被迫看一些systemC的原碼,有一些問題想問人一下:
8 K1 E: O! ]* O% {* m! P一般書籍都說SC_CTOR(module name)後就接左大括號{,可是我看的例子不是,如下:% x) z+ V; T* l/ R
SC_MODULE(aaa)
. X- @# A+ R" l/ q* p7 x) w{& T6 G% b; w) a8 \3 a& m0 L
        sc_in<sc_logic > aClk;# K2 x/ [, t- |2 U, Y# o. r* E
        sc_in<sc_logic > bClk;+ U& ?3 r# e' y
             .
/ m1 z+ J" ^' u2 y# j, t             .- f/ ]+ X8 l- x" R3 B! [
             .& U/ l( ^- u% Y* ?3 j* |
        SC_CTOR(aaa) :) e/ I3 ^4 b' @- c8 \1 e6 d) p' }
                aClk("aClk"),
+ U0 c! e; e9 ?* m/ n                bClk("bClk"),
, Z! v5 k" l2 K' ?             .* m4 x( n6 `0 D  g& J0 s8 K8 q' W  j
             .
$ x7 {- Y7 Z$ d, @$ @$ w& w" @/ o             .
4 W0 `0 R/ m7 o* R$ l- h/ T        {
; j$ w+ y* F* G9 k2 t3 p             .
( p5 Y8 Z' ^; K& I             .
+ `7 i8 `" W4 G' a4 n" ~! {             .
1 h6 c0 G1 Y) B% Z. o4 Y8 {        }
; e0 A# u! u3 @. l        ~aaa()
+ o* i8 T$ P) D" L& t        {/ Q  t7 I$ \& t+ _& V
        }
0 A! g) h$ D3 {- B7 p};
  Q, a' E. N8 T+ r$ U  P( WSC_CTOR(aaa)後接的是:,aClk("aClk")與bClk("bClk"),請問是甚麼意思?* P+ s/ ?9 x* V* b0 b
又這樣的寫法是systemC還是C++定義的?
" |9 N; l6 R) y1 W6 L2 S5 N0 @謝謝。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂2 踩 分享分享
2#
發表於 2008-7-10 17:14:00 | 只看該作者
那應該是做port initializations.3 w% j. R3 A% ~% |0 A5 W
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 ?. r! I, T0 |
constructor的定義跟C++ member function 的定義類似,SC_MODULE port 宣告是parameter,' B9 C! k6 ?( s2 d; ~
然後用SC_CTOR  去assign 這些 ports 的values 到SC_MODULE 的內部private variables% |: S" m5 M# [$ v! _& k& @
aClk,bClk 等.當每次SC_MODULE 被called,SC_CTOR  就會把SC_MODULE 的port與aClk,bClk 等
, _/ n! m; D; R0 y) M內部variables link起來.
) c& k3 l& b% M. |, p( x  T如果SC_MODULE 有宣告member module instance,即sub-design 的話,在SC_CTOR  也是要作
5 q3 R/ ^" W# Z3 n6 C$ e: j9 H類似的動作.例如,! D- e. j8 J) G8 c+ ]) J$ J8 S
SC_MODULE(AAA){
5 t3 C: k6 }( n- {; NMemory BBB;
; w% e2 j* X- T4 |Memory CCC;
# n. t7 u2 P# m( \2 y/ oSC_CTOR(AAA):
- I3 H! x7 W: Y. I  O) N: F' h- N0 a3 R& VBBB("BBB"),-------------->> member initialized
2 ^8 z5 i7 `  F$ I! l3 ]+ L# DCCC("CCC") -------------->> member initialized
$ P  m% o* i3 ]1 e{
; b$ }; E2 a( f3 |3 T2 |
- P) V8 o' Z) d! @: Y6 a$ Z* @$ ^}
& k9 b  M9 `. v* }; c};這種instantiate方式叫direct instantiation.
5#
 樓主| 發表於 2008-7-18 10:02:45 | 只看該作者
謝謝kevin的回答,好多年沒看程式書籍了,一時之間要搞懂,真不容易。5 W0 H1 v/ q0 M
不過您的解釋是否是定義在system C 2.0裡?9 Y1 z+ O5 u/ A

. b) @) y9 b3 c! m; H, U4 P" x[ 本帖最後由 jerryyao 於 2008-7-18 10:05 AM 編輯 ]
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-11 02:17 PM , Processed in 0.133008 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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