KR20130105609A - Simulation method, system and program - Google Patents

Simulation method, system and program Download PDF

Info

Publication number
KR20130105609A
KR20130105609A KR1020137005015A KR20137005015A KR20130105609A KR 20130105609 A KR20130105609 A KR 20130105609A KR 1020137005015 A KR1020137005015 A KR 1020137005015A KR 20137005015 A KR20137005015 A KR 20137005015A KR 20130105609 A KR20130105609 A KR 20130105609A
Authority
KR
South Korea
Prior art keywords
processor
plant
emulator
time
scheduler
Prior art date
Application number
KR1020137005015A
Other languages
Korean (ko)
Other versions
KR101522477B1 (en
Inventor
이쿠오 마츠무라
슈이치 시미즈
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20130105609A publication Critical patent/KR20130105609A/en
Application granted granted Critical
Publication of KR101522477B1 publication Critical patent/KR101522477B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/261Functional testing by simulating additional hardware, e.g. fault simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B17/00Systems involving the use of models or simulators of said systems
    • G05B17/02Systems involving the use of models or simulators of said systems electric

Abstract

복수의 ECU를 갖는 시스템의 시뮬레이션을, 보수적인 이벤트 동기로, 또한 데드록을 회피하면서 고속으로 실행하는 것이다. ECU에뮬레이터인 프로세서 에뮬레이터, 플랜트 시뮬레이터, 외부 퍼리퍼럴 스케줄러(Peripheral scheduler), 및 상호 퍼리퍼럴 스케줄러(Peripheral scheduler)의 4층으로 만들어지는 시뮬레이션 시스템이 제공된다. 외부 퍼리퍼럴 스케줄러는, 프로세서 에뮬레이터의 반응지연시간 (또는 다음 이벤트까지의 시간) 만큼, 플랜트 시뮬레이터를 선행 실행시킨다. 그리고, 실제로 플랜트 시뮬레이터가 정지한 시간까지, 프로세서 에뮬레이터를 선행 실행하도록 통지한다. 상호 퍼리퍼럴 스케줄러는, 프로세서 에뮬레이터 간의 통신지연시간 (또는 다음 이벤트까지의 시간) 만큼, 프로세서 에뮬레이터를 선행 실행시키도록 통지한다. 프로세서 에뮬레이터는, 통지된 시간 중 제일 빠른 시각까지 보수적으로 처리를 진행한다. 각 퍼리퍼럴(Peripheral)은, 수신한 이벤트 중, 제일 빠른 시간까지 처리를 진행한다.Simulation of a system having a plurality of ECUs is executed at high speed with conservative event synchronization and avoiding deadlock. A simulation system is provided that consists of four layers of ECU emulators: a processor emulator, a plant simulator, an external peripheral scheduler, and a mutual peripheral scheduler. The external peripheral scheduler runs the plant simulator up to the response time of the processor emulator (or until the next event). Then, the processor emulator is notified to run ahead of time until the plant simulator actually stops. The mutual peripheral scheduler notifies the processor emulator to run ahead of time by the communication delay time between the processor emulators (or the time until the next event). The processor emulator conservatively proceeds to the earliest time notified. Each peripheral proceeds to the earliest time of the received events.

Description

시뮬레이션 방법, 시스템 및 프로그램{SIMULATION METHOD, SYSTEM AND PROGRAM}Simulation method, system and program {SIMULATION METHOD, SYSTEM AND PROGRAM}

본 발명은, 자동차등의 물리 시스템의 시뮬레이션에 관한 것이며, 보다 자세하게는, 소프트웨어 베이스에서의 시뮬레이션 시스템에 관한 것이다.The present invention relates to simulation of physical systems such as automobiles, and more particularly, to a simulation system in a software base.

자동차는, 그 초기의 시대인 20세기 초에는, 동력으로서의 엔진과, 브레이크, 액셀, 핸들, 트랜스미션(transmission), 서스펜션(suspension)을 포함하는, 기계부품으로 되어 있었고, 엔진의 플래그의 점화, 헤드라이트 이외에는, 전기적인 구조는 거의 이용하지 않았다.
In the early 20th century, in the early days of the car, automobiles consisted of mechanical parts, including engines as power, brakes, accelerators, steering wheels, transmissions, suspensions, and ignition, heads of engine flags. Except for the lights, the electrical structure was rarely used.

그런데, 1970년대부터는, 대기오염, 석유 위기 등에 대비하여, 엔진을 효율적으로 제어할 필요성이 생겨, 이 때문에 엔진의 제어에, ECU가 사용되어왔다. ECU는, 일반적으로, 센서로부터의 입력신호를, 예를 들면 A/D 변환하는 입력 인터페이스와, 결정된 논리에 따라 디지털 입력신호를 처리하는 논리 연산부 (마이크로컴퓨터)와, 그 처리결과를, 액추에이터(actuator) 작동신호로 변환하는 출력 인터페이스로 구성된다.
However, since the 1970s, there is a need to efficiently control engines in preparation for air pollution, oil crisis, and the like. Therefore, ECUs have been used for engine control. In general, an ECU includes an input interface for A / D conversion of an input signal from a sensor, a logic operation unit (microcomputer) for processing a digital input signal in accordance with the determined logic, and a result of the processing of the actuator ( actuator) consists of an output interface that converts into an actuation signal.

지금은, 엔진이나 트랜스미션 등의 제어시스템, 락 방지 브레이크 시스템(Anti-lock Breaking System(ABS)), 전자 안정 제어(Electronic Stability Control(ESC)), 파워 스티어링(power steering)뿐만 아니라, 와이퍼 제어나 시큐리티 모니터링 시스템 등에 이르기까지, 최근의 자동차에서는, 기구부품 뿐만 아니라, 일렉트로닉스(electronics) 부품이나 소프트웨어가 중요한 비율을 차지한다. 후자에 관한 개발비는 전체의 25%또는40%로 알려져 있으며, 하이브리드형의 자동차에서는 70%를 차지한다.
Now, as well as control systems such as engines and transmissions, anti-lock break system (ABS), Electronic Stability Control (ESC), power steering, as well as wiper control In automobiles, up to security monitoring systems and the like, not only mechanical parts but also electronics parts and software occupy an important ratio. Development costs for the latter are known as 25% or 40% of the total, and 70% for hybrid cars.

또한, 자동차는 엔진 등의 동력장치나, 동력전달장치, 스티어링(steering) 등의 주행장치, 브레이크장치, 그 외 보디시스템 등의 기계부품(플랜트)으로 구성되고, 또, 이들 플랜트 동작들은, 30~70 이상의 전자제어유닛(ECU)의 프로그램이 센서입력(속도 등)이나 인간으로부터의 입력(액셀 등)에 따라, 동적으로 결정한다.
In addition, an automobile is composed of a power device such as an engine, a power transmission device, a traveling device such as steering, a brake device, and other mechanical parts (plant) such as a body system. The program of the electronic control unit (ECU) of ˜70 or more determines dynamically according to sensor input (speed or the like) or input from a human being (accelerator or the like).

ECU는, 기본적으로 각각이 하나의 플랜트의 동작을 제어한다. 예를 들면, 엔진에 연료분사(Fuel Injection)나 점화(Ignition)는, 엔진컨트롤 유닛이 그 양이나 타이밍을 소프트웨어에 의해 결정한다. 소프트웨어이기 때문에, [스포츠] 모드를 갖춘 고급 자동차에는, 모드에 따라 연료 분사 량을 증량/감량 할 수 있다. 또한, 시프트다운(shifting down)의 타이밍에 맞추어, 자동적으로 블리핑(blipping)(공회전)하여 엔진의 회전 수를 맞출 수 있다. 이 경우에는, 엔진의 ECU와 트랜스미션의 ECU가 연대하여 동작할 필요가 있다. 자동차의 미끄럼 등을 방지하기 위한 통합 차량 자세 안정 제어(ESC: Electronics Stability Control) 시스템에서는, 또한 브레이크 등의 제동장치와의 연동도 필요하게 되어, ECU 소프트웨어는 복잡하게 된다. 또한, 이와 같은 [개입] 기능은, 소프트웨어이기 때문에, 쉽게 컷(cut) 할 수 있다.
The ECU basically controls the operation of one plant each. For example, the fuel injection or ignition in the engine is determined by software by the engine control unit. Because of the software, luxury cars equipped with the [Sport] mode can increase / decrease fuel injection amount depending on the mode. In addition, in accordance with the timing of the shifting down, it is possible to automatically blip (idle) to match the rotational speed of the engine. In this case, the ECU of the engine and the ECU of the transmission need to operate in tandem. In an integrated electronic stability control (ESC) system for preventing slippage of an automobile, interworking with a braking device such as a brake is also required, which complicates the ECU software. In addition, since such [intervention] function is software, it can be easily cut.

플랜트의 성능을 충분히 이끌어내고, 또한, 완전히 동작시키기 위해서는, ECU 소프트웨어의 설계 개발의 과정에 있어서, 동작 파라미터의 튜닝과 테스트를 충분히 수행하는 것이 중요하다. 일반적으로, 자동차의 프로토타입(prototype)을 만들고 나서, 튜닝과 테스트를 반복하기에는 코스트와 시간이 너무 걸리기 때문에, 프로토타입을 만들기 전에 컨트롤러와 플랜트를 계산기(calculating device) 내에서 가상적으로 실현하여서, 고속으로 또한 정확하게 동작시키고, 그 동작을 확인하는 방법이 강력히 요구된다. 이와 같은 ECU 시뮬레이션은, (1) 스테이트 머신(state machine) 등의 표현 형식을 이용하여 컨트롤러의 동작을 논리적으로 표현하는 Model-in-the-Loop Simulation(MILS), (2) 그 논리 동작에, 데이터 정밀도 등 하드웨어의 제어를 일부 도입한 Software-in-the-Loop Simulation(SILS), (3) 소프트웨어를 완전히 장착하여 ECU 프로세서를 에뮬레이터 하는 Processer-in-the-Loop Simulation (PILS) 혹은 Virtual Hardware-in-the-Loop Simulation (V-HILS), 그리고, (4) ECU 보드를 완전히 장착하여, 리얼 타임 플랜트 시뮬레이션과 접속하는 Hardware-in-the-Loop Simulation(HILS)의 4종류의 방식이 있고, 이 순서로, 보다 프로토타입에 가까워진다.
In order to fully derive the performance of the plant and to fully operate it, it is important to sufficiently tune and test the operating parameters in the course of design development of the ECU software. In general, it takes too much time and money to make a prototype of a car, and then repeat tuning and testing, so that the controller and the plant can be virtually realized in a calculator device before the prototype, In addition, there is a strong demand for a method of operating correctly and confirming the operation. Such ECU simulations include (1) Model-in-the-Loop Simulation (MILS), which logically expresses the operation of the controller using an expression form such as a state machine, and (2) the logic operation. Software-in-the-Loop Simulation (SILS) with some hardware control including data precision, (3) Process-in-the-Loop Simulation (PILS) or Virtual Hardware- There are four types of in-the-loop simulation (V-HILS) and (4) hardware-in-the-loop simulation (HILS) to fully mount the ECU board and connect with real-time plant simulation. In this order, you get closer to the prototype.

MILS/SILS는 플랜트의 기본적인 성능을 달성하기 위한 시행착오 단계(trial and error phase)에서 주로 이용된다. 하지만, 실제로 ECU에 탑재되는 소프트웨어와는 다른 동작을 하기 때문에, 제품의 검증 용도에는 이용할 수 없다. 한편, V-HILS는 완성된 ECU 소프트웨어를 이용하기 때문에, 소프트웨어의 기대하지 않는 동작(버그)을 발견하여 해결하기 위한 방식으로서 상당히 유망하게 보고 있지만, 재현성이 있는 동작을 달성한 예가 아직 없다. HILS는, 완성된 ECU 보드의 최종적인 동작확인을 위해 반드시 실시되지만, 장해가 발견 되어도 재현성이 보증되지 않기 때문에 디버그(debug) 목적에는 이용할 수 없다.
MILS / SILS is mainly used in the trial and error phase to achieve the basic performance of the plant. However, since it operates differently from the software mounted on the ECU, it cannot be used for verification of the product. On the other hand, since V-HILS utilizes the finished ECU software, it is quite promising as a way to find and solve unexpected behavior (bugs) of the software, but there is no example of achieving reproducible operation. HILS is always performed for the final operation check of the completed ECU board, but it cannot be used for debug purposes because reproducibility is not guaranteed even if a fault is found.

HILS에 있어서 동작을 재현할 수 없는 이유는, HILS의 구성이 불완전 해서가 아니라, CAN 등의 네트워크에 의해 각 ECU가 서로 접속하기 때문이다. 일반적으로, 네트워크는 모듈 간의 느슨한 결합(loose coupling)을 실현하고 있기 때문에, 모듈 동작의 미묘한 타이밍 차로 데이터의 도착순서가 바뀔 수 있고, 그 결과, 시스템전체의 거동이 달라질 수 있다. 따라서, 자동차의 프로토타입을 만들었다고 해도, 동작의 재현성은 기대할 수 없다. 병렬분산 시스템의 디버그가 상당히 어려운 것과 같은 이유이다.
The reason why the operation cannot be reproduced in HILS is not because the configuration of HILS is incomplete, but because each ECU is connected to each other by a network such as CAN. In general, since the network realizes loose coupling between modules, the order of arrival of data may change due to subtle timing differences in module operation, and as a result, the behavior of the entire system may vary. Therefore, even if the prototype of the car is made, the reproducibility of the operation cannot be expected. This is why debugging parallel distributed systems is quite difficult.

이와 같이, HILS의 구성 때문에, 즉, ECU 보드와 플랜트 시뮬레이터와 느슨한 결합이라고 하는 구성 때문에, 각각의 컴포넌트를 고속화하여도 동작의 일관성은 실현할 수 없다. 커뮤니케이션의 순서의 일관성을 실현하는 것이, 동작의 재현성을 실현하기 위해 필요하다. V-HILS는 특히, 이 문제를 해결할 것이 기대된다.
In this way, due to the configuration of the HILS, that is, the configuration of loose coupling with the ECU board and the plant simulator, even if each component is speeded up, operation consistency cannot be realized. It is necessary to realize the consistency of the order of communication in order to realize the reproducibility of the operation. V-HILS is especially expected to solve this problem.

종래의 개념에 따른, 전형적인 V-HILS의 구성은, 복수의 ECU 에뮬레이터와, 복수의 플랜트 시뮬레이터와, 전체의 동작을 스케줄 하는 글로벌 스케줄러를 포함한다.
A typical V-HILS configuration, in accordance with conventional concepts, includes a plurality of ECU emulators, a plurality of plant simulators, and a global scheduler that schedules the entire operation.

ECU 에뮬레이터는, 프로세서 에뮬레이터와, 퍼리퍼럴(Peripheral) 에뮬레이터를 포함한다. 한편, 플랜트 시뮬레이터에는, 브레이크 시뮬레이터, 엔진 시뮬레이터 등이 포함된다.
The ECU emulator includes a processor emulator and a peripheral emulator. On the other hand, the plant simulator includes a brake simulator, an engine simulator, and the like.

이때, 프로세서 에뮬레이터는 예를 들면, 80MHz라고 하는 상대적으로 고해상도의 클럭으로 동작한다. 한편, 플랜트 시뮬레이터는, 물리기구의 시뮬레이터이기 때문에, 예를 들면, 10KHz라고 하는 상대적으로 저해상도로 동작한다. 일반적으로, 저해상도가 고속으로 시뮬레이션할 수 있기 때문에, 플랜트 시뮬레이터가 고속인 경우가 많다.
At this time, the processor emulator operates with a relatively high resolution clock, for example 80 MHz. On the other hand, since the plant simulator is a simulator of a physical apparatus, it operates at a relatively low resolution of, for example, 10 KHz. In general, since the low resolution can be simulated at high speed, the plant simulator is often high speed.

플랜트 시뮬레이터는 반드시, 고정 길이(fixed length)의 처리단계 시간으로 반복하여 수치계산을 수행하지는 않으며, 계산오차의 영향을 낮추거나, 불연속적인 변화 점의 타이밍 등에 따라 가변단계가 필요한 케이스가 많다. 어차피, 각 단계에 있어서 컨트롤러로부터 지시신호를 수신하고, 또한, 센서를 향해 내부상태를 출력한다. 또한, 지시신호는, 스위치의 온과 오프를 표현하기 위해 펄스 상태로 된 경우가 많다.
Plant simulators do not necessarily perform numerical calculations with a fixed length of processing step time, and there are many cases in which variable steps are required depending on the influence of calculation errors or the timing of discontinuous change points. In any case, an instruction signal is received from the controller in each step, and an internal state is output toward the sensor. In addition, the instruction signal is often in a pulse state to express the on and off of the switch.

퍼리퍼럴 에뮬레이터는, ECU 에뮬레이터의 I/O 인터페이스 부에 해당하고, 플랜트 시뮬레이터와 프로세서 에뮬레이터를 상호로 접속한다. 전형적으로는(평균적으로는) 10MHz 정도의 해상도로 동작할 수 있다. 이것은, 플랜트 시뮬레이터보다 고속이지만, 프로세서 에뮬레이터보다는 저속이다. 퍼리퍼럴 에뮬레이터는, 플랜트 시뮬레이터에 대해서, 펄스 상태의 신호를 보낸다. 또한, 플랜트 시뮬레이터로부터 내부상태는 양적인 데이터(quantized data)로서 리드된다.
The peripheral emulator corresponds to the I / O interface portion of the ECU emulator and interconnects the plant simulator and the processor emulator. Typically (on average) it can operate at resolutions around 10MHz. This is faster than the plant simulator but slower than the processor emulator. The peripheral emulator sends a pulsed signal to the plant simulator. In addition, the internal state from the plant simulator is read as quantized data.

퍼리퍼럴 에뮬레이터는, 프로세서 에뮬레이터에 대해서는, 리드 라이트(R/W)의 요구를 받아 데이터를 송수신하는 것과, 인터럽션(INT)을 보내는 것을 수행한다. 특히, 프로세서 간을 상호로 접속하는 CAN(controller area network) 등 네트워크의 기능에서는, 프로세서로부터 송신데이터를 수신하여(W), 퍼리퍼럴 간에 버스를 경유하여 통신을 수행하고, 데이터를 수신하였을 때에는 프로세서에 인터럽션을 보내고(INT), 프로세서로부터의 수신데이터 리드의 요구(R)에 답한다.
The peripheral emulator performs a request for read write (R / W), transmits and receives data, and sends an interrupt (INT) to the processor emulator. In particular, in a function of a network such as a controller area network (CAN) that interconnects processors, the transmission data is received from a processor (W), and communication between the peripherals is performed via a bus, and when data is received. Interrupt is sent to the processor (INT) and responds to the request (R) of the received data read from the processor.

한 측면만 보면, 퍼리퍼럴은, 플랜트와 프로세서, 및 프로세서 간을 상호 접속하는, 시스템의 중심이다. 퍼리퍼럴을 통과하는 신호의 순서를 서로 구별할 수 있는 만큼의 시간 해상도가 있으면, 플랜트와 프로세서 간의 상호작용에 관해서, 그 순서는 바르게 재현할 수 있다. 하지만, 다음의 신호까지에 걸리는 시간이 데이터의 정밀도를 결정한다 (속도의 산출 등)면, 시간 해상도는 더 정밀한 것이 바람직하다. 다시 말하면, 시간 해상도에 따라 데이터 오차의 크기가 정해진다.
In one aspect, the peripheral is the center of the system, which interconnects the plant, the processor, and the processors. If there is enough time resolution to distinguish the order of signals passing through the peripheral, the order can be correctly reproduced with respect to the interaction between the plant and the processor. However, if the time taken until the next signal determines the accuracy of the data (calculation of speed, etc.), the time resolution is preferably more accurate. In other words, the magnitude of the data error is determined according to the time resolution.

데이터 오차의 문제 이외에도 오버헤드의 문제가 있다. 즉, 고정의 동기간격을 제공하는 방법에서는, 동기의 간격을 짧게 하면, 더 적절한 동작을 실현할 수 있지만, 반대로, 동기처리에 걸리는 오버헤드를 크게 하기 때문에 전체처리에 걸리는 시간은 증가한다.
In addition to the problem of data error, there is an overhead problem. In other words, in the method of providing a fixed synchronization interval, a shorter synchronization interval can realize a more suitable operation. On the contrary, the overhead required for the synchronization processing is increased, so that the time required for the entire processing increases.

따라서, 동기의 간격을 고정하여 최대한 작게 한다고 하는 어프로치는, 데이터 오차와 오버헤드의 양 측면으로부터 현실적인 해법이라고 할 수 없다.
Therefore, the approach of fixing the synchronization interval as small as possible is not a realistic solution from both sides of data error and overhead.

이와 같이, V-HILS에 있어서, 동기의 문제는 중요하며, 정리하면, 다음과 같은 3개의 방식이 있다.Thus, in V-HILS, the problem of synchronization is important and, in summary, there are three methods as follows.

(1) 시간동기: 이 방식에서는, 프로세서 에뮬레이터가 서로 통신하면서, 시뮬레이션을 실행한다. 실행속도와 시간정밀도 사이에 트레이드오프가 있고, 시간의 양자화 오차(quantization errors)가 있다. 또한, 전술한 바와 같이, 이 방식으로는, 프로세서 에뮬레이터 간의 동기 통신 코스트가 크기 때문에, 현실적인 해법이 될 수 없다.(1) Time synchronization: In this method, the processor emulators communicate with each other to execute simulations. There is a tradeoff between execution speed and time precision, and there are quantization errors in time. In addition, as described above, in this manner, since the synchronous communication cost between the processor emulators is large, it cannot be a realistic solution.

(2) 낙관적인 이벤트동기: 이 방식에서는, 각 프로세서 에뮬레이터가 시각정보가 있는 이벤트를 보내고, 또한 수신하는 것으로 상대와 동기를 한다. 하지만, [플라이잉(flying)]의 가능성이 있음에도, 투기적으로 시뮬레이션을 실행하기 때문에, 그 투기가 안 맞았을 경우에는, 프로세서 에뮬레이터를 적절하게, 롤백(rollback) 할 필요가 있다. 동기에 걸리는 코스트는, 시간동기의 방법에 비해 작지만, 롤백 준비를 위해, 상태를 계속적으로 기록하는 코스트가 너무 크기 때문에, 현실적이지 않다.Optimistic Event Synchronization: In this scheme, each processor emulator synchronizes with its peer by sending and receiving events with visual information. However, even though there is a possibility of "flying", the simulation is executed speculatively, so if the speculation is not corrected, it is necessary to appropriately roll back the processor emulator. The cost of synchronization is small compared to the time-synchronized method, but it is not realistic because the cost of continuously recording a state for the rollback preparation is too large.

(3)보수적인 이벤트동기: 이 방식에서는, 각 프로세서 에뮬레이터가 시각정보가 있는 이벤트를 보내고, 또한 수신하는 것으로 상대와 동기를 한다. 하지만, 인과관계가 모순하지 않도록 [보수적]으로 시뮬레이션을 진행하므로, 서로에 이벤트들이 유지되어 데드록이 발생하는 경우가 있다. 그와 같은 데드록을 피하기 위해서는, 시간을 보내기 위한 특별한 null메시지를 고 빈도로 보내는 등, 회피를 위한 코스트가 커지는 경우가 있다.
(3) Conservative Event Synchronization: In this scheme, each processor emulator synchronizes with its partner by sending and receiving events with visual information. However, because the simulation is carried out conservatively so that causality does not contradict, deadlock may occur because events are maintained in each other. In order to avoid such deadlocks, the cost of avoidance can be high, such as sending a special null message for a high amount of time.

V-HILS의 종래기술로서, (일본) 특허공개 2007-11720호 공보는, 복잡한 구성의 시스템에 대응하면서, 시스템 시뮬레이터의 구성을 유연하게 변경 가능하게 하는 것을 해결해야 하는 과제로 하는 것으로, 시스템 시뮬레이터를, CPU의 동작을 시뮬레이트하는 인스트럭션(instruction) 세트 시뮬레이터, 버스의 동작을 시뮬레이트하는 버스 시뮬레이터, 퍼리퍼럴의 동작을 시뮬레이트하는 퍼리퍼럴 시뮬레이터의 3종류로 구성하고, 각 시뮬레이터 간에 서로의 상태를 참조 변경 가능한 각 인터페이스를 각각 설치하는 것을 개시한다. 하지만, 이 종래 기술은, 퍼리퍼럴과 CPU간의 동기를 최적화하는 방법에 대해 시사하는 것은 아니다.
As a prior art of V-HILS, Japanese Unexamined Patent Publication No. 2007-11720 discloses a system simulator that solves the problem of flexibly changing the configuration of a system simulator while responding to a complicated system. It consists of three types: instruction set simulator to simulate the operation of the CPU, bus simulator to simulate the operation of the bus, and peripheral simulator to simulate the operation of the peripheral. Initiates the installation of each reference-modifiable interface. However, this prior art does not suggest a method of optimizing the synchronization between the peripheral and the CPU.

따라서, 본원 발명자들은, 보수적인 이벤트 동기의 구조를 발전시켜, (일본) 특허 출원 2009-238954호 명세서에 기술된, 퍼리퍼럴 스케줄러(Peripheral scheduler)를 이용한 시뮬레이션 방법을 제공한다. 이 방법에 있어서는, 퍼리퍼럴 스케줄러는, 모든 퍼리퍼럴 에뮬레이터의 완료 플래그(completion flags)를 해제(OFF)하는 것으로, 병렬 동작을 개시한다. 그렇게 하여, 퍼리퍼럴 스케줄러는, 설정된 개개의 퍼리퍼럴 에뮬레이터의 처리 중지 타이밍(the timing of processing break)에 기초하여, 제일 빠른 처리 중지(the earlist processing break)을 받아들일 예정의 퍼리퍼럴 에뮬레이터를 찾는다. 그것을 퍼리퍼럴P라고 한다. 그 처리 중지의 시간을 T라고 하면, 퍼리퍼럴 스케줄러는, 시간T에 도달하는 시점까지, 각 프로세서 에뮬레이터와, 각 플랜트 시뮬레이터의 실행을 진행한다. 그렇게 하여, 퍼리퍼럴 스케줄러는, 퍼리퍼럴P의 완료 플래그가 설정되는 것을 기다린다. 퍼리퍼럴P의 완료 플래그가 설정된 것에 응답하여, 퍼리퍼럴 스케줄러는, 퍼리퍼럴P와 프로세서 에뮬레이터 및 플랜트 시뮬레이터의 사이에서 데이터를 동기 시킨다.
Accordingly, the present inventors have developed a structure of conservative event synchronization to provide a simulation method using a peripheral scheduler described in the specification of (Japanese) Patent Application 2009-238954. In this method, the peripheral scheduler starts parallel operation by turning off the completion flags of all the peripheral emulators. In doing so, the peripheral scheduler, based on the timing of processing break of each set of peripheral emulators, is the one that will accept the earlist processing break. Find it. It is called Peripheral P. If the time at which the processing is stopped is T, the peripheral scheduler executes each processor emulator and each plant simulator until the time T is reached. In doing so, the peripheral scheduler waits for the completion flag of the peripheral P to be set. In response to the completion flag of the peripheral P being set, the peripheral scheduler synchronizes data between the peripheral P, the processor emulator, and the plant simulator.

그런데 최근에, 복수의 ECU를 동시에, 멀티 코어의 호스트 컴퓨터 상에서 에뮬레이트하는, 더욱 실제 기기(actual device)의 동작 전체에 가까운 시뮬레이션에 대한 요망이 나타났다. 그러나, 복수의 ECU의 개개의 호스트 상에서의 실행 속도는 서로 달라서, 그것들 간에 명시적인 동기 처리가 필요하지만, ECU 간에 부정기로 인터럽션이 수행되는 통신 때문에, 복수의 ECU를 동기 시키는 것은 쉽지 않다. (일본) 특허 출원2009-238954호 명세서에 기술된 방법은, 단독의 ECU를 대상으로 하고 있기 때문에, 그대로는 복수의 ECU를 가진 시스템의 시뮬레이션에, 적용할 수 없다.
Recently, however, there has been a desire for a simulation that is closer to the full operation of an actual device, which simultaneously emulates a plurality of ECUs on a multi-core host computer. However, although the execution speeds on the individual hosts of the plurality of ECUs are different from each other, explicit synchronization processing between them is required, but it is not easy to synchronize the plurality of ECUs due to communication in which interruption is performed irregularly between the ECUs. Since the method described in the (Japanese) Patent Application No. 2009-238954 is intended for a single ECU, it cannot be applied to the simulation of a system having a plurality of ECUs as it is.

특허문헌 1: (일본) 특허공개 2007-11720호 공보Patent Document 1: (Japan) Patent Publication No. 2007-11720 특허문헌 2: (일본) 특허출원 2009-238954호 명세서Patent Document 2: (Japan) Patent Application No. 2009-238954

따라서, 본 발명의 목적은, 서로에게 비동기 데이터의 통지(인터럽션)를 제공하는 복수의 ECU와 플랜트를 가진 시스템에 있어서, 충분한 시간 정밀도 및 최소 데이터 오차로, 또한, 고속으로 시뮬레이션을 실행하는 것을 가능하게 하는 방법을 제공하는 것이다. 여기서, 비동기적인 데이터 통지란, 예를 들면, 플랜트에서 부정기적으로 일어나는 상태 변화를 컨트롤러에 통지하는 것이나, 프로세서 간의 비동기적인 CAN 통신 등을 가리킨다.
Accordingly, it is an object of the present invention to perform a simulation with a sufficient time accuracy and minimum data error and at high speed in a system having a plurality of ECUs and plants that provide each other with notification of asynchronous data (interruption). It is to provide a way to make it possible. Here, asynchronous data notification refers to, for example, notifying the controller of a state change occurring irregularly in a plant, asynchronous CAN communication between processors, and the like.

이 발명의 목적은, ECU와 그 제어 대상인 플랜트를 가진 시스템 전체를 시뮬레이트 하도록, 프로세서 에뮬레이터, 퍼리퍼럴 에뮬레이터, 및 플랜트 시뮬레이터의 3종류를 링크(link)하는 것이다.An object of the present invention is to link three types of processor emulator, peripheral emulator and plant simulator to simulate the entire system having an ECU and a plant under control thereof.

본 발명에 의하면, 퍼리퍼럴은, 상호 퍼리퍼럴, 외부 퍼리퍼럴, 및 내부 퍼리퍼럴의 3종류로 분리되어, 각각 고유의 스케줄러가 제공된다. 이 3종류의 스케줄러가 협조하여, 효율적으로 정확한 링크 동작을 실현한다.
According to the present invention, the peripherals are separated into three types, namely, a mutual peripheral, an external peripheral, and an internal peripheral, and a unique scheduler is provided. These three types of schedulers cooperate to realize accurate link operation efficiently.

상호 퍼리퍼럴은, 프로세서간의 통신을 처리하는 중간층이며, 고유의 상호 퍼리퍼럴 스케줄러를 가진다. 상포 퍼리퍼럴은 프로세서 간의 비동기 통신을 고속으로 처리하는 기능을 가진다.
The mutual primary is an intermediate layer that handles communication between processors and has its own mutual primary scheduler. Topographical peripherals have the ability to handle asynchronous communications between processors at high speeds.

외부 퍼리퍼럴은 플랜트와 프로세서를 접속하는 중간층이며, 고유의 외부 퍼리퍼럴 스케줄러를 가진다. 외부 퍼리퍼럴은 플랜트로부터의 비동기적인 통지를 받아 프로세서에 전달하는 것과, 또한, 플랜트를 향해 프로세서로부터의 지시를 보내는 기능을 가진다.
The outer peripheral is the middle layer that connects the plant and the processor and has its own outer peripheral scheduler. The external peripheral has the ability to receive asynchronous notifications from the plant, deliver them to the processor, and also send instructions from the processor towards the plant.

내부 퍼리퍼럴은, 특정의 프로세서만 접속되는 퍼리퍼럴층이며, 예를 들면, Watch Dog Timer나 메모리 등이 해당한다. 플랜트나 그 외의 프로세서와는 신호 교환을 하지 않는다. 고유의 내부 퍼리퍼럴 스케줄러(혹은, 프로세서 스케줄러)를 가진다.
The internal peripheral is a peripheral layer to which only a specific processor is connected, for example, a watch dog timer or a memory. There is no signal exchange with the plant or other processors. It has its own internal peripheral scheduler (or processor scheduler).

상호 퍼리퍼럴 스케줄러, 외부 퍼리퍼럴 스케줄러, 및 내부 퍼리퍼럴 스케줄러는, 코루틴 형식(co-routine form)으로 병렬로 동작한다.
The mutual peripheral scheduler, the external peripheral scheduler, and the internal peripheral scheduler operate in parallel in a co-routine form.

또한, 플랜트 시뮬레이터는, 바람직하게는, MATLAB(R)/Simulink(R)과 같은 연속적 수치 시뮬레이션 모델링 시스템(continuous value simulation modeling system)으로 작성된다. 퍼리퍼럴 에뮬레이터는, 트랜잭션형의 에뮬레이터이며, 바람직하게는, SystemC/TLM으로 작성된다. 프로세서 에뮬레이터는, 명령 세트 시뮬레이터(ISS)에 의한 에뮬레이션을 수행한다.
In addition, the plant simulator is preferably created with a continuous value simulation modeling system such as MATLAB (R) / Simulink (R). The peripheral emulator is a transactional emulator, preferably written in SystemC / TLM. The processor emulator performs emulation by the instruction set simulator (ISS).

외부 퍼리퍼럴 스케줄러는, 프로세서 에뮬레이터의 [반응 지연 시간]과 다음 이벤트가 일어나는 시간까지 중 빠른 쪽을 선택하여, 그 시간까지 플랜트 시뮬레이터를 선행 실행시킨다. 그리고, 실제로 플랜트 시뮬레이터가 정지한 시간까지 선행 실행하도록, 모든 프로세서 스케줄러(혹은 내부 퍼리퍼럴 스케줄러)에 통지한다. 또한, 반응 지연 시간이란, 플랜트로부터 상태 변화의 통지를 받고 나서, 그것에 대응하는 플랜트에의 지시를 계산하여, 실제로 그 지시가 플랜트에 있어서 유효하게 되는 시각까지의 최소의 시간차를 가리킨다.
The external peripheral scheduler selects the earlier of the response time between the processor emulator and the time when the next event occurs, and runs the plant simulator up to that time. In addition, all processor schedulers (or internal peripheral schedulers) are notified to actually execute them up to the time when the plant simulator is stopped. In addition, the reaction delay time calculates an instruction to the plant corresponding to it after receiving the notification of the state change from the plant, and refers to the minimum time difference from the time when the instruction becomes effective in the plant.

상호 퍼리퍼럴 스케줄러는, 프로세서 에뮬레이터 간의 [통신 지연 시간]과 다음 이벤트가 일어나는 시간까지 중 빠른 쪽을 선택하고, 그 시간까지 선행 실행하도록, 모든 프로세서 스케줄러(혹은 내부 퍼리퍼럴 스케줄러)에 통지한다. 또한, 통신 지연 시간이란, 프로세서가 데이터를 송신하고 나서, 다른 프로세서가 그것을 수신하기까지 걸리는 최소 시간을 가리킨다.
The mutual peripheral scheduler selects the earlier of [communication delay time] between processor emulators and the time when the next event occurs, and notifies all processor schedulers (or internal peripheral schedulers) to execute ahead of that time. . In addition, the communication delay time refers to the minimum time taken after the processor transmits data and before another processor receives it.

프로세서 스케줄러(혹은 내부 퍼리퍼럴 스케줄러)는, 통지된 목표 동기 시간 중 제일 빠른 시각까지 처리를 진행한다. 이와 같이 하여, 프로세서 간에 시간 조정은 수행하지 않고, 2종류의 퍼리퍼럴 스케줄러로부터 주어진 동기 시각을 향해 보수적으로 처리를 진행하는 것으로, 낮은 코스트로, 프로세서 간의 데드록을 회피한다.
The processor scheduler (or the internal peripheral scheduler) proceeds to the earliest time of the reported target synchronization time. In this way, time adjustment is not performed between processors, and processing is conservatively performed from two kinds of peripheral schedulers toward a given synchronization time, thereby avoiding deadlock between processors at a low cost.

각 퍼리퍼럴층은, 제일 진척이 늦은 프로세서(the slowest progressing processor)의 시각을 이벤트로 하여 수신하고, 그 시각까지 자신의 처리를 진행한다. 또한, 그 갱신된 시각에 기초하여, 다음 동기 시간 통지를 결정한다.
Each peripheral layer receives the event of the slowest progressing processor as an event and proceeds its own processing to that time. Further, based on the updated time, the next synchronization time notification is determined.

이상과 같이, 플랜트, 프로세서, 퍼리퍼럴 순으로 시뮬레이션을 진행하여, 전체로서 이종 간을 링크한 처리가 실현된다.As described above, the simulation is performed in the order of the plant, the processor, and the peripheral, and the processing in which the heterogeneous links are performed as a whole is realized.

본 발명에 의하면, 프로세서 에뮬레이터의 반응 지연 시간 및 프로세서 에뮬레이터간의 통신 지연 시간을 이용하여, 프로세서 에뮬레이터를 선행 실행시키기 때문에, 데드록 회피를 위한 오버헤드가 없는, 보수적인 이벤트 동기에 의한 고속의 시뮬레이션이 가능하다. 또, 고정 시간 간격에 의한 동기가 아니라, 임의의 시각을 표현할 수 있는 이벤트에 근거하는 동기 수법이기 때문에, 시간에 관한 오차가 작은 정확한 시뮬레이션이 가능하다.
According to the present invention, since the processor emulator is executed beforehand using the response delay time of the processor emulator and the communication delay time between the processor emulators, a high speed simulation by conservative event synchronization without the overhead for avoiding deadlock is achieved. It is possible. Moreover, since it is a synchronization method based on the event which can represent arbitrary time instead of the synchronization by fixed time interval, accurate simulation with little time error is possible.

도 1은 본 발명을 실시하기 위해 사용되는 컴퓨터 하드웨어의 한 예를 나타낸 블록도이다.
도 2는 본 발명을 실시하기 위한 기능 블록의 한 실시 예를 나타낸 도이다.
도 3은 프로세서, 퍼리퍼럴 및 플랜트에 있어서 지연을 설명하는 도이다.
도 4는 프로세서의 에뮬레이션의 기능을 설명하는 도이다.
도 5는 퍼리퍼럴의 에뮬레이션 동작의 한 예를 나타낸 도이다.
도 6은 플랜트의 시뮬레이션 동작의 한 예를 나타낸 도이다.
도 7은 내부 퍼리퍼럴 스케줄러의 구성 요소를 나타낸 도이다.
도 8은 내부 퍼리퍼럴 스케줄러의 처리의 흐름도를 나타낸 도이다.
도 9는 내부 퍼리퍼럴 스케줄러의 처리의 흐름도를 나타낸 도이다.
도 10은 내부 퍼리퍼럴 스케줄러의 처리의 흐름도를 나타낸 도이다.
도 11은 상호 퍼리퍼럴 스케줄러의 구성 요소를 나타낸 도이다.
도 12는 상호 퍼리퍼럴 스케줄러의 처리의 흐름도를 나타낸 도이다.
도 13은 외부 퍼리퍼럴 스케줄러의 구성 요소를 나타낸 도이다.
도 14는 외부 퍼리퍼럴 스케줄러의 처리의 흐름도를 나타낸 도이다.
도 15는 상호 퍼리퍼럴 스케줄러에 있어서, TQ와, 그것에 대응하는 IQ 및 OQ의 이벤트의 시간에 따른 출입의 예를 나타낸 도이다.
도 16은 논리 프로세스의 구성을 나타낸 도이다.
도 17은 접속된 논리 프로세스 군을 나타낸 도이다.
도 18은 null 메시지에 의해 데드록을 막는 모습을 나타낸 도이다.
도 19는 프로세서의 통신 지연을 설명하기 위한 도이다.
도 20은 프로세서의 반응 지연을 설명하기 위한 도이다.
도 21은 공유 메모리 액세스의 시뮬레이션을 설명하기 위한 도이다.
도 22는 프로세서와 통신 빈도가 높은 퍼리퍼럴을, ISS와 같은 코어로 에뮬레이트하는 것을 설명하기 위한 도이다.
도 23은 CAN 디바이스의 중단 시에 조정을 갱신하는 동작의 시뮬레이션을 설명하기 위한 도이다.
도 24는 CAN 디바이스의 리셋 시뮬레이션을 설명하기 위한 도이다.
도 25는 본 발명을 실시하기 위한 기능 블록의 다른 실시 예를 나타낸 도이다.
도 26은 수동적 플랜트 시뮬레이터용의 외부 퍼리퍼럴 스케줄러의 동작의 흐름도를 나타낸 도이다.
1 is a block diagram illustrating an example of computer hardware used to practice the present invention.
2 is a diagram illustrating an embodiment of a functional block for implementing the present invention.
3 is a diagram illustrating a delay in a processor, a peripheral, and a plant.
4 is a diagram illustrating a function of emulation of a processor.
5 is a diagram illustrating an example of an emulation operation of a peripheral.
6 is a diagram illustrating an example of a simulation operation of a plant.
7 is a diagram illustrating the components of an internal peripheral scheduler.
8 is a flowchart illustrating a process of an internal peripheral scheduler.
9 is a flowchart illustrating a process of an internal peripheral scheduler.
10 is a flowchart showing a process of an internal peripheral scheduler.
11 is a diagram illustrating the components of a mutual peripheral scheduler.
12 is a flowchart illustrating a process of a mutual peripheral scheduler.
13 is a diagram illustrating the components of an external peripheral scheduler.
14 is a flowchart illustrating a process of an external peripheral scheduler.
FIG. 15 is a diagram illustrating an example of entry and exit according to time of an event of a TQ and corresponding IQ and OQ in a mutual peripheral scheduler.
16 is a diagram illustrating a configuration of a logic process.
17 is a diagram illustrating a connected logical process group.
18 is a diagram showing a state where deadlock is prevented by a null message.
19 is a diagram for describing communication delay of a processor.
20 is a diagram for describing a response delay of a processor.
21 is a diagram for explaining simulation of shared memory access.
FIG. 22 is a diagram for explaining the emulation of a peripheral having a high frequency of communication with a processor by a core such as an ISS.
FIG. 23 is a diagram for explaining a simulation of an operation of updating an adjustment upon interruption of a CAN device.
24 is a diagram for explaining reset simulation of a CAN device.
25 is a view showing another embodiment of a functional block for practicing the present invention.
Fig. 26 shows a flowchart of the operation of the external peripheral scheduler for the passive plant simulator.

이하, 도면을 참조하여, 본 발명의 한 실시 예의 구성 및 처리를 설명한다. 이하의 기술에서는, 특별히 부정하지 않는 한, 도면에 대해서는, 동일한 요소는 동일한 부호로 참조되는 것으로 한다. 또한, 여기서 설명하는 구성과 처리는, 한 실시 예로서 설명하는 것으로, 본 발명의 기술적 범위를 이 실시 예에 한정하여 해석하는 의도는 없다는 것을 이해하길 바란다.
EMBODIMENT OF THE INVENTION Hereinafter, with reference to drawings, the structure and process of one Example of this invention are demonstrated. In the following description, unless otherwise specified, the same elements are referred to by the same reference numerals in the drawings. It is to be understood that the configuration and processing described herein are described as an example and are not intended to limit the technical scope of the present invention to these examples.

우선, 도 1을 참조하여, 본 발명을 실시하기 위해 사용되는 컴퓨터의 하드웨어에 대해 설명한다. 도 1에 있어서 호스트 버스(102)에는, 복수의 CPU1(104a), CPU2(104b), CPU3(104c), …CPUn(104n)의 연산 처리를 위한 메인 메모리(106)가 접속된다.
First, with reference to FIG. 1, the hardware of the computer used for implementing this invention is demonstrated. In FIG. 1, the host bus 102 includes a plurality of CPU1 104a, CPU2 104b, CPU3 104c,... Main memory 106 for arithmetic processing of CPUn 104n is connected.

한편, I/O버스(108)에는, 키보드(110), 마우스(112), 디스플레이(114) 및 하드 디스크 드라이브(116)가 접속된다. I/O버스(108)는, I/O브릿지(118)를 통하여, 호스트 버스(102)에 접속된다. 키보드(110) 및 마우스(112)는, 오퍼레이터가, 커맨드를 입력하거나, 메뉴를 클릭하는 등의, 조작하기 위해 사용된다. 디스플레이(114)는, 필요에 따라, 처리를 GUI에서 조작하기 위한 메뉴를 표시하기 위해 사용된다.
On the other hand, the keyboard 110, the mouse 112, the display 114, and the hard disk drive 116 are connected to the I / O bus 108. The I / O bus 108 is connected to the host bus 102 via the I / O bridge 118. The keyboard 110 and the mouse 112 are used for the operator to input a command, click a menu, or the like. The display 114 is used to display a menu for operating the process in the GUI, as necessary.

이 목적을 위해 사용되는 바람직한 컴퓨터 시스템의 하드웨어로서, IBM(R)System X가 있다. 이 때, CPU1(104a), CPU2(104b), CPU3(104c), …CPUn(104n)은, 예를 들면, 인텔(R)Xeon (R)이고, 오퍼레이팅 시스템은, Windows(상표) Server 2003이다. 오퍼레이팅 시스템은, 바람직하게는, 멀티 태스크의 기능을 갖는 것이다. 오퍼레이팅 시스템은, 하드 디스크 드라이브(116)에 저장되어, 컴퓨터 시스템의 기동 시에, 하드 디스크 드라이브(116)로부터 메인 메모리(106)에 리드된다.
As hardware of the preferred computer system used for this purpose, IBM (R) System X is. At this time, CPU1 104a, CPU2 104b, CPU3 104c,... The CPUn 104n is, for example, Intel (R) Xeon (R), and the operating system is Windows (trademark) Server 2003. The operating system is preferably one having a multitasking function. The operating system is stored in the hard disk drive 116 and is read from the hard disk drive 116 to the main memory 106 at startup of the computer system.

본 발명을 실시하기 위해서는, 멀티 프로세서 시스템을 이용하는 것이 바람직하다. 여기서 멀티 프로세서 시스템이란, 일반적으로, 독립하여 연산 처리 할 수 있는 프로세서 기능의 코어를 복수로 갖는 프로세서를 이용한 시스템인 것을 의도하고 있고, 따라서, 멀티 코어 싱글 프로세서 시스템, 싱글 코어 멀티 프로세서 시스템, 및 멀티 코어 멀티 프로세서 시스템 중 어느 것이라도 좋다는 것을 이해하길 바란다.
In order to implement the present invention, it is preferable to use a multiprocessor system. The multiprocessor system is generally intended to be a system using a processor having a plurality of cores of processor functions that can be independently arithmetic, and therefore, a multicore single processor system, a single core multiprocessor system, and a multiprocessor. Please understand that any of the core multiprocessor systems may be used.

또한, 본 발명을 실시하기 위해 사용 가능한 컴퓨터 시스템의 하드웨어는, IBM(R)System X에 한정하지 않고, 본 발명의 시뮬레이션 프로그램을 동작 시킬 수 있는 것이면, 임의의 컴퓨터 시스템을 사용할 수 있다. 오퍼레이팅 시스템도, Windows(R) 계열에 한정하지 않고, Linux(R), Mac OS(R) 등, 임의의 오퍼레이팅 시스템을 사용할 수 있다. 또, 시뮬레이션 프로그램을 고속으로 동작시키기 위해서, POWER(상표) 6 기반의, 오퍼레이팅 시스템이 AIX(상표)의 IBM(R)System P 등의 컴퓨터 시스템을 사용할 수 있다.
In addition, the hardware of the computer system which can be used for implementing this invention is not limited to IBM (R) System X, As long as it can operate the simulation program of this invention, arbitrary computer systems can be used. The operating system is not limited to the Windows (R) series, but any operating system such as Linux (R) or Mac OS (R) can be used. Moreover, in order to operate a simulation program at high speed, the operating system based on POWER (trademark) 6 can use computer systems, such as IBM (R) System P of AIX (trademark).

하드 디스크 드라이브(116)에는 또, 후술하는 프로세서 에뮬레이터, 퍼리퍼럴 에뮬레이터, 플랜트 시뮬레이터, 내부 퍼리퍼럴 스케줄러, 상호 퍼리퍼럴 스케줄러, 외부 퍼리퍼럴 스케줄러, CAN 에뮬레이터 등의 프로그램이 저장되어 있고, 그 각각은, 컴퓨터 시스템의 기동 시에 메인 메모리(106)에 로드되고, 개별의 스레드 또는 프로세서로서 개개의 CPU1~CPUn에 할당되어, 실행된다. 이 때문에, 도 1에 나타낸 컴퓨터 시스템은, 바람직하게는, 프로세서 에뮬레이터, 퍼리퍼럴 에뮬레이터, 플랜트 시뮬레이터, 상호 퍼리퍼럴 스케줄러, 외부 퍼리퍼럴 스케줄러, CAN 에뮬레이터 등의 개개의 스레드에 개별로 할당하는데 충분한 개수의 CPU를 갖는다.
The hard disk drive 116 also stores a program such as a processor emulator, a peripheral emulator, a plant simulator, an internal peripheral scheduler, a mutual peripheral scheduler, an external peripheral scheduler, a CAN emulator, and the like, which will be described later. Each of them is loaded into the main memory 106 at the time of startup of the computer system, assigned to individual CPU1 to CPUn as individual threads or processors, and executed. For this reason, the computer system shown in FIG. 1 is preferably individually assigned to individual threads, such as a processor emulator, a peripheral emulator, a plant simulator, a mutual peripheral scheduler, an external peripheral scheduler, and a CAN emulator. Have enough CPU

도 2는, 그와 같은 개개의 CPU1~CPUn에 할당된 개별의 스레드 또는 프로세스로서 동작하는 프로세서 에뮬레이터, 퍼리퍼럴 에뮬레이터, 플랜트 시뮬레이터, 상호 퍼리퍼럴 스케줄러, 외부 퍼리퍼럴 스케줄러, CAN 에뮬레이터 등의 처리 프로그램의 사이의 협력 관계를 도시한 기능 블록도이다.
Fig. 2 shows a processor emulator, a peripheral emulator, a plant simulator, a mutual periphery scheduler, an external periphery scheduler, a CAN emulator, etc., operating as individual threads or processes assigned to such individual CPUs 1 to CPUn. It is a functional block diagram showing a cooperative relationship between processing programs.

이 구성은, ECU에 해당하는 프로세서 에뮬레이터 및 퍼리퍼럴 에뮬레이터, 그리고, 플랜트 시뮬레이터로부터 만들어지는 시뮬레이션 시스템이다. 퍼리퍼럴 에뮬레이터는, 상호 퍼리퍼럴과 외부 퍼리퍼럴로 나누어진다. 또한, 도에서는 나타내지 않았지만, 내부 퍼리퍼럴은, 프로세서 에뮬레이터의 블록에 포함된다고 이해하길 바란다. 전체에서는, 도의 옆 방향으로, 4층의 시뮬레이션 시스템이라는 것을 알 수 있다.
This configuration is a simulation system made from a processor emulator and a peripheral emulator corresponding to an ECU, and a plant simulator. Peripheral emulators are divided into mutual and external peripherals. In addition, although not shown in the figure, it is to be understood that the internal peripheral is included in a block of the processor emulator. In the whole, it turns out that it is a simulation system of four layers in the lateral direction of a figure.

도 2에 있어서, 프로세서 에뮬레이터(202a, 202b, …202z)는, 시뮬레이션 시스템에 있어서, ECU의 기능 중 컨트롤러로서 중심적인 기능을 갖는다. 프로세서 에뮬레이터(202a, 202b, …202z)는, 소프트웨어 코드를 로드하여, 명령 세트 시뮬레이터(ISS)에 의한 에뮬레이션을 수행한다.
In Fig. 2, the processor emulators 202a, 202b, ... 202z have a central function as a controller among the functions of the ECU in the simulation system. Processor emulators 202a, 202b, ... 202z load software code to perform emulation by instruction set simulator (ISS).

퍼리퍼럴 에뮬레이터(204a, 204b, …204z), 및, CAN 에뮬레이터(212)는, 트랜잭션형의 에뮬레이터이고, 바람직하게는, SystemC/TLM으로 작성된다.
The peripheral emulators 204a, 204b, ... 204z, and the CAN emulator 212 are transactional emulators, and are preferably made of SystemC / TLM.

플랜트 시뮬레이터(206a, 206b, …206z)는, 바람직하게는 MATLAB(R)/Simulink(R)와 같은 연속적 수치 시뮬레이션 모델링 시스템으로 작성된다. 플랜트 시뮬레이터(206a, 206b, …206z)의 각각은, 엔진 등의 동력 장치, 트랜스미션 등의 동력 전달 장치, 스티어링 등의 주행 장치, 및 브레이크 장치 등의 자동차 기구 장치에 대응한다.
Plant simulators 206a, 206b, ... 206z are preferably created with a continuous numerical simulation modeling system such as MATLAB (R) / Simulink (R). Each of the plant simulators 206a, 206b,... 206z corresponds to a power device such as an engine, a power transmission device such as a transmission, a traveling device such as a steering, and a vehicle mechanism device such as a brake device.

프로세서 에뮬레이터(202a, 202b, …202z)는 예를 들면 전형적으로는, 80MHz라고 하는 상대적으로 고해상도의 클럭으로 동작한다. 한편, 플랜트 시뮬레이터(206a, 206b, …206z)는, 물리 기구의 시뮬레이터이기 때문에, 예를 들면 전형적으로는, 10KHz라고 하는 상대적으로 저해상도에서 동작한다.
Processor emulators 202a, 202b,... 202z operate with a relatively high resolution clock, typically 80 MHz, for example. On the other hand, since the plant simulators 206a, 206b, ... 206z are simulators of physical instruments, for example, they typically operate at a relatively low resolution of 10 KHz.

따라서, 프로세서 에뮬레이터(202a, 202b, …202z)와 플랜트 시뮬레이터(206a, 206b, …206z)는 직접 접속할 수 없기 때문에, 퍼리퍼럴 에뮬레이터(204a, 204b, …204z)가 그것들 간에 개재하여, 플랜트 시뮬레이터로부터의 상태 변화나 센서의 값을 이벤트로 변환하여 프로세서 에뮬레이터에 보내거나, 반대로, 프로세서 에뮬레이터로부터의 지시(시그널링)를 이벤트로 변환하여 플랜트 시뮬레이터에 보내는 역할을 한다.
Therefore, since the processor emulators 202a, 202b, ... 202z and the plant simulators 206a, 206b, ... 206z cannot be directly connected, the peripheral emulators 204a, 204b, ... 204z are interposed therebetween, so that the plant simulator It converts the state change from the sensor or the value of the sensor into an event and sends it to the processor emulator, or, conversely, converts an instruction (signaling) from the processor emulator to an event and sends it to the plant simulator.

내부 퍼리퍼럴 스케줄러는, 프로세서 에뮬레이터와, 그것에 접속하는 퍼리퍼럴 에뮬레이터의 스케줄링을 수행한다. 프로세서 에뮬레이터에 접속하는 퍼리퍼럴 에뮬레이터는, ROM, RAM, 워치 독 타이머(watchdog timer) 등, 다른 프로세서나 플랜트에 직접 관계하지 않는 퍼리퍼럴(내부 퍼리퍼럴) 기능을 처리한다. 내부 퍼리퍼럴 스케줄러는, ECU의 메모리 맵 사양을 참조하여, ISS로부터의 load/store 명령을, 내부 퍼리퍼럴 스케줄러, 상호 퍼리퍼럴 스케줄러, 외부 퍼리퍼럴 스케줄러에 분배하는 중요한 기능을 갖는다. 또한, 이하에서는, 내부 퍼리퍼럴 스케줄러를 프로세서 스케줄러라고 바꿔 말해 설명하는 곳이 있지만, 양자는 동일한 기능을 가리키는 것에 주의하기 바란다.
The internal peripheral scheduler performs scheduling of the processor emulator and the peripheral emulator connected to it. The peripheral emulator, which connects to the processor emulator, handles peripheral (internal peripheral) functions that are not directly related to other processors or plants, such as ROM, RAM, and watchdog timers. The internal peripheral scheduler has an important function of distributing load / store instructions from the ISS to the internal peripheral scheduler, mutual peripheral scheduler, and external peripheral scheduler by referring to the ECU's memory map specification. In the following description, the internal peripheral scheduler is referred to as a processor scheduler. However, it is noted that both refer to the same function.

외부 퍼리퍼럴 스케줄러(208)는, 플랜트 시뮬레이터(206a, 206b, …206z)에 접속하는 퍼리퍼럴 에뮬레이터(204a, 204b, …204z)를 처리하는 스케줄러이다. 외부 퍼리퍼럴 스케줄러(208)는, 프로세서 에뮬레이터(202a, 202b, …202z)의 반응 지연 시간(혹은 다음 이벤트까지의 시간)만큼, 플랜트 시뮬레이터(206a, 206b, …206z)를 선행 실행시키도록 스케줄링한다. 플랜트 시뮬레이터는 지정된 시간에, 혹은 내부 상태의 갱신의 통지가 필요하면, 그 시간보다 전에 정지한다. 그리고, 실제로 플랜트 시뮬레이터(206a, 206b, …206z)가 정지한 시간까지 프로세서 에뮬레이터에 선행 실행하도록 통지한다.
The external peripheral scheduler 208 is a scheduler that processes the peripheral emulators 204a, 204b, ... 204z connected to the plant simulators 206a, 206b, ... 206z. The external peripheral scheduler 208 schedules the plant simulators 206a, 206b, ... 206z to run ahead of time by the response delay time (or the time until the next event) of the processor emulators 202a, 202b, ... 202z. do. The plant simulator stops at the specified time or before that time if notification of the update of the internal state is necessary. In fact, the processor emulator 206a, 206b, ... 206z is actually notified to the processor emulator before execution by the time when it is stopped.

외부 퍼리퍼럴 스케줄러(208)는, 플랜트 시뮬레이터(206a, 206b, …206z)에 대해서, 컨트롤러로부터 요구된 시그널링 또는 샘플링의 지시를 내린다. 시그널링은 컨트롤러가 플랜트를 조작(actuate)하기 위한 이벤트이고, 예를 들면, 스위치의 ON/OFF 신호를 지시하는 동작이다. 또, 샘플링은, 컨트롤러가 플랜트의 상태를 모니터(sense)할 때에 값의 리드를 지시하기 위한 이벤트이고, 예를 들면, 배터리 셀(플랜트)의 전압치를 컨트롤러가 리드하는 동작이다. 여기서, 컨트롤러란, 프로세서 에뮬레이터에 로드된 소프트웨어로, 플랜트에 대한 제어 신호를 만드는 로직(logic)을 말한다. 시그널링과 샘플링은, 에뮬레이션 대상의 처리가 주기적인지 아닌지에 상관없이, 컨트롤러가 그 타이밍을 결정한다.
The external peripheral scheduler 208 instructs the plant simulators 206a, 206b,... 206z of the signaling or sampling requested from the controller. The signaling is an event for the controller to actuate the plant, for example, an operation of indicating an ON / OFF signal of the switch. In addition, sampling is an event for instructing the reading of a value when the controller monitors the state of the plant. For example, the sampling is an operation in which the controller reads the voltage value of the battery cell (plant). Here, the controller is software loaded in the processor emulator and refers to logic that generates control signals for the plant. For signaling and sampling, the controller determines its timing, whether or not the process to be emulated is periodic.

한편, 외부 퍼리퍼럴 스케줄러(208)는, 플랜트 시뮬레이터(206a, 206b, …206z)로부터, 상태 변화(state change) 이벤트의 통지를 받는다. 이것은, 플랜트가 상태의 변화를 컨트롤러에 통지하는 이벤트이며, 플랜트가 그 타이밍을 결정한다. 이것도, 주기적인 경우도 있고, 비주기적인 경우도 있다.
On the other hand, the external peripheral scheduler 208 receives a notification of a state change event from the plant simulators 206a, 206b, ... 206z. This is an event where the plant notifies the controller of a change in state, and the plant determines its timing. This may be periodic, or it may be aperiodic.

상호 퍼리퍼럴 스케줄러(210)는, 프로세서 에뮬레이터(202a, 202b, …202z)간을 접속하는, 상호 퍼리퍼럴 기능을 제공하는 스케줄러이다. 상호 퍼리퍼럴 스케줄러(210)는, 프로세서 에뮬레이터(202a, 202b, …202z)간의 통신 지연 시간(혹은 다음 이벤트까지의 시간)만큼, 프로세서 에뮬레이터(202a, 202b, …202z)를 선행 실행하도록 통지한다. 프로세서 에뮬레이터(202a, 202b, …202z)는, 통지된 시간 중 제일 빠른 시각까지 보수적으로 처리를 진행한다. 이 때, 프로세서 에뮬레이터간의 통신은, 예를 들면, CAN(Controller Area Network) 에뮬레이터(212)에 의해 수행한다. ECU의 프로세서 간의 통신에 공유 메모리가 이용되는 경우의 시뮬레이션은, 도 21을 이용하여 후술한다.
The mutual peripheral scheduler 210 is a scheduler that provides a mutual peripheral function that connects the processor emulators 202a, 202b, ... 202z. The mutual peripheral scheduler 210 notifies the processor emulators 202a, 202b, ... 202z to execute in advance by the communication delay time between the processor emulators 202a, 202b, ..., 202z (or the time until the next event). . The processor emulators 202a, 202b, ... 202z conservatively proceed to the earliest time of the notified time. At this time, communication between the processor emulators is performed by, for example, a controller area network (CAN) emulator 212. The simulation when the shared memory is used for communication between the processors of the ECU will be described later with reference to FIG. 21.

도 2에 나타낸 것처럼, 외부 퍼리퍼럴 스케줄러(208) 및 상호 퍼리퍼럴 스케줄러(210)로부터 프로세서 에뮬레이터(202a, 202b, …202z)에의 이벤트는, 인터럽션(INT)의 형식으로 수행되고, 프로세서 에뮬레이터(202a, 202b, …202z)로부터 외부 퍼리퍼럴 스케줄러(208) 및 상호 퍼리퍼럴 스케줄러(210)에의 이벤트는, 리드 라이트(R/W)의 형식으로 수행된다.
As shown in FIG. 2, the events from the external peripheral scheduler 208 and the mutual peripheral scheduler 210 to the processor emulators 202a, 202b,... 202z are performed in the form of interruption INT. The events from the emulators 202a, 202b, ... 202z to the external peripheral scheduler 208 and the mutual peripheral scheduler 210 are performed in the form of a read write (R / W).

도 3을 참조하여, 프로세서 에뮬레이터(혹은 프로세서 스케줄러), 상호 퍼리퍼럴 스케줄러, 외부 퍼리퍼럴 스케줄러, 및 플랜트 시뮬레이터에 있어서 지연을 이용한 선행 실행에 대해 설명하면, 이하와 같다.Referring to FIG. 3, a description will be given of the preceding execution using the delay in the processor emulator (or processor scheduler), the mutual peripheral scheduler, the external peripheral scheduler, and the plant simulator.

* 우선, 도 3(1)에 나타낸 것처럼, 외부 퍼리퍼럴 스케줄러(208)가, 플랜트 시뮬레이터(206)를 선행 실행시킨다. 실제로 선행한 시간을, Tplant 라고 한다.First, as shown in FIG. 3 (1), the external peripheral scheduler 208 preliminarily executes the plant simulator 206. The time actually preceded is called T plant .

* 선행시키는 시간의 상한은, 다음의 시그널링, 혹은, ΔTR의 가까운 쪽이다. 여기서, ΔTR이란, 플랜트 시뮬레이터로부터의 입력 시각으로부터, 그것에 의한 프로세서 에뮬레이터의 반응이 플랜트 시뮬레이터에 전달되어 유효가 되기까지의 지연의 최소값이며, 도 20에서, 보다 자세히 설명한다.* The upper limit of the preceding time is the next signal or the one closer to ΔT R. Here, ΔT R is the minimum value of the delay from the input time from the plant simulator to the reaction of the processor emulator by which it is transmitted to the plant simulator, and is explained in more detail in FIG. 20.

* 다음으로, 도 3(2)에 나타낸 것처럼, 외부 퍼리퍼럴 스케줄러(208)는, 실제로 플랜트 시뮬레이터(206)가 정지한 위치(Tplant)까지, 프로세서 에뮬레이터(202)를 선행 실행하도록 통지한다.Next, as shown in FIG. 3 (2), the external peripheral scheduler 208 notifies the processor emulator 202 to execute up to the position T plant where the plant simulator 206 actually stopped. .

* 다음으로, 도 3(3)에 나타낸 것처럼, 상호 퍼리퍼럴 스케줄러(210)는, 프로세서 에뮬레이터(202) 간의 통신 지연 시간 및 다음의 이벤트까지의 시간 중 빠른 쪽의 시간까지, 프로세서 에뮬레이터(202)를 선행 실행하도록 통지한다. 도에서는, 통신 지연 시간 쪽이 빠른 예를 나타낸다.Next, as shown in Fig. 3 (3), the mutual peripheral scheduler 210 is the processor emulator 202 until the earlier of the communication delay time between the processor emulators 202 and the time until the next event. ) Is executed beforehand. In the figure, an example in which the communication delay time is earlier is shown.

