Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[SystemC] systemC的SC_CTOR語法

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2008-7-9 14:31:13 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
最近被迫看一些systemC的原碼,有一些問題想問人一下:0 v. [! y5 o6 [4 T: F
一般書籍都說SC_CTOR(module name)後就接左大括號{,可是我看的例子不是,如下:& i: }0 F( [$ F# [  H
SC_MODULE(aaa)/ u9 a/ j; P7 d& {
{
- t$ I# h- T: u3 ]( \9 K        sc_in<sc_logic > aClk;1 z/ U' @+ @4 l* I4 f; ?0 w
        sc_in<sc_logic > bClk;
* A# F6 ^7 T5 w3 ?" _4 y) e             .
. d, G$ E+ b+ G7 f  \             .8 n' N- G/ k" s, h
             .
7 L9 H* B1 {. Y        SC_CTOR(aaa) :
& J+ s3 w( b3 X# U( ~6 {4 K0 r: ^                aClk("aClk"),
. O' ~5 j' w/ u# T0 P                bClk("bClk"),- h4 Z+ G7 k- S& ^& B
             .
& y2 {. N5 S  v% Y             .
3 n( A0 k' ^3 E, [* d             .6 n: |9 f. y3 c6 ?- X* {
        {
% u! k3 g& }% R+ s             .
9 _: P9 [' j, q9 w" t  B             .
* w" }: e# Q  j             .) m6 [( Y$ D" p
        }
. e8 X/ {# S# J( J& e8 E        ~aaa()
3 s4 g; s( W  L- o' W: W        {- k( d1 x, v* f5 b( ?) [" M$ n2 A
        }5 v" l# y1 _; ?1 t" u
};
+ \/ [/ I" T- H' ?SC_CTOR(aaa)後接的是:,aClk("aClk")與bClk("bClk"),請問是甚麼意思?) i! v4 [, F/ f
又這樣的寫法是systemC還是C++定義的?
0 a) N3 Q6 s! G8 P4 H; }6 m謝謝。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂2 踩 分享分享
5#
 樓主| 發表於 2008-7-18 10:02:45 | 只看該作者
謝謝kevin的回答,好多年沒看程式書籍了,一時之間要搞懂,真不容易。; R0 ~% V' c8 g; k; h
不過您的解釋是否是定義在system C 2.0裡?1 c) T0 G( n$ p6 v6 m4 a7 D
+ ^6 S) S) G9 V8 j0 c
[ 本帖最後由 jerryyao 於 2008-7-18 10:05 AM 編輯 ]
4#
發表於 2008-7-16 13:08:41 | 只看該作者
SC_CTOR 從冒號:到大括號 { 之間 是 constructor SC_CTOR  的 initialization section.
2 X% H! ?1 I% M+ econstructor的定義跟C++ member function 的定義類似,SC_MODULE port 宣告是parameter,: H% y  D2 S, e+ Y9 |6 v- {2 l) F
然後用SC_CTOR  去assign 這些 ports 的values 到SC_MODULE 的內部private variables
3 e& b4 _2 S$ uaClk,bClk 等.當每次SC_MODULE 被called,SC_CTOR  就會把SC_MODULE 的port與aClk,bClk 等# d. l% i# M2 M0 X
內部variables link起來.* R- }# {" k8 x/ F$ H8 t1 }* u
如果SC_MODULE 有宣告member module instance,即sub-design 的話,在SC_CTOR  也是要作
$ t. \+ r" j! m/ y, t' x3 `' w+ n類似的動作.例如,
: u! b% H& _% g! {" iSC_MODULE(AAA){2 p% [  {4 K) ~/ J' @/ d
Memory BBB;
6 K! N+ Q8 y+ |2 K$ F: r3 }  dMemory CCC;
8 g4 i7 A6 B4 W( HSC_CTOR(AAA):3 I" w% l5 f1 Z. G1 a9 O6 R9 g
BBB("BBB"),-------------->> member initialized
: C: w& F4 g+ J2 K7 D1 d! GCCC("CCC") -------------->> member initialized
+ Y  N! ]% q, B% a8 x5 K# w{' J& N- w% P4 j6 q

5 f8 n5 n/ V' {- O}
$ g: W/ ]" n8 c) s  s# T};這種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.) r. P& X4 s1 Q
C++ semantics require use of an initializer list for "direct"(not indirect) approach.
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-9-27 06:13 AM , Processed in 0.176010 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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