CS/System C

[System C] 개발 환경 구축

아이스얼그레이 2022. 7. 24. 18:17

System C를 공부하기 위해 개발 환경을 구축했습니다.

 

System C는 C++의 라이브러리인데, RTL로 chip을 구현하기 전에 architecture를 구체화시켜 simulation 할 수 있는 언어입니다. Architecture design simulation에 System verilog, C도 사용되긴 합니다만, 이들 간의 명확한 차이는 모르겠습니다.

 

책을 사기에는 돈이 좀 아까워서.. 학교 도서관에서 위 책을 대출해서 공부해보려고 합니다.

 

1. System C library 설치

Systemc library

 

SystemC

 

www.accellera.org

위 링크를 타고 들어가면 SystemC를 설치할 수 있습니다. Window, Linux 모두 설치할 수 있지만, Visual Studio를 활용하기 위해 Window에서 설치했습니다.

 

저는 위 사진에서 표시한 파일을 다운받아서 설치했는데, .zip 파일을 받아도 무방합니다.

 

파일을 다운 받아서 원하는 경로에 압축을 풀어줍시다.

 

2. Visual Studio setting

Visual Studio를 IDE로 사용할 거라서 VS project를 세팅해줘야 합니다.

 

2.1. Solution Build

압축 해제한 폴더에서 다음 경로로 이동해줍니다.

systemc-2.3.3\msvc10\SystemC\

 

이동하면 SystemC.sln이라는 파일이 있는데 Visual Studio Solution 파일입니다. 이걸 실행해주세요.

파일 실행 후 아래 사진의 빌드 > 솔루션 빌드를 클릭해서 빌드해줍니다.(영어는 Build > Build Solution)

 

그럼 해당 솔루션 파일의 빌드가 시작되는데 약 1분 정도 걸립니다.

 

2.2. Create Project

위 과정이 끝났다면 프로젝트를 생성해줍니다.

 

VS 왼쪽 위의 파일 > 새로 만들기 > 프로젝트를 클릭해주세요.

 

그 후 아래 사진과 같이 콘솔 앱 템플릿을 선택해서 프로젝트를 생성합니다.

 

프로젝트 생성 경로는 systemc-2.3.3을 저장한 경로로 설정해주시면 됩니다.

 

2.3. Project properties setting

그다음 프로젝트의 속성을 설정해줍니다.

 

아까 생성한 프로젝트에서 프로젝트 > SC test(프로젝트명) 속성을 클릭합니다.

 

2.3.1. Cofiguration Properties > VC++ Directories

첫 번째로 변경할 부분입니다.

 

속성 변경 페이지에서 구성 속성 > VC++ 디렉터리로 이동합니다. 일반 탭에서 포함 디렉터리를 클릭하고 <편집...>을 클릭합니다.

 

여기서 줄 추가를 클릭하고 다음 경로를 입력해줍니다.

[systemc-2.3.3 하위 경로]\system-2.3.3\src

 

그리고 라이브러리 디렉터리에서 동일한 방법으로 경로를 추가해줍니다.

 

이브러리 디렉토리에서 추가할 경로는 [systemc-2.3.3 하위 경로]\system-2.3.3\msvc10\SystemC\x64\Debug

입니다. 중간에 x64 폴더는 없을 수도 있으니 없다면 바로 Debug 폴더를 지정해주면 됩니다.

 

2.3.2. C/C++

C/C++ 탭에서 명령줄로 이동합니다. 여기서 추가 옵션이라는 항목에 /vmg를 입력해주세요.

 

2.3.3. Linker

링커 탭에서 입력으로 이동합니다. 여기서 추가 종속성이라는 항목을 편집해주세요. 2.3.1과 같은 방식으로 systemc.lib

를 입력해주면 됩니다.

 

 

3. Test

세팅은 이제 끝났고 System C가 제대로 동작하는지 테스트해봅시다. 테스트는 역시 Hello World겠죠?

 

프로젝트에 default로 생성되는 .cpp파일에 다음 코드를 입력해주세요. System C로 작성한 prinf("Hello World\n"); 입니다.

#include "systemc.h"

SC_MODULE(hello_world) {
	SC_CTOR(hello_world) {

	}
	void say_hello() {
		cout << "Hello World.\n";
	}
};

int sc_main(int argc, char* argv[]) {
	hello_world hello("HELLO");

	hello.say_hello();
	return(0);
}

C++의 library이기 때문에 기본적은 문법은 C++을 따릅니다.

 

빌드 후 디버깅을 해보면 다음과 같이 Hello World가 출력됩니다.