* 통신 지연 시간 ΔTc에 대해서는, 도 19에서, 보다 자세히 설명한다.The communication delay time ΔT c will be described in more detail in FIG. 19.

* 다음으로, 도 3(4)에 나타낸 것처럼, 프로세서 에뮬레이터(202)는, 통지된 2개의 시간 중 제일 빠른 시각까지 보수적으로 처리를 진행하지만, 반드시 그 시각까지 중단하지 않고 처리를 진행한다고 할 수 없고, 예를 들면, 공유 메모리의 리드(R)가 있으면 그 시간은 일단 정지한다. 도에서는, 시각(3)까지 처리를 진행하기 전에 시각(4)에서 일단 정지하는 모습을 나타낸다. 공유 메모리에 액세스가 없으면, 시각(3)까지 한번에 진행한다.Next, as shown in Fig. 3 (4), the processor emulator 202 conservatively proceeds to the earliest time of the two notified times, but it can be said that the processing proceeds without any interruption until that time. For example, if there is a read R of the shared memory, the time stops once. In the figure, the state once stops at time 4 is shown before progressing to the time 3. If there is no access to the shared memory, the process advances to time (3) at once.

* 도 3(5)에 나타낸 것처럼, 상호 퍼리퍼럴 스케줄러, 외부 퍼리퍼럴 스케줄러는, 프로세서로부터 수신한 이벤트 중 제일 빠른 시각까지, 자신의 처리를 진행한다.
As shown in Fig. 3 (5), the mutual peripheral scheduler and the external peripheral scheduler proceed their own processing to the earliest time of the events received from the processor.

