본문 바로가기

반응형

SystemC Tutorial

(7)
Ch6. Process Process 는 SytemC에서 기본적인 실행 단위 이다. SystemC에서 Proecess는 아래 3가지 종류가 있다. * Method * Thread * Clock Thread 각 preocess는 공히 sensitivity list라는 것을 갖는데, sensitivity list에 기술된 signal에 event가 발생할 때 process가 실행된다. 여기서 evnet라 함은 signal의 value가 바뀌는 것을 말한다. 1. Method Method는 sensitivity list 에 기술된 signal의 event가 발생할 경우 시작하고 순차적으로 실행된 후에 simulation kernel로 return한다. example) #include "systemc.h" SC_MODULE(my_mo..
Ch5. sc_export 사용하기 SystemC 2.1에서 부터 sc_export가 도입 되었다. sc_port와 뭔가 유사할 것 같은 느낌이 들지 않는가? 그렇다. sc_port는 sc_interface class를 매개로 하여 channel과 연결되고 이 channel은 또다른 sc_port와 연결 된다는 것을 배웠다. 즉 하나의 모듈에서 다른 모듈과 연결 되려면 반드시 channel을 통해야 한다. 하지만 sc_export를 사용하면 channel을 통할 필요 없이 직접 다른 모듈의 sc_port와 연결할 수 있다. 이것의 의미는 interface 구현 함수를 구현 하는channel을 module안으로 가져온다는 의미이다. 다시 말해 A라는 module과 B라는 모듈을 연결하기 위해 C라는 channel을 사용하는 경우 기존 sc_..
Ch4. SystemC 활용하기 - 사용자 정의 인터페이스/채널 앞선 장에서 모듈간 통신을 위해 Interface/port/channel이 필요하다는 것을 배웠다. SystemC에서 제공하는 in/output port와 primitive channel을 이용하여 하드웨어 통신을 모델링할 수 있었다. 그러나 SystemC를 제대로 활용하기 위해서는 이것으론 부족하다. 기존의 RTL level 모델링은 Verilog/VHDL과 같은 HDL이 더 편리할 것이다. 진정 SystemC가 필요한 부분은 좀 더 high level의 모델링과 검증 분야이다. 나중에 이야기할 기회가 있겠지만 SCV(SystemC Verification Standard)와 같은 library로 검증 분야에서 SystemC는 훌륭한 기능을 발휘할 수 있게 되었다.그러면 high level modelin..
Ch3. SystemC의 구성 요소 - Primitive Channel 앞서도 얘기 했지만 primitive channel에는 대표적으로 sc_signal과 sc_fifo가 있다. 그 외 여러가지가 있지만 자세한 것은 spec을 참조 하도록 하고 여기서는 가장 사용 빈도가 높은 sc_signal과 sc_fifo에 대해서만 알아 보자. 1. sc_signal 이 channel에는 sc_signal_inout_if의 read/write method 함수가 구현 되어 있다. 즉 sc_signal은 verilog HDL의 wire와 같은 개념으로써 module과 module간의 통신 매개체가 되는 것이다. channel을 사용할 때 공통적으로 주의해야 할 사항이 있다. 그것은 동시성을 위한 메카니즘인데 channel의 read/write method를 통해 어떤 값을 읽고 쓸 경우..
Ch2. SystemC의 구성 요소 - 인터페이스,포트,채널 자 이제 SystemC를 이용하여 하드웨어 모듈을 정의할 수 있었다. 그러면 모듈과 모듈간의 통신은 어떻게 할까? Verilog에서 모듈과 모듈을 연결할 때는 input/output port를 wire로 연결 해 주면 된다. SystemC에서는 약간 복잡한 메카니즘을 갖고 있다. 하지만 사용자 입장에서 세부적인 사항까지 다 이해할 필요는 없다. SystemC의 모듈간 통신을 위해서는 3가지 class가 필요하다. 그 하나는 인터페이스(interface) class이고 또 하나는 포트(port) class 그리고 마지막으로 채널(channel) class이다. SystemC의 모듈은 class이다. 모듈간 통신은 class간 통신과 같다. 그런데 class라는 것은 sw component이기 때문에 ver..
Ch1. SystemC의 구성요소 - module SystemC는 hardware를 표현하고 시뮬레이션 하기 위한 class library라고 할 수 있다. 그러면 어떤 class들이 있을까? 그 중 대표적인 것이 sc_module이다. Verilog에서 hardware를 기술할 때 module이라고 하는 keyword를 사용하여 hardware module을 기술한다. Hardware module은 input, output port와 내부에 function을 기술하기 위한 always문과 같은 process들이 존재한다. process라고 하는 것은 sensitivity list에 감응하여 동작하는 단위 기능이라고 생각하면 좋을 것이다. 주지 하다 싶이 process들은 서로 concurrent하게 동작하여 hardware특성을 기술할 수 있는 것이다..
Ch0. SystemC - Introduction SystemC는 무엇인가? 반도체 설계 분야에 일하는 사람들은 한 번 쯤 들어 보았을 것이다. 하지만 아직까지 현업에서 널리 사용되고 있지는 않은 것 같다. RTL 설계에서는 아직까지 HDL이 대세이고 검증에서도 Specman 이나 vera가 많이 쓰이는 것 같다. SystemC를 HDL같은 하드웨어 설계 언어로 생각하는 사람도 많은 것 같은데 실제론 그렇지 않다. SystemC는 사실 C++ 그 자체이고 단지 C++를 사용하여 Hardware modeling을 하기위해 만든 class library라고 하는 편이 맞을 것이다. 즉 SystemC는 동시성(concurrency), input/output port, clock, fifo 등과 같은 하드웨어 특성을 쉽게 구현 할 수 있는 class와 이 cl..

반응형