SystemC는 sc_main에서 시작합니다. 보통은 여기서 부터 초기화를 하고 진행하면 되지만
경우에 따라서는 곤란한 경우가 존재합니다. 대표적인것이 특정 그래픽 라이브러리를 함께 사용하고자 할 경우 오류가 발생하게 됩니다. 이는 Multi Thread 환경에서 발생하는 오류입니다.
이를 해결하기 위해서는 해당 라이브러리의 Multi Thread Support 기능을 잘 조정해 주어야 하는데 이 역시 코딩할 때나 컴파일 할 때 신경을 써야 하는게 많으므로 현실적인 해결책이 아닙니다.
그래서 main 함수에서 multi thread에 들어가기 전에 초기화 시키는 방법을 사용하는데 문제는 systemC가 main 함수를 wrapping하여서 sc_main을 제공한다는 점입니다. 그래서 계속 오류가 발생하는 데요.. 이를 해결하기 위해서는 main 함수를 새로 만들어 주어야 합니다.
표준안에 따르면 SystemC는 sc_elab_and_sim 을 호출하여서 시작합니다. 그리고 별도로 main함수를 제공할 수 있도록 되어 있습니다.
과정은 아래와 같습니다.
#include "systemc.h"
//#include <iostream>
int main (int argc, char * argv[]) {
printf("This is Main Function\n ");
sc_elab_and_sim(argc,argv);
}
int sc_main (int argc, char * argv[]) {
// insert code here...
std::cout << "Hello SystemC!\n";
sc_start();
return 0;
}
This is Main Function
SystemC 2.2.0 --- May 25 2008 11:34:05
Copyright (c) 1996-2006 by all Contributors
ALL RIGHTS RESERVED
Packaged for MacOS by Logic Poet: http://www.logicpoet.com
Hello SystemC!
'ASIC SoC' 카테고리의 다른 글
PERL TIP (0) | 2009.12.05 |
---|---|
Timing Chart (0) | 2009.11.08 |
SystemC에서 배포가능 버전 만들기 (0) | 2009.11.01 |
취업 씨즌이 시작되었군요 (0) | 2009.10.27 |
SystemC : Module을 인스턴스 할 때에 파라미터 전달 하기. (0) | 2009.10.21 |