다음으로, 도 4를 참조하여, 프로세서의 에뮬레이션 기능을 설명한다. 상술한 것처럼, 프로세서의 에뮬레이션은, ISS(Instruction Set Simulator)로서 실현된다. 프로세서의 에뮬레이션은, 지정된 시각을 목표로 실행하고, 인스트럭션(명령어)에 따라 액세스(R/W)의 요구를 출력하며, 또한, 퍼리퍼럴로부터 발생하는 부정기적인 인터럽션을 수신한다.
Next, referring to FIG. 4, the emulation function of the processor will be described. As described above, the emulation of the processor is realized as an instruction set simulator (ISS). The emulation of the processor executes at a specified time, outputs a request for access (R / W) in accordance with an instruction (instruction), and receives an irregular interruption resulting from the peripheral.

특히 이 실시 예에서는, 설명의 편의를 위해, ISS에의 지시와, ISS로부터의 요구를 이하와 같이 기술한다.In particular, in this embodiment, for convenience of explanation, the instruction to the ISS and the request from the ISS are described as follows.

ISS에의 지시 또는 통지Instruction or notice to ISS

advance(t): 최대로 시각 t까지 실행하도록 ISS에 지시한다. 단, 그 시각에 도달하기 전에 커뮤니케이션이 필요하다면, ISS는 그 요구를 출력하기 위해 처리를 중단한다.advance (t): Instructs the ISS to execute up to time t. However, if communication is required before the time is reached, the ISS stops processing to print the request.

resume(v): 리드의 요구에 대응하는 데이터를 ISS에 통지하여 실행을 재개한다.resume (v): Notifies the ISS of the data corresponding to the read request and resumes execution.

interrupt(i): 인터럽션 i가 발생한 것을 ISS에 통지한다.interrupt (i): Notifies the ISS that an interruption i has occurred.

ISS로부터의 요구 또는 통지Request or Notice from ISS

