KR101629725B1 - 프레임워크 기반의 혼합회로 시뮬레이션 시스템 및 방법 - Google Patents
프레임워크 기반의 혼합회로 시뮬레이션 시스템 및 방법 Download PDFInfo
- Publication number
- KR101629725B1 KR101629725B1 KR1020150000768A KR20150000768A KR101629725B1 KR 101629725 B1 KR101629725 B1 KR 101629725B1 KR 1020150000768 A KR1020150000768 A KR 1020150000768A KR 20150000768 A KR20150000768 A KR 20150000768A KR 101629725 B1 KR101629725 B1 KR 101629725B1
- Authority
- KR
- South Korea
- Prior art keywords
- component
- simulator
- simulation
- core
- emulator
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G06F17/5054—
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
본 발명은 프레임워크 기반의 혼합회로 시뮬레이션 시스템 및 방법에 관한 것으로, 보다 상세하게는 기존에 존재하는 회로 모델(IP)을 재사용하면서 혼합회로를 설계할 수 있는 시뮬레이션 시스템 및 방법에 관한 것이다.
이러한 목적을 달성하기 위하여 본 발명의 일 실시예에 따른 프레임워크 기반의 혼합회로 시뮬레이션 시스템은 미들웨어 모듈 및 어댑터 모듈을 포함한다.
이러한 목적을 달성하기 위하여 본 발명의 일 실시예에 따른 프레임워크 기반의 혼합회로 시뮬레이션 시스템은 미들웨어 모듈 및 어댑터 모듈을 포함한다.
Description
본 발명은 프레임워크 기반의 혼합회로 시뮬레이션 시스템 및 방법에 관한 것으로, 보다 상세하게는 기존에 존재하는 회로 모델(IP)을 재사용하면서 혼합회로를 설계할 수 있는 시뮬레이션 시스템 및 방법에 관한 것이다.
시스템 온 칩(SoC, System on Chip)은 다수의 기능이 하나의 칩 위에 구현된 반도체로서, 마이크로 프로세서(micro-processor), 메모리반도체, 디지털 신호 처리 프로세서(DSP), 마이크로 컨트롤러(MCU, micro controller unit) 등 개별 반도체를 하나의 칩에 통합한 것을 의미하며, 과거에는 별개의 반도체 칩으로 구현되었던 것을 하나의 칩 위에 집적(integration)함으로써 소형화와 고성능을 달성할 수 있다.
이 때 개별 기능을 구현하는 개개의 컴포넌트를 반도체 설계 분야에서는 특별히 IP(Intellectual Property)라고 일컫기도 한다. 반도체 설계 분야에서 일컫는 IP는 독립적인 기능을 구현하는 개별 모듈을 의미한다.
즉, IP(Intellectual Property)는 반도체 설계 및 제조공정 상에 적용되는 설계자산 혹은 지적재산을 의미하며, IP의 종류가 다양해지고, 회로의 복잡성이 날로 증가하고 있다. 한편, 시스템 온 칩 설계에서는 새로운 회로 또는 IP를 설계한 후, 기존에 존재하는 IP를 여러 다른 시스템에서 재사용 할 수 있는데, 일반적으로 모든 회로 및 IP에 대한 설계가 동시에 진행되지는 않는 것이 최근의 추세이므로, 시스템 온 칩(System on Chip)을 위한 새로운 회로 및 IP의 설계 및 검증을 위해서는 기 개발된 IP core를 재사용하는 것이 필수적이다.
IP core는 제조 시나 설계 시에 쉽게 삽입될 수 있도록 이식성이 있어야 하며, UART, CPU, 이더넷 제어 장치 및 PCI(peripheral component interconnect) 인터페이스가 모두 IP core에 해당된다.
IP core는 형태에 따라 hard core(IP 설계의 물리적 형태로서 플러그 앤 플레이용이며, 이식성과 유연성이 약함), firm core(하드 코어와 같으나 여러 애플리케이션에 맞춰 구성 가능) 및 soft core(3가지 중 가장 유연성이 강하고, 일단의 논리 게이트와 관련 IC 회로나 하드웨어 기술 언어(HDL) 코드로 구성)의 3가지 형태로 구분할 수 있다.
이때, hard core는 특정 기능(Memory, Sensor 등)에 최적화된 모델로서, 시뮬레이션 수행 시 내부 동작은 알 수 없고, 수정이 쉽지 않지만, 기능이 검증된 모델을 의미하며, soft core는 언어(Verilog, VHDL, Verilog-A, C/C++, Matlab/Simulink)와 같은 모델로 주어지며, 목표 회로와 모의 수준에 맞게 선택되어 그대로 혹은 수정 후 재사용이 가능하다.
한편, 전통적인 칩 레벨 설계 및 검증에 있어서, 디지털 회로는 Verilog(IEEE P1364 표준) 또는 VHDL(IEEE P1076 표준) 등의 표준화된 하드웨어 기술 언어(HDL)를 이용하고, 아날로그 회로는 SPICE를 이용하는 등 전용 소프트웨어 기반 시뮬레이터를 이용하였다.
시스템 온 칩(SoC, System on Chip)은 다양한 서브 블록(block)으로 구성되어 있으며, 블록 간의 상호 정보를 주고 받음에 따라 전체 시스템이 동작하게 된다. 이러한 SoC의 개발 시간을 단축하기 위해서는 각 서브 블록에 대응하는 기 개발된 soft core를 활용하여 시뮬레이션을 통한 시스템 레벨의 설계 및 검증이 요구된다. 하지만 하나의 시뮬레이터를 이용해, 다양한 언어의 기 개발된 soft core들을 조합하여 시스템으로 구성함으로써 모의하는 것은 사실상 불가능하므로, 각 언어를 모의할 수 있는 시뮬레이터들을 연동함으로써 전체적으로 시뮬레이션 할 수 있는 기술이 필요하다.
실제 칩은 일반적으로 시뮬레이션을 통해 1차 검증을 한 후, FPGA(field-programmable gate array) 에뮬레이션을 통해 2차 검증을 하여 만들어진다. 이때 FPGA와 같은 실제 칩을 초기 시뮬레이션 단계에서 활용할 경우, 검증 시 블록에 대응하는 칩에 내장된 hard core를 이용할 수 있는 장점이 있으며, 뿐만 아니라 수정이 더 필요 없는 검증된 soft core를 칩에 옮겨 시스템 레벨 시뮬레이션함으로써 시뮬레이션 성능을 향상시킬 수 있는(시뮬레이션 시간을 감소시킬 수 있는) 장점이 있다.
이에 따라, 다양한 언어로 개발된 설계될 IP와 기존 반도체 칩 내의 블록과의 연동 시뮬레이션이 절실히 요구되고 있고, 이에 대한 연구가 활발히 진행되고 있으나, 아직까진 설계될 IP와 기존 반도체 칩 내의 블록과의 연동 기술을 완벽하게 제공하는 시뮬레이터들 간 혹은 시뮬레이터와 하드웨어 간 연동 인터페이스가 없는게 현실이다.
한편, 한국공개특허 제2006-0037768호 "소프트웨어 시뮬레이터 및 이를 이용한 하드웨어 기술언어(HDL)의 시뮬레이션 연동 방법"은 시뮬레이션의 수행을 위해 디자인된 모듈로서, 시뮬레이터에서 구동되는 시뮬레이션 타겟, 및 시뮬레이션 타겟을 시뮬레이션하는 시뮬레이터와 적어도 하나의 외부 시뮬레이터 간에 데이터 전송을 위한 인터페이스를 제공하는 인터페이스를 포함하여 구성되며, 이에 따라, 시뮬레이션 타겟이, 시뮬레이션 타겟을 포함하고 있는 시뮬레이터 및 인터페이스를 통해 연결된 적어도 하나의 외부 시뮬레이터에 의해 시뮬레이션이 수행되는 기술을 제시한다.
상기 선행기술은 하드웨어 기술 언어(HDL, Hardware Description Language) 시뮬레이션의 수행 속도를 증가시키고, 하드웨어 기술 언어 시뮬레이션을 수행하기 위해 필요한 메모리의 양을 줄여, 적은 용량을 가지는 컴퓨터에서도 시뮬레이션이 가능하도록 하며, 서로 다른 하드웨어 기술 언어 시뮬레이터를 연동할 수 있기 때문에 서로 다른 시뮬레이터에서 동작하는 모델을 이용한 통합 시뮬레이션이 가능한 장점이 있다.
하지만, 상기 선행기술은 HDL로 기술된 모델에 대해서만 시뮬레이션의 수행이 가능하다. 즉, HDL로 기술된 소프트웨어 기반의 시뮬레이터 만에 대한 시뮬레이션만을 대상으로 하고 있는 한계가 있다. 이는 종래와 마찬가지로 시뮬레이션 수행 시 추상화된 해석만 함으로써 실제 물리적 동작에 대한 전기적 수준의 깊은 동작 검증이 힘든 문제가 있다.
또한, 상기 선행기술에서의 하드웨어 엑셀레이터는 시뮬레이션 타겟의 일부가 아닌, 시뮬레이터의 연산을 보조하기 위하여 전용 하드웨어를 이용하여 시뮬레이션 연산을 빠르게 수행하기 위한 것으로서, 이는 소프트웨어 기반의 시뮬레이터와 실제 하드웨어를 통합하여 시뮬레이션이 가능하도록 하는 역할을 수행하진 않는다. 즉, 상기 선행기술은 종래와 마찬가지로 현재 설계할 회로가 이미 실제 물리적으로 동작하는 칩 내의 블록과의 연계 동작을 하는지에 대한 검증이 불가능하며, 칩이 생산된 후 응용 시스템에 실 장착하여 동작 검증을 수행했을 때 발생하는 갖가지 버그들을 다시 한번 더 수정해야 하는 불편함이 여전히 존재한다.
본 발명은 프레임워크 기반의 혼합회로 시뮬레이션 시스템 및 방법에 관한 것으로, 기존에 존재하는 회로 모델(IP)을 재사용하면서 혼합회로를 설계할 수 있는 시뮬레이션 시스템 및 방법을 제공하려는 것을 목적으로 한다.
종래의 시뮬레이션 기술로는 현재 설계할 회로가 이미 실제 물리적으로 동작하는 칩 내의 블록을 활용했을 때 연계 동작이 가능한 지에 대한 검증이 어려운 한계가 있었다. 본 발명은 이러한 검증이 어려웠던 문제를 해결하려는 것을 목적으로 한다.
본 발명은 시뮬레이션 과정을 거쳐 칩이 생산된 후 응용 시스템에 실 장착하여 동작 검증을 수행했을 때 발생하는 갖가지 버그들을 다시 한번 더 수정해야 하는 불편함을 해소하려는 것을 목적으로 한다.
본 발명은 모델 수준으로 개발한 설계될 IP와 기존에 존재하는 반도체 칩 내의 블록과의 연동 시뮬레이션이 가능하도록, 소프트웨어 기반의 시뮬레이터와 실제 하드웨어를 통합 시뮬레이션하는 환경을 제공하려는 것을 목적으로 한다.
종래의 시뮬레이션 기술로는 기개발된 다양한 IP들로 구성된 전체 모델을 하나의 시뮬레이터로 모의하는 것이 불가능하였다. 본 발명은 시뮬레이터 레벨 재구성이 가능한 연동 시뮬레이션 프레임워크를 제안하려는 것을 목적으로 한다.
본 발명은 시뮬레이터 뿐만 아니라 에뮬레이터까지 모의 모델에 따라 재구성할 수 있어, 특정 hard core가 담긴 FPGA까지 시뮬레이션에 활용하려는 것을 목적으로 한다.
이러한 목적을 달성하기 위하여 본 발명의 일 실시예에 따른 프레임워크 기반의 혼합회로 시뮬레이션 시스템은 미들웨어 모듈 및 어댑터 모듈을 포함한다.
상기 미들웨어 모듈은 전자 회로에 대한 시뮬레이션 모델을 이용하여 상기 전자 회로의 동작을 시뮬레이션하는 소프트 코어 시뮬레이터 컴포넌트와 시간 경과에 따라 오퍼레이션을 실제로 진행하는 하드 코어 에뮬레이터 컴포넌트가 상호 연동 가능하도록 통합 시뮬레이션 환경을 제공하고, 상기 어댑터 모듈은 상기 미들웨어 모듈을 기반으로 이벤트 기반의 시뮬레이션을 진행하고, 상기 소프트 코어 시뮬레이터 컴포넌트와 상기 하드 코어 에뮬레이터 컴포넌트 각각의 입출력 신호의 값을 서로 인식할 수 있는 형태로 변환하여 제공하며, 이때, 상기 미들웨어 모듈은 상기 소프트 코어 시뮬레이터 컴포넌트 또는 상기 하드 코어 에뮬레이터 컴포넌트의 시뮬레이션 결과로 인한 상기 소프트 코어 시뮬레이터 컴포넌트와 상기 하드 코어 에뮬레이터 컴포넌트 각각의 입출력 신호의 변화를 다른 소프트 코어 시뮬레이터 컴포넌트 또는 상기 하드 코어 에뮬레이터 컴포넌트와 공유할 수 있도록 상기 어댑터 모듈로 제공하기 위한 소프트웨어 시뮬레이터 인터페이스 컴포넌트를 상기 소프트 코어 시뮬레이터 컴포넌트 또는 상기 하드 코어 에뮬레이터 컴포넌트와 상기 어댑터 모듈 사이에 배치할 수 있다. 또한, 상기 전자 회로에 대한 시뮬레이션 모델은 상기 전자 회로에 대하여 기능 및 성능이 이미 검증된 시뮬레이션 모델 또는 상기 전자 회로에 대하여 새롭게 생성된 시뮬레이션 모델일 수 있다.
또한, 상기 미들웨어 모듈은 상기 어댑터 모듈을 통해 표준화된 객체 포맷으로 변환된 상기 소프트 코어 시뮬레이터 컴포넌트와 상기 하드 코어 에뮬레이터 컴포넌트 각각의 입출력 신호의 값을 상기 소프트웨어 시뮬레이터 인터페이스 컴포넌트에 제공함으로써, 상기 소프트 코어 시뮬레이터 컴포넌트와 상기 하드 코어 에뮬레이터 컴포넌트를 상호 연동시킬 수 있다.
또한, 본 발명의 시스템은 상기 하드 코어 에뮬레이터 컴포넌트의 진행 시간이 상기 소프트 코어 시뮬레이터 컴포넌트의 시뮬레이션 상의 시간에 맞추어 제어되도록, 상기 하드 코어 에뮬레이터 컴포넌트의 클럭 속도보다 빠른 가상 클럭을 발생시키는 가상 클럭 생성기 모듈을 더 포함할 수 있으며, 이때, 상기 미들웨어 모듈은 상기 하드 코어 에뮬레이터 컴포넌트의 클럭의 상승 엣지 또는 하강 엣지 마다 발생하는 시뮬레이션 진행 요청 이벤트를 감지하고, 상기 가상 클럭 생성기 모듈은 상기 발생된 가상 클럭을 기반으로 상기 시뮬레이션 진행 요청 이벤트의 발생 주기를 측정하고, 상기 측정된 발생 주기의 시간상의 거리를 상기 소프트 코어 시뮬레이터 컴포넌트의 시간상의 거리와 대응하도록 확장시킬 수 있다.
한편, 본 발명의 일 실시예에 따른 프레임워크 기반의 혼합회로 시뮬레이션 방법은 미들웨어 모듈에 의하여, 전자 회로에 대한 시뮬레이션 모델을 이용하여 상기 전자 회로의 동작을 시뮬레이션하는 소프트 코어 시뮬레이터 컴포넌트와 시간 경과에 따라 오퍼레이션을 실제로 진행하는 하드 코어 에뮬레이터 컴포넌트가 상호 연동 가능하도록 통합 시뮬레이션 환경을 제공하는 단계; 및 어댑터 모듈에 의하여, 상기 미들웨어 모듈을 기반으로 이벤트 기반의 시뮬레이션을 진행하고, 상기 소프트 코어 시뮬레이터 컴포넌트와 상기 하드 코어 에뮬레이터 컴포넌트 각각의 입출력 신호의 값을 서로 인식할 수 있는 형태로 변환하여 제공하는 단계를 포함할 수 있으며, 이때, 상기 통합 시뮬레이션 환경을 제공하는 단계는 상기 소프트 코어 시뮬레이터 컴포넌트 또는 상기 하드 코어 에뮬레이터 컴포넌트의 시뮬레이션 결과로 인한 상기 소프트 코어 시뮬레이터 컴포넌트와 상기 하드 코어 에뮬레이터 컴포넌트 각각의 입출력 신호의 변화를 다른 소프트 코어 시뮬레이터 컴포넌트 또는 상기 하드 코어 에뮬레이터 컴포넌트와 공유할 수 있도록 상기 어댑터 모듈로 제공하기 위한 소프트웨어 시뮬레이터 인터페이스 컴포넌트를 상기 소프트 코어 시뮬레이터 컴포넌트 또는 상기 하드 코어 에뮬레이터 컴포넌트와 상기 어댑터 모듈 사이에 배치하는 단계를 포함할 수 있다.
또한, 상기 통합 시뮬레이션 환경을 제공하는 단계는 상기 전자 회로에 대하여 기능 및 성능이 이미 검증된 시뮬레이션 모델 또는 상기 전자 회로에 대하여 새롭게 생성된 시뮬레이션 모델을 이용하여 상기 소프트 코어 시뮬레이터 컴포넌트를 생성하는 단계와, 상기 어댑터 모듈을 통해 표준화된 객체 포맷으로 변환된 상기 소프트 코어 시뮬레이터 컴포넌트와 상기 하드 코어 에뮬레이터 컴포넌트 각각의 입출력 신호의 값을 상기 소프트웨어 시뮬레이터 인터페이스 컴포넌트에 제공함으로써, 상기 소프트 코어 시뮬레이터 컴포넌트와 상기 하드 코어 에뮬레이터 컴포넌트를 상호 연동시키는 단계를 포함할 수 있다.
또한, 본 발명의 방법은 상기 소프트웨어 시뮬레이터 인터페이스 컴포넌트를 상기 소프트 코어 시뮬레이터 컴포넌트 또는 상기 하드 코어 에뮬레이터 컴포넌트와 상기 어댑터 모듈 사이에 배치하는 단계가 실행된 이후에, 가상 클럭 생성기 모듈에 의하여, 상기 하드 코어 에뮬레이터 컴포넌트의 진행 시간이 상기 소프트 코어 시뮬레이터 컴포넌트의 시뮬레이션 상의 시간에 맞추어 제어되도록, 상기 하드 코어 에뮬레이터 컴포넌트의 클럭 속도보다 빠른 가상 클럭을 발생시키는 단계; 상기 미들웨어 모듈에 의하여, 상기 하드 코어 에뮬레이터 컴포넌트의 클럭의 상승 엣지 또는 하강 엣지 마다 발생하는 시뮬레이션 진행 요청 이벤트를 감지하는 단계; 및 상기 가상 클럭 생성기 모듈에 의하여, 상기 발생된 가상 클럭을 기반으로 상기 시뮬레이션 진행 요청 이벤트의 발생 주기를 측정하고, 상기 측정된 발생 주기의 시간상의 거리를 상기 소프트 코어 시뮬레이터 컴포넌트의 시간상의 거리와 대응하도록 확장시키는 단계; 를 더 포함할 수 있다.
본 발명은 프레임워크 기반의 혼합회로 시뮬레이션 시스템 및 방법에 관한 것으로, 기존에 존재하는 회로 모델(IP)을 재사용하면서 혼합회로를 설계할 수 있는 효과가 있다.
종래의 시뮬레이션 기술로는 현재 설계할 회로가 이미 실제 물리적으로 동작하는 칩 내의 블록을 활용했을 때 연계 동작이 가능한 지에 대한 검증이 어려운 한계가 있었다. 본 발명은 이러한 검증이 어려웠던 문제를 해결할 수 있는 효과가 있다.
본 발명은 전자 회로에 대하여 기능 및 성능이 이미 검증된 시뮬레이션 모델과 상기 전자 회로에 대하여 새롭게 생성된 시뮬레이션 모델을 혼합하여 설계한 회로에 대한 검증이 가능한 효과가 있다.
본 발명은 시뮬레이션 과정을 거쳐 칩이 생산된 후 응용 시스템에 실 장착하여 동작 검증을 수행했을 때 발생하는 갖가지 버그들을 다시 한번 더 수정해야 하는 불편함을 해소할 수 있는 효과가 있다. 즉, 본 발명은 디지털 모델 개발 시 합성 후 FPGA의 하드 코어와 연결하여 동작 검증을 하는 방식이 아니라, 시뮬레이션 레벨에서 하드웨어와 같이 기본적인 동작 검증을 수행하는 방식을 이용함으로써, FPGA에 합성하여 검증하기 전의 시행착오를 줄일 수 있는 효과가 있다.
본 발명은 프레임워크를 기반으로 소프트웨어 기반의 시뮬레이터와 실제 하드웨어를 통합하여 시뮬레이션 가능하도록 하는 환경을 제공함으로써, SoC(System on Chip) 설계 및 검증에 대한 효율을 향상시킬 수 있다.
본 발명에 따르면 종래의 시뮬레이션 기술로는 불가능하였던 기개발된 다양한 IP들로 구성된 전체 모델을 하나의 시뮬레이터로 모의할 수 있도록, 시뮬레이터 레벨 재구성이 가능한 연동 시뮬레이션 프레임워크를 구현할 수 있다.
본 발명에 따르면 시뮬레이터 뿐만 아니라 에뮬레이터까지 모의 모델에 따라 재구성할 수 있어, 특정 hard core가 담긴 FPGA까지 시뮬레이션에 활용할 수 있다.
도 1은 본 발명의 배경이 되는 기술의 구조를 개략적으로 나타낸 도면이다.
도 2는 본 발명의 일 실시예에 따른 전체 구성을 개략적으로 나타낸 도면이다.
도 3은 본 발명의 일 실시예에 따른 프레임워크 기반의 혼합회로 시뮬레이션 시스템의 개략적인 구성을 나타낸 도면이다.
도 4는 본 발명의 일 실시예에 따른 어댑터 모듈 내에 정의된 FOM의 예를 나타낸 도면이다.
도 5는 본 발명의 일 실시예에 따른 하드 코어 에뮬레이터 컴포넌트의 세부 구성을 나타낸 도면이다.
도 6은 본 발명의 일 실시예에 따른 소프트웨어 시뮬레이터 인터페이스 컴포넌트의 표준 정의를 나타낸 도면이다.
도 7은 본 발명의 일 실시예에 따른 어댑터 모듈 내부에 포함되는 콜백 함수의 예를 나타낸 도면이다.
도 8은 본 발명의 일 실시예에 따른 어댑터 모듈이 이벤트 신호를 변환하는 예를 나타낸 도면이다.
도 9는 본 발명의 일 실시예에 따른 프레임워크 기반의 혼합회로 시뮬레이션 방법에 대한 개략적인 동작 흐름도이다.
도 10은 본 발명의 일 실시예에 따른 통합 시뮬레이션 환경을 제공하는 단계의 세부적인 동작 흐름도이다.
도 2는 본 발명의 일 실시예에 따른 전체 구성을 개략적으로 나타낸 도면이다.
도 3은 본 발명의 일 실시예에 따른 프레임워크 기반의 혼합회로 시뮬레이션 시스템의 개략적인 구성을 나타낸 도면이다.
도 4는 본 발명의 일 실시예에 따른 어댑터 모듈 내에 정의된 FOM의 예를 나타낸 도면이다.
도 5는 본 발명의 일 실시예에 따른 하드 코어 에뮬레이터 컴포넌트의 세부 구성을 나타낸 도면이다.
도 6은 본 발명의 일 실시예에 따른 소프트웨어 시뮬레이터 인터페이스 컴포넌트의 표준 정의를 나타낸 도면이다.
도 7은 본 발명의 일 실시예에 따른 어댑터 모듈 내부에 포함되는 콜백 함수의 예를 나타낸 도면이다.
도 8은 본 발명의 일 실시예에 따른 어댑터 모듈이 이벤트 신호를 변환하는 예를 나타낸 도면이다.
도 9는 본 발명의 일 실시예에 따른 프레임워크 기반의 혼합회로 시뮬레이션 방법에 대한 개략적인 동작 흐름도이다.
도 10은 본 발명의 일 실시예에 따른 통합 시뮬레이션 환경을 제공하는 단계의 세부적인 동작 흐름도이다.
이하, 본 발명의 바람직한 실시예를 첨부된 도면들을 참조하여 상세히 설명한다. 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략하기로 한다. 또한 본 발명의 실시예들을 설명함에 있어 구체적인 수치는 실시예에 불과하다.
본 발명은 프레임워크 기반의 혼합회로 시뮬레이션 시스템 및 방법에 관한 것으로, 보다 상세하게는 기존에 존재하는 회로 모델(IP)을 재사용하면서 혼합회로를 설계할 수 있는 시뮬레이션 시스템 및 방법에 관한 것이다.
본 발명에서 제안하는 프레임워크(framework)는 HAL/RTI(IEEE 표준 연동체계)를 통해 다양한 soft core 수행을 위해 기 개발된 soft core 시뮬레이터와 hard core 수행을 위한 에뮬레이터 간에 연동 시뮬레이션이 가능하도록 하는 기술을 제공하며, 이를 위하여 본 발명에서는 HLA/RTI에 이기종 soft core 시뮬레이터와 hard core 에뮬레이터가 참여하여 연동/분산 시뮬레이션이 될 수 있도록 하는 어댑터가 제안될 수 있다.
먼저, 도 1은 본 발명의 배경이 되는 기술의 구조를 개략적으로 나타낸 도면이다.
도 1을 참조하여 본 발명의 배경이 되는 기술의 구조를 간단히 설명하면, 시스템 온 칩(System on Chip)의 설계 및 검증을 위해서는 기 개발된 IP core를 재사용하는 것이 필수적이며, IP core는 형태에 따라 soft core와 hard core로 구분될 수 있다. 이때, soft core는 Verilog, VHDL, Verilog-A, C/C++, Matlab/Simulink와 같은 언어 모델로 주어지고, 목표 회로와 모의 수준에 맞게 선택되어 그대로 혹은 수정 후 재사용 가능하며, hard core는 IP 설계의 물리적 형태로서 시뮬레이션 수행 시 내부 동작은 알 수 없고, 수정이 쉽지 않지만 기능이 검증된 모델을 의미한다.
그리고, 혼합 신호 회로 설계 시 새로 설계한 회로(Design Block)가 기 개발된 IP core(Reusable Block)와 결합되어 잘 동작하는지 확인하기 위하여 시뮬레이션을 수행하게 되며, 이때, IP core의 특성에 따라 각 특성에 맞는 시뮬레이터가 동작함으로써 시뮬레이션이 수행된다.
예를 들어, soft core의 경우에는, Verilog Model이 Verilog 시뮬레이터를 이용하고, Netlist가 SPICE 시뮬레이터를 이용하는 등, 각각의 특성에 맞는 전용 시뮬레이터를 동작시킴으로써 soft core의 시뮬레이션을 수행할 수 있으며, hard core의 경우에는 펑션 제너레이터의 기능을 수행하는 FPGA 등을 이용함으로써 시뮬레이션이 수행될 수 있다.
한편, 상이한 조직에서 상이한 목적으로 개발된 개별 시뮬레이션(simulation)들을 하나의 커다란 시뮬레이션으로 결합시켜주는 처리를 분산 처리라 하며, 이러한 처리를 하는 소프트웨어를 미들웨어(middleware) 또는 분산 미들웨어라고도 한다.
RTI(Run Time Infrastructure)는 이러한 분산 미들웨어의 하나로서, 분산 시뮬레이션 환경에서 모의 개체에 대한 재 사용성과 체계간 상호 운용성을 촉진시키기 위해서 제안된 표준기술 구조인 HLA(High Level Architecture)표준의 소프트웨어이다. 이때, HLA는 미국방성에서 모델과 시뮬레이션에 공통의 구조와 인터페이스를 제공하기 위해 개발된 통합 구조를 말한다.
HLA 인터페이스 표준 구현물인 RTI는 시뮬레이션에 참여하는 시뮬레이터 간 정보 교환을 위해서 시뮬레이션 연동 모델인 FOM(Federation Object Model)을 사용하며, 각각의 시뮬레이터는 참여하는 시뮬레이션 내에서 동일한 FOM을 소유해야만 하는 특징을 지닌다.
HLA/RTI를 기반으로 통합 시뮬레이션을 수행하는 연구가 종래에 다수 존재하였지만, 기존에 존재하는 연구들은 소프트웨어를 기반으로 하는 이기종 시뮬레이터 간에 통합 시뮬레이션을 지원하는 방법에 관한 연구가 대다수였으며, 본 발명과 같이 소프트웨어 기반의 시뮬레이터와 실제 하드웨어를 통합하여 시뮬레이션을 지원하는 기술은 존재하지 않았다.
따라서, 본 발명은 HLA/RTI를 기반으로 소프트웨어 기반의 시뮬레이터와 실제 하드웨어를 통합하여 시뮬레이션 가능하도록 하는 환경을 제공함으로써, SoC(System on Chip) 설계 및 검증에 대한 효율을 향상시킬 수 있다.
도 2는 본 발명의 일 실시예에 따른 전체 구성을 개략적으로 나타낸 도면이다.
도 2를 참조하여 본 발명의 일 실시예에 따른 프레임워크 기반의 혼합회로 시뮬레이션 시스템(200)의 전체 구성 및 개념을 간단히 설명하자면, 통상적으로 soft core는 Virtual Analog/Digital Signal로 시뮬레이션 하기 위해서 각 언어 모델에 해당하는 전용 시뮬레이터가 이용된다. 이때, Virtual Analog/Digital Signal로 시뮬레이션이 가능한 언어 모델에는 Verilog, VHDL, Verilog-A, C/C++, Matlab/Simulink 등이 있으며, Verilog는 Verilog 시뮬레이터, VHDL는 VHDL 시뮬레이터를 이용하는 등, 각 언어 모델을 시뮬레이션 하기 위해서는 전용 시뮬레이터가 이용된다.
본 발명에서 소프트 코어 시뮬레이터 컴포넌트(10)는 soft core를 시뮬레이션하는 시뮬레이터들을 의미하는 것으로서, Verilog 시뮬레이터, VHDL 시뮬레이터 등이 포함될 수 있으며, 소프트 코어 시뮬레이터 컴포넌트(10)는 soft core와 어댑터 간에 위치하여 하드 코어와의 연계 시뮬레이션이 가능하도록 지원할 수 있다.
한편, 본 발명에서 하드 코어 에뮬레이터 컴포넌트(20)는 hard core를 Virtual Digital Signal 또는 Real Signal로 시뮬레이션하는 2가지 방법으로 구분할 수 있으며, hard core를 Virtual Digital Signal로 시뮬레이션하기 위해서는 SPICE 시뮬레이터가 이용될 수 있고, hard core를 Real Signal로 시뮬레이션하기 위해서는 일련의 시뮬레이터의 역할을 하는 FPGA 등이 이용될 수 있다. 하드 코어 에뮬레이터 컴포넌트(20)는 hard core와 어댑터 간에 위치하여 소프트 코어와의 연계 시뮬레이션이 가능하도록 지원할 수 있다.
이 때, Real Signal은 반도체 칩의 형태로 이미 구현되어 있는 메모리나 아날로그 회로 등의 hard core(기존에 존재하는 회로 모델(IP))를 구동시키는 신호를 말하며, 이러한 칩 형태의 기존 회로 모델을 구동시켜주는 역할을 하는 것이 FPGA 등 일 수 있다. 즉, FPGA는 이미 설계된 하드웨어를 반도체로 생산하기 직전 최종적으로 하드웨어의 동작 및 성능을 검증하기 위해 제작하는 중간 개발물 형태의 집적 회로(IC)로서, 본 발명에서 FPGA는 Real Signal을 수신하여 칩 형태의 기존 회로 모델(IP)을 구동시키고, 상기 칩 형태의 기존 회로 모델을 구동시킴으로써 발생한 신호를 외부(어댑터 모듈(30))로 전달해 주는 역할을 수행할 수 있다.
어댑터 모듈(30)은 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20) 각각이 통합 시뮬레이션 환경을 제공하는 미들웨어 모듈(50)과 상호 연동 가능하도록, 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20) 각각의 입출력 신호의 값을 서로 인식할 수 있는 형태로 변환하여 제공하는 모듈을 의미한다. 이에 대한 설명은 이후에 보다 자세히 설명하기로 한다.
미들웨어 모듈(50)은 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20)가 상호 연동 가능하도록 통합 시뮬레이션 환경을 제공하는 모듈로서, IEEE 표준 연동체계인 HLA/RTI를 의미하며, 이에 대한 설명은 이후에 보다 자세히 설명하기로 한다.
즉, 본 발명의 프레임워크 기반의 혼합회로 시뮬레이션 시스템(200)은 상기에 제시된 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20)가 어댑터 모듈(30)과 미들웨어 모듈(50)을 이용함으로써 통합 시뮬레이션이 가능하도록 하는 프레임워크를 제안한다. 이하에서는 본 발명의 기술에 대해 보다 자세히 설명하기로 한다.
도 3은 본 발명의 일 실시예에 따른 프레임워크 기반의 혼합회로 시뮬레이션 시스템의 개략적인 구성을 나타낸 도면이다.
도 3을 참조하면, 본 발명의 일 실시예에 따른 프레임워크 기반의 혼합회로 시뮬레이션 시스템(200)은 크게 소프트 코어 시뮬레이터 컴포넌트(10), 하드 코어 에뮬레이터 컴포넌트(20), 어댑터 모듈(30), 및 미들웨어 모듈(50)을 포함할 수 있다.
도 3에 도시되지는 않았지만 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(10) 내에는 인터페이스 컴포넌트가 더 포함될 수도 있다. 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(10) 내의 인터페이스 컴포넌트는 사용자가 외부에서 시뮬레이터나 soft core 모델의 데이터에 접근하거나 혹은 데이터의 수정이 가능하도록 하는 프로그램을 구현하기 위한 인터페이스를 의미할 수 있다.
소프트 코어 시뮬레이터 컴포넌트(10)는 전자 회로에 대한 시뮬레이션 모델을 이용하여 상기 전자 회로의 동작을 시뮬레이션하는 컴포넌트를 의미하는 것으로서, 소프트 코어 시뮬레이터 모듈과 그 의미가 상응한다. 이때, 상기 전자 회로에 대한 시뮬레이션 모델이라 함은 상기 전자 회로에 대하여 기능 및 성능이 이미 검증된 시뮬레이션 모델 또는 상기 전자 회로에 대하여 새롭게 생성된 시뮬레이션 모델을 의미하는 것일 수 있다. 본 발명의 변형된 실시예에서는 소프트 코어 시뮬레이터 컴포넌트(10)가 소프트웨어 시뮬레이터 인터페이스 컴포넌트에 의하여 둘러싸인 형태로 소프트 코어 시뮬레이터 모듈이 구성될 수도 있다.
소프트 코어 시뮬레이터 컴포넌트(10)는 전자 회로의 동작을 시뮬레이션하는 소프트웨어 기반의 시뮬레이터로서, IP core 중 soft core를 시뮬레이션하는 시뮬레이터가 포함되며, 더 자세하게는 Verilog(IEEE P1364 표준) 언어 모델을 이용하는 Verilog 시뮬레이터(디지털 회로 시뮬레이터), VHDL(IEEE P1076 표준) 언어 모델을 이용하는 VHDL 시뮬레이터(디지털 회로 시뮬레이터), Verilog-AMS 언어 모델을 이용하는 Verilog-AMS 시뮬레이터 (혼합신호 회로 시뮬레이터), 아날로그 회로 시뮬레이터인 SPICE 등이 될 수 있다.
하드 코어 에뮬레이터 컴포넌트(20)는 시간 경과에 따라 오퍼레이션을 실제로 진행하는 컴포넌트를 의미하는 것으로서, 하드 코어 에뮬레이터 모듈과 그 의미가 상응하며, Real Signal을 생성하는 실제 칩과 FPGA로 이루어진 모듈을 의미할 수 있다. 또한, 하드 코어 에뮬레이터 컴포넌트(20)는 IP 설계의 물리적 형태로서 시뮬레이션 수행 시 내부 동작은 알 수 없고, 수정이 쉽지 않지만 기능이 검증된 모델일 수 있다. 또한, 하드 코어 에뮬레이터 컴포넌트(20)는 호스트 컴퓨터에서 하드웨어의 시그널을 받거나 주며, 하드웨어의 클럭(clock)을 제어하는 프로그램일 수 있으며, 또한, 하드웨어와 소프트웨어를 연결해 주는, 즉 Proxy(bridge) 역할을 해주는 도구일 수 있다.
미들웨어 모듈(50)은 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20)가 상호 연동 가능하도록 통합 시뮬레이션 환경을 제공하는 미들웨어를 말하며, 미들웨어 모듈(50)은 HLA/RTI(High Level Architecture/Run Time Infrastructure)일 수 있다. 본 발명은 HLA/RTI를 기반으로 하고, 어댑터 모듈(30)을 이용함으로써, 이기종 소프트웨어 기반 시뮬레이터 간의 통합 시뮬레이션 뿐만 아니라 소프트웨어 기반 시뮬레이터와 실제 하드웨어를 통합 시뮬레이션하는 것이 가능하다.
또한, 미들웨어 모듈(50)은 통합 시뮬레이션 환경을 제공하기 위하여, 소프트 코어 시뮬레이터 컴포넌트(10) 또는 하드 코어 에뮬레이터 컴포넌트(20)의 시뮬레이션 결과로 인한 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20) 각각의 입출력 신호의 변화를 다른 소프트 코어 시뮬레이터 컴포넌트 또는 상기 하드 코어 에뮬레이터 컴포넌트(20)와 공유할 수 있도록 어댑터 모듈(30)로 제공하기 위한 소프트웨어 시뮬레이터 인터페이스 컴포넌트를 소프트 코어 시뮬레이터 컴포넌트(10) 또는 하드 코어 에뮬레이터 컴포넌트(20)와 상기 어댑터 모듈(30) 사이에 배치할 수 있다.
이때, 미들웨어 모듈(50)은 소프트웨어 시뮬레이터 인터페이스 컴포넌트가 소프트 코어 시뮬레이터 컴포넌트(10) 또는 하드 코어 에뮬레이터 컴포넌트(20) 각각을 둘러싸도록 래핑(wrapping)하여 소프트 코어 또는 하드 코어에 대한 시뮬레이터/에뮬레이터 모듈을 생성할 수 있다.
또한, 미들웨어 모듈(50)은 어댑터 모듈(30)을 통해 표준화된 객체 포맷(FOM)으로 변환된 상기 소프트 코어 시뮬레이터 컴포넌트(10)와 상기 하드 코어 에뮬레이터 컴포넌트(20) 각각의 입출력 신호의 값을 상기 소프트웨어 시뮬레이터 인터페이스 컴포넌트에 제공함으로써, 상기 소프트 코어 시뮬레이터 컴포넌트(10)와 상기 하드 코어 에뮬레이터 컴포넌트(20)를 상호 연동시킬 수 있다.
또한, 미들웨어 모듈(50)은 이벤트 기반의 시뮬레이션을 진행할 때, 상기 어댑터 모듈(30)의 상기 소프트 코어 시뮬레이터 컴포넌트(10) 또는 상기 하드 코어 에뮬레이터 컴포넌트(20)에 대한 플러그-인(plug-in)을 감지함으로써, 상기 소프트 코어 시뮬레이터 컴포넌트(10)와 상기 하드 코어 에뮬레이터 컴포넌트(20)를 상호 연동시킬 수 있다.
또한, 미들웨어 모듈(50)은 상기 소프트 코어 시뮬레이터 컴포넌트(10)와 상기 하드 코에 에뮬레이터 컴포넌트(20) 각각에서 수행되는 시뮬레이션의 시간에 접근하거나 데이터 수정이 가능하도록 하는 API와 콜백 함수로 구성된 상기 소프트웨어 시뮬레이터 인터페이스 컴포넌트를 이용하여, 상기 소프트 코어 시뮬레이터 컴포넌트와 상기 하드 코어 에뮬레이터 컴포넌트를 상호 연동시킬 수 있다.
또한, 미들웨어 모듈(50)은 상기 어댑터 모듈(30)을 이용하여 상기 하드 코어 에뮬레이터 컴포넌트(20)의 진행 시간을 상기 소프트 코어 시뮬레이터 컴포넌트(10)의 시뮬레이션 상의 시간과 동기화할 수 있다.
어댑터 모듈(30)은 미들웨어 모듈(50)을 기반으로 이벤트 기반의 시뮬레이션을 진행하고, 상기 소프트 코어 시뮬레이터 컴포넌트(10)와 상기 하드 코어 에뮬레이터 컴포넌트(20) 각각의 입출력 신호의 값을 서로 인식할 수 있는 형태로 변환하여 제공한다.
또한, 어댑터 모듈(30)은 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20)가 HLA/RTI(50)에 참여하여 연동될 수 있도록 도울 수 있으며, 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20) 간에 시간 동기화 및 데이터 변환을 도울 수 있다.
또한, 어댑터 모듈(30)은 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20)가 HLA 서비스를 이용할 수 있도록 하는 인터페이스를 제공할 수 있다. 더 자세히 말하자면, 다양한 soft core 모의를 위한 시뮬레이터들 중 일부는 외부 표준 인터페이스가 존재한다. 즉, Verilog 및 Verilog AMS 계열 시뮬레이터는 외부 IEEE 표준 인터페이스인 Verilog PLI (Verilog Programming language Interface)를 지원하며, VHDL 및 VHDL AMS 계열 시뮬레이터는 VHDL PLI (Verilog Programming language Interface)와 같은 표준 인터페이스를 지원한다. 이때, 본 발명에서 소프트웨어 시뮬레이터 인터페이스 컴포넌트는 소프트 코어 시뮬레이터 컴포넌트(10)와 다른 소프트 코어 시뮬레이터 컴포넌트, 혹은 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20) 간에 데이터 전송을 위한 범용의 인터페이스를 제공하며, 이에 대한 자세한 설명은 추후에 하기로 한다.
어댑터 모듈(30)은 다양한 soft core 모의를 위한 시뮬레이터들이 지원하는 각기 다른 외부 표준 인터페이스를 통합적으로 지원 가능하도록 하는 라이브러리를 지원한다. 다시 말해, 어댑터 모듈(30)은 소프트 코어 시뮬레이터 컴포넌트(10) 및 하드 코어 에뮬레이터 컴포넌트(20)의 타입에 대응하는 라이브러리(즉, VHDL, Verilog-AMS, FPGA 등 모든 soft core 타입 및 hard core 타입에 대응하는 라이브러리)를 지원하기 때문에, 어댑터 모듈(30)은 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20) 간에 상호 연동되는 통합 시뮬레이션을 가능하게 한다. 다만, 일부 외부 인터페이스를 지원하지 않는 시뮬레이터는 어댑터 모듈(30)이 라이브러리를 이용할 수 있도록 하는 외부 시뮬레이터 인터페이스를 제공하도록 일부 수정이 요구될 수 있다.
본 발명에서 어댑터 모듈(30)은 통합 시뮬레이션에서 이벤트 기반의 시뮬레이션을 진행할 때, 소프트 코어 시뮬레이터 컴포넌트(10) 또는 하드 코어 에뮬레이터 컴포넌트(20)에 라이브러리 형태로 플러그-인(plug-in) 됨으로써, 소프트 코어 시뮬레이터 컴포넌트(10) 또는 하드 코어 에뮬레이터 컴포넌트(20)가 HLA 서비스를 이용할 수 있게 된다.
또한, 어댑터 모듈(30)은 상기 소프트웨어 시뮬레이터 인터페이스 컴포넌트가 제공하는 API와 상기 미들웨어 모듈(50)의 HLA 서비스에 이용되는 API를 기반으로 구현된 콜백 함수들의 집합으로 구성될 수 있으며, 이를 이용해 소프트 코어 시뮬레이터 컴포넌트(10) 또는 하드 코어 에뮬레이터 컴포넌트(20)에 라이브러리 형태로 플러그-인(plug-in)될 수 있다.
한편, 본 발명에서의 통합 시뮬레이션이라 함은 소프트 코어 시뮬레이터와 다른 소프트 코어 시뮬레이터를 함께 시뮬레이션하는 것 뿐만 아니라 소프트 코어 시뮬레이터와 실제 하드웨어를 함께 시뮬레이션하는 것을 의미한다.
어댑터 모듈(30)은 소프트 코어 시뮬레이터 컴포넌트(10)와 다른 소프트 코어 시뮬레이터 컴포넌트 간, 및 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20) 간에 전송되는 데이터를 표준화된 객체 포맷(FOM)으로 변환할 수 있다. 이는 HLA 인터페이스 표준 구현물인 RTI가 시뮬레이션에 참여하는 시뮬레이터 간 정보 교환을 위해서 시뮬레이션 연동 모델인 FOM(Federation Object Model)을 사용하고 있으며, 각각의 시뮬레이터는 참여하는 시뮬레이션 내에서 동일한 FOM을 소유해야만 시뮬레이터 간 정보 교환이 가능하기 때문에, 어댑터 모듈(30)은 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20) 각각의 입출력 신호의 값을 표준화된 객체 포맷으로 변환해야 한다.
이때, 다수의 시뮬레이터 간의 정보 교환을 위하여 RTI의 FOM을 사용하는 것이 일반적이라 생각할 수 있으나, 종래에는 다수의 소프트웨어 기반 시뮬레이터들 간에 통합 시뮬레이션을 위하여 FOM을 사용(즉, 소프트웨어 기반 시뮬레이터에 대한 FOM정보만 이용)한 반면, 본 발명은 어댑터 모듈(30)이 소프트 코어 시뮬레이터 컴포넌트(10)에 관한 FOM 정보 뿐만 아니라 하드 코어 에뮬레이터 컴포넌트(20)에 관한 FOM 정보를 포함하고 있기 때문에, 종래와 같은 다수의 소프트웨어 기반 시뮬레이터들 간에 통합 시뮬레이션 뿐만 아니라, 소프트웨어 기반 시뮬레이터와 실제 하드웨어 간에 통합 시뮬레이션이 가능하다. 이는 종래 기술과 차별화된 본 발명의 특징이라 할 수 있다.
상기 FOM(Federation Object Model)에는 HLA에 연동하는 객체(Object)와 상호 작용(interaction)을 기술하게 되며, 분산 혼합회로 시뮬레이션 환경에서는 시뮬레이터 간 전송할 데이터를 기입하게 된다. 즉, 본 발명에서는 소프트 코어 시뮬레이터 컴포넌트(10)에서의 입출력 신호의 데이터와 하드 코어 에뮬레이터 컴포넌트(20)에서의 입출력 신호의 데이터를 FOM에 기입하게 된다.
도 4는 본 발명의 일 실시예에 따른 어댑터 모듈 내에 정의된 FOM의 예를 나타낸 도면이다.
도 4를 참조하면, 어댑터 모듈(30) 내에는 다음과 같은 예로 FOM이 정의되어 있을 수 있으며, FOM에는 SPICE와 같은 아날로그 시뮬레이터에게 next event time, next clock time 등을 전달하기 위한 인터랙션(Interaction)이 정의되어 있을 수 있다. 자세하게는, ASE는 Value, RisingTime, FallingTime, Delay 값을 가지고, DSE는 Value, Delay 값을 가지며, NextEventTime은 SimulatorName, EventTime 값을 가진다. 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20) 각각은 FOM에서 정의한 이벤트 타입을 상속받음으로써 연결 포트를 정의할 수 있다.
한편, 본 발명의 또 다른 일 실시예에 따르면, 어댑터 모듈(30)은 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20) 각각에서 발생한 입출력 데이터를 기본 CILS(Chip in Loop Simulation) FOM 으로 변환할 수 있으며, 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20) 각각은 사용할 Interaction 정보를 상기 CILS FOM에서 상속받아 기술할 수 있다. 즉, 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20) 각각은 표준화된 객체 포맷을 수신하여 상기 표준화된 객체 포맷에 포함된 정보를 상속하여 반영할 수 있다. 더 자세히 말하자면, 하드 코어 에뮬레이터 컴포넌트(20)에서 발생한 입출력 데이터는 어댑터 모듈(30)에서 표준화된 객체 포맷(FOM)으로 변환될 수 있으며, 소프트 코어 시뮬레이터 컴포넌트(10)는 어댑터 모듈(30)로부터 상기 변환된 하드 코어 에뮬레이터 컴포넌트(20)의 입출력 데이터의 표준화된 객체 포맷(FOM)을 상속하여 반영할 수 있다.
한편, 소프트웨어 시뮬레이터 인터페이스 컴포넌트는 소프트 코어 시뮬레이터 컴포넌트(10)의 시뮬레이션 결과로 인한 입출력 신호의 변화를 다른 소프트 코어 시뮬레이터 컴포넌트 및 하드 코어 에뮬레이터 컴포넌트(20)와 공유할 수 있도록 어댑터 모듈(30)로 제공할 수 있다. 또한, 소프트웨어 시뮬레이터 인터페이스 컴포넌트는 다른 소프트 코어 시뮬레이터 컴포넌트 또는 하드 코어 에뮬레이터 컴포넌트(20) 측에서 발생한 외부 이벤트에 의한 입출력 신호의 변화를 어댑터 모듈(30)로부터 획득하여 소프트 코어 시뮬레이터 컴포넌트(10)에 반영하도록 제공할 수 있다.
한편, 도 5는 본 발명의 일 실시예에 따른 하드 코어 에뮬레이터 컴포넌트의 세부 구성을 나타낸 도면이다.
먼저 본 발명의 일 실시예에 따른 하드 코어 에뮬레이터 컴포넌트(20)는 앞서 말한 바와 같이, 호스트 컴퓨터에서 하드웨어의 시그널을 받거나 줄 수 있으며, 하드웨어의 클럭(clock)을 제어하는 프로그램일 수 있고, 또한, 하드웨어와 소프트웨어를 연결해 주는, 즉 Proxy(bridge) 역할을 해주는 도구일 수 있다.
즉, 하드 코어 에뮬레이터 컴포넌트(20)는 하드 코어가 담긴 FPGA 클럭(즉, 실제 하드웨어의 클럭)을 제어하고, 내부에서 생성된 신호를 외부로 프로브(probe)하는 역할을 하며, 하드웨어와 소프트웨어를 연결해 주는 프락시(Proxy) 역할을 한다.
이에 따라, 도 5를 참조하면, 하드 코어 에뮬레이터 컴포넌트(20)는 하드웨어적으로 클럭 제어 블록(Clock Control Block)(2)과 프로빙 및 트리거링 블록(Probing and Triggering Block)(4)을 포함할 수 있으며, 소프트웨어적으로 소프트웨어 에뮬레이터(Software Emulator)(6)를 포함할 수 있다.
이때, 클럭 제어 블록(2)은 하드웨어의 클럭(Clock)를 제어함으로써, 하드웨어의 시간 진행을 관리하는 역할을 하며, 상기 프로빙 및 트리거링 블록(4)은 모의 코어와 다른 외부의 소프트 코어가 연결 되었을 때, 외부로부터 들어오는 데이터를 실제 신호로 바꿔주거나 실제 신호를 외부로 전달해 주는 역할을 한다.
더 자세히 말하자면, 소프트 코어 시뮬레이터 컴포넌트(10)의 시뮬레이션 결과로 인한 입출력 신호의 변화가 어댑터 모듈(30)을 통해 하드 코어 에뮬레이터 컴포넌트(20)로 전달된 경우, 프로빙 및 트리거링 블록(4)은 어댑터 모듈(30)로부터 수신한 소프트 코어 시뮬레이터 컴포넌트(10)의 입출력 신호 값(즉, 외부로부터 들어오는 데이터)을 실제 신호로 바꿔 주는 역할을 한다. 또한 프로빙 및 트리거링 블록(4)은 반대로 하드 코어 에뮬레이터 컴포넌트(20)에 의한 에뮬레이션의 입출력 신호의 변화 값을 외부로 전달하는 역할을 한다. 즉, 프로빙 및 트리거링 블록(4)은 하드 코어 에뮬레이터 컴포넌트(20)에 의한 실제 신호를 소프트 코어 시뮬레이터 컴포넌트(10)로 전달하는 역할을 한다.
이때, 일반적으로 SoC 내의 블록들은 데이터를 버스를 통해 클럭에 동기화됨으로써 주고 받게 되며, 하드 코어 에뮬레이터 컴포넌트(20) 내에 소프트웨어 에뮬레이터(6)는 클럭 시간에 따라 시간 진행을 하는 이산 시간 시뮬레이터로 볼 수 있다.
그리고 본 발명의 프레임워크 기반의 혼합회로 시뮬레이션 시스템(200)은 상기 하드 코어 에뮬레이터 컴포넌트의 진행 시간이 상기 소프트 코어 시뮬레이터 컴포넌트의 시뮬레이션 상의 시간에 맞추어 제어되도록, 상기 하드 코어 에뮬레이터 컴포넌트의 클럭 속도보다 빠른 가상 클럭을 발생시키는 가상 클럭 생성기 모듈을 포함할 수 있으며, 가상 클럭 생성기 모듈은 클럭 제어 블록(2) 내에 포함되어 있을 수 있다.
이때, 미들웨어 모듈(50)은 상기 하드 코어 에뮬레이터 컴포넌트(20)의 클럭의 상승 엣지 또는 하강 엣지 마다 발생하는 시뮬레이션 진행 요청 이벤트를 감지할 수 있으며, 상기 가상 클럭 생성기 모듈은 상기 발생된 가상 클럭을 기반으로 상기 시뮬레이션 진행 요청 이벤트의 발생 주기를 측정하고, 상기 측정된 발생 주기의 시간상의 거리를 상기 소프트 코어 시뮬레이터 컴포넌트(10)의 시간상의 거리와 대응하도록 확장시킬 수 있다.
그리고, 가상 클럭 생성기 모듈은 하드 코어 에뮬레이터 컴포넌트의 클럭 속도보다 빠른 가상 클럭을 발생시킬 때, 상기 발생시키는 가상 클럭의 기준 단위 클럭을, 복수 개의 소프트 코어 시뮬레이터 컴포넌트와 하드 코어 에뮬레이터 컴포넌트 중에서 가장 짧은 단위 클럭을 기준으로 하여 설정할 수 있다.
도 6은 본 발명의 일 실시예에 따른 소프트웨어 시뮬레이터 인터페이스 컴포넌트의 표준 정의를 나타낸 도면이다.
종래 soft core 모의를 위한 시뮬레이터들 중 일부 시뮬레이터들이 지원하는 외부 표준 인터페이스(예를 들어, Verilog PLI (Verilog Programming language Interface)는 단순히 디버깅(debugging)의 용도로서, 외부에서 port 값을 가져오거나 조정하도록 한 것이었으며, 반면, 본 발명에서는 기존의 표준 외부 인터페이스들에 순응하면서, 연동 시뮬레이션 측면에서 재해석하여 정리한 GPLI(General Programming language interface) 인터페이스를 제안하고 이를 정의한다. 또한 본 발명은 GPLI를 통해, 외부 PLI(Programming language Interface)가 정의되지 않은 시뮬레이터 혹은 에뮬레이터에게 PLI를 정의하기 위한 가이드 라인을 제공한다.
앞서 설명한 바와 같이, 본 발명의 소프트웨어 시뮬레이터 인터페이스 컴포넌트는 소프트 코어 시뮬레이터 컴포넌트(10), 혹은 하드 코어 에뮬레이터 컴포넌트(20) 내의 포함될 수 있다. 본 발명에서 제안하는 소프트웨어 시뮬레이터 인터페이스 컴포넌트는 GPLI로 정의되며, GPLI는 사용자가 외부에서 시뮬레이터나 soft core 모델의 데이터에 접근하거나 혹은 데이터의 수정이 가능하도록 하는 프로그램을 구현하기 위한 인터페이스를 의미한다.
GPLI는 크게 2가지로 정의되어 있을 수 있다. 하나는 사용자가 외부에서 시뮬레이터 제어를 위하여 구현할 프로그램에서 사용하는 것으로서, 시뮬레이터 혹은 soft core 모델의 데이터에 접근하거나 수정하기 위한 API(Application Programming Interface)가 정의되어 있을 수 있으며, 다른 하나는 사용자가 구현한 함수를 시뮬레이터가 수행할 수 있도록 콜백(callback)의 종류가 정의되어 있을 수 있다.
즉, 소프트웨어 시뮬레이터 인터페이스 컴포넌트는 특정 시점에서 사용자가 구현한 함수가 호출될 수 있도록 다양한 타입의 콜백(callback) 함수와, 데이터에 접근 혹은 수정을 위한 API를 제공한다. 그리고 소프트 코어 시뮬레이터 컴포넌트(10)는 시뮬레이션 하기 전에 등록되어 있는 콜백 함수를 종류에 따라 호출할 수 있다.
도 6을 참조하여, 상기 soft core 모델 및 시뮬레이터의 데이터에 접근 및 수정을 위한 API와, 사용자가 구현한 함수를 시뮬레이터가 상황에 따라 수행할 수 있도록 등록 가능한 콜백 (callback) 함수의 종류에 대해 살펴보면 다음과 같다.
먼저, soft core 모델 및 시뮬레이터의 데이터에 접근 및 수정을 위한 API의 종류로는, 객체의 데이터 값을 가져오는 (xpi_get_value), 객체의 데이터 값을 변경하는 (xpi_set_value), 현재 시뮬레이션의 시간 혹은 다음 이벤트의 시간을 가져오는 (xpi_get_cur_time/xpi_get_next_time)이 있을 수 있다.
그리고 콜백 함수의 종류로는, 시뮬레이션 시작 및 종료 시점에 호출되는 콜백 함수로 (cbAtStartofSimulation/cbEndOfSimualtion), 매 시뮬레이션의 가상 시간에 시뮬레이션 관련 연산이 수행되기 전 혹은 후에 호출되는 함수로 (cbBeforeEverySimTime/cbAfterEverySimTime), 특정 객체(이때, 객체는 외부와 연결되는 포트(Port), 선(Wire), 전압(voltage), 레지스터(register), 변수(variable) 등을 의미함)의 값이 바뀌었을 때 호출되는 함수로 (cbValueChanged)가 있을 수 있다.
이때, 본 발명에서는 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20) 간에 통합 시뮬레이션을 수행함에 있어서, 하드 코어 에뮬레이터의 동작 속도가 소프트 코어 시뮬레이터의 동작 속도에 비해 상대적으로 매우 빠르므로, 하드 코어 에뮬레이터의 진행 시간을 느리게 제어하는 것이 필요하다. 이를 위하여 하드 코어 에뮬레이터 컴포넌트(20)는 클럭 컨트롤 블록(2)을 통해 하드웨어의 클럭을 제어 및 시간 진행을 관리할 수 있으며, 이때 클럭 컨트롤 블록(2)은 하드 코어 에뮬레이터의 클럭 속도보다 빠른 가상 클럭을 발생시킬 수 있다. 따라서, 상기 (cbBeforeEverySimTime/cbAfterEverySimTime) 콜백 함수에서 매 시뮬레이션의 가상 시간이라 함은, 하드 코어 에뮬레이터의 동작 속도를 느리게 제어하기 위해 발생된 가상 클럭에 대응하는 시간이라 할 수 있다.
또한, 본 발명은 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20)를 함께 시뮬레이션하고, 이벤트 기반의 통합 시뮬레이션을 진행하는 도중에 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20) 각각에서 감지된 이벤트를 서로에게 반영하기 위하여, 하드 코어 에뮬레이터 컴포넌트(20)의 진행 시간을 소프트 코어 시뮬레이터 컴포넌트(10)상의 시간과 동기화할 필요가 있다. 본 발명의 어댑터 모듈(30)은 이벤트 기반의 통합 시뮬레이션을 통하여 하드 코어 에뮬레이터 컴포넌트(20)의 진행 시간을 소프트 코어 시뮬레이터 컴포넌트(10)의 시뮬레이션 상의 시간과 동기화할 수 있다.
한편, 어댑터 모듈(30)은 GPLI와 HLA 서비스 인터페이스를 바탕으로 만들어진 콜백 함수들로 구성될 수 있다. 즉, 어댑터 모듈(30)은 소프트웨어 시뮬레이터 인터페이스 컴포넌트가 제공하는 API와 미들웨어(50)의 HLA 서비스에 이용되는 API를 기반으로 구현된 콜백 함수들의 집합으로 구성될 수 있다. 이는 도 7을 참조하여 자세히 살펴보기로 한다.
도 7은 본 발명의 일 실시예에 따른 어댑터 모듈 내부에 포함되는 콜백 함수의 예를 나타낸 도면이다.
도 7을 참조하면, 어댑터 모듈(30)은 GPLI 기반의 콜백 함수와 HLA 기반의 콜백 함수를 포함할 수 있다.
GPLI 기반의 콜백 함수의 경우, (xpiInitialize), (xpiEnd), (AE_Convert/DE_Convert), (xpiNextMessageRquest (xpiNER)/xpiTimeAdvanceRequest (xpiTAR)), (xpiNotifyCurrentTime (xpiNCT))가 있을 수 있다.
(xpiInitialize) 콜백 함수는 시뮬레이션 시작 전에 RTI에 참여하여 연동을 할 수 있도록 관련 HLA 서비스들을 수행하며, 콜백 타입은 (cbAtStartofSimulation)이다.
(xpiEnd) 콜백 함수는 시뮬레이션 종료 후에 종료 관련 HLA 서비스들을 수행하며, 콜백 타입은 (cbEndOfSimualtion)이다.
(AE_Convert/DE_Convert) 콜백 함수는 특정 시간에 관련 시뮬레이션 연산이 수행되고, 모델 내 외부와 연결된 객체의 값이 바뀔 때 바뀌는 값을 HLA 이벤트(Interaction)으로 바꾸어 sendInteraction API를 호출하여 외부로 전달하며, 콜백 타입은 (cbValueChanged)이다.
(xpiNextMessageRquest (xpiNER)/xpiTimeAdvanceRequest (xpiTAR)) 콜백 함수는 현재 시간에 시뮬레이션 연산이 끝나고, 이벤트 기반 다음 시간 진행 전에 RTI에게 다음 시간 진행이 가능한지 요청하며, 이때, RTI로부터 xpiNER는 최소 next event time 정보를 응답 받고, xpiTAR은 시간 진행 허가 (grant)를 응답 받으며, 콜백 타입은 (cbAfterSimEvTime)이다.
(xpiNotifyCurrentTime (xpiNCT)) 콜백 함수는 현재 시간에 시뮬레이션 연산이 끝나고, RTI와 시간 동기화를 위해 현재까지 진행한 시간을 RTI에게 알려 주며, 콜백 타입은 (cbAfterSimEvTime)이다.
HLA 기반의 콜백 함수의 경우, RTI로 부터 interaction이 오면 EA_Convert/ ED_Convert 함수를 호출하여 내부 모델의 연결 객체의 값을 바꿔주는 (receiveInteraction) 콜백 함수가 있을 수 있다.
이하에서는 콜백 함수의 호출 흐름에 대해 설명하기로 한다. 소프트 코어 시뮬레이터 컴포넌트(10) 혹은 하드 코어 에뮬레이터 컴포넌트(20)는 상황에 따라 어댑터 모듈(30)을 구성하는 GPLI 기반의 콜백 함수를 호출하며, 상기 호출된 콜백 함수들은 시뮬레이터들 간 혹은 시뮬레이터와 에뮬레이터 간에 연동을 위해 관련 HLA API들을 수행한다. 그리고 RTI가 HLA 기반의 콜백 함수들을 수행하면, 상기 수행되는 콜백 함수들은 GPLI 기반의 함수를 호출함으로써, 시뮬레이터 혹은 에뮬레이터에게 시간 진행 허가 메시지를 전달하거나 또는 외부 데이터들을 전달할 수 있게 된다.
즉, 본 발명은 소프트 코어 시뮬레이터 컴포넌트(10) 뿐만 아니라 하드 코어 에뮬레이터 컴포넌트(20)와 연동 가능한 어댑터 모듈(30)을 이용하여 RTI에게, 혹은 RTI로부터 외부 이벤트를 송수신할 수 있고, 시간 진행 요청을 허가할 수도 있으며, 또한, 이들 정보를 바탕으로 하드 코어 에뮬레이터 컴포넌트(20) 내의 FPGA의 실제 신호를 보내거나 클럭을 제어할 수 있다.
도 8은 본 발명의 일 실시예에 따른 어댑터 모듈이 이벤트 신호를 변환하는 예를 나타낸 도면이다.
도 8을 참조하면, 우선 SE(Signal to Event) 변환 함수는 DE Convert와 AE Convert 함수로 구성될 수 있으며, ES(Event to Signal) 변환 함수는 ED Convert와 EA Conver 함수로 구성될 수 있다.
어댑터 모듈(30)은 소프트 코어 시뮬레이터 컴포넌트(10) 또는 하드 코어 에뮬레이터 컴포넌트(20)에서 발생한 신호(Signal)의 변화를 감지하고, SE 변환 함수(즉, DE Convert와 AE Convert 함수)를 이용하여 상기 감지된 신호를 이벤트로 변환(Signal to Event)할 수 있으며, 상기 변환된 이벤트를 다른 시뮬레이터로 전달할 수 있다. 또한 어댑터 모듈(30)은 ES 변환 함수(즉, ED Convert와 EA Conver 함수)를 이용하여, 다른 소프트 코어 시뮬레이터 등 외부에서 받은 이벤트를 소프트 코어 시뮬레이터 컴포넌트(10)에서 사용할 수 있는 신호로 전환(Event to Signal)할 수 있다. 이때 SE(Signal to Event) 및 ES(Event to Signal)의 규칙(rule)은 사용자가 지정할 수 있다. 따라서, 어댑터 모듈(30)은 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20)의 이벤트를 검출할 수 있는 특징이 있다.
한편, 소프트 코어 시뮬레이터 컴포넌트(10)는 대상 soft core에 따라 이산 사건(event) 기반으로 모의(이때, Verilog 시뮬레이터, VHDL 시뮬레이터, Verilog-AMS 시뮬레이터 등이 이용될 수 있음)하거나 연속 시간으로 모의(이때, SPICE 시뮬레이터가 이용될 수 있음)할 수 있다. 그리고 하드 코어 에뮬레이터 컴포넌트(20)는 모의를 위해 소프트웨어 에뮬레이터가 이용될 수 있다.
본 발명은 상기에 제시한 기술을 이용함으로써, 소프트웨어 기반의 시뮬레이터와 실제 하드웨어를 함께 통합하여 시뮬레이션하는 환경을 제공할 수 있다.
이하 설명은 상기에 자세히 기술한 내용을 바탕으로, 본 발명의 일 실시예에 따른 흐름도를 간단히 설명하기로 한다.
도 9는 본 발명의 일 실시예에 따른 프레임워크 기반의 혼합회로 시뮬레이션 방법에 대한 개략적인 동작 흐름도이다.
도 9를 참조하면, 본 발명의 일 실시예에 따른 프레임워크 기반의 혼합회로 시뮬레이션 방법은 먼저, 미들웨어 모듈(50)에 의하여, 전자 회로에 대한 시뮬레이션 모델을 이용하여 상기 전자 회로의 동작을 시뮬레이션하는 소프트 코어 시뮬레이터 컴포넌트(10)와 시간 경과에 따라 오퍼레이션을 실제로 진행하는 하드 코어 에뮬레이터 컴포넌트(20)가 상호 연동 가능하도록 통합 시뮬레이션 환경을 제공한다(S910).
이때, 단계S910에 대한 세부적인 동작 흐름은 도 10을 참조하여 설명하기로 한다.
도 10은 본 발명의 일 실시예에 따른 통합 시뮬레이션 환경을 제공하는 단계의 세부적인 동작 흐름도이다.
도 10을 참조하면, 통합 시뮬레이션 환경을 제공하는 단계(S910)는 먼저, 전자 회로에 대하여 기능 및 성능이 이미 검증된 시뮬레이션 모델 또는 상기 전자 회로에 대하여 새롭게 생성된 시뮬레이션 모델을 이용하여 상기 소프트 코어 시뮬레이터 컴포넌트(10)를 생성할 수 있다(S911).
이때, 소프트 코어 시뮬레이터 컴포넌트(10)는 전자 회로의 동작을 시뮬레이션하는 소프트웨어 기반의 시뮬레이터로서, IP core 중 soft core를 시뮬레이션하는 시뮬레이터가 포함되며, 더 자세하게는 Verilog(IEEE P1364 표준) 언어 모델을 이용하는 Verilog 시뮬레이터(디지털 회로 시뮬레이터), VHDL(IEEE P1076 표준) 언어 모델을 이용하는 VHDL 시뮬레이터(디지털 회로 시뮬레이터), Verilog-AMS 언어 모델을 이용하는 Verilog-AMS 시뮬레이터 (혼합신호 회로 시뮬레이터), 아날로그 회로 시뮬레이터인 SPICE 등이 될 수 있다.
다음으로, 단계S910은 소프트웨어 시뮬레이터 인터페이스 컴포넌트를 상기 소프트 코어 시뮬레이터 컴포넌트(10) 또는 상기 하드 코어 에뮬레이터 컴포넌트(20)와 상기 어댑터 모듈(30) 사이에 배치할 수 있다(S912).
더 자세하게는, 소프트웨어 시뮬레이터 인터페이스 컴포넌트는 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20) 내에 포함될 수 있으며, 이는 사용자가 외부에서 시뮬레이터나 soft core 모델의 데이터에 접근하거나 혹은 데이터의 수정이 가능하도록 하는 프로그램을 구현하기 위한 인터페이스를 의미한다.
또한, 소프트 코어 시뮬레이터 컴포넌트(10)는 soft core와 어댑터 모듈(30) 간에 위치하여 하드 코어와의 연계 시뮬레이션이 가능하도록 지원할 수 있으며, 하드 코어 에뮬레이터 컴포넌트(20)는 hard core와 어댑터 모듈(30) 간에 위치하여 소프트 코어와의 연계 시뮬레이션이 가능하도록 지원할 수 있다.
어댑터 모듈(30)은 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20)가 미들웨어(50)에 참여하여 연동될 수 있도록 도울 수 있으며, 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20) 간에 시간 동기화 및 데이터 변환을 도울 수 있다.
미들웨어 모듈(50)은 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20)가 상호 연동 가능하도록 통합 시뮬레이션 환경을 제공하는 미들웨어로서, 상기 미들웨어 모듈(50)은 HLA/RTI(High Level Architecture/Run Time Infrastructure)일 수 있다.
본 발명에서는 HLA/RTI를 기반으로 하고, 어댑터 모듈(30)을 이용함으로써, 이기종 소프트웨어 기반 시뮬레이터 간의 통합 시뮬레이션 뿐만 아니라 소프트웨어 기반 시뮬레이터와 실제 하드웨어를 통합 시뮬레이션하는 것이 가능하다.
다음으로, 단계S910은 이벤트 기반의 시뮬레이션을 진행할 때, 상기 어댑터 모듈(30)의 상기 소프트 코어 시뮬레이터 컴포넌트(10) 또는 상기 하드 코어 에뮬레이터 컴포넌트(20)에 대한 플러그-인(plug-in)을 감지함으로써, 상기 소프트 코어 시뮬레이터 컴포넌트(10)와 상기 하드 코어 에뮬레이터 컴포넌트(20)를 상호 연동시킬 수 있다(S913).
즉, 어댑터 모듈(30)은 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20)가 HLA 서비스를 이용할 수 있도록 하는 인터페이스를 제공하며, 통합 시뮬레이션에서 이벤트 기반의 시뮬레이션을 진행할 때, 어댑터 모듈(30)이 소프트 코어 시뮬레이터 컴포넌트(10) 또는 하드 코어 에뮬레이터 컴포넌트(20)에 라이브러리 형태로 플러그-인(plug-in) 됨으로써, 소프트 코어 시뮬레이터 컴포넌트(10) 또는 하드 코어 에뮬레이터 컴포넌트(20)가 HLA 서비스를 이용할 수 있게 된다.
어댑터 모듈(30)은 상기 소프트웨어 시뮬레이터 인터페이스 컴포넌트가 제공하는 API와 상기 미들웨어 모듈(50)의 HLA 서비스에 이용되는 API를 기반으로 구현된 콜백 함수들의 집합으로 구성될 수 있으며, 이에 대한 설명은 상기 도 7을 참조하여 자세히 설명했으므로, 이를 참조하기로 한다.
다음으로, 단계S910은 어댑터 모듈(30)을 통해 표준화된 객체 포맷(FOM)으로 변환된 상기 소프트 코어 시뮬레이터 컴포넌트(10)와 상기 하드 코어 에뮬레이터 컴포넌트(20) 각각의 입출력 신호의 값을 상기 소프트웨어 시뮬레이터 인터페이스 컴포넌트에 제공함으로써, 상기 소프트 코어 시뮬레이터 컴포넌트(10)와 상기 하드 코어 에뮬레이터 컴포넌트(20)를 상호 연동시킬 수 있다(S914).
즉, HLA 인터페이스 표준 구현물인 RTI는 시뮬레이션에 참여하는 시뮬레이터 간 정보 교환을 위해서 시뮬레이션 연동 모델인 FOM(Federation Object Model)을 사용하며, 각각의 시뮬레이터는 참여하는 시뮬레이션 내에서 동일한 FOM을 소유해야만 하는 특징을 지니므로, 본 발명에서 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20)를 HLA/RTI 기반으로 통합 시뮬레이션 하기 위해서는 전송되는 데이터를 표준화된 객체 포맷(FOM)으로 변환해야 한다.
이에 따라, 어댑터 모듈(30)은 소프트 코어 시뮬레이터 컴포넌트(10)와 다른 소프트 코어 시뮬레이터 컴포넌트 간, 및 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20) 간에 전송되는 데이터를 표준화된 객체 포맷(FOM)으로 변환할 수 있다. 어댑터 모듈(30) 내에 표준화된 객체 포맷에 대한 예는 상기 도 4를 참조하여 자세히 설명했으므로, 이를 참조하기로 한다.
다음으로, 단계S910은 어댑터 모듈(30)을 이용하여 상기 하드 코어 에뮬레이터 컴포넌트(20)의 진행 시간을 상기 소프트 코어 시뮬레이터 컴포넌트(10)의 시뮬레이션 상의 시간과 동기화할 수 있다(S915).
본 발명은 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20)를 함께 시뮬레이션하고, 이벤트 기반의 통합 시뮬레이션을 진행하는 도중에 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20) 각각에서 감지된 이벤트를 서로에게 반영하기 위하여, 소프트 코어 시뮬레이터 컴포넌트(10) 보다 훨씬 빠른 하드 코어 에뮬레이터 컴포넌트(20)의 진행 시간을, 소프트 코어 시뮬레이터 컴포넌트(10)상의 시간과 동기화할 필요가 있다. 어댑터 모듈(30)은 이벤트 기반의 통합 시뮬레이션을 통하여 하드 코어 에뮬레이터 컴포넌트(20)의 진행 시간을 소프트 코어 시뮬레이터 컴포넌트(10)의 시뮬레이션 상의 시간과 동기화할 수 있다.
이때, 하드 코어 에뮬레이터 컴포넌트(20)의 진행 시간을 소프트 코어 시뮬레이터 컴포넌트(10)의 시뮬레이션 상의 시간과 동기화하는 단계(S915)는 어댑터 모듈(30)을 통해 표준화된 객체 포맷(FOM)으로 변환된 상기 소프트 코어 시뮬레이터 컴포넌트(10)와 상기 하드 코어 에뮬레이터 컴포넌트(20) 각각의 입출력 신호의 값을 상기 소프트웨어 시뮬레이터 인터페이스 컴포넌트에 제공하는 단계(S914)의 이후에서 수행될 수도 있고, 또는, 단계S914의 이전에서 수행될 수도 있다.
다음으로, 본 발명의 프레임워크 기반의 혼합회로 시뮬레이션 방법은 어댑터 모듈(30)에 의하여, 상기 미들웨어 모듈(50)을 기반으로 이벤트 기반의 시뮬레이션을 진행하고, 상기 소프트 코어 시뮬레이터 컴포넌트(10)와 상기 하드 코어 에뮬레이터 컴포넌트(20) 각각의 입출력 신호의 값을 서로 인식할 수 있는 형태로 변환하여 제공한다(S920).
이를 통해 본 발명은 이벤트 기반의 통합 시뮬레이션을 진행하는 도중에 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20) 각각에서 감지된 이벤트를 서로에게 즉시 반영할 수 있으며, 미들웨어 모듈을 기반으로 소프트 코어 시뮬레이터 컴포넌트(10)와 하드 코어 에뮬레이터 컴포넌트(20)를 혼합 시뮬레이션하는 것이 가능하다.
본 발명의 일 실시 예에 따른 프레임워크 기반의 혼합회로 시뮬레이션 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.
200: 프레임워크 기반의 혼합회로 시뮬레이션 시스템
10: 소프트 코어 시뮬레이터 컴포넌트
20: 하드 코어 에뮬레이터 컴포넌트
30: 어댑터 모듈
50: 미들웨어 모듈
10: 소프트 코어 시뮬레이터 컴포넌트
20: 하드 코어 에뮬레이터 컴포넌트
30: 어댑터 모듈
50: 미들웨어 모듈
Claims (8)
- 전자 회로에 대한 시뮬레이션 모델을 이용하여 상기 전자 회로의 동작을 시뮬레이션하는 소프트 코어 시뮬레이터 컴포넌트와 시간 경과에 따라 오퍼레이션을 실제로 진행하는 하드 코어 에뮬레이터 컴포넌트가 상호 연동 가능하도록 통합 시뮬레이션 환경을 제공하는 미들웨어 모듈; 및
상기 미들웨어 모듈을 기반으로 이벤트 기반의 시뮬레이션을 진행하고, 상기 소프트 코어 시뮬레이터 컴포넌트와 상기 하드 코어 에뮬레이터 컴포넌트 각각의 입출력 신호의 값을 서로 인식할 수 있는 형태로 변환하여 제공하는 어댑터 모듈;
을 포함하고,
상기 미들웨어 모듈은
상기 소프트 코어 시뮬레이터 컴포넌트 또는 상기 하드 코어 에뮬레이터 컴포넌트의 시뮬레이션 결과로 인한 상기 소프트 코어 시뮬레이터 컴포넌트와 상기 하드 코어 에뮬레이터 컴포넌트 각각의 입출력 신호의 변화를 다른 소프트 코어 시뮬레이터 컴포넌트 또는 상기 하드 코어 에뮬레이터 컴포넌트와 공유할 수 있도록 상기 어댑터 모듈로 제공하기 위한 소프트웨어 시뮬레이터 인터페이스 컴포넌트를 상기 소프트 코어 시뮬레이터 컴포넌트 또는 상기 하드 코어 에뮬레이터 컴포넌트와 상기 어댑터 모듈 사이에 배치하는 것
을 특징으로 하는 프레임워크 기반의 혼합회로 시뮬레이션 시스템. - 제1항에 있어서,
상기 전자 회로에 대한 시뮬레이션 모델은
상기 전자 회로에 대하여 기능 및 성능이 이미 검증된 시뮬레이션 모델 또는 상기 전자 회로에 대하여 새롭게 생성된 시뮬레이션 모델인 것
을 특징으로 하는 프레임워크 기반의 혼합회로 시뮬레이션 시스템. - 제1항에 있어서,
상기 미들웨어 모듈은
상기 어댑터 모듈을 통해 표준화된 객체 포맷으로 변환된 상기 소프트 코어 시뮬레이터 컴포넌트와 상기 하드 코어 에뮬레이터 컴포넌트 각각의 입출력 신호의 값을 상기 소프트웨어 시뮬레이터 인터페이스 컴포넌트에 제공함으로써, 상기 소프트 코어 시뮬레이터 컴포넌트와 상기 하드 코어 에뮬레이터 컴포넌트를 상호 연동시키는 것
을 특징으로 하는 프레임워크 기반의 혼합회로 시뮬레이션 시스템. - 제1항에 있어서,
상기 하드 코어 에뮬레이터 컴포넌트의 진행 시간이 상기 소프트 코어 시뮬레이터 컴포넌트의 시뮬레이션 상의 시간에 맞추어 제어되도록, 상기 하드 코어 에뮬레이터 컴포넌트의 클럭 속도보다 빠른 가상 클럭을 발생시키는 가상 클럭 생성기 모듈;
을 더 포함하고,
상기 미들웨어 모듈은 상기 하드 코어 에뮬레이터 컴포넌트의 클럭의 상승 엣지 또는 하강 엣지 마다 발생하는 시뮬레이션 진행 요청 이벤트를 감지하고,
상기 가상 클럭 생성기 모듈은 상기 발생된 가상 클럭을 기반으로 상기 시뮬레이션 진행 요청 이벤트의 발생 주기를 측정하고, 상기 측정된 발생 주기의 시간상의 거리를 상기 소프트 코어 시뮬레이터 컴포넌트의 시간상의 거리와 대응하도록 확장시키는 것
을 특징으로 하는 프레임워크 기반의 혼합회로 시뮬레이션 시스템. - 미들웨어 모듈에 의하여, 전자 회로에 대한 시뮬레이션 모델을 이용하여 상기 전자 회로의 동작을 시뮬레이션하는 소프트 코어 시뮬레이터 컴포넌트와 시간 경과에 따라 오퍼레이션을 실제로 진행하는 하드 코어 에뮬레이터 컴포넌트가 상호 연동 가능하도록 통합 시뮬레이션 환경을 제공하는 단계; 및
어댑터 모듈에 의하여, 상기 미들웨어 모듈을 기반으로 이벤트 기반의 시뮬레이션을 진행하고, 상기 소프트 코어 시뮬레이터 컴포넌트와 상기 하드 코어 에뮬레이터 컴포넌트 각각의 입출력 신호의 값을 서로 인식할 수 있는 형태로 변환하여 제공하는 단계;
를 포함하고,
상기 통합 시뮬레이션 환경을 제공하는 단계는
상기 소프트 코어 시뮬레이터 컴포넌트 또는 상기 하드 코어 에뮬레이터 컴포넌트의 시뮬레이션 결과로 인한 상기 소프트 코어 시뮬레이터 컴포넌트와 상기 하드 코어 에뮬레이터 컴포넌트 각각의 입출력 신호의 변화를 다른 소프트 코어 시뮬레이터 컴포넌트 또는 상기 하드 코어 에뮬레이터 컴포넌트와 공유할 수 있도록 상기 어댑터 모듈로 제공하기 위한 소프트웨어 시뮬레이터 인터페이스 컴포넌트를 상기 소프트 코어 시뮬레이터 컴포넌트 또는 상기 하드 코어 에뮬레이터 컴포넌트와 상기 어댑터 모듈 사이에 배치하는 단계;
를 포함하는 것을 특징으로 하는 프레임워크 기반의 혼합회로 시뮬레이션 방법. - 제5항에 있어서,
상기 통합 시뮬레이션 환경을 제공하는 단계는
상기 소프트웨어 시뮬레이터 인터페이스 컴포넌트를 상기 소프트 코어 시뮬레이터 컴포넌트 또는 상기 하드 코어 에뮬레이터 컴포넌트와 상기 어댑터 모듈 사이에 배치하는 단계가 실행되기 이전에,
상기 전자 회로에 대하여 기능 및 성능이 이미 검증된 시뮬레이션 모델 또는 상기 전자 회로에 대하여 새롭게 생성된 시뮬레이션 모델을 이용하여 상기 소프트 코어 시뮬레이터 컴포넌트를 생성하는 단계;
를 더 포함하는 것을 특징으로 하는 프레임워크 기반의 혼합회로 시뮬레이션 방법. - 제5항에 있어서,
상기 통합 시뮬레이션 환경을 제공하는 단계는
상기 소프트웨어 시뮬레이터 인터페이스 컴포넌트를 상기 소프트 코어 시뮬레이터 컴포넌트 또는 상기 하드 코어 에뮬레이터 컴포넌트와 상기 어댑터 모듈 사이에 배치하는 단계가 실행된 이후에,
상기 어댑터 모듈을 통해 표준화된 객체 포맷으로 변환된 상기 소프트 코어 시뮬레이터 컴포넌트와 상기 하드 코어 에뮬레이터 컴포넌트 각각의 입출력 신호의 값을 상기 소프트웨어 시뮬레이터 인터페이스 컴포넌트에 제공함으로써, 상기 소프트 코어 시뮬레이터 컴포넌트와 상기 하드 코어 에뮬레이터 컴포넌트를 상호 연동시키는 단계;
를 더 포함하는 것을 특징으로 하는 프레임워크 기반의 혼합회로 시뮬레이션 방법. - 제5항에 있어서,
상기 소프트웨어 시뮬레이터 인터페이스 컴포넌트를 상기 소프트 코어 시뮬레이터 컴포넌트 또는 상기 하드 코어 에뮬레이터 컴포넌트와 상기 어댑터 모듈 사이에 배치하는 단계가 실행된 이후에,
가상 클럭 생성기 모듈에 의하여, 상기 하드 코어 에뮬레이터 컴포넌트의 진행 시간이 상기 소프트 코어 시뮬레이터 컴포넌트의 시뮬레이션 상의 시간에 맞추어 제어되도록, 상기 하드 코어 에뮬레이터 컴포넌트의 클럭 속도보다 빠른 가상 클럭을 발생시키는 단계;
상기 미들웨어 모듈에 의하여, 상기 하드 코어 에뮬레이터 컴포넌트의 클럭의 상승 엣지 또는 하강 엣지 마다 발생하는 시뮬레이션 진행 요청 이벤트를 감지하는 단계; 및
상기 가상 클럭 생성기 모듈에 의하여, 상기 발생된 가상 클럭을 기반으로 상기 시뮬레이션 진행 요청 이벤트의 발생 주기를 측정하고, 상기 측정된 발생 주기의 시간상의 거리를 상기 소프트 코어 시뮬레이터 컴포넌트의 시간상의 거리와 대응하도록 확장시키는 단계
를 더 포함하는 것을 특징으로 하는 프레임워크 기반의 혼합회로 시뮬레이션 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150000768A KR101629725B1 (ko) | 2015-01-05 | 2015-01-05 | 프레임워크 기반의 혼합회로 시뮬레이션 시스템 및 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150000768A KR101629725B1 (ko) | 2015-01-05 | 2015-01-05 | 프레임워크 기반의 혼합회로 시뮬레이션 시스템 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101629725B1 true KR101629725B1 (ko) | 2016-06-13 |
Family
ID=56191432
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150000768A KR101629725B1 (ko) | 2015-01-05 | 2015-01-05 | 프레임워크 기반의 혼합회로 시뮬레이션 시스템 및 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101629725B1 (ko) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10312315A (ja) * | 1997-05-12 | 1998-11-24 | Nec Corp | ソフトウェア/ハードウェア協調シミュレーション方式 |
JP2000035898A (ja) * | 1998-07-17 | 2000-02-02 | Nec Corp | システムシミュレータおよびシステムシミュレーション方法 |
KR20060037768A (ko) | 2004-10-28 | 2006-05-03 | 삼성전자주식회사 | 소프트웨어 시뮬레이터 및 이를 이용한 하드웨어 기술언어의 시뮬레이션 연동 방법 |
JP2008535046A (ja) * | 2005-03-16 | 2008-08-28 | ゲートロケット・インコーポレーテッド | Fpgaエミュレーションシステム |
JP2010250365A (ja) * | 2009-04-10 | 2010-11-04 | Renesas Electronics Corp | 協調シミュレーションシステム、ハードウェアエミュレータ、及び協調シミュレーション方法 |
-
2015
- 2015-01-05 KR KR1020150000768A patent/KR101629725B1/ko active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10312315A (ja) * | 1997-05-12 | 1998-11-24 | Nec Corp | ソフトウェア/ハードウェア協調シミュレーション方式 |
JP2000035898A (ja) * | 1998-07-17 | 2000-02-02 | Nec Corp | システムシミュレータおよびシステムシミュレーション方法 |
KR20060037768A (ko) | 2004-10-28 | 2006-05-03 | 삼성전자주식회사 | 소프트웨어 시뮬레이터 및 이를 이용한 하드웨어 기술언어의 시뮬레이션 연동 방법 |
JP2008535046A (ja) * | 2005-03-16 | 2008-08-28 | ゲートロケット・インコーポレーテッド | Fpgaエミュレーションシステム |
JP2010250365A (ja) * | 2009-04-10 | 2010-11-04 | Renesas Electronics Corp | 協調シミュレーションシステム、ハードウェアエミュレータ、及び協調シミュレーション方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Rashinkar et al. | System-on-a-chip Verification: Methodology and Techniques | |
JP4994393B2 (ja) | 単一のマスターモデルから異なる抽象化レベルの複数のモデルを生成するシステムと方法 | |
CN113051855B (zh) | 用于片上系统芯片验证的方法、系统及验证平台 | |
CN109711071B (zh) | 一种服务器SoC软硬件协同仿真加速方法及系统 | |
US20110307847A1 (en) | Hybrid system combining TLM simulators and HW accelerators | |
JP2004510258A (ja) | ハードウェアとソフトウェアを備えた電子システムの性能レベルモデリング及びシミュレーション | |
CN102480467B (zh) | 一种基于网络通讯协议的soc软硬件协同仿真验证方法 | |
KR101621841B1 (ko) | Hla/rti 기반 혼합회로 시뮬레이션 시스템 및 방법 | |
Lin et al. | Functional verifications for SoC software/hardware co-design: From virtual platform to physical platform | |
Sayinta et al. | A mixed abstraction level co-simulation case study using systemc for system on chip verification | |
Gao et al. | Software and hardware co-verification technology based on virtual prototyping of RF SOC | |
KR101629725B1 (ko) | 프레임워크 기반의 혼합회로 시뮬레이션 시스템 및 방법 | |
KR101683636B1 (ko) | 혼합회로 시뮬레이션 시스템 및 방법 | |
US20140325468A1 (en) | Storage medium, and generation apparatus for generating transactions for performance evaluation | |
US20040153301A1 (en) | Integrated circuit development methodology | |
CN113204929B (zh) | 基于sv和uvm实现ahb vip的方法、电子装置及存储介质 | |
Jain et al. | Accelerating SystemVerilog UVM Based VIP to Improve Methodology for Verification of Image Signal Processing Designs Using HW Emulator | |
Lund | Design and Application of a Co-Simulation Framework for Chisel | |
US20190012418A1 (en) | Simulation program, method, and device | |
Billa et al. | Challenges and Mitigations of Porting a UVM Testbench from Simulation to Transaction-Based Acceleration (Co-Emulation) | |
Singh et al. | A pragmatic approach leveraging portable stimulus from subsystem to SoC level and SoC emulation | |
Zabołotny | Development of embedded PC and FPGA based systems with virtual hardware | |
Jingguo et al. | Transitioning to UVM from VMM | |
SFAR et al. | TRANSACTION LEVEL MODELS'STRUCTURING: FROM IDIOMS TO TLM-2. | |
Morin-Allory et al. | Asynchronous assertion monitors for multi-clock domain system verification |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20190603 Year of fee payment: 4 |
|
R401 | Registration of restoration |