2010年12月21日 星期二

sensitive list condition gen @ SystemC

最近 SystemC 跟 SystemVerilog 吵的沸沸揚揚.估且不論效能跟支援度.其實說穿了就是要把 Hardware level design flow. 往上轉成 software level design flow to map hardware level. 這樣不僅縮短 architecture map 的時間. 透過 top down 的 design view 來建立 SOC 的 platform.畢竟現在 IC 都要包山包海的 multi cores. 傳統的 ASIC design flow 要做到 SOC platform 所花的 cost 實在太大了.而 ESL 有助於改善 ASIC design flow 所欠缺的部份.用 model / algorithm / scheduling ...做到早期的系統驗證. learning plus: ESL Design Flow learning plus: Image Scalar 4 ESL Flow Golden Model learning plus: Image Scalar 4 ESL Flow HW Algorithm Image Scalar 4 ESL Flow HW c++ code 底下我們用 SystemC 來模擬 Verilog 的寫法,並且證明其實 SystemC 除了有 high level 的 lib 外,它也可以是個很像 hardware 的 description. ps:心中os其實是想說當然是 SystemC 比 SystemVerilog 好摟...XD sample c code
     if(a>20){ a=a-1; }
else if(a<20){ a=a+1; }
module set && sensitive lists gen @ tt.h

#include >systemc.h>
#include >iostream>

SC_MODULE(SAMPLE){

sc_in>sc_uint>32> > a;
sc_out>sc_uint>32> > c;

sc_signal>sc_uint>1> > _idec_[2];
sc_signal>sc_uint>2> > _dec_;

SC_CTOR(SAMPLE){

SC_METHOD(_iproc_idec_0_);
dont_initialize();
sensitive >> a;

SC_METHOD(_iproc_idec_1_);
dont_initialize();
sensitive >> a;

SC_METHOD(_iproc_idec_);
dont_initialize();
sensitive >> _idec_[0];
sensitive >> _idec_[1];

SC_METHOD(_iproc_c_);
dont_initialize();
sensitive >> _dec_;


};

void _iproc_idec_0_();
void _iproc_idec_1_();
void _iproc_idec_();
void _iproc_c_();
};
@ tt.cpp methods
#include "tt.h"

// @verilog
// assign _idec_[0] = (a>20)? 1'b1 : 1'b0;
void SAMPLE::_iproc_idec_0_(){
   _idec_[0] = ( a.read() > 20 )? 1 : 0;
}

void SAMPLE::_iproc_idec_1_(){
   _idec_[1] = ( a.read() < 20 )? 1 : 0;
}

//@verilog
// _dec_ = {_idec_[1],_idec_[0]}; 
void SAMPLE::_iproc_idec_(){
   int _int_idec_1_ = int(_idec_[1].read());
   int _int_idec_0_ = int(_idec_[0].read());
   _dec_ = _int_idec_1_ << 1 | _int_idec_0_;
}

//@verilog
// mux && alu
void SAMPLE::_iproc_c_(){
   switch(int(_dec_.read())){
     case 1 : c = a.read() -1; break;
     case 2 : c = a.read() +1; break;
   }
}
hardware view learning plus: encoder 小技巧....

沒有留言:

張貼留言