load(t, a): 시각 t에 a번지의 데이터를 리드하는 것을 요구한다. 그 후, resume 통지를 받을 때까지 처리를 중단한다.load (t, a): Requests to load data at address a at time t. After that, processing stops until the resume notification is received.

store(t, a, v): 시각 t에 a번지에 데이터 v를 라이트 하는 것을 요구한다.store (t, a, v): requests that data v be written to address a at time t.

complete(): advance에서 지시된 시각 t까지 진행되면, 완료의 통지를 수행한다.
complete (): Proceeds notification of completion when progressing to time t indicated in advance.

도 4는, 이와 같은 명령에 의한, 프로세서의 에뮬레이션 동작의 한 예를 나타낸 것이다. 도 4에 있어서 우선, 프로세서는, advance(tg)라고 하는 명령을 수신한다. 프로세서는 시각 t1에서, load(t1, a1)을 출력한다. 이것에 응답하여, 프로세서는 resume(v1)을 수신한다. 프로세서는 시각 t2에서, store(t2, a2, v2)를 출력한다.
4 shows an example of an emulation operation of a processor by such an instruction. In Fig. 4, first, the processor receives a command called advance (t g ). The processor outputs load (t 1 , a 1 ) at time t 1 . In response, the processor receives resume (v 1 ). The processor outputs store (t 2 , a 2 , v 2 ) at time t 2 .

시각 tg에 도달했을 때 프로세서는, 전에 수신한 advance(tg)에 따라, complete()를 출력한다. 그 후에, 프로세서는 플랜트의 반응에 따라, interrupt(i)를 수신하는 경우가 있다. 그렇지 않다면, 다음의 advance() 지시를 수신한다.
When the time t g is reached, the processor outputs complete () in accordance with the advance (t g ) previously received. After that, the processor may receive an interrupt (i) depending on the plant's response. Otherwise, it receives the next advance () indication.

다음으로 도 5를 참조하여, 퍼리퍼럴의 에뮬레이션의 동작을 설명하겠다. 상술한 것처럼, 퍼리퍼럴 에뮬레이터는, 바람직하게는 SystemC에 의해 실현된다. 퍼리퍼럴의 에뮬레이션은, 태스크 큐(task queue)에 로드된 이벤트에 따라, 트랜잭션 실행을 수행하는 것이다.
Next, with reference to Fig. 5, the operation of the emulation of the peripheral. As described above, the peripheral emulator is preferably implemented by SystemC. The emulation of a peripheral is to perform a transactional execution in accordance with an event loaded in a task queue.

[66] 이벤트에는, 레지스터의 READ 요구 및 WRITE 요구 등이 있다. 퍼리퍼럴 에뮬레이션은, 이 이벤트를 태스크 큐의 선두부터 순서대로 꺼내어 해석하여 트랜잭션으로서 실행하여 새로운 이벤트로 변환하고, 다시 태스크 큐에 삽입한다. 하나 또는 둘 이상의 이벤트로 변환하는 경우도 있고, 이벤트를 전혀 생성하지 않는 경우도 있다. 이벤트의 해석과 실행은, 개개의 퍼리퍼럴의 기능에 따라 다르다. 이 처리를 이벤트가 없어질 때까지 반복하는 것으로, 퍼리퍼럴 에뮬레이션이 수행된다. 즉, pop(꺼내기), execute(실행), push(삽입)의 반복이다.
Events include a register read request and a write request. Peripheral emulation takes this event from the beginning of the task queue, interprets it, executes it as a transaction, converts it into a new event, and inserts it back into the task queue. Some convert to one or more events, and some do not generate any events at all. The interpretation and execution of events depends on the capabilities of the individual peripherals. By repeating this process until there are no events, periphery emulation is performed. In other words, it is a repetition of pop, execute, and push.

이 실시 예에서는, 퍼리퍼럴에 관한 시뮬레이션이 아니고, 프로세서나 플랜트와 링크하는 시뮬레이션이기 때문에, 복수의 퍼리퍼럴 에뮬레이터의 태스크 큐를 걸쳐서 이벤트가 왔다 갔다 한다. 이 경우에, 퍼리퍼럴 스케줄러는, 적절한 태스크 큐에 이벤트를 추가한다. 즉, pop, execute, push or export(삽입 또는 전송), import(전입)의 반복이다. 단, import는 사이클에 따라 옵션(없음)이 된다.
In this embodiment, the simulation is not a simulation of the peripheral, but a simulation that links with a processor or a plant. Therefore, an event flows back and forth across task queues of a plurality of peripheral emulators. In this case, the peripheral scheduler adds the event to the appropriate task queue. That is, iteration of pop, execute, push or export, and import. However, import is an option (none) depending on the cycle.

플랜트 시뮬레이터의 입출력은, <port_update, t, p, v>이벤트이다. 이것은, 시각t에 포트p가 취하는 값y를 통지한다. 예를 들면, 플랜트에의 지시(시그널링)나 플랜트로부터의 상태 변화의 통지가, 이것으로 표현된다.
The input and output of the plant simulator are <port_update, t, p, v> events. This informs time t of the value y that port p takes. For example, the instruction (signaling) to a plant and the notification of the change of state from a plant are represented by this.

프로세서로부터 발생하는 요구는, <read, t, r> 및 <write, t, r, v>이벤트이고, 각각, 시각t에 레지스터r이 취하는 값의 리드를 요구하는 이벤트, 시각t에 레지스터r에 값v를 라이트 하는 것을 요구하는 이벤트이다. 반대로, 프로세서가 수신하는 것은 <register_update, t, r, v>이벤트로, 이것은, <read, t, r>요구에 호응하여 시각t의 레지스터r의 값v를 통지한다. 또, <interrupt, t, i>도 수신 이벤트로, 이것은, 시각t에 인터럽션i가 발생하는 것을 통지하는 이벤트이다.
The requests from the processor are the <read, t, r> and <write, t, r, v> events, which are events that request reading of the value that register r takes at time t, and register r at time t, respectively. This event requires that the value v be written. In contrast, the processor receives the <register_update, t, r, v> event, which notifies the value v of the register r at time t in response to the <read, t, r> request. <Interrupt, t, i> is also a reception event, which is an event for notifying that an interruption i occurs at time t.

특히 이 실시 예에서는 설명의 편의를 위해, 퍼리퍼럴 태스크 큐에 관한 조작을 이하와 같이 기술한다.In particular, in this embodiment, for convenience of explanation, operations related to the peripheral task queue are described as follows.

insert(e[t]): 시각t에서 발생하는 이벤트 e[t]를 태스크 큐에 추가한다.insert (e [t]): Adds an event e [t] to the task queue that occurs at time t.

next() :k: 태스크 큐의 선두를 꺼내(pop) 점화하고(execute), 그 응답으로서 필요하면, 새로운 이벤트를 돌려보낸다.next (): k: Pops up the head of the task queue, executes it, and returns a new event if necessary in response.

peek() :t: 태스크 큐의 선두에 있는 이벤트의 시각t를 돌려보낸다.
peek (): t: Returns the time t of the event at the head of the task queue.

Next가 돌려보내는 새로운 이벤트에는, 타이머의 점화(ignition) 등 퍼리퍼럴에 연결된 내부 이벤트도 있지만, 특히, 다른 퍼리퍼럴에 보내야 하는 이벤트는, <interrupt, t, i>, <register_update, t, r, v>, 및 <port_update, t, p, v>의 3가지이다.
New events returned by Next include internal events associated with the peripheral, such as timer ignition, but in particular, events that need to be sent to other peripherals include <interrupt, t, i>, <register_update, t, r, v>, and <port_update, t, p, v>.

퍼리퍼럴의 동작은 물론, 이것으로 끝나는 것은 아니지만, 우선, 본 발명의 동작에 관련하는 것을 설명하였다.
The operation of the peripheral, of course, does not end with this, but first, the description relating to the operation of the present invention has been described.

도 5는, 퍼리퍼럴의 에뮬레이션 동작의 한 예를 나타낸 것이다. 도 5(1)에 있어서 우선, 스케줄러로부터 퍼리퍼럴에 태스크 큐 조작 명령 insert(e1[t1]) 가 도래하기 때문에, 태스크 큐에 이벤트 e1을 FIFO에 의해 추가한다. 태스크 큐가 비어 있거나, 그 외의 이벤트의 시각이 t1보다 나중에 있다면, e1은 태스크 큐의 선두에 들어간다. 여기서, e1은 레지스터의 read 요구이다.
5 shows an example of an emulation operation of a peripheral. In FIG. 5 (1), since the task queue operation instruction insert (e 1 [t 1 ]) arrives first from the scheduler to the peripheral, the event e 1 is added to the task queue by the FIFO. If the task queue is empty or the time of the other event is later than t 1 , e 1 enters the head of the task queue. Where e 1 is the register read request.

다음으로, 조작 명령next()가 도래하면, 태스크 큐의 선두의 이벤트가 해석되어 트랜잭션으로서 실행되고, 새로운 이벤트 <register_update, t1, r1, v1>가 출력된다. 이 예는, 프로세서가 레지스터의 값을 리드하는 요구를 내고 나서, 그 회답을 얻기까지의 일련의 처리의 흐름이다. 외부에 보내야 하는 이벤트이기 때문에 원래의 태스크 큐에는 삽입(push)되지 않고, 프로세서의 스케줄러에 전송(export)된다.
Next, when the operation command next () arrives, the event at the head of the task queue is interpreted and executed as a transaction, and a new event <register_update, t 1 , r 1 , v 1 > is output. This example is a sequence of processes from the processor making a request to read the value of a register and then obtaining the response. Because it is an event that needs to be sent externally, it is not pushed to the original task queue, but is exported to the processor's scheduler.

도 5(2)에 나타낸 것처럼, 퍼리퍼럴에, 레지스터에의 write 요구 insert(e2[t2]) 및 next() 명령이 순서대로 도래했을 때도 같은 방법으로, 태스크 큐에 들어 있는 e2가 선두라면, 시각 t2에서 e2가 팝되고, 예를 들면, 새로운 이벤트<port_update, t2, p2, v2>가 스케줄러에 돌려보내진다. 이 예는, 프로세서가 플랜트를 향해 시그널링의 지시를 낸 케이스이다. 새로운 이벤트는, 플랜트 시뮬레이터가 해석할 수 있는 형식으로 변환되어 전해진다.
As shown in Fig. 5 (2), in the same way to the buffer referral, even when write request insert (e 2 [t 2]) and the next () command to register the arrival order, e 2 contained in the task queue If is the head, e 2 is popped at time t 2 , for example, a new event <port_update, t 2 , p 2 , v 2 > is returned to the scheduler. This example is a case where the processor has directed signaling to the plant. The new event is converted into a format that can be interpreted by the plant simulator and forwarded.

도 5(3)의 예는, 플랜트로부터 상태 변화의 통지가 있는 경우, 그것을 인터럽트 신호를 이용하여 프로세서에 전하는 모습을 나타낸다. 스케줄러가 태스크 큐에 상태 변화의 통지를 더한 (insert(e3[t3])) 후 이를 꺼내(pop) 실행(execute)하면, 새로운 이벤트로의 변환이 수행되어 <interrupt, t, i>, 프로세서에 전송(export)된다.
The example of FIG. 5 (3) shows a state in which there is a notification of a change of state from the plant, and conveys it to the processor using an interrupt signal. When the scheduler adds a notification of a change of state to the task queue (insert (e 3 [t 3 ])) and then pops it out, the conversion to a new event is performed, resulting in <interrupt, t, i>, It is exported to the processor.

다음으로, 도 6을 참조하여, 플랜트의 시뮬레이션의 동작을 설명한다. 상술한 것처럼, 플랜트의 시뮬레이션은, 바람직하게는 MATLAB ®/Simulink ®과 같은 연속적 수치 시뮬레이션 모델링 시스템에 의해 실현된다. 플랜트는, 우선, 지정된 시각의 내부 상태(벡터)나 외부 입력(벡터)에 따라 출력(벡터)을 계산한다. 다음으로, 내부 상태의 변화분(벡터)을 출력하지만, 이 때, 지정된 오차의 범위, 플랜트 고유의 최대 스텝 폭, 제로 크로싱(zero crossing) 등에 기초하여, 내부 상태의 변화분을 조정하여, 다음의 단계 시각을 결정한다.
Next, with reference to FIG. 6, the operation | movement of the simulation of a plant is demonstrated. As mentioned above, the simulation of the plant is preferably realized by a continuous numerical simulation modeling system such as MATLAB ® / Simulink ®. The plant first calculates an output (vector) according to an internal state (vector) or an external input (vector) at a designated time. Next, the change (vector) of the internal state is output, but at this time, the change of the internal state is adjusted based on the specified error range, the plant-specific maximum step width, zero crossing, and the like. Decides the time of day.

특히 이 실시 예에서는 설명의 편의를 위해, 플랜트의 동작을 이하와 같이 기술한다.In particular, in this embodiment, for convenience of description, the operation of the plant is described as follows.

플랜트에의 지시Instruction to the plant

advance(t): 최대 시각 t까지 실행하도록 플랜트에 지시한다. 단, 시각 t까지 단계를 늘릴 수 없는 경우에는, 그 이전의 시각에서 정지한다.advance (t): Instructs the plant to execute up to the maximum time t. However, if the step cannot be increased to time t, the operation stops at the previous time.

input(u): 플랜트에의 입력 벡터 u를 갱신하는 플랜트로부터의 통지이다input (u): notification from the plant that updates the input vector u to the plant

complete(): advance에서 지정된 시각까지 실행이 완료한 것을 통지한다.complete (): Signals that execution has completed until advance at the specified time.

output(t, y): 시각 t에 있어서, 플랜트로부터 출력 벡터 y가 갱신된 것이 통지한다.
output (t, y): At time t, notify the plant that the output vector y has been updated.

플랜트의 동작은 물론, 이것으로 끝난 것은 아니지만, 우선, 본 발명의 동작에 관련하는 것을 설명하였다.
The operation of the plant, of course, does not end with this, but first, the description relating to the operation of the present invention has been described.

또한, 참고로, Simulink(R)의 S-Function 콜 백 루틴과의 대응은 다음과 같다.For reference, the correspondence with Simulink (R) 's S-Function callback routine is as follows.

mdlGetTimeOfNextVarHit()의 불러내기(call up) complete()mdlGetTimeOfNextVarHit () call up complete ()

mdlGetTimeOfNextVarHit()의 리턴(return) advance(t)mdlGetTimeOfNextVarHit () return advance (t)

mdlOutputs()의 불러내기 (call up) output(t, y)mdlOutputs () call up output (t, y)

mdlOutputs()의 리턴(return) input(u)
return input (u) from mdlOutputs ()

도 6은, 플랜트의 시뮬레이션 동작의 한 예를 나타내는 것이다. 도 6에 있어서 우선, 플랜트에, 명령advance(tg)가 도래한다. 플랜트는, 시뮬레이션 시간 t1에, output(t1, y1)을 출력한다.
6 shows an example of the simulation operation of the plant. In FIG. 6, first, the instruction advance (t g ) comes to the plant. The plant outputs output (t 1 , y 1 ) at simulation time t 1 .

다음으로 플랜트에, input(u1)이 도래한다. 플랜트는, 시뮬레이션 시간t2에, output(t2, y2)을 출력한다.
Next to the plant, input (u 1 ) arrives. The plant outputs output (t 2 , y 2 ) at simulation time t 2 .

다음으로 플랜트에, input(ug)이 도래한다. 시뮬레이션 시간 tg에 도달하면, 플랜트는, complete()를 출력한다.
Next to the plant, input (u g ) arrives. When the simulation time t g is reached, the plant outputs complete ().

이와 같이, advance와 complete, 또는, output과 input은 각각 페어가 된다(paired).
As such, advance and complete, or output and input, are paired, respectively.

본 발명에 있어서, 내부 퍼리퍼럴 스케줄러, 상호 퍼리퍼럴 스케줄러, 및 외부 퍼리퍼럴 스케줄러가 주요한 역할을 수행한다. 이것들 3개의 스케줄러의 동작을 설명하기 위해 이하에서는, 우선, 보수적인 이벤트 동기의 시뮬레이션의 개요와 그 용어를 설명한다.
In the present invention, the internal peripheral scheduler, the mutual peripheral scheduler, and the external peripheral scheduler play a major role. In order to explain the operation of these three schedulers, first, the outline of the conservative event synchronization simulation and the terminology will be explained first.

우선, 도 7은, 내부 퍼리퍼럴 스케줄러에 있어서 입력 큐와 출력 큐에 관계하는 처리를 나타낸 도이다. 도시되어 있는 것처럼, 입력 큐에는, IP(Input Queue from Processors), 즉, 다른 프로세서로부터의 이벤트(공유 메모리의 갱신 통지)를 수신하는 큐와, IQ 즉, 상호 퍼리퍼럴 또는 외부 퍼리퍼럴로부터 메시지를 수신하는 큐가 있다. Pi, Pj 라고 하는 것은 각각, i번째와 j번째의 프로세서이다. IQ에 저장되는 데이터는, CAN 수신이나 인터럽트 이벤트 메시지 또는 null 메시지이다.
First, FIG. 7 is a diagram showing a process relating to an input queue and an output queue in the internal peripheral scheduler. As shown, input queues include input queues from processors (IPs), that is, queues that receive events from other processors (update notifications in shared memory), and from IQs, ie mutual or external peripherals. There is a queue to receive messages. P i and P j are the i th and j th processors, respectively. The data stored in the IQ is a CAN receive or interrupt event message or a null message.

한편, 출력 큐에는, OP(Output Queue Processors), 즉, 다른 프로세서로 이벤트(공유 메모리의 갱신 통지)를 보내는 큐와, OQ 즉, 상호 퍼리퍼럴 또는 외부 퍼리퍼럴에 메시지를 보내는 큐가 있다. OQ에 저장된 데이터는, CAN 송신의 이벤트 메시지 또는 프로그레스 null 메시지이다.
On the other hand, output queues include Output Queue Processors (OPs), that is, queues that send events (notification of shared memory updates) to other processors, and OQs, which send messages to mutual or external peripherals. . The data stored in the OQ is an event message or a progress null message of a CAN transmission.

프로세서들이 이벤트를 서로 주고 받을 때, IP 및 OP는 각 연결된 프로세서에 대해서 한 세트로서 사용된다.
When processors exchange events with each other, IP and OP are used as one set for each connected processor.

다음으로, 도 8~도 10 흐름도를 참조하여, 내부 퍼리퍼럴 스케줄러의 처리를 설명한다. 도 8의 흐름도의 초기 값은, 모든 IQ/IP는 비어 있고(empty), 모든 OQ는 시각 제로의 프로그레스 이벤트(the time zero progress event)이며, 모든 OP는 비어 있고, T :=0이다.
Next, the processing of the internal peripheral scheduler will be described with reference to the flowcharts of FIGS. 8 to 10. The initial value of the flow chart of FIG. 8 is that all IQ / IPs are empty, all OQs are the time zero progress event, all OPs are empty, and T: = 0.

또한, IQ/IP에 k번째에 도착하는 이벤트의 시간 Tk는, 이하의 조건을 만족한다.In addition, the time T k of the event arriving at the kth at IQ / IP satisfies the following conditions.

Tk ≤ Tk +i
T k ≤ T k + i

내부 퍼리퍼럴 스케줄러는, 단계(802)에서, 큐 입력 e를 대기하고, 단계(804)에서는, 모든 IQ가 filled(하나 이상의 메시지가 도착한 상태) 되었는지를 결정하고, 만일 filled 되었다면, 단계(806)에서 모든 IQ 내에서 가장 빠른 시각을 T0으로 하고, 단계(808)에서 [parallel]이라 하는 서브루틴을 불러내어, 다른 프로세서들과 함께 처리를 수행한다. [parallel]의 서브루틴의 처리는, 도 9의 흐름도를 참조하여 후반에 설명한다.
The internal peripheral scheduler waits for queue input e at step 802 and at step 804 determines if all IQs have been filled (if at least one message has arrived) and if filled, step 806. In FIG. 5, the earliest time within all IQ is T 0 , and a subroutine called [parallel] is called in step 808 to perform processing with other processors. The processing of the subroutine of [parallel] is described later with reference to the flowchart of FIG.

단계(810)에서, 내부 퍼리퍼럴 스케줄러는, Te=T in Q 즉, Te=T in IQ 의 조건을 만족하는 이벤트 e가 IQ에 있는지를 결정한다. 그리고, 만일 있다면, 내부 퍼리퍼럴 스케줄러는, 단계(812)에서, IQ로부터 e를 팝 하여 처리하고, 단계(810)로 리턴한다.
In step 810, the internal peripheral scheduler determines whether an event e that satisfies the condition T e = T in Q, ie, T e = T in IQ, is in IQ. And, if there is, the internal peripheral scheduler, at step 812, pops e from the IQ, processes it, and returns to step 810.

단계(810)에서, 만일 Te=T를 만족하는 이벤트 e가 IQ에 없다면, 처리는, 단계(804)에의 결정으로 리턴한다.
In step 810, if there is no event e that meets T e = T in the IQ, the process returns to the determination in step 804.

다음으로, 도 9의 흐름도를 참고하여, 단계(808)에서의 [parallel]의 처리를 보다 상세히 설명하겠다. 내부 퍼리퍼럴 스케줄러는, 단계(902)에서, 처리가 "read"[리드]이었는지를 결정하고, 만일 리드라면, 단계(904)에서 [fill]의 서브루틴을 불러낸다.
Next, with reference to the flowchart of FIG. 9, the processing of [parallel] in step 808 will be described in more detail. The internal peripheral scheduler, at step 902, determines if the process was "read" and if it is a read, invokes the subroutine of [fill] at step 904.

[fill]의 서브루틴에 대해서는, 도 10의 흐름도를 참조하여 후반에 설명하겠다. 단계(904)의 다음은 단계(906)으로 진행한다. 단계(902)에서, 처리가 "read"[리드]가 아닌 경우는, 직접 단계(906)으로 진행한다.
The subroutine of [fill] will be described later with reference to the flowchart of FIG. Step 904 is followed by step 906. In step 902, if the process is not " read &quot;, the process proceeds directly to step 906. FIG.

단계(906)은, T1 := min(T0, Ttop) 공식에 의해, T1에 값을 입력한다. Ttop은, IP의 선두 시각(top time)이고, IP가 없는(공유 메모리 통신을 수행하는 프로세서가 없음) 경우 또는 IP가 비어 있는 경우는 Ttop = ∞ 로 해 놓는다.
Step 906 enters a value in T 1 by the formula T 1 : = min (T 0 , T top ). T top is the top time of the IP, and T top = ∞ when there is no IP (no processor performing shared memory communication) or when the IP is empty.

단계(908)에서, 내부 퍼리퍼럴 스케줄러는, 프로세서를, T1을 목표로 실행시킨다. 즉, 상호 퍼리퍼럴 스케줄러 또는 외부 퍼리퍼럴 스케줄러가 지시한 시간까지 진행하게 된다.
In step 908, the internal peripheral scheduler runs the processor with a target of T 1 . That is, the process proceeds to the time indicated by the mutual peripheral scheduler or the external peripheral scheduler.

