C/C++-based languages such as SystemC or SpecC can be used for both hardware and software description by raising the level of abstraction for hardware. This thesis proposes techniques for fast and accurate high-level co-simulation for multi-thread and multi-processor SoC design using SystemC for hardware and legacy C with RTOS(Real-Time Operating System) API for software. Automatically annotated legacy C synchronizes with SystemC clock events, and communicates with other modules through IO(Input/Output) variables and transaction level bus models. Generic RTOS scheduler and POSIX(Portable Operating System Interface) APIs are also provided for the real-time application. Designers can also easily apply the co-simulation framework to SoC design without troublesome re-writing or refinement to lower abstraction level, because the co-simulation frame is automatically constructed without additional efforts. About five or six times faster co-simulation speed than the ISS-based co-simulation along with various profiling data with 98% accuracy was achieved.
복잡한 SoC 디자인을 개발하기 위해서 하드웨어와 소프트웨어를 동시simulation을 할 수 있는 단일화된 platform의 요구가 커지고 있다. 하드웨어 기술에 대한 레벨을 올림으로써 사용자가 더욱 쉽게 디자인을 할 수 있는 요구 또한 늘어나고 있다. 소프트웨어와 하드웨어의 동시simulation을 통한 performance estimation, functional verification이 디자인 platform에 중요한 요소로서 자리를 잡고 있다. 이러한 요구로 C/C++ 기반인 SystemC, SpecC와 같은 언어들의 사용가능성과 빈도수가 점차 늘어나고 있는 추세이다.
여기에서는 SystemC 환경 내에서 multi-processor Core와 여러 system IP들의 동작을 빠르고, 정확하게 동시simulation 할 수 있는 platform을 제안한다. 기존의 legacy C를 수정하여 SystemC의 clock event에 동기를 자동적으로 해주게 되며, TLM(Transaction level modeling)과 operator 오버로드 기법을 도용하여 더욱 빠르게 동시simulation을 할 수 있도록 한다. 또한, RTOS를 지원하기 위해서 scheduler와 generic API들을 제작하였다. 디자이너는 제안한 방법들을 통하여 소프트웨어와 하드웨어가 통합된 동시simulation을 쉽고 빠르게 적용할 수 있는 디자인 검증의 모델을 얻을 수 있다.