단계(910)에서, 내부 퍼리퍼럴 스케줄러는, 프로세서를 실행시키면서 그 만큼 시간 T를 진행시키고, 단계(912)에서는, OQ/OP의 갱신 플래시를 수행한다.
In step 910, the internal peripheral scheduler advances the time T by that amount while executing the processor, and in step 912, performs an update flash of OQ / OP.

단계(914)에서는, 내부 퍼리퍼럴 스케줄러는, T=T1인지 결정하고, 만일 아니라면, 단계(916)에서, ISS로부터의 최후의 통지가 “read”[리드]인지를 결정하고, 리드라면, 단계(904)로 리턴한다.
At step 914, the internal peripheral scheduler determines if T = T 1 , if not, at step 916, determines if the last notification from the ISS is “read” and if it is a lead. Return to step 904.

단계(916)에서, ISS로부터 최후의 통지가 “read”[리드]가 아니라고 결정되었다면, 단계(918)에서, 공유 메모리에 라이트, CAN의 송신, 또는 null 메시지 송신 중 하나가 수행되어, 단계(908)로 리턴한다.
If at step 916, it is determined that the last notification from the ISS is not “read” [read], then at step 918, one of writing to the shared memory, sending a CAN, or sending a null message is performed. 908).

단계(914)에서, T=T1이라면, 단계(920)으로 진행하고, 거기서 Te=T in IP 즉, Te=T의 조건을 만족하는 이벤트가 IP에 있는지를 결정한다. 만일 IP에 있다면, 단계(922)에서, IP로부터 이벤트 e를 팝하여 처리하고, 단계(920)로 리턴한다.
In step 914, if T = T 1 , go to step 920, where it is determined whether there are events in the IP that satisfy the condition of T e = T in IP, ie, T e = T. If it is at the IP, in step 922, the event e is popped from the IP and processed, and returned to step 920.

단계(920)에서, 이벤트 e의 시각을 가진 이벤트가 IP에 없다고 결정하면, 단계(924)에서, T=T0인지를 결정하여, 만일 그렇다면, 처리를 종료한다.
If at step 920 it is determined that there is no event at the IP with the time of event e, then at step 924 it is determined whether T = T 0 , and if so, the process ends.

단계(924)에서, T=T0가 아니라고 결정하면, 단계(926)에서, 공유 메모리 상의 리드, 또는 null 메시지의 수신 중 하나가 수행되며, 단계(902)의 단계로 리턴한다.
If at step 924, it is determined that T = T 0 , then at step 926, either a read on the shared memory, or the receipt of a null message is performed, returning to step 902.

다음으로, 도 10의 흐름도를 참조하여, 단계(904)에서의, [fill]의 처리를 보다 상세히 설명하겠다. 도 10에 있어서, 내부 퍼리퍼럴 스케줄러는, IP의 큐에 있는 엔트리의 일시 리스트를 작성한다. 일시 리스트 작성 후, IP 내의 현재 시각 보다 오래된 시각 스탬프(time stamp)를 갖는 메시지를 모두 제거하여, 일시 리스트에 추가한다.
Next, with reference to the flowchart of FIG. 10, the processing of [fill] in step 904 will be described in more detail. In Fig. 10, the internal peripheral scheduler creates a temporary list of entries in the queue of IPs. After the temporary list is created, all messages having a time stamp older than the current time in the IP are removed and added to the temporary list.

단계(1004)에서, 내부 퍼리퍼럴 스케줄러는, 모든 IP가 filled인지 결정한다. 만일 그렇다면, 단계(1006)에서, 일시 리스트 내의 이벤트들(다른 프로세서로부터 공유 메모리에로 라이트된)을 시각 스탬프 순서대로 모두 처리한다. 일시 리스트를 처리를 마치면, fill의 서브루틴은 완료한다.
In step 1004, the internal peripheral scheduler determines whether all IPs are filled. If so, then at step 1006, all events in the temporary list (written to the shared memory from another processor) are processed in time stamp order. When you finish processing the temporary list, the subroutine of fill completes.

단계(1004)에서, 모든 IP가 filled가 아니라고 결정하면, 단계(1008)로 진행하고, 거기서, 내부 퍼리퍼럴 스케줄러는, IP로부터의 이벤트 e를 대기한다.
If at step 1004 it is determined that not all IPs are filled, then the process proceeds to step 1008, where the internal peripheral scheduler waits for an event e from the IP.

단계(1010)에서, T 〉Te인지 결정하고, 만일 그렇다면, 단계(1014)에서, 일시 리스트에 e를 더하여 갱신하고, 단계(1008)로 리턴한다.
In step 1010, it is determined whether T &gt; T e , and if so, in step 1014, e is added to the date and time list and updated to step 1008.

단계(1010)에서, T 〉Te가 아니라고 결정되었다면, 내부 퍼리퍼럴 스케줄러는, 단계(1012)에서 IP에 e를 더하여, 단계(1004)로 리턴한다.
If at step 1010 it is determined that T &gt; T e , then the internal peripheral scheduler returns to step 1004 by adding e to the IP at step 1012.

도 11은, 상호 퍼리퍼럴 스케줄러에 있어서 큐에 관계하는 처리를 나타낸 도이다. 도시되어 있는 것처럼, 입력 큐 IQ에는, Pi, Pj로부터 이벤트가 들어오고, 그것은, CAN 에뮬레이터에 송신된다.
Fig. 11 is a diagram illustrating processing relating to queues in the mutual peripheral scheduler. As shown, the input queue IQ receives events from P i and P j , which are sent to the CAN emulator.

한편, 출력 큐 OQ에, CAN 에뮬레이터로부터 이벤트가 들어오면, 프로세서가 그것을 꺼낸다(retrieve).
On the other hand, when an event comes into the output queue OQ from the CAN emulator, the processor retrieves it.

또한, 태스크 큐 TQ가 설치되고, 이것이, CAN에뮬레이터 수신의 점화(ignition)를 가져온다. 또한, 이하에서는 입력 큐나 출력 큐와 구별하기 위해, 태스크 큐에 담긴 이벤트를 태스크라고 하는 것에 주의하길 바란다.
In addition, a task queue TQ is installed, which results in ignition of the CAN emulator reception. In addition, in the following description, it is noted that an event in a task queue is called a task to distinguish it from an input queue or an output queue.

다음으로, 도 12의 흐름도를 참조하여, 상호 퍼리퍼럴 스케줄러의 처리를 설명한다. 여기에서의 초기 값은, 모든 IP는 비어 있고, 모든 OQ는 비어 있고, TQ는 비어 있고, T :=0이다. 단계(1202)에서, 상호 퍼리퍼럴 스케줄러는, IQ의 갱신 대기를 수행하고, 단계(1204)에서는, 모든 IQ가 filled인지 결정하고, 그렇지 않다면 단계(1202)로 리턴하여, IQ의 갱신 대기를 계속한다.
Next, with reference to the flowchart of FIG. 12, the process of a mutual primary scheduler is demonstrated. The initial value here is that all IPs are empty, all OQs are empty, TQ is empty and T: = 0. In step 1202, the mutual peripheral scheduler performs a wait for update of the IQ, and in step 1204, determines whether all IQs are filled, otherwise returns to step 1202 to wait for an update of the IQ. Continue.

그렇게 하여 단계(1204)에서, 상호 퍼리퍼럴 스케줄러가, 모든 IQ가 filled라고 결정하면, 단계(1206)에서, 모든 IQ 중 제일 가까운 시각을 T0이라고 한다.
Thus, at step 1204, if the mutual peripheral scheduler determines that all IQs are filled, then at step 1206, the closest time of all IQs is referred to as T 0 .

단계(1208)에서, 상호 퍼리퍼럴 스케줄러는, Te=T0 in IQ, 즉, IQ에서 Te=T0 되는 태스크 e가 있는지를 결정한다. 만일 그렇다면, 상호 퍼리퍼럴 스케줄러는, 단계(1210)에서 이벤트 e를 팝 하고, 단계(1212)에서 insert(e1[t]), insert(e2[t])에 의해, TQ의 갱신을 수행한다. 여기서, 이벤트 e1은, <read, t, r> 즉, 시각 t에 레지스터 r의 값을 리드하는 이벤트이고, 이벤트 e2는, <write, t, r, v> 즉, 시각 t에 레지스터 r의 값을 v로 갱신하는 이벤트이다.
In step 1208, the mutual peripheral scheduler determines if there is a task e such that T e = T 0 in IQ, ie T e = T 0 at IQ. If so, the mutual peripheral scheduler pops event e at step 1210 and updates TQ by insert (e 1 [t]), insert (e 2 [t]) at step 1212. Perform. Here, event e 1 is an event of reading the value of register r at <read, t, r>, that is, time t, and event e 2 is a register r at <write, t, r, v>, that is, time t. Updates the value of to v.

단계(1212)의 다음은, 단계(1208)로 리턴 하고, 거기서, 상호 퍼리퍼럴 스케줄러가, IQ에 Te=T0가 되는 태스크 e가 없다고 결정하면, 단계(1214)에서, T := T0로 세트하고, 단계(1216)에서, peek()를 사용하여, Tk=T in TQ 즉, TQ에 Tk=T 가 되는 태스크 k가 있는지 결정한다.
Following step 1212, return to step 1208, where there is no task e, where the mutual peripheral scheduler determines that I e = T e = T 0 , then in step 1214, T: = set to T 0, and at step 1216, by using a peek (), T k = T in TQ that is, it is determined whether there is a TQ T k = T k is the task.

단계(1216)에서, TQ에 Tk=T가 되는 태스크k가 있다고 결정하면, 상호 퍼리퍼럴 스케줄러는 단계(1218)에서 k를 팝하고, 단계(1220)에서, next()에 의해 태스크를 실행한다. 여기에서 CAN 데이터를 수신하면, 프로세서에 통지되는 <interrupt, t, i>, <register_update, t, r, v>이벤트가 발생한다.
In step 1216, if it is determined that Tk has a task k such that T k = T, then the mutual peripheral scheduler pops k in step 1218, and in step 1220, the task is determined by next (). Run When CAN data is received here, the events <interrupt, t, i>, <register_update, t, r, v> are notified to the processor.

단계(1222)에서, 상호 퍼리퍼럴 스케줄러는 모든 OQ를 갱신하고, 단계(1216)로 리턴한다.
In step 1222, the mutual peripheral scheduler updates all OQs and returns to step 1216.

단계(1216)에서, TQ에 Tk=T가 되는 태스크 k가 없다고 결정하면, 단계(1224)로 진행하고, 거기서, 상호 퍼리퍼럴 스케줄러는, OQ에 갱신이 있었는지를 결정한다.
If it is determined in step 1216 that there is no task k in TQ where T k = T, then control proceeds to step 1224, where the mutual peripheral scheduler determines whether there has been an update in OQ.

OQ에 갱신이 없는 경우, 상호 퍼리퍼럴 스케줄러는, 단계(1226)에서, 모든 OQ에 시각 min(T+ΔTc, Ttop)의 null 메시지를 추가하고, 단계(1228)에서, OQ를 플래시 해서 단계(1204)로 리턴한다. 또한 여기서, ΔTc는, 프로세서의 통신 지연 시간이다.
If there is no update to the OQ, the mutual peripheral scheduler adds a null message at time min (T + ΔT c , T top ) to all OQs at step 1226, and flashes the OQs at step 1228. The process returns to step 1204. ΔT c is a communication delay time of the processor.

OQ에 갱신이 있는 경우, 상호 퍼리퍼럴 스케줄러는, 단계(1228)에서, OQ를 플래시 하여, 단계(1204)로 리턴한다.
If there is an update to the OQ, the mutual peripheral scheduler flashes the OQ at step 1228 and returns to step 1204.

도 15는, 참고로, 상호 퍼리퍼럴 스케줄러에 있어서, TQ와, 그것에 대응하는 IQ 및 OQ의 이벤트의 시간에 따른 출입의 예를 나타낸다. 점선 화살표는 게스트 시간의 진행(progress)을 나타낸다.
15, for reference, shows an example of entry and exit according to the time of the TQ and the events of the IQ and OQ corresponding thereto in the mutual peripheral scheduler. The dashed arrows indicate the progress of guest time.

이 예에서 IQ에 프로세서 스케줄러(내부 퍼리퍼럴 스케줄러)로부터 도착하는 메시지의 이벤트는, 시계열 순으로(in cronological order) CAN 중단(abort), CAN 송신, null(프로그레스 메시지의 이벤트), CAN 리셋이다. 상기의 null 이외의 메시지는 모두, 프로세서가 CAN 디바이스에 대해서 지령을 내리는(레지스터 라이트를 수행함) 것으로 발생하는 이벤트이다. 그 중 CAN 중단(abort)은, 조정(arbitration)에서 실패한 경우에 송신 대기 상태의 해제를 수행하고, 또 프로세서에 인터럽트 통지를 하도록, 지령을 내리는 이벤트이다. CAN 통신은, 사전에 세트 한 데이터를 송신하도록, 지령을 내리는 이벤트이다. 도 15는, 2개의 서로 다른 프로세서로부터 CAN 송신 이벤트가 계속하여 도착하는 예를 나타내고 있다. CAN 리셋은, CAN 디바이스를 버스로부터 분리하여 초기 상태로 돌아가도록, 지령을 내리는 이벤트이다.
In this example, the events in the message arriving from the processor scheduler (internal peripheral scheduler) at IQ are: CAN abort, CAN transmit, null (event in progress message), CAN reset in cronological order. to be. All of the above non-null messages are events that occur when the processor issues a command (performs a register write) to the CAN device. Among them, the CAN abort is an event which issues a command to perform the release of the transmission standby state and to notify the processor of the interruption in case of failure in the arbitration. CAN communication is an event that issues a command to transmit data set in advance. 15 shows an example in which CAN transmission events continue to arrive from two different processors. CAN reset is an event that issues a command to disconnect the CAN device from the bus and return to the initial state.

이 예에서 OQ로부터 프로세서 스케줄러에 송출되는 메시지의 이벤트는, 시계열 순으로 null(null 메시지의 이벤트), 중단(abort) 통지, CAN 수신이다. CAN 수신은, CAN 디바이스가 프로세서에 대해서, CAN 데이터를 수신한 것을 인터럽션에 의해 통지하는 이벤트이다. 중단(abort) 통지는, CAN 디바이스가 프로세서에 대해서, 조정에 실패한 것을 인터럽션에 의해 통지하는 이벤트이다.
In this example, the event of the message sent from the OQ to the processor scheduler is null (event of null message), abort notification, CAN reception in chronological order. CAN reception is an event in which the CAN device notifies the processor by interruption that it has received CAN data. Abort notification is an event in which the CAN device notifies the processor by interruption that an adjustment has failed.

CAN 송신 이벤트가 발생(IQ에 도착)한 시점에서는, 이전에 송신 개시된 데이터가 전송 중인 경우가 있다. 도 15의 예에서는, 2개의 CAN 송신 이벤트가 도착한 시점에서, TQ의 선두에 이전 개시된 전송의 완료에 따라, CAN 수신 이벤트(1번째)가 더해진다. CAN 수신 이벤트의 직후에, 다음의 데이터 전송을 위해 조정이 수행된다. 이 도의 예에서는 간단히 하기 위해, CAN 수신의 이벤트와 조정의 이벤트의 시각이 같다고 하자. IQ에 도착하는 null 이벤트의 시각 스탬프는, CAN 수신 조정의 게스트 시각과 같다. 여기서 본 발명의 상호 퍼리퍼럴 스케줄러는, TQ의 선두 시각까지 선행 실행하도록 프로세서 스케줄러에 통지하는(null 메시지를 송출) 처리를 포함한다. 도 15의 IQ에 도착하는 null은, 프로세서가 이 처리에 의해 통지된 시각까지 도달한 것을, 프로세서 스케줄러가 통지하는 프로그레스 메시지이다. 또한, 도의 OQ에 의해 최초로 송출된 null 메시지는, 이 처리에서 프로세서 스케줄러에 선행 실행을 통지한 것을 나타낸다.
At the time when a CAN transmission event occurs (arrival at IQ), there is a case where data previously transmitted has been transmitted. In the example of FIG. 15, at the time when two CAN transmission events arrive, the CAN reception event (first) is added to the head of the TQ upon completion of the previously initiated transmission. Immediately after a CAN receive event, an adjustment is performed for the next data transfer. In the example of this figure, for simplicity, it is assumed that the time of the event of CAN reception and the event of adjustment is the same. The time stamp of a null event arriving at IQ is the same as the guest time of the CAN receive adjustment. The mutual peripheral scheduler of the present invention includes a process of notifying the processor scheduler (sending a null message) to be executed up to the leading time of the TQ. A null arriving at IQ in FIG. 15 is a progress message that the processor scheduler notifies that the processor has reached the time notified by this process. In addition, the null message initially sent by OQ of FIG. Shows that the processor scheduler was notified of the preceding execution in this process.

조정이 수행되면, 2개의 프로세서로부터 요구된 CAN 송신 중, 한 편이 수신되고(조정에서 성공), 또 다른 한 편이 보류된다(조정에서 실패). 도면에서는, 전자의 송신 요구를 수행한 프로세서에의 CAN 수신의 이벤트가, 후자의 송신 요구를 수행한 프로세서에의 중단 통지의 이벤트이지만, 모두 TQ에 추가되는 것을 나타내고 있다. CAN 디바이스의 에뮬레이션의 진행에 따라, 추가된 2개의 이벤트가 순서대로 처리되어, 대응하는 이벤트(중단 통지, CAN 수신)가 OQ를 통하여 프로세서 스케줄러에 각각 통지된다.
When the adjustment is performed, of the required CAN transmissions from two processors, one side is received (successful in the adjustment) and the other side is suspended (failed in the adjustment). In the figure, although the event of CAN reception to the processor which performed the former transmission request is an event of the interruption notification to the processor which performed the latter transmission request, it shows that all are added to TQ. In accordance with the progress of the emulation of the CAN device, two additional events are processed in order, so that the corresponding events (stop notification, CAN reception) are notified to the processor scheduler via OQ, respectively.

도 13은, 외부 퍼리퍼럴 스케줄러에 있어 큐에 관계하는 처리를 나타낸 도이다. 도시된 것처럼, 입력 큐 IQ에는, Pi, Pj로부터 메시지가 들어온다.
Fig. 13 is a diagram illustrating processing relating to queues in the external peripheral scheduler. As shown, the input queue IQ receives messages from P i , P j .

출력 큐 OQ에는, 인터럽션 통지의 이벤트 메시지 및 null 메시지가 송출되며, Pi, Pj가 그것들을 인출한다.
The event message and the null message of the interruption notification are sent to the output queue OQ, and P i and P j draw them out.

태스크 큐 TQ는, 타임 스탬프(시각 인)에서 소트된다.
The task queue TQ is sorted by time stamp.

또 외부 퍼리퍼럴 스케줄러는, 플랜트에 접속하는 I/O 포트의 현재의 신호 값을 유지한다(retain).
The external peripheral scheduler also retains the current signal value of the I / O port connecting to the plant.

다음으로, 도 14의 흐름도를 참조하여, 외부 퍼리퍼럴 스케줄러의 처리를 설명하겠다. 여기에서 초기 값은, 모든 IQ는 비어 있고, 모든 OQ는 비어 있고, TQ는 비어 있고, PV(포트 값)는 ECU 사양에서의 초기 값, T :=0, TR :=ΔTR이다.
Next, the processing of the external peripheral scheduler will be described with reference to the flowchart of FIG. 14. The initial value here is that all IQs are empty, all OQs are empty, TQ is empty, and PV (port value) is the initial value in the ECU specification, T: = 0, T R : = ΔT R.

단계(1402)에서, 외부 퍼리퍼럴 스케줄러는, IQ의 갱신 대기를 수행하고, 단계(1404)에서는, 모든 IQ가 filled인지 결정하고, 그렇지 않으면 단계(1402)로 리턴 하여, IQ의 갱신 대기를 계속한다.
In step 1402, the external peripheral scheduler performs a wait for update of the IQ, and in step 1404 it determines whether all IQs are filled, otherwise returns to step 1402 to wait for update of the IQ. Continue.

그렇게 하여 단계(1404)에서, 외부 퍼리퍼럴 스케줄러가, 모든 IQ가 filled라고 결정하면, 단계(1406)에서, 모든 IQ 중 제일 가까운 시각을 T0으로 한다. 여기에서, T ≤ Te ≤ Tp 이고, Tp는 현재의 플랜트 시간이다.
Thus, at step 1404, if the external peripheral scheduler determines that all IQs are filled, then at step 1406, the closest time of all IQs is T 0 . Where T ≦ T e ≦ T p and T p is the current plant time.

단계(1408)에서는, 외부 퍼리퍼럴 스케줄러는, Te=T0 in IQ , 즉, IQ에 Te=T0가 되는 태스크 e가 있는지 결정한다. 만일 있다면, 외부 퍼리퍼럴 스케줄러는, 단계(1410)에서 이벤트 e를 팝 하고, 단계(1412)에서 insert(e1[t]), insert(e2[t])에 의해, TQ의 갱신을 수행한다. 여기에서, 이벤트 e1은, <read, t, r> 즉, 시각 t에서 레지스터 r의 값을 리드하는 이벤트이고, 이벤트 e2는, <write, t, r, v>즉, 시각 t에서 레지스터 r의 값을 v에 갱신하는 이벤트이다.
In step 1408, the external buffer referral scheduler, T e = T 0 in IQ, that is, determine that the IQ T e = T 0, the task that is e. If there is, the external peripheral scheduler pops event e at step 1410 and, at step 1412, updates TQ by insert (e 1 [t]), insert (e 2 [t]). To perform. Here, event e 1 is an event that reads the value of register r at <read, t, r>, that is, time t, and event e 2 is a register at <write, t, r, v> that is, time t. This event updates the value of r to v.

단계(1412)의 다음은, 단계(1408)로 리턴 하고, 거기서, 외부 퍼리퍼럴 스케줄러가, IQ에 Te=T0가 되는 태스크 e가 없다고 결정하면, 단계(1414)에서, T := T0로 세트하고, 단계(1416)에서, T=Tp인지를 결정한다.
Next to step 1412, return to step 1408, where the external peripheral scheduler determines that there is no task e in IQ where T e = T 0 , and in step 1414, T: = Set to T 0 , and at step 1416, determine whether T = T p .

만일 단계(1416)에서, T=Tp라고 결정하면, 외부 퍼리퍼럴 스케줄러는 단계(1418)에서, insert(e4[T])를 불러내어, TQ에, 시각 T에서 점화하는 태스크 <plant_go>를 추가한다. 여기에서 e4란, 플랜트를 시각 min{Ttop, T+ΔTR}까지 실행하는 이벤트이다. Ttop은, TQ의 선두 시각이고, TQ가 비어 있는 경우는 Ttop = ∞로 한다. 이것은, 즉 모든 프로세서들이 플랜트를 추적하는 경우(track), 플랜트 선행 실행시키는 처리가 된다.
If at step 1416 determines T = T p , the external peripheral scheduler calls insert (e 4 [T]) at step 1418 and fires on TQ at time T the task <plant_go Add>. Here, e 4 is an event which runs a plant to time min {T top , T + ΔT R }. T top is the start time of TQ, and T top = ∞ when TQ is empty. This is the process of running the plant ahead, i.e. if all the processors track the plant.

단계(1418)의 다음은, 단계(1420)의 결정 단계로 진행한다. 단계(1416)에서, T=Tp가 아니라고 결정된 경우는 직접, 단계(1420)으로 진행한다.
Following step 1418, the process proceeds to the decision step of step 1420. If it is determined in step 1416 that T = T p , then go directly to step 1420.

단계(1420)에서는, 외부 퍼리퍼럴 스케줄러는, peek()을 불러내어, TQ에서, Tk=T가 되는 이벤트k가 있는지를 결정한다. 만일 없으면, 처리는 단계(1404)로 리턴한다.
In step 1420, the external peripheral scheduler invokes peek () to determine, at TQ, if there is an event k such that T k = T. If not, the process returns to step 1404.

단계(1420)에서, TQ에서 Tk=T 가 되는 이벤트 k가 있다고 결정하면, 외부 퍼리퍼럴 스케줄러는 단계(1422)로 진행하여, k를 팝 하고, 단계(1424)에서, k가 플랜트 실행인지를 결정한다.
In step 1420, if it is determined that there is an event k such that T k = T in TQ, then the external peripheral scheduler proceeds to step 1422, pops k, and in step 1424, k runs the plant. Determines if

외부 퍼리퍼럴 스케줄러가, 단계(1420)에서, k가 플랜트 실행이라고 결정하면, 단계(1426)에서, advance()를 불러내어 그 플랜트를 실행한다.
If, at step 1420, the external peripheral scheduler determines that k is a plant run, then at step 1426, advance () is invoked to execute the plant.

다음의 단계(1428)에서는, 외부 퍼리퍼럴 스케줄러는, TQ의 갱신을 수행한다. 전체적으로는, output(t, y)를 받고, pusg(e3[t])를 실행하고, PV를 참조하여, input(u)를 통지한다. 그리고, null 메시지를 송신한다. 여기서, e3란, <port_update, p ,v>를 사용하여 포트 p의 값을 v에 갱신한다고 하는 이벤트이다.
In a next step 1428, the external peripheral scheduler updates the TQ. In total, it receives output (t, y), executes pusg (e 3 [t]), and references PV to notify input (u). Then send a null message. Here, e is 3 is, events that update the <port_update, p, v> v the value of the port p using.

다음의 단계(1430)에서, 외부 퍼리퍼럴 스케줄러는 Tp를 갱신하고, 다음의 단계(1432)에서, 처리가 완료인지 결정한다. 만일 처리가 완료라고 결정하면, 처리는 단계(1420)로 리턴한다. 처리가 완료가 아니라고 결정하면, 단계(1434)에서 태스크를 리턴하고나서, 처리는 단계(1420)로 리턴한다.
In a next step 1430, the external peripheral scheduler updates T p and in a next step 1432, determines whether the process is complete. If it is determined that the process is complete, the process returns to step 1420. If it is determined that the processing is not complete, the task returns to step 1434 and then the processing returns to step 1420.

단계(1424)로 돌아와서, k가 플랜트 실행이 아니라고 결정하면, 외부 퍼리퍼럴 스케줄러는 단계(1436)로 진행하고, next()를 불러내어, 태스크를 실행한다. 이것은 구체적으로는, <interrupt>, <register value>, <register_update>, <port_update>를 실행하고, null 메시지를 송신한다.
Returning to step 1424 and determining that k is not a plant run, the external peripheral scheduler proceeds to step 1434 and invokes next () to execute the task. Specifically, this executes <interrupt>, <register value>, <register_update>, and <port_update>, and transmits a null message.

다음의 단계(1438)에서는, 외부 퍼리퍼럴 스케줄러는, OQ의 갱신을 수행한다. 여기에서, OQ에 null이외의 메시지를 추가한 경우, TQ에 시각 T+ΔTR에서 점화하는 태스크 <plant_go>를 추가한다. 즉, insert(e4[T+ΔTR])을 실행하는 것이지만, 보다 구체적으로 말하면, e4는, 플랜트를 시각 min{Ttop, T+ΔTR}까지 실행하는 것이다. 여기에서, Ttop은, TQ의 선두 시각이고, TQ가 비어 있는 경우는, Ttop = ∞로 한다.
In a next step 1438, the external peripheral scheduler updates the OQ. Here, if a non-null message is added to the OQ, add a task <plant_go> that fires at the time T + ΔT R to the TQ. That is, although insert (e 4 [T + ΔT R ]) is executed, more specifically, e 4 executes the plant to time min {T top , T + ΔT R }. Here, T top is the start time of TQ, and when TQ is empty, T top = ∞.

다음의 단계(1440)에서는, 외부 퍼리퍼럴 스케줄러는, OQ를 플래시 하여, 단계(1420)으로 리턴한다.
In the next step 1440, the external peripheral scheduler flashes the OQ and returns to step 1420.

이하에서는, 보수적인 이벤트 동기를 수행할 때에 데드록이 발생하는 것, 또, 그것을 회피하기 위해서는 null 메시지가 필요하다는 것을 설명하겠다. 또한, 이것은 새로운 발견이 아니고, 종래에 기술에서 알려진 것이다.
In the following, deadlock occurs when performing conservative event synchronization, and a null message is required to avoid it. Again, this is not a new discovery, but is known in the art.

시뮬레이션 대상을 분할하여 각 영역의 시뮬레이터(또는 에뮬레이터)를 접속하고 전체의 시뮬레이션을 수행할 때, 통신 인터페이스를 포함하는 각 영역의 시뮬레이션 단위를 논리 프로세스라고 부른다. 도 16은, 논리 프로세스의 구성을 나타낸다.
When dividing a simulation target to connect a simulator (or an emulator) of each region and perform a whole simulation, the simulation unit of each region including the communication interface is called a logic process. 16 shows the configuration of a logic process.

도 16에 나타낸 것처럼, 보수적인 이벤트 동기의 시뮬레이션에 있어서는, 논리 프로세스(LPk)는, 메시지 수신을 위한 입력 큐 IQ와, 메시지 송신을 위한 출력 큐 OQ와, 예정된 시뮬레이션 태스크를 기억하기 위한 태스크 큐 TQ와, 현재 시각을 나타낸 스칼라 값을 가진다. IQ와 OQ는 FIFO이고, TQ는 시간 순으로 소트된다.
As shown in Fig. 16, in the conservative simulation of event synchronization, the logical process LPk includes an input queue IQ for receiving a message, an output queue OQ for transmitting a message, and a task queue TQ for storing a scheduled simulation task. And a scalar value representing the current time. IQ and OQ are FIFOs, and TQs are sorted in chronological order.

도 17은, 복수의 논리 프로세스(LP1~LP4)가 통신 채널을 통하여 접속된 모습을 나타낸 도이다. 이와 같이 접속을 도모하기 위해서, 개개의 논리 프로세스는, IQ, OQ를 통신 채널마다 가진다.
FIG. 17 is a diagram showing how a plurality of logic processes LP1 to LP4 are connected via a communication channel. In order to achieve such a connection, each logical process has IQ and OQ for each communication channel.

논리 프로세스는 IQ, OQ를 이용하여, 시각의 정보(시각 스탬프)를 갖는 메시지를 교환한다. IQ/OQ에 송출/수신되는 메시지의 시각 스탬프는, 송출/수신을 수행할 때마다 단조 증가한다(steadily increased). 이 때문에, 논리 프로세스가 다른 모든 논리 프로세스로부터 메시지를 수신하면, 수신한 메시지 중 제일 작은 시각 스탬프까지 롤 백(rollback)하지 않고 시뮬레이션을 진행할 수 있다. 교환되는 메시지에는 이벤트 메시지와 null 메시지가 있다.
The logic process uses IQ and OQ to exchange messages with time information (time stamps). The time stamps of messages sent / received in IQ / OQ are monotonically increased each time transmission / reception is performed. For this reason, when a logic process receives a message from all other logic processes, the simulation can proceed without rolling back to the smallest time stamp of the received message. The messages exchanged include event messages and null messages.

시각 t의 이벤트 e에 관한 이벤트 메시지란, [송신측으로부터 수신측에 대해서 발생하는 다음의 이벤트의 시각이 t이고, 발생하는 이벤트는 e이다]라는 것을 전하는 메시지이다.
The event message relating to the event e at time t is a message that says that the time of the next event occurring from the transmitting side to the receiving side is t, and the generated event is e.

시각 t의 null 메시지란, [송신측으로부터 수신측에 대해서 발생하는 다음의 이벤트의 시각이, t보다 나중이다]라는 것을 전하는 메시지이고, 수신측의 시뮬레이션 영역 그 자체에는 영향을 주지 않는다. Null 메시지의 목적은, 아래에 기술한 데드록을 방지하는 것이다. 보수적인 이벤트 동기에서는 롤 백을 방지하기 위해서, 다른 모든 논리 프로세스로부터 현재 시각보다 큰 시각 스탬프의 메시지를 수신하기 까지 처리를 정지한다. 하지만, 메시지의 수신을 기다리는 상대의 논리 프로세스도 같은 시각에 그 논리 프로세스로부터의 수신을 기다리는 경우, 도 18(a)와 같이 서로가 메시지를 기다리고 있어 처리를 재개할 수 없다. 따라서, 현재 시각으로부터 얼마나 멀리까지 외부에의 이벤트가 발생하지 않는지를 [미리 읽기]하여, 도 18(b)와 같이, null 메시지를 보내는 것으로, 데드록을 방지한다.
The null message at time t is a message for saying that [the time of the next event occurring from the sending side to the receiving side is later than t] and does not affect the simulation area itself at the receiving side. The purpose of a null message is to prevent the deadlock described below. In conservative event synchronization, processing is stopped until a message with a time stamp larger than the current time is received from all other logic processes to prevent rollback. However, if the logical process of the other party waiting for the reception of the message also waits for reception from the logical process at the same time, as shown in Fig. 18A, each other is waiting for the message and processing cannot be resumed. Therefore, [read ahead] how far the external event does not occur from the current time, and sending a null message as shown in Fig. 18B, deadlock is prevented.

논리 프로세스의 처리의 개요는, 다음과 같다.The outline of the processing of the logical process is as follows.

(1) 모든 IQ에 메시지가 도착하기까지 대기(1) Wait for a message to arrive at all IQs

(2) IQ 내에서 제일 시각이 빠른 메시지(t=T0)을 팝(2) Pop the earliest message (t = T 0 ) in IQ

(3) T0까지 현재 시각을 진행하면서, 시뮬레이션을 실행(태스크 큐를 팝 하여 실행)(3) Run the simulation while advancing the current time up to T 0 (pop the task queue and run it)

(a)미래의 이벤트는 태스크 큐에 추가(a) future events are added to the task queue

(b)발생한 외부를 위한 이벤트는 차례 차례로(sequentially) OQ에 추가(b) Events that occur externally are sequentially added to the OQ.

(c)이벤트 추가가 없는 OQ에는, null 메시지를 추가(t= 현재 시각+미리 읽기 시간)(c) Add null message to OQ without event addition (t = current time + read ahead)

(2)에서 팝된 메시지를 처리하여 (1)로 리턴
Process the message popped at (2) and return to (1)

또한 본 발명에서는 특히, [미리 읽기]를 수행하지 않는 null 메시지(송신 시 현재 시각을 시각 스탬프로서 갖는 null 메시지)를 프로그레스 메시지(progress message)라고 한다. 프로그레스 메시지의 목적은, 미소한 미리 읽기 폭을 갖는 null 메시지에 의해 발생하는 빈번한 동기를 회피하는 것이다. 본 발명에서는, 내부 퍼리퍼럴 스케줄러가 프로그레스 메시지를 송신한다. 이것은, 내부 퍼리퍼럴 스케줄러를 구동하는 ISS가, 미소한 폭으로 다른 논리 프로세스의 다음 이벤트를 예측할 수 있기 때문이다.
In the present invention, in particular, a null message (a null message having a current time as a time stamp when transmitting) that does not perform [read in advance] is called a progress message. The purpose of a progress message is to avoid frequent synchronization caused by a null message with a small read width. In the present invention, the internal peripheral scheduler sends a progress message. This is because the ISS driving the internal peripheral scheduler can predict the next event of another logical process with a small width.

다음으로 도 19를 참조하여, 프로세서의 통신 지연 ΔTc에 대해서 설명한다. 즉, 도시된 것처럼, 상호 퍼리퍼럴에의 라이트(write)로부터, 수신측/송신측 프로세서에의 인터럽트가 발생하기까지의 지연의 최소값이 프로세서의 통신 지연 ΔTc이다.
Next, the communication delay ΔT c of the processor will be described with reference to FIG. 19. That is, as shown, the minimum value of the delay from writing to the mutual peripheral to the interruption to the receiving / transmitting processor is the communication delay ΔT c of the processor.

참고로, 최대 보드 레이트(maximum baud rate) 1.0Mbps의 CAN에 의한 통신에서는, 데이터 프레임의 최대 지연은 44 μs (프레임의 최소 비트 수가 44)이고, 이것이 ΔTc의 참고 값이다.
For reference, in communication with a CAN of maximum baud rate of 1.0 Mbps, the maximum delay of the data frame is 44 μs (the minimum number of bits in the frame is 44), which is a reference value of ΔT c .

다음으로 도 20을 참조하여, 프로세서 반응 지연 ΔTR에 대해서 설명하겠다. 즉, 프로세서의 반응 지연 ΔTR이란, 도시된 것처럼, 플랜트의 입력 시각으로부터, 그것에 의한 프로세서의 반응이 플랜트에 전해져 유효가 되기까지의 지연의 최소 값이다. 도 20에서 TR이란, TQ가 비어 있는 경우에 프로세서의 반응이 플랜트에 도달할 가능성이 있는 최소 시각이다.
Next, the processor response delay ΔT R will be described with reference to FIG. 20. That is, the response delay ΔT R of the processor is, as shown, the minimum value of the delay from the input time of the plant until the response of the processor is transmitted to the plant and becomes effective. In FIG. 20, T R is the minimum time at which the reaction of the processor is likely to reach the plant when TQ is empty.

전제로서, 플랜트의 상태 변화에 기인하는 인터럽트를 수신한 때로부터, TR이내에, 플랜트에의 최초의 이벤트 발생 시각 Treaction을 정하는 레지스터 라이트(예: 타이머 스타트 레지스터에의 라이트)가 발생한다. 이 라이트 시각을 Ttrigger라고 표기하면, 하기의 식이 성립한다.As a premise, a register write (for example, a write to a timer start register) that defines the first event occurrence time T reaction to the plant occurs within T R from the time of receiving an interrupt due to a change in the state of the plant. When this write time is described as T trigger , the following equation is established.

Ttrigger ≪ TR ≤ Treaction T trigger ≪ TR ≤ T reaction

프로세서가 동작을 결정(시각 Ttrigger)하고 나서 액추에이터(actuator)가 동작(시각 Treaction)하기 까지의 시간을 미리 읽기로서 플랜트를 선행 실행해도 시간 정확성(time precision)은 상실되지 않으며, 이러한 발견을 사용하는 것에 기초하여 프로세서의 반응 지연 ΔTR이 사용된다.
Even if the plant is run ahead of time by determining the action (time T trigger ) and then the time from the actuator to action (time T reaction ), time precision is not lost. Based on the use, the response delay ΔT R of the processor is used.

다음으로, 프로세서 반응 지연의 예를 나타낸다. 최초의 예로서, 엔진 연료 분사 제어에 있어서, 크랭크 15°마다 플랜트로부터 회전 펄스 (state change)가 발생한 경우, 연료 분사나 점화의 지시는, 그 시간을 정확하게 하기 위해서 타이머를 이용하여 실행된다. 타이머에의 시간 세트는, 하나 이상 전술한 회전 펄스가 발생했을 때에 계산하기 때문에, 분사 점화까지에는, 하나 이상의 펄스 간격, 즉, 최대 회전수 10,000rpm에서는 펄스 간격 250μs 이상이 충분히 지연된다. 이것을 반응 지연이라고 한다.
Next, an example of the processor response delay is shown. As a first example, in the engine fuel injection control, when a rotation pulse (state change) occurs from the plant every 15 degrees of the crank, the instruction of fuel injection or ignition is executed by using a timer to correct the time. Since the time set to the timer is calculated when one or more of the above-mentioned rotation pulses are generated, at least one pulse interval, that is, at the maximum rotational speed of 10,000 rpm, the pulse interval of 250 µs or more is sufficiently delayed until the injection ignition. This is called delayed reaction.

다른 예로서, 플랜트로부터의 입력에 대해서 프로세서가 바로 지시를 되돌려 보내는 제어에서는, 반응 지연은 매우 작다. 하지만 이러한 종류의 제어에서는, 프로세서에 비해 느린 물리 현상에 관하여 주기적인 태스크를 실행하는 경우가 많다(예: 온도를 제어량으로 하는 팬(fan)에의 PWM 신호의 지시, 자동차 속도를 제어량으로 하는 스로틀(throttle) 열림의 지시). 온도, 속도, 토크(torque)의 제어 주기의 기준은 각각 1초, 1밀리초, 0.1밀리초이므로, 이보다 더 미세한 단위로 플랜트에 지시를 제공할 필요는 없다. 따라서, 플랜트의 시간 단위들의 크기에 의해서 정해진 시간을, 반응 지연으로서 사용한다.
As another example, in control in which the processor immediately returns an instruction on input from the plant, the response delay is very small. However, this kind of control often performs periodic tasks on physical phenomena that are slower than processors (for example, directing a PWM signal to a fan whose temperature is the control amount, and a throttle (the vehicle speed as the control amount). throttle) instructions of opening). The reference periods for the control cycles of temperature, speed and torque are 1 second, 1 millisecond and 0.1 millisecond, respectively, so there is no need to provide instructions to the plant in finer units. Therefore, the time determined by the size of the time units of the plant is used as the reaction delay.

다음으로, 도 21을 참조하여, 공유 메모리 액세스의 시뮬레이션을 설명하겠다. 도 21에 있어서는, 프로세서 Pr1, Pr2, Pr3가 공유 메모리에 액세스한다고 하자. 거기서, 프로세서 Pr1, Pr2가 선행하고 있고, 프로세서 Pr3가 프로세서 Pr1, Pr2에 추종한다고 하자. 그러면 프로세서 Pr3은, IQ의 내용으로부터, 자신이 가장 오래된 시각에(at the latest time) 있다는 것과 뒤에서 2번째의 프로세서의 시각을 알 수 있다. 거기서, store와 load를 실행하고, 2번째를 추종한다. 마지막으로, load 직전에 정지하고, IQ에 도달한 과거의 store 동작들을 시간 순으로 모두 반영하고 나서 load를 실행하여 재개한다.
Next, with reference to FIG. 21, a simulation of shared memory access will be described. In FIG. 21, it is assumed that processors Pr1, Pr2, and Pr3 access shared memory. There, suppose that the processors Pr1 and Pr2 precede and the processor Pr3 follows the processors Pr1 and Pr2. Processor Pr3 then knows from the contents of the IQ that it is at the latest time and the time of the second processor behind it. From there, run the store and load and follow the second one. Finally, it stops just before the load, reflects all past store operations that reached IQ in chronological order, and then resumes by executing load.

그러면, 모든 프로세서가 반드시 어딘가에서 [가장 오래된 시각]에 도달하여 재개하기 때문에, 데드록이 회피된다. 반대로 말하면, 이와 같이 R/W가 동기적으로 동작하는 논리 프로세스의 경우에는, 데드록은 발생하지 않는다. 따라서, 리드 라이트의 일관성을 유지하면서, 데드록 없이 시뮬레이션하는 것이 가능하다.
The deadlock is then avoided because all processors must reach somewhere and resume [oldest time] somewhere. Conversely, in the case of a logic process in which R / W operates synchronously, no deadlock occurs. Thus, it is possible to simulate without deadlock while maintaining the consistency of the read light.

도 22는, ISS, 퍼리퍼럴 에뮬레이터, 플랜트 시뮬레이터 및 본 발명의 3개의 스케줄러 기능의, 호스트 계산기의 코어에의 할당 예를 나타내고 있다. 프로세서와 통신 빈도가 높은 내부 퍼리퍼럴 스케줄러와 ISS를 같은 코어(2204)에서 에뮬레이트 하는 것으로, 시뮬레이션을 고속으로 실행할 수 있다.
Fig. 22 shows an example of allocation to the core of the host calculator of the ISS, the peripheral emulator, the plant simulator, and the three scheduler functions of the present invention. The simulation can be performed at high speed by emulating the internal peripheral scheduler and the ISS, which are frequently communicated with the processor, on the same core 2204.

내부 퍼리퍼럴 스케줄러는, ECU의 메모리 맵 사양을 참조하여, ISS로부터의 load/store 명령을, 내부 퍼리퍼럴(코어 내의 SystemC), 상호 퍼리퍼럴, 외부 퍼리퍼럴로 나눈다.
The internal peripheral scheduler refers to the ECU's memory map specification and divides the load / store instructions from the ISS into internal peripherals (SystemC in the core), mutual peripherals, and external peripherals.

또한, 도 안의 표기는, 다음과 같다.In addition, the notation in FIG. Is as follows.

<ISS><ISS>

int: interruptint: interrupt

rs: resumers: resume

a: advancea: advance

l: loadl: load

s: stores: store

c: completec: complete

<SystemC><SystemC>

r: readr: read

w: writew: write

ru: register updateru: register update

int: interruptint: interrupt

pu: port updatepu: port update

<plant><plant>

i: inputi: input

c: completec: complete

o: outputo: output

<통신 채널><Communication channel>

r: readr: read

w: writew: write

ru: register updateru: register update

int: interrupt
int: interrupt

다음으로 도 23을 이용하여, CAN 디바이스가 조정의 실패 후에 프로세서에 중단 통지를 수행하는 동작을, 상호 퍼리퍼럴 스케줄러가 보수적으로(롤 백 시키지 않고) 에뮬레이터 할 수 있다는 것을 설명하겠다. 도 23은, 2개의 프로세서 1, 2가 CAN 디바이스에 대해서 CAN 프레임의 송신 요구를 수행하는 예를 나타내고 있다. 프로세서 1이 송신 요구하는 프레임은, 프로세서 2가 송신 요구하는 프레임보다 우선도가 높다. 프로세서 2는 CAN 디바이스에 대해서, 조정에 실패한 경우에는 송신 대기 상태의 해제를 수행하여 인터럽션 통지를 하도록, 지시를 내린다(중단 세트). 또한, 도의 세로 방향의 화살표는 게스트 시간의 진행을 나타낸다.
Next, using FIG. 23, it will be explained that the mutual peripheral scheduler can emulate conservatively (without rolling back) the operation in which the CAN device performs an interrupt notification to the processor after a failure of coordination. FIG. 23 shows an example in which two processors 1 and 2 perform a CAN frame transmission request for a CAN device. The frame requested by the processor 1 has a higher priority than the frame requested by the processor 2. Processor 2 instructs the CAN device to perform interruption of the transmission wait state if an adjustment fails, giving an interruption notification (abort set). In addition, the vertical arrow in the figure indicates the progress of the guest time.

도 23의 예에서는, 2개의 프로세서가 CAN 디바이스(상호 퍼리퍼럴)에, 중단 세트와 송신 세트를 수행한 후, CAN 디바이스의 에뮬레이터(SystemC 등에서 기술)가 조정 처리를 개시한다. 조정 개시의 이벤트는 CAN 디바이스의 에뮬레이터에 의해 TQ에 추가된 것이고, 상호 퍼리퍼럴 스케줄러의 처리에 의해, 모든 프로세서가 이 시각(조정 개시)에서 게스트 시간의 동기를 취한다. 이 예에 있어서 중단 세트, 2개의 송신 세트, 조정은 각각, 도 15에 있어서, IQ에 도착하는 CAN 중단, IQ에 도착하는 2개의 CAN 송신, TQ에 추가되는 조정 이벤트에 대응한다. 또한 도 23에서 프로세서의 시각의 동기를 취하는 상호 퍼리퍼럴 스케줄러의 처리란, TQ 선두의 시각의 null 메시지의 송출과 프로그레스 메시지의 수신이고, 도 15에 관련하여 설명한 처리와 동일하다.
In the example of FIG. 23, after two processors perform an interrupt set and a transmit set on a CAN device (mutual peripheral), an emulator (described in SystemC or the like) of the CAN device starts an adjustment process. The event of coordination start has been added to the TQ by the emulator of the CAN device, and by the processing of the mutual peripheral scheduler, all processors synchronize the guest time at this time (coordination start). In this example, the interrupt set, the two transmission sets, and the adjustments respectively correspond to the CAN interrupt arriving at IQ, the two CAN transmissions arriving at IQ, and the adjustment event added to TQ in FIG. 15. In Fig. 23, the processing of the mutual peripheral scheduler that synchronizes the processor's time is the sending of a null message and the reception of a progress message at the head of the TQ time, and are the same as the processing described with reference to Fig. 15.

또한 도 23의 예는, 조정이 개시되면, CAN 디바이스의 에뮬레이터가 실패 통지 시각의 이벤트를 TQ에 추가하는 것을 나타내고 있다. 상호 퍼리퍼럴 스케줄러가 다음으로 프로세서에 선행 실행을 통지할 때, 송출하는 null 메시지의 시각 스탬프는, ΔTc가 아니라, 여기에서 추가된 실패 통지의 시각이다. 이 때문에, 프로세서 2가, 실패 통지의 시각을 지나쳐버리는 일(롤 백을 요구하는 오버 헤드)이 없다.
In addition, the example of FIG. 23 shows that when adjustment is started, the CAN device emulator adds the event of failure notification time to TQ. When the mutual peripheral scheduler next notifies the processor of a preceding run, the time stamp of the null message sent out is not ΔT c , but the time of the failure notification added here. For this reason, the processor 2 does not miss the time of failure notification (overhead requesting rollback).

다음으로 도 24를 이용하여, 우선도가 높은 CAN 프레임을 송신 요구한 프로세서가 CAN 디바이스를 리셋하는 경우의 동작을, 상호 퍼리퍼럴 스케줄러가 보수적으로(롤 백 시키지 않고) 에뮬레이터 할 수 있다는 것을 설명하겠다. 이것은, CAN 디바이스의 에뮬레이터에 있어서, 실패를 통지하기 전에 리셋의 유무를 체크하는 것을 가능하게 한다. 도 24에 나타낸 동작은, 조정 개시까지는 도 23과 같다.
Next, using FIG. 24, the mutual peripheral scheduler can emulate conservatively (without rolling back) the operation when a processor requesting transmission of a high priority CAN frame resets the CAN device. would. This makes it possible for the emulator of the CAN device to check for the presence of a reset before notifying the failure. The operation shown in FIG. 24 is the same as that of FIG. 23 until the start of adjustment.

도 24의 예는, 게스트 시간 상, 조정이 개시되고 나서부터 조정을 완료(프레임의 승리와 패배가 확정)하기까지, 우선도가 높은 CAN 프레임 요구를 한 프로세서 1이 CAN 디바이스를 리셋하는 것을 나타내고 있다. 조정이 개시된 시점에서, 도 23의 예에서 기술한 것처럼, CAN 디바이스의 에뮬레이터에 의해, 프로세서 2에 대해서 중단 통지를 위한 이벤트가 TQ에 추가된다.
The example of FIG. 24 shows that in the guest time, processor 1, which made a high priority CAN frame request, resets the CAN device from the start of the adjustment until the adjustment is completed (the victory and the defeat of the frame are confirmed). have. At the beginning of the adjustment, as described in the example of FIG. 23, an event for interrupt notification for processor 2 is added to the TQ by the emulator of the CAN device.

도 24의 예에서는, 여기에서 추가된 중단 통지를 위한 이벤트의 처리에 있어서, CAN 디바이스의 에뮬레이터가, 중단 통지를 수행하기 전에 리셋 통지의 유무를 체크하고, 중단 통지를 수행할지 안 할지를 결정하는 것을 나타내고 있다.
In the example of FIG. 24, in the processing of the event for the interrupt notification added here, the emulator of the CAN device checks whether there is a reset notification before performing the interrupt notification, and determines whether or not to perform the interrupt notification. It is shown.

이 결정 처리에서 CAN 디바이스 에뮬레이터는, 리셋 통지가 있는 경우, 어느 CAN 프레임이 조정에서 승리할지를 다시 계산한다. 재계산의 결과, 조정 개시 시에 실패할 예정인 프레임이 조정에서 성공한 경우, 중단이 발생하지 않기 때문에, 프로세서에 중단을 통지하지 않는다. 도 24의 예는, 프로세서 2가 송신 요구를 한 CAN 프레임(조정 개시 시에는 실패 예정)이 재계산의 결과 조정에서 성공한 결과, 예정된 중단 통지가 수행되지 않는다는 것을 나타낸다.
In this decision process, the CAN device emulator recalculates which CAN frame wins the adjustment if there is a reset notification. As a result of the recalculation, if a frame that is expected to fail at the start of the adjustment is successful in the adjustment, no interruption occurs, so the processor is not notified of the interruption. The example of FIG. 24 shows that the CAN frame (which is expected to fail at the start of adjustment) that the processor 2 makes a transmission request succeeds in the adjustment of the result of recalculation, so that the scheduled interruption notification is not performed.

재계산의 결과, 조정 개시 시에 실패할 예정이었던 프레임이 다시 조정에서 실패한 경우, 중단이 발생하기 때문에, 예정대로 프로세서에 중단을 통지한다. 또한, 상기의 결정 처리에 있어서 리셋 통지가 없는 경우는, CAN 프레임의 성패가 조정 개시할 때부터 변하지 않는다. 이 때문에, 리셋 통지가 없는 경우도, 조정 개시 시에 예정된 중단을 프로세서에 통지한다.
As a result of the recalculation, if a frame that was supposed to fail at the start of adjustment fails again in adjustment, an interruption occurs, so that the processor is notified of the interruption as scheduled. In the above determination process, if there is no reset notification, the success or failure of the CAN frame does not change from the start of adjustment. For this reason, even when there is no reset notification, the processor is notified of the interruption scheduled at the start of the adjustment.

이와 같이, CAN 디바이스 에뮬레이터에 있어서 실패를 통지하기 전에 리셋의 유무를 체크하는 것으로, 리셋에 의해 중단이 발생하지 않음에도 불구하고 잘못하여 프로세서가 중단 통지를 받는(롤 백을 요구하는 오버 헤드) 일이 없다.
In this way, the CAN device emulator checks for the presence of a reset before notifying a failure, and the processor accidentally receives a suspension notification (overhead requesting a rollback) even if the interruption did not occur. There is no

다음으로, 도 25를 참조하여, 본 발명을 실시하기 위한 다른 실시 예를 설명하겠다. 도 25에 있어서, 프로세서 에뮬레이터(2502a, …, 2502m, 2504a, …, 2504n)는, 도 2에 나타낸 프로세서 에뮬레이터(202a, …, 202z)와 기능면에서 실질적으로 동일하다.
Next, another embodiment for implementing the present invention will be described with reference to FIG. 25. In Fig. 25, the processor emulators 2502a, ..., 2502m, 2504a, ..., 2504n are substantially the same in function as the processor emulators 202a, ..., 202z shown in Fig. 2.

퍼리퍼럴 에뮬레이터(2506a, …, 2506m, 2508a, …,2508n)도, 도 2에 나타낸 퍼리퍼럴 에뮬레이터(204a, …,204z)와 기능면에서 실질적으로 동일하다.
The peripheral emulators 2506a, ..., 2506m, 2508a, ..., 2508n are also substantially the same in functional terms as the peripheral emulators 204a, ..., 204z shown in FIG.

도 25의 구성이, 도 2의 구성과 다른 것은, 플랜트 시뮬레이터가, 능동적(active) 플랜트 시뮬레이터(2510a, …, 2510m)와, 수동적(passive) 플랜트 시뮬레이터(2512a, …, 2512n)로 나누어져 있기 때문이다. 여기에서, 능동적 플랜트 시뮬레이터란, 엔진 시뮬레이터와 같이, 상태 변화의 타이밍 등을 자율적으로 결정하는 기능을 가진 플랜트 시뮬레이터이다. 예를 들면, 엔진은, 크랭크 각도를 15도씩 펄스로 알려주는 플랜트이지만, 그 타이밍은, 컨트롤러(ECU)측에서 결정할 수 없다.
25 differs from the configuration in FIG. 2 in that the plant simulator is divided into an active plant simulator 2510a, ..., 2510m, and a passive plant simulator 2512a, ..., 2512n. Because. Here, the active plant simulator is a plant simulator having a function of autonomously determining the timing of the state change and the like, like the engine simulator. For example, the engine is a plant that informs the crank angle by a pulse of 15 degrees, but the timing cannot be determined on the controller ECU side.

한편, 수동적(passive) 플랜트 시뮬레이터란, 타이밍을, 컨트롤러가 결정할 수 있는 플랜트 시뮬레이터이고, 예를 들면, 전지의 전압을 지정된 타이밍으로 모니터(샘플)하는 플랜트가 그것에 해당한다. 그것 이외에도, 온도 센서, 압력 센서, 회전 속도 센서 등, 센서 계열의 플랜트가, 수동적 플랜트에 해당한다. 브레이크나 서스펜션도 샘플링에 의해 상태를 센스 할 경우에는, 수동적 플랜트로서 분류한다.
On the other hand, a passive plant simulator is a plant simulator in which timing can be determined by a controller, for example, a plant that monitors (samples) the voltage of a battery at a specified timing. In addition to that, a sensor-based plant, such as a temperature sensor, a pressure sensor, a rotational speed sensor, corresponds to a passive plant. Brake and suspension are also classified as passive plants when sensing the state by sampling.

이와 같은 능동적 플랜트 시뮬레이터와, 수동적 플랜트 시뮬레이터의 분류에 대응하여, 외부 퍼리퍼럴 스케줄러도, 능동적 플랜트 시뮬레이터에 접속된 퍼리퍼럴 에뮬레이터를 스케줄링 하는 외부 퍼리퍼럴 스케줄러(2514a)와, 수동적 플랜트 시뮬레이터에 접속된 퍼리퍼럴 에뮬레이터를 스케줄링 하는 외부 퍼리퍼럴 스케줄러(2514b)가 설치된다. 능동적 플랜트 시뮬레이터에 접속된 퍼리퍼럴 에뮬레이터에 대해서, 대응하는 프로세서 에뮬레이터는, 시그널 갱신을 통지하는 한편, 상태 변화를 수신한다고 하는 쌍방향의 동작이 있지만, 수동적 플랜트 시뮬레이터에 접속된 퍼리퍼럴 에뮬레이터에 대해서, 대응하는 프로세서 에뮬레이터는, 원칙적으로, 시그널 갱신과 샘플링 예고를 통지할 뿐이다.
In response to the classification of the active plant simulator and the passive plant simulator, the external peripheral scheduler also includes an external peripheral scheduler 2514a that schedules the peripheral emulator connected to the active plant simulator, and the passive plant simulator. An external peripheral scheduler 2514b is installed that schedules the connected peripheral emulator. For a peripheral emulator connected to an active plant simulator, the corresponding processor emulator has a two-way operation of notifying signal updates and receiving a state change, but for a peripheral emulator connected to a passive plant simulator. The corresponding processor emulator, in principle, only notifies you of signal updates and sampling notices.

능동적 플랜트 시뮬레이터와, 수동적 플랜트 시뮬레이터의 분류는, 기본적으로, 프로세서 에뮬레이터 사이의 통신에는 영향을 주지 않기 때문에, 상호 퍼리퍼럴 스케줄러(2516)의 동작은, 실질적으로 도 2의 상호 퍼리퍼럴 스케줄러(210)와 동일하고, CAN 에뮬레이터(2518)도, 도 2의 CAN 에뮬레이터(212)와, 실질적으로 동일하다.
Since the classification of the active plant simulator and the passive plant simulator basically do not affect the communication between the processor emulators, the operation of the mutual peripheral scheduler 2516 is substantially equivalent to the mutual peripheral scheduler of FIG. Same as 210, and CAN emulator 2518 is also substantially the same as CAN emulator 212 of FIG. 2.

그런데, 능동적 플랜트 시뮬레이터를 위한 외부 퍼리퍼럴 스케줄러(2514a)는, 도 2의 외부 퍼리퍼럴 스케줄러(208)와 기능면에서 실질적으로 동일하지만, 수동적 플랜트 시뮬레이터를 위한 외부 퍼리퍼럴 스케줄러(2514b)는, 프로세서에 대해서 플랜트를 선행시키는 시간 폭을 계산하는 처리가 필요하지 않다.
By the way, the external peripheral scheduler 2514a for the active plant simulator is substantially the same in function as the external peripheral scheduler 208 of FIG. 2, but the external peripheral scheduler 2514b for the passive plant simulator. No processing is needed to calculate the time span preceding the plant for the processor.

따라서, 외부 퍼리퍼럴 스케줄러(2514b)의 동작을, 도 26의 흐름도를 참조하여 설명하겠다. 여기에서의 초기값은, 모든 IQ는 비어 있고, 모든 OQ는 비어 있고, TQ는 비어 있고, PV(포트 값)는 ECU 사양에서의 초기값, T :=0이다. 수동적 플랜트 시뮬레이터를 위한 외부 퍼리퍼럴 스케줄러는, 선행하는 프로세서의 시각이 통지될 때마다 그 시각을 따라잡는 처리를 단순히 반복하기만 하면 된다.
Therefore, the operation of the external peripheral scheduler 2514b will be described with reference to the flowchart of FIG. 26. The initial value here is that all IQs are empty, all OQs are empty, TQ is empty, and PV (port value) is the initial value in the ECU specification, T: = 0. The external peripheral scheduler for the passive plant simulator simply needs to repeat the process of catching up with the time whenever the time of the preceding processor is notified.

단계(2602)에서, 외부 퍼리퍼럴 스케줄러(2514b)는, IQ의 갱신 대기를 수행하고, 단계(2604)에서는, 모든 IQ가 filled인지를 결정하고, 그렇지 않다면 단계(2602)로 리턴 하고, IQ의 갱신 대기를 계속한다.
In step 2602, external peripheral scheduler 2514b performs a wait for an update of the IQ, and in step 2604 it determines if all of the IQs are filled, otherwise returns to step 2602 and returns IQ Continue to wait for update.

그렇게 하여 단계(2604)에서, 외부 퍼리퍼럴 스케줄러(2514b)가, 모든 IQ가 filled라고 결정하면, 단계(2606)에서, 모든 IQ에서 제일 가까운 시각을 T0라 한다.
Thus, at step 2604, if external peripheral scheduler 2514b determines that all IQs are filled, then at step 2606, the time closest to all IQs is referred to as T 0 .

단계(2608)에서, 외부 퍼리퍼럴 스케줄러(2514b)는 Te=T0, 즉, IQ에 Te=T0가 되는 태스크 e가 있는지를 결정한다. 만일 있다면, 외부 퍼리퍼럴 스케줄러(2514b)는, 단계(2610)에서 이벤트 e를 팝 하고, 단계(2612)에서, TQ의 갱신을 수행한다.
In step 2608, external peripheral scheduler 2514b determines if there is a task e such that T e = T 0 , i.e., T e = T 0 in IQ. If yes, external peripheral scheduler 2514b pops event e at step 2610 and, at step 2612, performs an update of the TQ.

단계(2612)의 다음은 단계(2608)로 리턴 하고, 거기서, 외부 퍼리퍼럴 스케줄러(2514b)가 IQ에 Te=T0 가 되는 태스크 e가 없다고 결정하면, 단계(2614)에서, T :=T0가 셋트 된다.
Following step 2612, return to step 2608, where external peripheral scheduler 2514b determines that there is no task e in IQ where T e = T 0 , and in step 2614, T: = T 0 is set.

다음으로 단계(2616)로 진행하고, 거기서 외부 퍼리퍼럴 스케줄러(2514b)는, 플랜트를 T까지 실행한다. 이때, 플랜트는 수동적 플랜트이기 때문에, 외부 퍼리퍼럴 스케줄러(2514b)는, 상태 변화의 통지를 받지 않는다.
Next, the process proceeds to step 2616, where the external peripheral scheduler 2514b executes the plant to T. At this time, since the plant is a passive plant, the external peripheral scheduler 2514b does not receive notification of the change of state.

다음으로 외부 퍼리퍼럴 스케줄러(2514b)는, 단계(2618)에서, TQ 엔트리(T)를 실행하여, 단계(2064)로 리턴한다.
The external peripheral scheduler 2514b then executes the TQ entry T at step 2618 and returns to step 2064.

지금까지, CAN이 상호 퍼리퍼럴 스케줄러가 취급하는 자동차 LAN 프로토콜인 경우에 대해서 설명하였는데, 본 발명의 시뮬레이션 시스템은, CAN에 한정되지 않고, LIN, Flex Ray 등의 임의의 자동차 LAN 프로토콜에도 적용 가능하다.
So far, the case where CAN is an automotive LAN protocol handled by a mutual peripheral scheduler has been described. The simulation system of the present invention is not limited to CAN but can be applied to any automotive LAN protocol such as LIN and Flex Ray. Do.

이상에서, 자동차용의 복수의 시뮬레이션 시스템에 관련하여, 본 발명의 특정의 실시 예를 설명하였는데, 본 발명은 이와 같은 특정의 실시 예에 한정되지 않고, 비행기용의 시뮬레이션 시스템 등, 일반적인 전자 기계 제어계열 시스템의 시뮬레이션 시스템에 적용 가능하다는 것을, 이 분야의 당 업자라면, 이해할 수 있을 것이다.
In the above, specific embodiments of the present invention have been described with reference to a plurality of simulation systems for automobiles, but the present invention is not limited to these specific embodiments, and general electromechanical control such as a simulation system for airplanes and the like. It will be appreciated by those skilled in the art that it is applicable to simulation systems of a series of systems.

또, 본 발명은, 특정의 컴퓨터의 아키텍처나 플랫폼에 한정되지 않고, 멀티 태스크를 실현 가능한 임의의 플랫폼에도 적용 가능하다.
In addition, the present invention is not limited to the architecture and platform of a specific computer, and can be applied to any platform that can realize multitasking.

102 호스트버스, 104a……104n CPU, 106 메인메모리, 116 하드디스크드라이브, 202 2502 2504 프로세서에뮬레이터, 204 2506 2508 퍼리퍼럴(Peripheral) 에뮬레이터, 206 2510 2512 플랜트시뮬레이터, 208 2514a 2514b 외부퍼리퍼럴스케줄러(Peripheral scheduler), 210 2516 상호퍼리퍼럴스케줄러(Peripheral scheduler), 212 2518 CAN 에뮬레이터102 host bus, 104a... ... 104n CPU, 106 Main Memory, 116 Hard Disk Drive, 202 2502 2504 Processor Emulator, 204 2506 2508 Peripheral Emulator, 206 2510 2512 Plant Simulator, 208 2514a 2514b External Peripheral Scheduler, 210 2516 Peripheral scheduler, 212 2518 CAN emulator

Claims (21)

컴퓨터의 처리에 의해, 시뮬레이션을 수행하는 시뮬레이션 시스템에 있어서,
상기 컴퓨터 상에서 실행되는 복수의 프로세서 에뮬레이터와,
상기 컴퓨터 상에서 실행되는 복수의 플랜트 시뮬레이터와,
상기 컴퓨터 상에서 실행되고, 상기 프로세서 에뮬레이터의 반응지연시간까지, 상기 플랜트 시뮬레이터를 선행 실행시켜, 실제로 상기 플랜트 시뮬레이터가 정지한 시간까지 상기 프로세서 에뮬레이터를 선행 실행하도록 퍼리퍼럴(Peripheral) 에뮬레이터를 통하여 통지하는, 외부 퍼리퍼럴 스케줄러(Peripheral scheduler)와,
상기 컴퓨터 상에서 실행되고, 상기 프로세서 에뮬레이터 간의 통신지연시간만큼, 상기 프로세서 에뮬레이터에 선행 실행하도록 통지하는, 상호 퍼리퍼럴 스케줄러(Peripheral scheduler)를 포함하고,
상기 프로세서 에뮬레이터는, 통지된 시간까지, 보수적으로 처리를 진행할 수 있는,
시뮬레이션 시스템.
In a simulation system that performs a simulation by processing of a computer,
A plurality of processor emulators running on the computer,
A plurality of plant simulators running on the computer,
Running on the computer, up to the response delay time of the processor emulator, running the plant simulator up front, and notifying via a peripheral emulator to actually run the processor emulator up to the time the plant simulator is stopped. With an external Peripheral scheduler,
A mutual peripheral scheduler running on the computer and notifying the processor emulator to run ahead by a communication delay time between the processor emulators,
The processor emulator can proceed conservatively until the time of notification,
Simulation system.
청구항 1에서, 상기 컴퓨터는, 멀티태스크 시스템이며, 상기 복수의 프로세서 에뮬레이터와, 상기 복수의 플랜트 시뮬레이터와, 상기 외부 퍼리퍼럴 스케줄러와, 상기 상호 퍼리퍼럴 스케줄러는, 개별의 스레드(thread) 또는 프로세스로서 실행되는,
시뮬레이션 시스템.
The computer system according to claim 1, wherein the computer is a multitasking system, and the plurality of processor emulators, the plurality of plant simulators, the external peripheral scheduler, and the mutual peripheral scheduler are separate threads or Run as a process,
Simulation system.
청구항 2에서, 상기 컴퓨터는, 멀티코어 또는 멀티프로세서 시스템이며, 상기 복수의 프로세서 에뮬레이터와, 상기 복수의 플랜트 시뮬레이터와, 상기 외부 퍼리퍼럴 스케줄러와, 상기 상호 퍼리퍼럴 스케줄러는, 상기 멀티프로세서 시스템의 다른 프로세서 또는 코어에 개별로 할당되어 개별의 스레드 또는 프로세스로서 실행되는, 시뮬레이션 시스템.The multiprocessor system of claim 2, wherein the computer is a multicore or multiprocessor system, and the plurality of processor emulators, the plurality of plant simulators, the external peripheral scheduler, and the mutual peripheral scheduler are the multiprocessor systems. A simulation system, assigned to different processors or cores of an individual and executed as individual threads or processes. 청구항 3에서, 상기 플랜트 시뮬레이터와, 상기 플랜트 시뮬레이터와 통신하는 상기 퍼리퍼럴 에뮬레이터는, 동일 코어 또는 프로세서에 할당되는
시뮬레이션 시스템.
The system of claim 3, wherein the plant simulator and the peripheral emulator in communication with the plant simulator are assigned to the same core or processor.
Simulation system.
청구항 1에서, 상기 복수의 플랜트 시뮬레이터는, 자발적으로 상태를 결정하는 능동적 플랜트 시뮬레이터와, 타이밍을 상기 프로세서 에뮬레이터 측에서 결정하는 수동적 플랜트 시뮬레이터를 갖고, 상기 외부 퍼리퍼럴 스케줄러는, 상기 능동적 플랜트 시뮬레이터와 통신하는 능동적 플랜트 용의 외부 퍼리퍼럴 스케줄러와, 상기 수동적 플랜트 시뮬레이터와 통신하는 수동적 플랜트 용의 외부 퍼리퍼럴 스케줄러를 갖는
시뮬레이션 시스템.
The system of claim 1, wherein the plurality of plant simulators has an active plant simulator that voluntarily determines a state, a passive plant simulator that determines timing at the processor emulator side, and the external peripheral scheduler includes: the active plant simulator; Having an external peripheral scheduler for the active plant to communicate with and an external peripheral scheduler for the passive plant to communicate with the passive plant simulator
Simulation system.
청구항 1에서, CAN 에뮬레이터를 더 갖고, 상기 CAN 에뮬레이터는, 상호 퍼리퍼럴 스케줄러에 의해 스케줄되는
시뮬레이션 시스템.
The apparatus of claim 1, further comprising a CAN emulator, wherein the CAN emulator is scheduled by a mutual peripheral scheduler.
Simulation system.
청구항 1에서, 상기 프로세서 에뮬레이터는 각각, 큐를 갖는 내부 퍼리퍼럴 스케줄러(Peripheral scheduler)와 협동하고, 상기 큐의 라이트 이벤트의 시간에 의해, 복수의 상기 프로세서 에뮬레이터에 의한 공유 메모리 액세스의 데드록을 회피하는
시뮬레이션 시스템.
2. The processor emulator of claim 1, wherein each of the processor emulators cooperates with an internal Peripheral scheduler having a queue and, by the time of the write event of the queue, deadlocks of shared memory access by a plurality of processor emulators. Evasive
Simulation system.
컴퓨터의 처리에 의해, 시뮬레이션을 수행하는 시뮬레이션 방법에 있어서,
상기 컴퓨터 상에서, 복수의 프로세서 에뮬레이터를 실행시키는 단계와,
상기 컴퓨터 상에서, 복수의 플랜트 시뮬레이터를 실행시키는 단계와,
상기 컴퓨터 상에서, 상기 프로세서 에뮬레이터의 반응지연시간까지, 상기 플랜트 시뮬레이터를 선행 실행시키고, 실제로 상기 플랜트 시뮬레이터가 정지한 시간까지 상기 프로세서 에뮬레이터를 선행 실행하도록 퍼리퍼럴 에뮬레이터를 통하여 통지하는, 외부 퍼리퍼럴 스케줄러를 실행시키는 단계와,
상기 컴퓨터 상에서, 상기 프로세서 에뮬레이터 간의 통신지연시간만큼, 상기 프로세서 에뮬레이터를 선행 실행하도록 통지하는, 상호 퍼리퍼럴 스케줄러를 실행시키는 단계를 갖고,
상기 프로세서 에뮬레이터는, 통지된 시간까지, 보수적으로 처리를 진행하는,
시뮬레이션 방법.
In the simulation method of performing a simulation by processing of a computer,
Running on the computer a plurality of processor emulators,
Running a plurality of plant simulators on said computer;
On the computer, an external peripheral that pre-executes the plant simulator up to the response delay time of the processor emulator and actually informs the processor emulator pre-execute the processor emulator up to the time the plant simulator is stopped. Running a scheduler,
Executing a mutual peripheral scheduler on the computer, notifying the processor emulator to run ahead by a communication delay time between the processor emulators,
The processor emulator conservatively proceeds until the time of notification,
Simulation method.
청구항 8에서, 상기 컴퓨터는, 멀티태스크 시스템이며, 상기 복수의 프로세서 에뮬레이터와, 상기 복수의 플랜트 시뮬레이터와, 상기 외부 퍼리퍼럴 스케줄러와, 상기 상호 퍼리퍼럴 스케줄러는, 개별의 스레드 또는 프로세스로서 실행되는
시뮬레이션 방법.
The computer system of claim 8, wherein the computer is a multitasking system, and the plurality of processor emulators, the plurality of plant simulators, the external peripheral scheduler, and the mutual peripheral scheduler are executed as individual threads or processes. felled
Simulation method.
청구항 9에서, 상기 컴퓨터는, 멀티코어 또는 멀리프로세서 시스템이며, 상기 복수의 프로세서 에뮬레이터와, 상기 복수의 플랜트 시뮬레이터와, 상기 외부퍼리퍼럴 스케줄러와, 상기 상호 퍼리퍼럴 스케줄러는, 상기 멀티프로세서 시스템의 다른 프로세서 또는 코어에 개별로 할당되어 개별의 스레드 또는 프로세스로서 실행되는,
시뮬레이션 방법.
The multiprocessor or multiprocessor system of claim 9, wherein the computer is a multicore or multiprocessor system, and the plurality of processor emulators, the plurality of plant simulators, the external peripheral scheduler, and the mutual peripheral scheduler are the multiprocessor systems. Are individually allocated to different processors or cores of the processor and run as separate threads or processes,
Simulation method.
청구항 10에서, 상기 플랜트 시뮬레이터와, 상기 플랜트 시뮬레이터와 통신하는 상기 퍼리퍼럴 에뮬레이터는, 동일 코어 또는 프로세서에 할당되는
시뮬레이션 방법.
The system of claim 10, wherein the plant simulator and the peripheral emulator in communication with the plant simulator are assigned to the same core or processor.
Simulation method.
청구항 8에서, 상기 복수의 플랜트 시뮬레이터는, 자발적으로 상태를 결정하는 능동적 플랜트 시뮬레이터와, 타이밍을 상기 프로세서 에뮬레이터 측에서 결정하는 수동적 플랜트 시뮬레이터를 갖고, 상기 외부 퍼리퍼럴 스케줄러는, 상기 능동적 플랜트 시뮬레이터와 통신하는 능동적 플랜트 용의 외부 퍼리퍼럴 스케줄러와, 상기 수동적 플랜트 시뮬레이터와 통신하는 수동적 플랜트 용의 외부 퍼리퍼럴 스케줄러를 갖는
시뮬레이션 방법.
The system of claim 8, wherein the plurality of plant simulators have an active plant simulator that voluntarily determines a state, a passive plant simulator that determines timing at the processor emulator side, and the external peripheral scheduler includes: the active plant simulator; Having an external peripheral scheduler for the active plant to communicate with and an external peripheral scheduler for the passive plant to communicate with the passive plant simulator
Simulation method.
청구항 8에서, CAN 에뮬레이터를 실행시키는 단계를 더 갖고, 상기 CAN 에뮬레이터는, 상호 퍼리퍼럴 스케줄러에 의해 스케줄되는
시뮬레이션 방법.
10. The method of claim 8, further comprising executing a CAN emulator, wherein the CAN emulator is scheduled by a mutual peripheral scheduler.
Simulation method.
청구항 8에서, 상기 프로세서 에뮬레이터는 각각, 큐를 갖는 내부 퍼리퍼럴 스케줄러와 협동하고, 상기 큐의 라이트 이벤트의 시간에 의해, 복수의 상기 프로세서 에뮬레이터에 의한 공유 메모리 액세스의 데드록을 회피하는
시뮬레이션 방법.
The processor of claim 8, wherein each of the processor emulators cooperates with an internal peripheral scheduler having a queue and avoids deadlocks of shared memory access by a plurality of the processor emulators by the time of the write event of the queue.
Simulation method.
컴퓨터의 처리에 의해, 시뮬레이션을 수행하는 시뮬레이션 프로그램에 있어서,
상기 컴퓨터 상에서,
복수의 프로세서 에뮬레이터를 실행시키는 단계와,
복수의 플랜트 시뮬레이터를 실행시키는 단계와,
상기 프로세서 에뮬레이터의 반응지연시간까지, 상기 플랜트 시뮬레이터를 선행 실행시키고, 실제로 상기 플랜트 시뮬레이터가 정지한 시간까지 상기 프로세서 에뮬레이터를 선행 실행하도록 퍼리퍼럴 에뮬레이터를 통하여 통지하는, 외부 퍼리퍼럴 스케줄러를 실행시키는 단계와,
상기 프로세서 에뮬레이터 간의 통신지연시간만큼, 상기 프로세서 에뮬레이터를 선행 실행하도록 통지하는, 상호 퍼리퍼럴 스케줄러를 실행시키는 단계를 실행시키고,
상기 프로세서 에뮬레이터는, 통지된 시간까지, 보수적으로 처리를 진행하는,
시뮬레이션 프로그램.
In a simulation program for performing simulation by computer processing,
On the computer,
Running a plurality of processor emulators,
Running a plurality of plant simulators,
To run an external peripheral scheduler, up to the response delay time of the processor emulator, to run the plant simulator up front and actually notify the processor emulator to run the processor emulator up to the time that the plant simulator is stopped. Steps,
Executing a mutual peripheral scheduler, which notifies the processor emulator to run ahead, by a communication delay time between the processor emulators,
The processor emulator conservatively proceeds until the time of notification,
Simulation program.
청구항 15에서, 상기 컴퓨터는, 멀티태스크시스템이며, 상기 복수의 프로세서 에뮬레이터와, 상기 복수의 플랜트 시뮬레이터와, 상기 외부 퍼리퍼럴 스케줄러와, 상기 상호 퍼리퍼럴 스케줄러는, 개별의 스레드 또는 프로세스로서 실행되는
시뮬레이션 프로그램.
The computer system of claim 15, wherein the computer is a multitasking system, wherein the plurality of processor emulators, the plurality of plant simulators, the external peripheral scheduler, and the mutual peripheral scheduler are executed as individual threads or processes. felled
Simulation program.
청구항 16에서, 상기 컴퓨터는, 멀티코어 또는 멀리프로세서 시스템이며, 상기 복수의 프로세서 에뮬레이터와, 상기 복수의 플랜트 시뮬레이터와, 상기 외부 퍼리퍼럴 스케줄러와, 상기 상호 퍼리퍼럴 스케줄러는, 상기 멀티프로세서시스템의 다른 프로세서 또는 코어에 개별로 할당되어 개별의 스레드 또는 프로세스로서 실행되는
시뮬레이션 프로그램.
The multiprocessor system of claim 16, wherein the computer is a multicore or multiprocessor system, and wherein the plurality of processor emulators, the plurality of plant simulators, the external peripheral scheduler, and the mutual peripheral scheduler are the multiprocessor systems. Are allocated to different processors or cores in the system and run as separate threads or processes
Simulation program.
청구항 17에서, 상기 플랜트 시뮬레이터와, 상기 플랜트 시뮬레이터와 통신하는 상기 퍼리퍼럴 에뮬레이터가, 동일 코어 또는 프로세서에 할당되는
시뮬레이션 프로그램.
The system of claim 17, wherein the plant simulator and the peripheral emulator in communication with the plant simulator are assigned to the same core or processor.
Simulation program.
청구항 15에서, 상기 복수의 플랜트 시뮬레이터는, 자발적으로 상태를 결정하는 능동적 플랜트 시뮬레이터와, 타이밍을 상기 프로세서 에뮬레이터 측에서 결정하는 수동적 플랜트 시뮬레이터를 갖고, 상기 외부 퍼리퍼럴 스케줄러는, 상기 능동적 플랜트 시뮬레이터와 통신하는 능동적 플랜트 용의 외부 퍼리퍼럴 스케줄러와, 상기 수동적 플랜트 시뮬레이터와 통신하는 수동적 플랜트 용의 외부 퍼리퍼럴 스케줄러를 갖는
시뮬레이션 프로그램.
The system of claim 15, wherein the plurality of plant simulators have an active plant simulator that voluntarily determines a state, a passive plant simulator that determines timing at the processor emulator side, and the external peripheral scheduler includes: the active plant simulator; Having an external peripheral scheduler for the active plant to communicate with and an external peripheral scheduler for the passive plant to communicate with the passive plant simulator
Simulation program.
청구항 15에서, CAN 에뮬레이터를 실행시키는 단계를 더 갖고, 상기 CAN 에뮬레이터는, 상호 퍼리퍼럴 스케줄러에 의해 스케줄 되는
시뮬레이션 프로그램.
16. The method of claim 15, further comprising executing a CAN emulator, wherein the CAN emulator is scheduled by a mutual peripheral scheduler.
Simulation program.
청구항 15에서 상기 프로세서 에뮬레이터는 각각, 큐를 갖는 내부 퍼리퍼럴 스케줄러와 협동하고, 상기 큐의 라이트 이벤트의 시간에 의해, 복수의 상기 프로세서 에뮬레이터에 의한 공유 메모리 액세스의 데드록을 회피하는
시뮬레이션 프로그램.
The processor of claim 15, wherein the processor emulator cooperates with an internal peripheral scheduler having a queue, respectively, and avoids deadlock of shared memory access by a plurality of the processor emulators by the time of the write event of the queue.
Simulation program.
KR1020137005015A 2010-08-20 2011-07-27 Simulation method, system and program KR101522477B1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2010184845 2010-08-20
JPJP-P-2010-184845 2010-08-20
PCT/JP2011/067132 WO2012023397A1 (en) 2010-08-20 2011-07-27 Simulation method, system and program

Publications (2)

Publication Number Publication Date
KR20130105609A true KR20130105609A (en) 2013-09-25
KR101522477B1 KR101522477B1 (en) 2015-05-21

Family

ID=45605058

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137005015A KR101522477B1 (en) 2010-08-20 2011-07-27 Simulation method, system and program

Country Status (6)

Country Link
US (1) US9147016B2 (en)
EP (1) EP2608040A4 (en)
JP (1) JP5583773B2 (en)
KR (1) KR101522477B1 (en)
CN (1) CN103098032B (en)
WO (1) WO2012023397A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230100136A (en) * 2021-12-28 2023-07-05 재단법인대구경북과학기술원 Method for peripheral device sharing using multi-core processor and electronic apparatus using same

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5332006B2 (en) * 2009-08-07 2013-11-06 株式会社日立製作所 Computer system, program, and method for allocating computing resources for use in simulation
JP5528294B2 (en) * 2010-10-20 2014-06-25 インターナショナル・ビジネス・マシーンズ・コーポレーション Simulation control method, system and program
US9817410B2 (en) * 2012-03-30 2017-11-14 Mitsubishi Electric Corporation Air conditioner testing system, air-conditioning system simulator, and program
CN102682214B (en) * 2012-05-14 2015-01-21 于永利 Conservative-mechanism-based small-step time advance algorithm
US9251308B2 (en) * 2012-07-23 2016-02-02 International Business Machines Corporation Simulation method, system, and program
CN103441904B (en) * 2013-09-03 2017-04-12 北京邮电大学 Communication scheduling simulation method based on time limit
EP2851815A1 (en) * 2013-09-18 2015-03-25 dSPACE digital signal processing and control engineering GmbH Test device for testing a virtual control device in real time
JP5920842B2 (en) 2013-11-28 2016-05-18 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation Simulation apparatus, simulation method, and program
WO2015135740A1 (en) * 2014-03-10 2015-09-17 Mhwirth As Improved method for testing a control system
US9870476B2 (en) * 2014-09-23 2018-01-16 Accenture Global Services Limited Industrial security agent platform
CN105159755A (en) * 2015-10-12 2015-12-16 无锡还有网络科技有限公司 Simulation processing system of multiprocessor
CN105843071B (en) * 2016-03-21 2019-07-16 大连理工大学 A kind of intelligent vehicle motion control matter simulating system
US11314907B2 (en) * 2016-08-26 2022-04-26 Hitachi, Ltd. Simulation including multiple simulators
CN106326599B (en) * 2016-09-14 2020-03-10 苏州浪潮智能科技有限公司 System state monitoring method and device for multiprocessor system simulation
US10157158B2 (en) * 2017-01-27 2018-12-18 Ford Global Technologies, Llc Method and apparatus for distributed computing using controller area network protocols
JP6770935B2 (en) * 2017-07-03 2020-10-21 日立オートモティブシステムズ株式会社 Verification device for vehicle control device
EP3454234A1 (en) * 2017-09-06 2019-03-13 dSPACE digital signal processing and control engineering GmbH Method for providing a real-time simulation for control unit development and simulator for control unit development
CN108447330B (en) * 2018-01-30 2020-07-03 王志强 Virtual-real combined numerical control equipment cascade system and method
EP3521949B1 (en) * 2018-02-01 2021-01-13 Siemens Aktiengesellschaft Device for simulating a controlled machine or installation and method
CN109101456B (en) * 2018-08-30 2021-10-15 浪潮电子信息产业股份有限公司 Data interactive communication method and device in simulation SSD and terminal
CN110059329B (en) * 2018-12-05 2023-06-20 中国航空工业集团公司西安飞机设计研究所 Comprehensive simulation method and comprehensive simulation system for energy of refined electromechanical system
CN111123764A (en) * 2019-12-04 2020-05-08 东风电驱动系统有限公司 CAN signal packaging processing method and system
CN115643124A (en) * 2022-06-23 2023-01-24 南京轶诺科技有限公司 PC simulation automobile CAN bus communication system
CN115134254B (en) * 2022-06-28 2023-11-03 抖音视界(北京)有限公司 Network simulation method, device, equipment and storage medium

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5737711A (en) * 1994-11-09 1998-04-07 Fuji Jukogyo Kabuishiki Kaisha Diagnosis system for motor vehicle
JPH10312315A (en) 1997-05-12 1998-11-24 Nec Corp Software and hardware cooperative simulation system
JP2002073374A (en) 2000-08-30 2002-03-12 Canon Inc Interrupt simulation method and device
JP4152659B2 (en) 2001-04-06 2008-09-17 株式会社ガイア・システム・ソリューション Data processing system and design system
JP2004206699A (en) 2002-12-12 2004-07-22 Matsushita Electric Ind Co Ltd Simulation device, simulation method, and program
JP4057989B2 (en) 2003-09-26 2008-03-05 株式会社東芝 Scheduling method and information processing system
JP2005128692A (en) 2003-10-22 2005-05-19 Matsushita Electric Ind Co Ltd Simulator and simulation method
TW200532560A (en) * 2003-11-13 2005-10-01 Qualcomm Inc System and method for dynamically simulating devices at a computing device
JP4717492B2 (en) * 2005-04-12 2011-07-06 富士通株式会社 Multi-core model simulator
JP2007011720A (en) * 2005-06-30 2007-01-18 Sharp Corp System simulator, system simulation method, control program, and readable recording medium
JP4997360B2 (en) 2005-10-28 2012-08-08 株式会社神戸機械製作所 Molded cooked rice food production equipment
US8352231B2 (en) * 2007-08-30 2013-01-08 International Business Machines Corporation System for performing a co-simulation and/or emulation of hardware and software
JP2009238954A (en) 2008-03-26 2009-10-15 Fujifilm Corp Metal polishing composition and chemical mechanical polishing method
JP5153465B2 (en) * 2008-06-09 2013-02-27 インターナショナル・ビジネス・マシーンズ・コーポレーション Simulation method, system and program
JP5186290B2 (en) * 2008-06-18 2013-04-17 インターナショナル・ビジネス・マシーンズ・コーポレーション Simulation method, system and program
US20100070748A1 (en) * 2008-09-17 2010-03-18 Au Group Electronics Device and methods for simulating controller area network signals
JP4629768B2 (en) * 2008-12-03 2011-02-09 インターナショナル・ビジネス・マシーンズ・コーポレーション Parallelization processing method, system, and program
JP4988789B2 (en) * 2009-05-19 2012-08-01 インターナショナル・ビジネス・マシーンズ・コーポレーション Simulation system, method and program
JP4852629B2 (en) * 2009-06-02 2012-01-11 インターナショナル・ビジネス・マシーンズ・コーポレーション Simulation system, method and program
JP5065344B2 (en) * 2009-07-14 2012-10-31 インターナショナル・ビジネス・マシーンズ・コーポレーション Simulation method, system and program
WO2011046089A1 (en) 2009-10-16 2011-04-21 インターナショナル・ビジネス・マシーンズ・コーポレーション Simulation method, system, and program

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230100136A (en) * 2021-12-28 2023-07-05 재단법인대구경북과학기술원 Method for peripheral device sharing using multi-core processor and electronic apparatus using same

Also Published As

Publication number Publication date
US9147016B2 (en) 2015-09-29
EP2608040A1 (en) 2013-06-26
CN103098032B (en) 2015-10-14
KR101522477B1 (en) 2015-05-21
EP2608040A4 (en) 2018-02-07
CN103098032A (en) 2013-05-08
JP5583773B2 (en) 2014-09-03
JPWO2012023397A1 (en) 2013-10-28
US20130151220A1 (en) 2013-06-13
WO2012023397A1 (en) 2012-02-23

Similar Documents

Publication Publication Date Title
KR101522477B1 (en) Simulation method, system and program
EP2591419B1 (en) Simulating and testing avionics
US20090306952A1 (en) Simulation method, system and program
JP5179249B2 (en) Control device simulation method, system, and program
US8670967B2 (en) Simulation method, system and article of manufacture
JP5651251B2 (en) Simulation execution method, program, and system
JP5379862B2 (en) Simulation method, system and program
Wurst et al. System performance modelling of heterogeneous hw platforms: An automated driving case study
Ernst Automated driving: The cyber-physical perspective
JP2010033130A (en) Simulation method, system, and program
Rehm et al. Performance modeling of heterogeneous HW platforms
CN115879323A (en) Automatic driving simulation test method, electronic device and computer readable storage medium
JP2012093899A (en) Computer system, simulation method, and program
JP2010002968A (en) Simulation method, system, and program
Yan et al. Design verification and validation for reliable safety-critical autonomous control systems
Kohn et al. Timing analysis for hypervisor-based I/O virtualization in safety-related automotive systems
Santos et al. On the timing analysis at automotive real-time embedded systems
JP2010086207A (en) Simulation method, system, and program
JPH11265297A (en) Distributed simulator system
Orlic et al. Real-time and fault tolerance in distributed control software
Farrukh et al. FLYOS: Integrated Modular Avionics for Autonomous Multicopters
Walbroel et al. A Multi-domain Co-simulation Ecosystem for Fully Virtual Rapid ADAS Prototyping
Grolleau Introduction to Real‐Time Scheduling
Grösbrink Adaptive virtual machine scheduling and migration for embedded real-time systems
CN112199076A (en) Flight control software architecture and design method thereof

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180427

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190508

Year of fee payment: 5