KR102493046B1 - Performance Improvement Method in Prediction-based Parallel Gate-level Timing Logic Simulation Using Adaptive Prediction Data - Google Patents

Performance Improvement Method in Prediction-based Parallel Gate-level Timing Logic Simulation Using Adaptive Prediction Data Download PDF

Info

Publication number
KR102493046B1
KR102493046B1 KR1020220135466A KR20220135466A KR102493046B1 KR 102493046 B1 KR102493046 B1 KR 102493046B1 KR 1020220135466 A KR1020220135466 A KR 1020220135466A KR 20220135466 A KR20220135466 A KR 20220135466A KR 102493046 B1 KR102493046 B1 KR 102493046B1
Authority
KR
South Korea
Prior art keywords
expected
simulation
output
design
input
Prior art date
Application number
KR1020220135466A
Other languages
Korean (ko)
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 부산대학교 산학협력단
Priority to KR1020220135466A priority Critical patent/KR102493046B1/en
Application granted granted Critical
Publication of KR102493046B1 publication Critical patent/KR102493046B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/3312Timing analysis
    • 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
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/02CAD in a network environment, e.g. collaborative CAD or distributed simulation

Abstract

The present invention relates to an effective simulation method for maintaining high performance of prediction-based parallel gate-level timing logic simulation even after design modifications aimed at eliminating design errors. In the present invention, high performance of simulation is continuously achieved even after design modification through dynamic variation of expected input and expected output required in the expected I/O use-run mode of execution of prediction-based parallel gate-level timing logic simulation.

Description

예측데이터 가변화를 통한 예측기반 병렬 게이트수준 타이밍 로직 시뮬레이션에서의 성능 향상 방법 {Performance Improvement Method in Prediction-based Parallel Gate-level Timing Logic Simulation Using Adaptive Prediction Data}Performance Improvement Method in Prediction-based Parallel Gate-level Timing Logic Simulation Using Adaptive Prediction Data}

본 발명은 디지털회로 설계에서 진행하는 게이트수준 타이밍 로직 시뮬레이션을 병렬화하여 시뮬레이션의 성능 향상을 달성하는 기술에 관한 것이다. The present invention relates to a technique for improving simulation performance by parallelizing gate-level timing logic simulation in digital circuit design.

"이 과제는 부산대학교 기본연구지원사업(2년)에 의하여 연구되었음""This project was researched by the Pusan National University Basic Research Support Project (2 years)"

반도체 설계 검증에서 시뮬레이션(simulation)이란 소프트웨어적으로 DUV(Design Under Verification)와 이를 구동하는 테스트벤치(testbench, 앞으로는 이를 TB로 약칭함)를 컴퓨터에서 실행가능한 모델(executable model)로서 구성하고, 이 실행가능한 모델을 시뮬레이션 컴파일 과정을 통하여 컴퓨터의 기계언어(machine instruction)들의 시퀀스로 바꾸어서 컴퓨터를 이용하여서 실행시키는 과정이다. 따라서, 시뮬레이션의 실행은 기본적으로 컴퓨터의 기계언어들의 순차적인 수행(sequential execution)을 통하여 이루어지게 된는데, 현재 제일 일반적으로 사용되고 있는 로직 시뮬레이션 기술은 이벤트-구동 로직 시뮬레이션(event-driven logic simulation)이다. 이와 같은 시뮬레이션의 장점은 설계 대상을 실제적으로 구현하기 전에 이의 동작기능 또는 동작특성 등을 가상적으로(virtually) 컴퓨터 상에서 미리 예측해볼 수 있을 뿐만 아니라 소프트웨어적인 방식임으로 높은 유연성을 제공받을 수 있다는 것이고, 단점은 시뮬레이션의 수행이 결국은 기계언어들의 시퀀스가 순차적인 수행을 통하여 이루어지게 됨으로 시뮬레이션 대상이 되는 설계 대상의 복잡도가 큰 경우(예로 최근의 반도체는 수억 게이트급 이상의 설계들이 대부분임)에는 시뮬레이션의 수행 속도가 매우 느리다는 것이다 (예로 상기 1억 게이트급의 설계를 이벤트-구동 게이트수준 타이밍 시뮬레이션으로 수행하는 경우에 순차적 실행으로 인해서 시뮬레이션 속도가 1 cycle/sec가 되고 시뮬레이션을 100,000,000 사이클 수행하여야 한다면 대략 3.2년이 소요됨). 뿐만 아니라, 시뮬레이션 실행 과정에서 1 이상의 설계오류가 발견되어져 설계가 수정되어진 후에는 반복적으로 동일한 시뮬레이션을 실행하여 해당 설계오류가 제대로 제거가 되었는지, 또 설계 수정 과정에서 다른 설계오류가 의도치 않게 도입되지 않았는지를 반드시 확인하여야만 한다. 즉, 시뮬레이션을 통한 설계 검증은 아주 높은 빈도로 반복적으로 시뮬레이tus 실행을 진행하여야만 한다.In semiconductor design verification, simulation is software that configures DUV (Design Under Verification) and a testbench that drives it (hereinafter abbreviated as TB) as an executable model on a computer, and this execution It is a process of converting a possible model into a sequence of machine instructions of a computer through a simulation compilation process and executing it using a computer. Therefore, simulation execution is basically performed through sequential execution of computer machine languages. Currently, the most commonly used logic simulation technology is event-driven logic simulation. . The advantage of such a simulation is that its operating function or characteristics can be predicted in advance on a computer virtually before the design object is actually implemented, and high flexibility can be provided as it is a software method. Since the simulation is eventually performed through sequential execution of a sequence of machine languages, simulation is performed when the complexity of the design target to be simulated is high (for example, most of the recent semiconductors are designs of hundreds of millions of gates or more). The speed is very slow (for example, when the 100 million gate class design is performed with event-driven gate level timing simulation, the simulation speed becomes 1 cycle/sec due to sequential execution and if the simulation must be performed for 100,000,000 cycles, it is about 3.2 years). In addition, after one or more design errors are found and the design is modified during the simulation run, the same simulation is repeatedly run to ensure that the design errors are properly removed and other design errors are not introduced unintentionally during the design correction process. You just have to make sure it doesn't. That is, design verification through simulation must be performed repeatedly with a very high frequency.

최근의 복잡한 디지털 시스템 설계에서는 설계되어져야 하는 대상이 두 가지가 있는데, 그 하나는 DUV이고, 또 다른 하나는 DUV를 시뮬레이션하기 위한 TB이다. DUV는 궁극적으로 반도체 제조 공정을 거쳐서 칩으로 만들어지는 설계 대상이고, 테스트벤치는 구현된 해당 칩이 장착되어서 동작하는 주변상황을 모델링한 것으로서 DUV의 시뮬레이션에 사용된다. DUV를 시뮬레이션 하는 경우에 테스트벤치가 DUV에 입력을 인가하고 인가된 입력으로 DUV에서 출력되는 결과를 받아들여서 처리하는 것이 일반적이다. 이들 DUV와 테스트벤치는 일반적으로 계층적인 구조로 내부에 다양한 1 이상의 하위모듈들을 가지고 있는데, 이들 하위모듈 각각을 설계 블록이라고 할 수 있고, 설계 블록 내부에는 설계 모듈들이 존재하고, 설계 모듈 내부에는 서브모듈들이 존재한다. 이와 같은 설계 블록들, 또는 설계 모듈들, 또는 서브모듈들이나 DUV, 그리고 테스트벤치 각각 또는 일부분 또는 이들의 조합들 또는 이들의 조합들의 일부분을 모두 본 발명에서는 설계객체(design object)(구체적 예로는, Verilog의 경우에는 module, VHDL인 경우에는 entity, SystemC의 경우에는 sc_module들이 모두 설계객체의 일 예임)라고 칭하기로 한다. 또한 한 설계객체는 계층구조를 통해서 내부에 1 이상의 다른 설계객체를 포함할 수 있는데, 이와 같이 계층구조에서 내부에 존재하는 1 이상의 설계객체 각각을 서브설계객체라고 칭하기로 한다.In the recent complex digital system design, there are two objects to be designed, one is the DUV and the other is the TB to simulate the DUV. The DUV is a design target that is ultimately made into a chip through the semiconductor manufacturing process, and the test bench is used for DUV simulation as a model of the surrounding situation in which the implemented chip is mounted and operated. In the case of simulating a DUV, it is common for a testbench to apply inputs to the DUV, accept the results output from the DUV as the applied inputs, and process them. These DUVs and test benches generally have one or more various sub-modules in a hierarchical structure. Each of these sub-modules can be referred to as a design block, design modules exist inside the design block, and sub-modules exist inside the design module. modules exist. All of these design blocks, or design modules, or submodules, or DUV, and each or part of the test bench, or combinations thereof, or parts of combinations thereof, are all designated as design objects in the present invention (specific examples include: Modules in the case of Verilog, entities in the case of VHDL, and sc_modules in the case of SystemC are all examples of design objects). In addition, one design object may include one or more other design objects inside through a hierarchical structure, and in this way, each of one or more design objects existing inside the hierarchical structure will be referred to as a sub-design object.

일반적인 단일 시뮬레이션 방식(본 발명에서 단일 시뮬레이션 방식이란 1개의 시뮬레이터를 단일 CPU 또는 CPU 코어 상에서 수행시키는 것을 단일 시뮬레이션 방식으로 정의함)에 대비하여서, 검증 속도를 높이는 방법으로 2 이상의 시뮬레이터들을 2 이상의 CPU 또는 CPU 코어 상에서 분산병렬(distributed parallel) 방식으로 실행시키는 병렬 시뮬레이션 방법이 있다. 시뮬레이션의 분산수행(distributed processing) 방식인 분산병렬 시뮬레이션(distributed parallel simulation) (혹은 병렬분산 시뮬레이션(parallel distributed simulation)이라고도 하거나 간략히 병렬 시뮬레이션(parallel simulation)이라고도 하는데, 본 발명에서는 분산병렬 시뮬레이션이라 명칭함)은 제일 일반적인 병렬 시뮬레이션 방식으로 시뮬레이션 대상이 되는 DUV와 TB(즉 특정 추상화 수준의 시뮬레이션 모델, 본 발명에서는 이후부터 시뮬레이션 대상이 되는 DUV와 TB 전체를 시뮬레이션 모델, 또는 간단히 "모델"이라고 칭하기로 한다)를 2 이상의 설계객체들로 나누어서 이들 나누어진 각각의 설계객체를 별도의 시뮬레이터에 분산시켜서 병렬적으로 수행시키는 방식이다. 따라서 분산병렬 시뮬레이션을 위해서는 시뮬레이션 대상이 되는 모델을 2 이상의 로컬 설계객체(아래에서 설명됨)들로 나누는 분할(partition) 과정이 필요하다. 본 발명에서는 분할 과정을 통하여 특정 로컬 시뮬레이션(로컬 시뮬레이션이란 병렬 시뮬레이션에서 개개의 시뮬레이터에서 해당 설계객체에 대하여 수행되어지는 시뮬레이션을 말하며, 병렬 시뮬레이션이라함은 2이상의 로컬 시뮬레이션이 병렬적으로 "연동"되어져서 실행되는 시뮬레이션을 말함)에서 수행되어져야 하는 설계객체를 "로컬 설계객체"라 칭하기로 한다. In preparation for a general single simulation method (in the present invention, a single simulation method is defined as a single simulation method in which one simulator is executed on a single CPU or CPU core), two or more simulators are combined with two or more CPUs or more as a method of increasing verification speed. There is a parallel simulation method in which a simulation is executed in a distributed parallel manner on a CPU core. Distributed parallel simulation, which is a distributed processing method of simulation (also referred to as parallel distributed simulation or simply parallel simulation, in the present invention is referred to as distributed parallel simulation) is the most common parallel simulation method, which is a simulation target DUV and TB (that is, a simulation model at a specific level of abstraction, in the present invention, the entire DUV and TB simulation target will be referred to as a simulation model, or simply "model") is divided into two or more design objects, and each of these divided design objects is distributed to a separate simulator to perform them in parallel. Therefore, for distributed parallel simulation, a partitioning process is required to divide the simulation target model into two or more local design objects (described below). In the present invention, a specific local simulation (local simulation refers to a simulation performed for a corresponding design object in an individual simulator in a parallel simulation) through a division process. A design object that has to be executed in the simulation) will be referred to as a "local design object".

일반적으로는 병렬 시뮬레이션을 위해서 로컬 설계객체의 수가 많아지도록 분할을 하는 것이 병렬화 가능성을 높이는 것이 됨으로 병렬 시뮬레이션에 의한 더 큰 성능 향상을 기대할 수 있지만, 현실적으로 분산병렬 방식을 통한 시뮬레이션은 시뮬레이터들 간의 통신 오버헤드 및 동기 오버헤드(communication overhead and synchronization overhead)로 인하여 성능 향상이 매우 제약적이라는 문제점이 있다. 분산병렬 시뮬레이션에서의 동기화 방법은 크게 두가지가 있는데 하나는 보수적(conservative) 방식(혹은 비관적 방식이라고도 함)이고 또 다른 하나는 낙관적(optimistic) 방식이다. 보수적 방식의 동기화는 시뮬레이션 이벤트의 전후 인과관계(causality relation)가 시뮬레이터들 간에서도 반드시 유지됨으로서 롤백(roll-back)이 필요하지 않으나 분산병렬 시뮬레이션의 속도가 제일 느린 로컬 시뮬레이션으로 한정되어진다는 문제점과 과도한 동기화가 일어나는 문제점이 있고, 낙관적 방식의 동기화는 시뮬레이션 이벤트의 전후 인과관계가 시뮬레이터들간에 일시적으로 유지되지 못하게 될 수 있고 이를 수정하기 위한 롤백이 필요함으로서 전체의 롤백의 횟수를 줄이는 것이 분산병렬 시뮬레이션의 성능에 큰 영향을 미치게 된다. 그러나 지금까지의 낙관적 방식에 의한 분산병렬 시뮬레이션에서는 각 로컬 시뮬레이션이 다른 로컬 시뮬레이션들과의 동기화 과정 없이 진행하는 시뮬레이션 시점들이 롤백이 일어나는 것을 최소한으로 되도록 특별하게 고려되어진 것이 아님으로 인하여 과도한 롤백을 초래하게 되는 결과를 초래함으로서 전체 시뮬레이션의 성능을 크게 떨어뜨리게 한다. 결론적으로, 현재의 보수적 방식의 동기화 방법과 통신 방법이나 낙관적 방식의 동기화 방법이나 통신 방법들 모두 통신 오버헤드와 동기 오버헤드로 인하여 2 이상의 시뮬레이터들을 이용한 분산병렬 시뮬레이션의 성능을 크게 떨어뜨리는 제약 요소가 되는 문제점이 있었다. In general, dividing the number of local design objects to increase the number of local design objects for parallel simulation increases the possibility of parallelization, so a greater performance improvement can be expected by parallel simulation. There is a problem that performance improvement is very limited due to head and synchronization overhead (communication overhead and synchronization overhead). There are two main synchronization methods in distributed parallel simulation. One is a conservative method (or also called a pessimistic method) and the other is an optimistic method. Synchronization of the conservative method does not require rollback as the causality relation between simulation events is always maintained between simulators, but the problem is that the speed of distributed parallel simulation is limited to the slowest local simulation. There is a problem in that excessive synchronization occurs, and synchronization in an optimistic manner may temporarily prevent the causal relationship between simulation events from being maintained between simulators, and rollback is required to correct this, so reducing the total number of rollbacks is a distributed parallel simulation. will have a great impact on the performance of However, in the distributed parallel simulation by the optimistic method so far, simulation points in which each local simulation proceeds without synchronization with other local simulations are not specially considered to minimize rollback, resulting in excessive rollback. As a result, the performance of the entire simulation is greatly reduced. In conclusion, all of the current conservative synchronization methods and communication methods, optimistic synchronization methods and communication methods have limitations that significantly reduce the performance of distributed parallel simulation using two or more simulators due to communication overhead and synchronization overhead. there was a problem with

이와 같은 문제점을 개선하는 새로운 이벤트구동 병렬 로직 시뮬레이션 방법으로서 "예측기반의 병렬 시뮬레이션 방법"(특허 10-2006-0092574)이 제안되었다. 특허 10-2006-0092574에서 제안한 예측기반의 병렬 로직 시뮬레이션 방법의 동작방식을 간단히 설명하면 다음과 같다. 예측기반 병렬 로직 시뮬레이션은 예상입출력이용-런 모드와 실체입출력이용-런 모드의 두 가지 실행 모드가 번갈아 가면서 진행되는데, 이 두 가지 실행모드를 설명하면 다음과 같다. 예상입출력이용-런 모드에서는 로컬 설계객체들 각각이 예상입력을 활용하여서 각 로컬시뮬레이터션을 타 로컬 시뮬레이션들과 연동하지 않고서 독립적으로 실행시켜서 각 로컬 설계객체들의 출력에서 실제출력들을 구하게 되고, 동시에 이들 실제출력 값들 각각을 예상출력들과 시뮬레이션 진행 과정 중에 실시간으로 비교하면서 시뮬레이션을 진행한다. 그리고 이들(실제출력과 예상출력) 비교가 일치하게 된다면 로컬시뮬레이터들간에 통신 및 동기화를 완전히 생략하고 각 로컬 시뮬레이션 시간을 전진시킴으로서 시뮬레이션 속도를 크게 높이는 것이 가능하다. 그러나, 만일 실제출력을 예상출력과 비교하여 이들이 일치하지 않으면(이 시뮬레이션 시점을 예상출력/실제출력 불일치시점이라 칭함), 이 예상출력/실제출력 불일치시점에서부터는 모든 로컬시뮬레이터들간에 통신 및 동기화 과정을 수행하면서 실제입력을 활용하는 실제입출력이용-런 모드로 분산병렬시뮬레이션을 진행하게 된다. 즉 이 시뮬레이션 시점에서부터는 로컬시뮬레이터들간에 통신 및 동기화 과정을 수행하게 되는 실제입출력이용-런 모드로 실행 모드가 전환(이 전환이 이루어지는 시뮬레이션 시점을 실제입출력이용-런 적용시점이라고 칭함)된다. 그런데, 특정한 1 이상의 로컬 시뮬레이션은 상기 예상출력/실제출력 불일치를 일으킨 로컬 시뮬레이션보다 빠르게 진행하여서 이들의 로컬 시뮬레이션 시간이 상기 예상출력/실제출력 불일치시점을 이미 지나쳐 버린 상황에서는 이들의 로컬 시뮬레이션 시간을 되돌려서 상기 예상출력/실제출력 불일치시점으로 되돌린 후 재실행(restart after rollback) 시킬 필요성이 존재한다. 이를 위하여 각 로컬 시뮬레이션들은 예상입출력이용-런 모드로 진행하는 경우에는 일정 간격마다 체크포인트(checkpoint)를 만들면서 진행되어야 한다. 예상출력/실제출력 불일치가 발생하고 하나 이상의 로컬 시뮬레이션의 로컬 시뮬레이션 시간이 예상출력/실제출력 불일치시점을 넘어선 경우에는 상기 예상출력/실제출력 불일치시점에서 제일 가까운 체크포인트로 모든 로컬 시뮬레이션들이 롤백을 수행하고 난 후 상기 예상출력/실제출력 불일치 시점 직전까지 각 로컬 시뮬레이션들은 예상입출력이용-런 모드로 진행한 후에 모든 로컬 시뮬레이션들의 로컬 시뮬레이션 시간을 예상출력/실제출력 불일치시점으로 맞춘 후에 이 시점부터는 실제입력들을 사용하는(실제입력들은 특정 로컬 시뮬레이션의 실제출력임) 실제입출력이용-런 모드로 모든 로컬 시뮬레이션들이 실행(즉 실제입출력이용-런 모드에서는 전통적인 통상적 방식의 병렬 시뮬레이션이 실행)되어진다. 이와 같은 실제입출력이용-런 모드에서 각 로컬 시뮬레이션은 다른 로컬 시뮬레이션들과 통신 및 동기화를 초래하는 시뮬레이션을 진행하면서(따라서 시뮬레이션의 성능을 제약하는 통신 오버헤드와 동기 오버헤드를 발생시키면서 시뮬레이션을 진행하면서), 동시에 실제출력과 예상출력을 실시간으로 비교한다. 이 실제출력이 예상출력과 일정 횟수(일 예로 10회)만큼 일치하는 상황이 모든 로컬 시뮬레이션들에서 일어나게 되면, 각 로컬 시뮬레이션들은 다시 예상입출력이용-런 모드로 재전환하여 예상입력을 사용하여 동기 및 통신 과정 없이 시뮬레이션을 진행한다. 이와 같은 과정을 통해서 예측기반 병렬 로직 시뮬레이션 방법에서는 로컬 설계객체들에 대한 시뮬레이션 과정에서 실제입력값 대신 예상입력값을 입력값으로 사용하여서 시뮬레이션을 진행하고 얻어지는 실제출력값이 예상출력값과 동일하면 다른 로컬 설계객체들과의 동기화 및 통신이 필요하지 않고 각 로컬 설계객체들이 완전 독립적으로 실행될 수 있도록 함으로서 병렬 시뮬레이션에 의한 성능 향상을 기대할 수 있다 (자세한 내용은 특허 10-2006-0092574를 참조함). 또한 추가적으로 문제점을 개선하는 새로운 이벤트구동 병렬 로직 시뮬레이션 방법으로서 "예측기반의 병렬 시뮬레이션 방법"(특허 10-2020-0100940와 10-2021-0103195)이 제안되었다.A "prediction-based parallel simulation method" (Patent No. 10-2006-0092574) has been proposed as a new event-driven parallel logic simulation method to improve such problems. The operation method of the prediction-based parallel logic simulation method proposed in Patent No. 10-2006-0092574 is briefly described as follows. Prediction-based parallel logic simulation proceeds alternately between two execution modes: expected I/O use-run mode and actual I/O use-run mode. These two execution modes are described as follows. In the expected input/output use-run mode, each of the local design objects utilizes the expected input and executes each local simulation independently without interlocking with other local simulations to obtain actual outputs from the output of each local design object, and at the same time these The simulation proceeds while comparing each of the actual output values with the expected output values in real time during the simulation process. And if these comparisons (actual output and expected output) are matched, it is possible to greatly increase the simulation speed by completely omitting communication and synchronization between local simulators and advancing each local simulation time. However, if the actual output is compared with the expected output and they do not match (this simulation point is called the expected output/actual output discrepancy point), from this expected output/actual output discrepancy point, communication and synchronization process between all local simulators while performing, the distributed parallel simulation proceeds in the real input/output use-run mode that utilizes real inputs. That is, from this point of simulation, the execution mode is switched to the actual input/output use-run mode in which communication and synchronization processes are performed between local simulators (the simulation point at which this transition occurs is called the actual input/output use-run application point). However, one or more specific local simulations proceed faster than the local simulation that caused the expected output/actual output discrepancy, so that their local simulation time has already passed the expected output/actual output discrepancy point. There is a need to restart after rollback after returning to the point of inconsistency between the expected output and actual output. To this end, each local simulation must be conducted while creating a checkpoint at regular intervals in case of proceeding in the expected I/O use-run mode. When an expected output/actual output mismatch occurs and the local simulation time of one or more local simulations exceeds the expected output/actual output discrepancy point, all local simulations roll back to the nearest checkpoint from the expected output/actual output discrepancy point. After that, each local simulation proceeds in the expected I/O use-run mode until just before the point of the expected output/actual output discrepancy, then adjusts the local simulation time of all local simulations to the point of the expected output/actual output discrepancy. From this point on, the actual input All local simulations are run in real-output-run mode (i.e. in real-output-run mode, traditional parallel simulations are run). In this real input/output use-run mode, each local simulation proceeds with a simulation that causes communication and synchronization with other local simulations (therefore, while performing a simulation while generating communication overhead and synchronization overhead that limit simulation performance) ), and at the same time compare the actual output with the expected output in real time. When a situation in which this actual output coincides with the expected output a certain number of times (eg, 10 times) occurs in all local simulations, each local simulation reverts to the expected I/O use-run mode and uses the expected input to synchronize and Simulation proceeds without communication process. Through this process, in the prediction-based parallel logic simulation method, in the simulation process for local design objects, simulation is performed by using expected input values instead of actual input values as input values, and if the actual output values obtained are the same as the expected output values, another local design Synchronization and communication with objects are not required, and each local design object can be executed completely independently, so performance improvement by parallel simulation can be expected (refer to Patent 10-2006-0092574 for details). In addition, a “prediction-based parallel simulation method” (Patent Nos. 10-2020-0100940 and 10-2021-0103195) has been proposed as a new event-driven parallel logic simulation method that additionally improves problems.

특허 10-2006-0092574와 10-2020-0100940와 10-2021-0103195에서 제안된 예측기반의 병렬 게이트수준 타이밍 시뮬레이션 방법들에서 시뮬레이션의 성능 향상을 높게 유지하기 위해서는 높은 예측 정확도가 확보되어지는 것이 필수적이다. 그러나, 설계오류가 발견되어져서 설계변경이 되고, 특히 이 설계오류가 함수적 설계오류인 경우에 이를 제거하기 위한 설계 수정(본 특허에서는 이를 "함수적 설계변경"이라 칭함), 혹은 함수적 설계오류가 아닌 순수한 타이밍 설계오류(본 특허에서는 이를 "타이밍 설계오류"라 칭함)인 경우에 이를 제거하기 위한 설계 수정(본 특허에서는 이를 "타이밍 설계변경"이라 칭함) 이후에 진행되어지는 예측기반의 병렬 게이트수준 타이밍 시뮬레이션에서 높은 예측 정확도가 유지될 수 없음으로 인하여 병렬 시뮬레이션에 의한 성능 향상을 기대할 수 없다.In the prediction-based parallel gate-level timing simulation methods proposed in Patent Nos. 10-2006-0092574, 10-2020-0100940, and 10-2021-0103195, it is essential to ensure high prediction accuracy in order to keep the simulation performance high. to be. However, a design error is found and becomes a design change, and in particular, when this design error is a functional design error, design modification to eliminate it (referred to as "functional design change" in this patent), or functional design In the case of a pure timing design error that is not an error (in this patent, it is referred to as "timing design error"), the prediction-based Since high prediction accuracy cannot be maintained in parallel gate-level timing simulation, performance improvement by parallel simulation cannot be expected.

따라서 본 발명의 목적은, 예측기반 병렬 게이트수준 타이밍 시뮬레이션 방법에서 예측기반 병렬 게이트수준 타이밍 시뮬레이션 성능을 설계오류를 제거하기 위한 설계변경 후에도 계속적으로 높게 유지할 수 있는 방법을 제공하는 것이다.Accordingly, an object of the present invention is to provide a method capable of continuously maintaining high prediction-based parallel gate-level timing simulation performance even after a design change to eliminate design errors in a prediction-based parallel gate-level timing simulation method.

상기 목적들을 달성하기 위하여, 본 발명에 따른 설계 검증 방법을 적용하기 위하여 필요한 설계 검증 장치는 검증 소프트웨어와 1 또는 2 이상의 시뮬레이터가 인스톨된 1 또는 2 이상의 컴퓨터로 구성될 수 있다. 본 발명에서의 설계 검증 방법을 적용할 수 있는 또 다른 설계 검증 장치는 검증 소프트웨어와 1 또는 2 이상의 시뮬레이터가 인스톨된 1 또는 2 이상의 컴퓨터로 구성된다. 검증 소프트웨어는 컴퓨터에서 실행되며, 만일 상기 설계 검증 장치에 2 이상의 컴퓨터들이 있는 경우에는 이들 2 이상의 컴퓨터는 버스로 연결되어져서 컴퓨터들 간에 시뮬레이션 실행 중에 발생하는 데이터의 이동을 가능하게 한다. 설계 검증 용도의 상기 1 또는 2 이상의 시뮬레이터는 이벤트-구동 시뮬레이터(event-driven simulator)로 구성(분산병렬 시뮬레이션을 이벤트-구동 시뮬레이터들로만 구성하여서 병렬 시뮬레이션하는 것을 PDES(Parallel Discrete Event Simulation)이라 함)되어 있다.In order to achieve the above objects, a design verification device necessary to apply the design verification method according to the present invention may be composed of one or more computers in which verification software and one or more simulators are installed. Another design verification apparatus to which the design verification method in the present invention can be applied is composed of one or more computers in which verification software and one or more simulators are installed. Verification software runs on a computer, and if there are two or more computers in the design verification device, these two or more computers are connected by a bus to enable movement of data generated during simulation execution between the computers. The one or two or more simulators for the purpose of design verification are configured as event-driven simulators (Parallel Discrete Event Simulation (PDES) is a parallel simulation by configuring distributed parallel simulation only with event-driven simulators). there is.

설계객체의 상태정보란 특정 시뮬레이션 시점(예로, 시뮬레이션 시점 29,100,511 나노초) 또는 일정 시뮬레이션 시간구간(예로 시뮬레이션 시점 29,100,200 나노초에서부터 29,100,300 나노초까지의 100 나노초 구간)에서 특정 추상화 수준의 모델링을 통하여 모델 내에 존재하는 플립플롭 모델이나 래치 모델 혹은 메모리 모델 혹은 궤환루프를 이루는 조합적 경로 (combinational feedback loop) 모델이 가져야 하는 변수들이나 시그널들의 값들을 포함한 동적정보를 말한다. 설계객체의 동적정보란 시뮬레이션 과정에서 특정 시뮬레이션 시점 또는 특정 시뮬레이션 구간(시뮬레이션 전체 구간일 수 있음)에서의 상기 설계객체에 존재하게 되는 1 이상의 시그널들 또는 신호선들의 논리값들, 또는 모델 또는 설계객체에 존재하게 되는 1 이상의 변수들의 값 또는 상수들 값을 말함. 이들 동적정보는 시뮬레이션 실행 과정에서 얻을 수 있는데, 시뮬레이션 실행 과정에서 동적정보를 얻는 실 예를 든다면 대표적인 방법이 Verilog 시뮬레이터에서는 $dumpvars, $dumpports, $dumpall, $readmemb, $readmemh 등의 시스템테스크 또는 사용자정의 시스템테스크(user-defined system task)를 사용하여서 얻을 수 있다. 또한 설계객체의 입력정보란 특정 시뮬레이션 시간구간(이 특정 시뮬레이션 시간구간은 시뮬레이션 전체 시간구간이 될 수 있음)에서의 설계객체의 모든 입력(input), 입출력(inout) 상에서의 값들을 말하고, 설계객체의 출력정보란 특정 시뮬레이션 시간구간(시뮬레이션 전체 시간구간이 될 수 있음)에서의 설계객체의 모든 출력(output), 입출력 상에서의 값들을 말하고, 설계객체의 입출력정보란 특정 시뮬레이션 시간구간(시뮬레이션 전체 시간구간이 될 수 있음)에서의 설계객체의 모든 입력, 출력, 입출력 상에서의 값들을 말한다.The state information of a design object is a flip that exists in a model through modeling at a specific level of abstraction at a specific simulation time point (eg, simulation time 29,100,511 nanoseconds) or a certain simulation time interval (eg, 100 nanosecond interval from simulation time 29,100,200 nanoseconds to 29,100,300 nanoseconds). It refers to dynamic information including values of variables or signals that a flop model, latch model, memory model, or combinatorial feedback loop model should have. The dynamic information of a design object is one or more signals or logic values of signal lines that exist in the design object at a specific simulation time point or a specific simulation period (which may be the entire simulation period) in the simulation process, or in the model or design object. The value of one or more variables or constants that come into existence. These dynamic information can be obtained during the simulation execution process. To give an example of obtaining dynamic information during the simulation execution process, a typical method is system tasks such as $dumpvars, $dumpports, $dumpall, $readmemb, $readmemh, etc. This can be achieved by using a user-defined system task. In addition, the input information of a design object refers to the values of all inputs and inputs and outputs of a design object in a specific simulation time interval (this specific simulation time interval can be the entire simulation time interval), and the design object The output information of a design object refers to all the outputs of a design object in a specific simulation time section (which can be the entire simulation time section), and the values on the input/output, and the input/output information of a design object refers to the specific simulation time section (the entire simulation time). It refers to the values on all inputs, outputs, and inputs and outputs of the design object in (can be a section).

특허 10-2006-0092574와 10-2020-0100940와 10-2021-0103195에서 제시된 예측기반의 병렬 게이트수준 타이밍 시뮬레이션 방법은 설계가 진행되는 과정에서는 예상입력/예상출력으로서 시간적으로 앞에서 수행된 시뮬레이션 결과값들을 이용하거나, 또는 점진적 구체화 진행 과정 중에서 추상화 상위수준 모델(즉 레지스터전송수준 모델)을 이용한 시간적으로 앞에서 수행된 시뮬레이션 결과들을 이용한다. 즉 앞선 시뮬레이션 실행 과정에서 얻을 수 있는(Verilog 시뮬레이tus 실행에서는 $dumpvars, $dumpports, $dumpall, $readmemb, $readmemh 등의 시스템테스크 또는 사용자정의 시스템테스크를 통하여 얻을 수 있는) 1이상의 설계객체들에 대한 입력정보와 출력정보를 파일로 저장한 후, 이후에 진행되는 시뮬레이션을 예측기반 병렬 게이트수준 타이밍 시뮬레이션으로 진행하는 과정에서 필요한 예상입력(expected input)과 예상출력(expected output)으로 활용함으로서 해당 시뮬레이션의 성능을 높일 수 있게 되는 것이다 (본 특허에서는 특허 10-2006-0092574와 10-2020-0100940와 10-2021-0103195에서 제시된 이와 같은 방법을 "패턴기반의 정적 예상입력/예상출력 활용 방법"이라고 칭하기로 한다). The prediction-based parallel gate-level timing simulation method presented in Patent Nos. 10-2006-0092574, 10-2020-0100940, and 10-2021-0103195 is expected input/output during the design process, and the simulation results previously performed temporally are used, or the results of simulations previously performed temporally using an abstracted high-level model (ie register transfer level model) are used during the progressive materialization process. That is, one or more design objects that can be obtained in the previous simulation run process (obtained through system tasks such as $dumpvars, $dumpports, $dumpall, $readmemb, $readmemh, etc. or user-defined system tasks in Verilog simulation run) After saving the input and output information for , it is used as the expected input and expected output required in the process of proceeding with the prediction-based parallel gate-level timing simulation for the subsequent simulation. It is possible to increase the performance of the simulation (in this patent, the methods presented in patents 10-2006-0092574, 10-2020-0100940, and 10-2021-0103195 are referred to as "pattern-based static expected input/expected output utilization method"). shall be referred to as).

그러나, 통상적으로 앞서 실행된 시뮬레이션과 현재 실행해야하는 시뮬레이션 사이에서는 설계오류를 앞서 실행된 시뮬레이션을 통하여 발견하고 이를 제거하는 디버깅 과정을 통하여 설계오류를 제거하기 위한 설계변경이 이루어진 경우가 대부분이다 (즉, 설계변경이 전혀 이루어지지 않았는데 앞서 이미 실행된 시뮬레이션과 동일한 시뮬레이션을 재실행할 필요는 사실상 없음). 이와 같은 설계변경 과정에서는 종종 의도하지 않게 새로운 설계오류가 1 이상의 설계객체에 추가 발생될 가능성이 항상 존재함으로 설계변경 이후에는 반드시 반복적인 시뮬레이션이 꼭 필요하다. 이와 같은 설계변경 과정을 통해서 1 이상의 설계객체가 수정이 된 경우, 상기 패턴기반의 정적 예상입력/예상출력 활용 방법에서는 앞선 시뮬레이션 실행 과정에서 얻어진 예상입력/예상출력의 예측 정확도가 매우 낮아질 위험성이 상존하게 되며, 이 경우에는 특허 10-2006-0092574와 10-2020-0100940와 10-2021-0103195에서 제안한 예측기반의 병렬 게이트수준 타이밍 시뮬레이션 방법은 예상입출력이용-런 모드로 수행할 수 없고 통신 오버헤드와 동기 오버헤드가 발생하는 실제입출력이용-런 모드로 수행될 수 밖에 없음으로 병렬 게이트수준 타이밍 시뮬레이션에서 큰 성능저하가 발생하게 된다.However, in most cases, between the previously executed simulation and the current simulation, a design change was made to remove the design error through a debugging process in which design errors are found through previously executed simulations and removed (i.e., There is virtually no need to re-run the same simulation as previously run, even though no design changes have been made). In such a design change process, there is always a possibility that a new design error may be added to one or more design objects unintentionally. Therefore, iterative simulation is absolutely necessary after design change. If one or more design objects are modified through such a design change process, in the pattern-based static expected input/expected output utilization method, there is a risk that the prediction accuracy of the expected input/expected output obtained in the previous simulation execution process will be very low. In this case, the prediction-based parallel gate-level timing simulation method proposed in patents 10-2006-0092574, 10-2020-0100940, and 10-2021-0103195 cannot be performed in the expected I/O use-run mode and requires communication overhead. Since it has to be performed in actual I/O use-run mode in which synchronization overhead occurs, a large performance degradation occurs in parallel gate-level timing simulation.

이와 같은 문제점을 해결하기 위하여 본 특허에서는 특허 10-2006-0092574와 10-2020-0100940와 10-2021-0103195에서 사용한 "패턴기반의 정적 예상입력/예상출력 활용 방법"과 함께 새로운 2가지 방법으로서 "추상화 상위수준 모델기반의 예상입력/예상출력 동적 발생 방법"과 "추상화 혼합수준 모델기반의 예상입력/예상출력 동적 발생 방법"을 추가적으로 사용한다. 본 특허에서의 상기 새로운 2가지 방법들과 특허 10-2006-0092574와 10-2020-0100940와 10-2021-0103195에서 사용한 "패턴기반의 정적 예상입력/예상출력 활용 방법"과의 차이점은 본 특허에서의 상기 새로운 2가지 방법들에서는 예상입력/예상출력을 시뮬레이션 실행 과정을 통하여 실시간에서 동적으로 발생(dynamically generation)되어지도록 하여 활용하는 반면에, 특허 10-2006-0092574와 10-2020-0100940와 10-2021-0103195에서 사용한 패턴기반의 정적 예상입력/예상출력 활용 방법은 패턴 형식으로 이미 파일에 정적으로 저장되어진(statically stored) 예상입력/예상출력을 활용한다는 것이다. 이와 같이 이전 시뮬레이션 실행 과정에서 확보되어진 패턴기반의 정적 예상입력/예상출력의 장점은 파일에 정적으로 이미 저장되어져 있음으로 이를 예측기반 병렬 시뮬레이션의 예상입력/예상출력으로 사용하기 위해서 매우 빠른 단순한 메모리 읽기 동작을 활용할 수 있다는 것이지만, 결정적 약점으로는 설계오류 수정으로 인하여 설계가 변경된 이후에 진행되어지는 예측기반 병렬 게이트수준 타이밍 시뮬레이션에서는 설계변경이 설계변경전에 얻어진 예상입력값/예상출력값을 무효화할 수 있음으로 높은 예측정확도를 보장하기가 매우 어렵고, 결과적으로 전체 시뮬레이션 실행시간에서 예상입출력이용-런 모드보다는 실제입출력이용-런 모드가 시뮬레이션 시간 대부분을 차지하게 됨으로 병렬 시뮬레이션을 통하여 기대하는 시뮬레이션 성능 향상을 얻기가 어렵다는 것이다.In order to solve this problem, in this patent, two new methods are used together with the "pattern-based static expected input/expected output utilization method" used in patents 10-2006-0092574, 10-2020-0100940, and 10-2021-0103195. "Expected input/expected output dynamic generation method based on abstract high-level model" and "Expected input/expected output dynamic generation method based on abstraction mixed level model" are additionally used. The difference between the two new methods in this patent and the "pattern-based static expected input/expected output utilization method" used in patents 10-2006-0092574, 10-2020-0100940, and 10-2021-0103195 is In the above two new methods, expected input/expected output is dynamically generated in real time through a simulation execution process, while patents 10-2006-0092574 and 10-2020-0100940 and The pattern-based static expected input/expected output utilization method used in 10-2021-0103195 is to utilize expected input/expected output that is already statically stored in a file in the form of a pattern. As such, the advantage of the pattern-based static expected input/expected output obtained in the previous simulation execution process is that it is already statically stored in a file, so it is very fast and simple memory reading to use it as the expected input/expected output of the prediction-based parallel simulation. operation can be utilized, but a critical weakness is that in the prediction-based parallel gate-level timing simulation that proceeds after the design change due to design error correction, the design change can invalidate the expected input/expected output value obtained before the design change. As a result, it is very difficult to guarantee high prediction accuracy, and as a result, the actual I/O use-run mode rather than the expected I/O-run mode occupies most of the simulation time during the entire simulation run time, so that the expected simulation performance improvement is obtained through parallel simulation. is that it is difficult

이와 같은 문제점을 해결하기 위하여 본 특허에서 새롭게 제안하는 "추상화 상위수준 모델기반의 예상입력/예상출력 동적 발생 방법"과 "추상화 혼합수준 모델기반의 예상입력/예상출력 동적 발생 방법"(본 특허에서는 이 두가지 방법들을 통칭해서 "예상입력/예상출력 동적 발생 방법"이라 칭함)은 설계가 변경된 이후에 진행되어지는 예측기반 병렬 게이트수준 타이밍 시뮬레이션 실행에서 설계 검증 대상이 되는 게이트수준의 타이밍 정확한 모델을 분할하여 2 이상의 로컬 설계객체들로 나누어 이들 각각을 예측기반 병렬 시뮬레이션의 로컬 시뮬레이션을 통하여 실행하면서, 이와 동시에 각 로컬 시뮬레이션에서는 추상화 상위수준의 모델 전체 혹은 추상화 혼합수준의 모델 전체도 같이 시뮬레이션 실행시키면서 예상입력/예상출력을 실시간으로 발생되도록 하여서 이를 각 로컬 시뮬레이션에서 활용한다. 이와 같은 예상입력/예상출력을 각 로컬 시뮬레이션에서 추가적인 시뮬레이션 실행을 통하여 동적으로 발생시키는 방법은 설계변경이 이루어진 경우에서도 매우 높은 예측정확도를 매우 빠르게 얻을 수 있다. 그러나, 각 로컬 시뮬레이션에서 원래의 각 로컬 설계객체를 위한 시뮬레이션과 함께 추가적인 시뮬레이션 실행이 진행되어지면 각 로컬 시뮬레이션의 성능저하가 발생될 수 있다는 위험성도 존재한다. 그러나, 이와 같은 위험성을 효과적으로 제거시키기 위해 본 특허에서의 각 로컬 시뮬레이션에서 원래의 각 로컬 설계객체를 위한 시뮬레이션과 함께 예측입력/예측출력을 동적으로 확보하기 위하여 추가적으로 진행되는 시뮬레이션 실행은 (원래의 각 로컬 설계객체를 위한 시뮬레이션이 게이트수준 타이밍 시뮬레이션인데 반해서) 추상화수준이 높은 레지스터전송수준 함수적 시뮬레이션이거나 레지스터전송수준과 게이트수준이 혼합되어진 혼합수준의 대부분함수적/국소적타이밍 혼합 시뮬레이션(largely functional and minimally timing mixed simulation)으로 진행되어짐(즉, 국소적으로 게이트수준 타이밍 시뮬레이션이 진행되는 부분은 설계가 변경된 부분이 존재하는 최소한의 설계객체로 한정하고 전체 모델의 대부분을 차지하는 나머지 부분들은 레지스터전송수준의 함수적 시뮬레이션으로 진행되어짐)으로 추가적인 시뮬레이션 실행에 의한 각 로컬 시뮬레이션의 성능저하를 방지한다 (레지스터전송수준의 함수적 시뮬레이션은 게이트수준 타이밍 시뮬레이션에 비하여 추상화수준이 높음으로 인하여 최소 100배 혹은 그 이상 빠르게 수행될 수 있음에 주목). In order to solve such a problem, this patent newly proposes "Expected input/expected output dynamic generation method based on abstraction high-level model" and "Expected input/expected output dynamic generation method based on abstraction mixed level model" (in this patent, These two methods are collectively referred to as "expected input/expected output dynamic generation method") divides the accurate gate-level timing model, which is the design verification target, in the prediction-based parallel gate-level timing simulation execution that proceeds after the design is changed. By dividing into two or more local design objects, each of them is executed through local simulation of prediction-based parallel simulation, and at the same time, in each local simulation, the entire model at a higher level of abstraction or the entire model at a mixed level of abstraction is also simulated, and expected input / Create the expected output in real time and use it in each local simulation. The method of dynamically generating such expected input/expected output through additional simulation execution in each local simulation can obtain very high prediction accuracy very quickly even when a design change is made. However, there is also a risk that performance degradation of each local simulation may occur if additional simulation execution is performed along with the original simulation for each local design object in each local simulation. However, in order to effectively eliminate this risk, the simulation run, which is additionally performed to dynamically secure prediction input/prediction output along with simulation for each original local design object in each local simulation in this patent (original each Whereas simulation for local design objects is gate-level timing simulation), register-transfer-level functional simulation with a high level of abstraction or mixed-level mostly functional/local timing mixed simulation (largely functional and gate-level mixed register transfer level) minimally timing mixed simulation) (i.e., the part where gate-level timing simulation is locally performed is limited to the minimum design object where the design change part exists, and the rest of the part that occupies most of the entire model is at the register transfer level Functional simulation) prevents performance degradation of each local simulation due to additional simulation execution (register transfer level functional simulation is at least 100 times faster than gate level timing simulation due to its higher level of abstraction) Note that it can be done).

예상입력/예상출력 동적 발생은 "추상화 상위수준 모델기반의 예상입력/예상출력 동적 발생 방법"과 "추상화 혼합수준 모델기반의 예상입력/예상출력 동적 발생 방법"의 2가지로 사용하는 것은 설계변경을 통하여 모델의 함수적 성질(functionality)이 변경되어질 수 있거나, 또는 "함수적 성질은 그대로 동일하게 유지하고 타이밍만 변경"될 수 있기 때문이다. 여기에서 "함수적 성질은 그대로 동일하게 유지하고 타이밍만 변경"이라 함은 설계변경전 시뮬레이션 결과값(시뮬레이션 결과값이라 함은 시뮬레이션 실행에서 얻어지는 동적정보를 말함)과 설계변경후 시뮬레이션 결과값의 차이가 설계객체에 존재하는 클럭의 한주기보다 작은 것을 의미한다. 즉 설계변경이 모델의 함수적 성질(functionality)을 변경시킨 경우에는 "추상화 상위수준 모델기반의 예상입력/예상출력 동적 발생 방법"을 사용하여 예상입력/예상출력이 동적으로 빠르게 발생되어지도록 하며. 설계변경이 모델의 함수적 성질은 그대로 유지하지만 타이밍만을 변경시킨 경우에는 "추상화 혼합수준 모델기반의 예상입력/예상출력 동적 발생 방법"을 사용하여 예상입력/예상출력이 동적으로 정확하게 발생되어지도록 한다. 또한 "추상화 혼합수준 모델기반의 예상입력/예상출력 동적 발생 방법" 실행 과정에서는 추가적으로 "혼합수준 모델에서 게이트수준 설계객체 확장" 방법을 사용한다. 상기 혼합수준 모델에서 게이트수준 설계객체 확장 방법이란 혼합수준 모델에서 이미 존재하는 게이트수준 설계객체 DO_a를 포함하는 제일 작은 게이트수준 설계객체 DO_b(즉 모델에서 DO_b는 DO_a를 내부적으로 서브설계객체로 포함하지만 제일 작은 설계객체)를 혼합수준 모델에서 새로운 게이트수준 설계객체로 지정하는 것이다. 상기 혼합수준 모델에서 게이트수준 설계객체 확장 방법이 적용되어지는 경우는 설계변경이 상기 함수적 성질은 그대로 동일하게 유지하지만 타이밍이 변경되어지는 경우이다. 혼합수준 모델에서 게이트수준 설계객체 확장 방법이 적용되어져서 얻어질 수 있는 유용한 효과로는 시뮬레이션 성능저하를 최소화시키면서 "추상화 혼합수준 모델기반의 예상입력/예상출력 동적 발생 방법" 의 예측정확도를 높혀서 예측기반 병렬 게이트수준 타이밍 시뮬레이션의 동작 모드가 실제입출력이용-런 모드로 전환되지 않고 (예측기반 병렬 시뮬레이션의 성능을 극대화하는 것에 핵심이 되는) 예상입출력이용-런 모드에서 계속적으로 동작되어질 수 있게끔 한다.Dynamic generation of expected input/expected output is divided into two types: "dynamic generation method of expected input/expected output based on abstract high-level model" and "dynamic generation method of expected input/expected output based on mixed-level model of abstraction". This is because the functional property of the model can be changed through, or “the functional property remains the same and only the timing is changed”. Here, "the functional properties are kept the same and only the timing is changed" means the difference between the simulation results before the design change (the simulation result value refers to the dynamic information obtained from simulation execution) and the simulation result values after the design change. means that is smaller than one cycle of the clock existing in the design object. In other words, if the design change changes the functionality of the model, the expected input/expected output is generated dynamically and quickly by using the "dynamic generation method of expected input/expected output based on an abstract high-level model". If the design change maintains the functional nature of the model but only changes the timing, use the "dynamic generation method of expected input/expected output based on a mixed level model of abstraction" so that expected input/expected output can be generated dynamically and accurately. . In addition, in the execution process of "Dynamic Generation Method of Expected Input/Expected Output Based on Abstraction Mixed Level Model", the "gate level design object extension in mixed level model" method is additionally used. In the mixed-level model, the gate-level design object extension method is the smallest gate-level design object DO_b that includes the gate-level design object DO_a that already exists in the mixed-level model (ie, DO_b in the model includes DO_a internally as a sub-design object). The smallest design object) is designated as a new gate-level design object in the mixed-level model. The case in which the gate level design object extension method is applied in the mixed level model is a case in which the design change maintains the same functional property but the timing is changed. Useful effects that can be obtained by applying the gate-level design object extension method in mixed-level models include minimizing simulation performance degradation and predicting by increasing the prediction accuracy of "dynamic generation method of expected input/expected output based on abstraction mixed-level model" Enables the operating mode of the underlying parallel gate-level timing simulation to continue operating in the expected I/O use-run mode (which is key to maximizing the performance of prediction-based parallel simulations) without switching to the actual I/O use-run mode.

상술한 바와 같이, 본 발명의 효과는 예측기반 병렬 시뮬레이션 방법에서 통신 오버헤드와 동기 오버헤드를 최소화하는 병렬화를 통하여 시뮬레이션의 성능 향상을 최대한으로 유지할 수 있도록 하는 예측입력/예측출력을 위한 3가지의 다른 방법들을 통하여 설계오류 제거를 위해 필요한 설계변경 진행 여부에 상관없이 전체적인 시뮬레이션의 성능 향상을 최대한 유지시킬 수 있는 새로운 예측기반 병렬 시뮬레이션 방법을 제공하는 것이다. As described above, the effect of the present invention is three types of prediction input / prediction output that can maintain the maximum performance improvement of simulation through parallelization that minimizes communication overhead and synchronization overhead in the prediction-based parallel simulation method. It is to provide a new prediction-based parallel simulation method that can maintain the overall performance improvement of the simulation as much as possible regardless of whether or not the design change necessary for eliminating design errors is carried out through other methods.

이상 설명한 내용을 통해 해당 업자라면 본 발명의 기술사상을 일탈하지 아니하는 범위에서 다양한 변경 및 수정이 가능함을 알 수 있을 것이다. 따라서, 본 발명의 기술적 범위는 실시 예에 기재된 내용으로 한정되는 것이 아니라 특허 청구의 범위에 의하여 정하여져야만 한다. Through the above description, it will be appreciated that various changes and modifications are possible within the range that does not deviate from the technical spirit of the present invention. Therefore, the technical scope of the present invention should not be limited to the contents described in the embodiments, but should be determined by the claims.

도 1은, 예측기반 병렬 시뮬레이션의 두 가지 모드인, 예상입출력이용-런 모드와 실제입출력이용-런 모드의 동작 원리를 개념적으로 도시한 도면.
도 2는, 패턴기반의 정적 예상입력/예상출력 활용 방법과 예상입력/예상출력 동적 발생 방법을 개념적으로 도시한 도면.
도 3은, 본 발명에 관한 예측기반 병렬 게이트수준 타이밍 시뮬레이션을 실행하기 위한 멀티프로세서 컴퓨터 시스템 구성의 일 예를 개략적으로 도시한 도면.
도 4는, 내부에 총 10개의 설계객체를 가지는 시뮬레이션대상 모델의 일 예를 각각 레지스터전송수준 모델과 게이트수준 모델로 도시한 도면.
도 5는, 본 발명에서 제시한 예측기반 병렬 게이트수준 타이밍 시뮬레이션을 위하여 부가되는 설계코드(부가 코드) 내부를 구성하는 컴포넌트들의 구성 일 예를 특정 로컬 시뮬레이션에 대하여 개략적으로 도시한 도면.
도 6은, 본 특허에서의 예측기반 병렬 게이트수준 타이밍 시뮬레이션 방법을 도 4에서 예시한 시뮬레이션대상 모델을 6개의 로컬 설계객체로 분할하여 6개의 로컬 시뮬레이션에서 진행하는 상황에서 예상입력과 예상출력을 위하여 패턴기반의 정적 예상입력/예상출력 활용 방법이 사용되어지는 것을 개념적으로 도시한 도면.
도 7은. 본 특허에서의 예측기반 병렬 게이트수준 타이밍 시뮬레이션 방법을 도 4에서 예시한 시뮬레이션대상 모델을 6개의 로컬 설계객체로 분할하여 6개의 로컬 시뮬레이션에서 진행하는 상황에서 추상화 상위수준 모델기반의 예상입력/예상출력 동적 발생 방법이 사용되어지는 것을 개념적으로 도시한 도면.
도 8은, 본 특허에서의 예측기반 병렬 게이트수준 타이밍 시뮬레이션 방법을 도 4에서 예시한 시뮬레이션대상 모델을 6개의 로컬 설계객체로 분할하여 6개의 로컬 시뮬레이션에서 진행하는 상황에서 추상화 혼합수준 모델기반의 예상입력/예상출력 동적 발생 방법이 사용되어지는 것을 개념적으로 도시한 도면.
도 9는. 도 8에서 예상입력/예상출력을 실시간으로 생성하는 혼합수준 모델을 좀 더 구체적으로 계층구조까지 포함시켜 도시한 도면.
도 10은, 도 9에서 구체적으로 도시한 예상입력/예상출력을 실시간으로 생성하는 혼합수준 모델에서 혼합수준 모델에서 게이트수준 설계객체 확장이 발생한 상황을 구체적으로 도시한 도면.
도 11은, 본 발명에서의 예측기반 병렬 게이트수준 타이밍 시뮬레이션 방법 전과정을 하나의 플로우차트로 도식화한 도면.
1 is a diagram conceptually illustrating the operation principle of two modes of prediction-based parallel simulation, the expected I/O use-run mode and the actual I/O use-run mode.
2 is a diagram conceptually illustrating a pattern-based static expected input/expected output utilization method and a dynamic expected input/expected output generation method.
3 schematically illustrates an example of a multiprocessor computer system configuration for executing predictive-based parallel gate-level timing simulations in accordance with the present invention.
4 is a diagram showing an example of a simulation target model having a total of 10 design objects inside as a register transfer level model and a gate level model, respectively.
5 is a diagram schematically showing an example of the configuration of components constituting the inside of a design code (additional code) added for prediction-based parallel gate-level timing simulation proposed in the present invention with respect to a specific local simulation.
6 is a prediction-based parallel gate-level timing simulation method in this patent for expected input and expected output in a situation in which the simulation target model illustrated in FIG. 4 is divided into six local design objects and six local simulations are performed. A diagram conceptually showing that a pattern-based static expected input/expected output utilization method is used.
Figure 7. The prediction-based parallel gate-level timing simulation method in this patent is divided into 6 local design objects by dividing the simulation target model illustrated in FIG. 4 into 6 local simulations. A diagram conceptually illustrating how the dynamic generation method is used.
8 is a prediction based on mixed level abstraction model in a situation in which the prediction-based parallel gate-level timing simulation method in this patent is divided into six local simulations by dividing the simulation target model illustrated in FIG. 4 into six local design objects. A diagram conceptually showing that the input/expected output dynamic generation method is used.
Figure 9. In FIG. 8, a mixed-level model that generates expected input/expected output in real time is shown including a hierarchical structure in more detail.
FIG. 10 is a diagram specifically showing a situation in which gate-level design object expansion occurs in a mixed-level model in which the expected input/expected output shown in FIG. 9 is generated in real time.
11 is a flowchart illustrating the entire process of the prediction-based parallel gate-level timing simulation method according to the present invention as a flowchart.

본 발명의 다른 목적 및 이점들은 첨부한 도면을 참조한 실시 예에 대한 상세한 설명을 통하여 명백하게 드러나게 될 것이다.Other objects and advantages of the present invention will become apparent through the detailed description of the embodiments with reference to the accompanying drawings.

도 1은, 예측기반 병렬 시뮬레이션의 두 가지 모드인, 예상 입력/출력을 이용함으로서 통신 오버헤드와 동기 오버헤드(14)를 전혀 발생시키지 않는 예상입출력이용-런 모드와, 실제 입력/출력을 이용함으로 병렬 시뮬레이션의 성능 저하 요소가 되는 통신 오버헤드와 동기 오버헤드(14)를 발생하게 되는 실제입출력이용-런 모드의 동작 원리를 개념적으로 도시한 도면이다.1 shows two modes of prediction-based parallel simulation, the expected input/output use-run mode that does not generate any communication overhead and synchronization overhead 14 by using expected input/output, and the use of actual input/output. This is a diagram conceptually showing the operating principle of the actual input/output use-run mode, which generates communication overhead and synchronization overhead 14, which are performance degradation factors of parallel simulation.

도 2는, 패턴기반의 정적 예상입력/예상출력 활용 방법과 예상입력/예상출력 동적 발생 방법을 개념적으로 도시한 도면이다. 패턴기반의 정적 예상입력/예상출력 활용 방법에서는 이전 시뮬레이션 실행 과정에서 0과 1 및 알수없는값(Unknown)의 단순 패턴 파일의 형식으로 "파일에 저장된 패턴형식의 예상입력/예상출력"(312)을 정적으로 활용하는 방식인데 반하여, 예상입력/예상출력 동적 발생 방법은 시뮬레이션이 가능한 전체 설계객체의 "시뮬레이션 모델"(412)을 각 로컬 시뮬레이션에서 로컬 설계객체와 함께 실행시켜서(즉 시뮬레이션 실행을 통하여서) 예상입력/예상출력을 동적으로 실시간으로 발생시켜 활용하는 방식인데, 시뮬레이션 모델(412)은 추상화 상위수준 모델(추상화 상위수준 모델기반의 예상입력/예상출력 동적 발생 방법)이거나 또는 추상화 혼합수준 모델(추상화 혼합수준 모델기반의 예상입력/예상출력 동적 발생 방법)이다.2 is a diagram conceptually illustrating a pattern-based static expected input/expected output utilization method and a dynamic generation expected input/expected output method. In the pattern-based static expected input/expected output utilization method, "expected input/expected output in pattern format stored in a file" in the form of a simple pattern file of 0 and 1 and unknown values (312) in the previous simulation run process In contrast to the method of statically utilizing the expected input/expected output, the dynamic generation method executes the "simulation model" 412 of all design objects capable of simulation together with local design objects in each local simulation (that is, through simulation execution). ) This is a method of dynamically generating and utilizing expected input/expected output in real time. The simulation model 412 is either an abstraction high-level model (a method of dynamically generating expected input/expected output based on an abstraction high-level model) or a mixed-level abstraction model. (Expected input/expected output dynamic generation method based on abstraction mixed level model).

도 3은, 본 발명에 관한 예측기반 병렬 게이트수준 타이밍 시뮬레이션을 실행하기 위한 멀티프로세서 컴퓨터 시스템 구성의 일 예를 개략적으로 도시한 도면이다. 하나의 로컬 시뮬레이션을 위해서는 하나의 프로세서(77)와 메모리(79) 자원이 사용된다.3 is a diagram schematically illustrating an example of a multiprocessor computer system configuration for executing prediction-based parallel gate-level timing simulation according to the present invention. One processor 77 and memory 79 resources are used for one local simulation.

도 4는 내부에 총 10개의 설계객체를 가지는 시뮬레이션대상 모델의 일 예를 각각 레지스터전송수준 모델(80)과 게이트수준 모델(90)로 도시한 것이다. 게이트수준 모델(90)은 레지스터전송수준 모델(80)로부터 논리합성기를 활용하는 자동설계 과정을 통해서 자동적으로 만들어진다. 이 예에서 계층구조에 의하여 설계객체1과 설계객체6는 각각 설계객체1a와 설계객체1b, 그리고 설계객체6a와 설계객체6b를 서브설계객체로 가지고 있다.4 shows an example of a simulation target model having a total of 10 design objects inside as a register transfer level model 80 and a gate level model 90, respectively. The gate level model 90 is automatically created from the register transfer level model 80 through an automatic design process utilizing a logic synthesizer. In this example, by the hierarchical structure, design object 1 and design object 6 have design object 1a and design object 1b, and design object 6a and design object 6b as sub-design objects, respectively.

도 5는, 본 발명에서 제시한 예측기반 병렬 게이트수준 타이밍 시뮬레이션을 위하여 부가되는 설계코드(부가 코드) 내부를 구성하는 컴포넌트들의 구성 일 예를 특정 로컬 시뮬레이션에 대하여 개략적으로 도시한 도면이다. 즉 이 예에서는 로컬시뮬레이터션에서 수행되는 시뮬레이션 대상 모델 M의 일부분인 로컬 설계객체(1)에 부가되어지는 부가 코드의 동작행태(behavior)를 컴포넌트들로 구성한 일 예를 개략적으로 도시한 도면이다. 따라서 상기의 부가 코드는 로컬 설계객체(1)에 부가되어져서 도 5에 보여지는 컴포넌트들(예상입출력이용-런/실제입출력이용-런 제어모듈(2), 예상입력/실제입력 선택모듈(3), 출력을 위한 로컬 설계객체(1)의 예상출력/실제출력 비교모듈(4), 예상입력/실제입력 비교모듈(5), 예상입력/예상출력 생성/저장 모듈(8))의 기능을 수행할 수 있어야 한다. 상기 각 모듈별로 동작행태(behavior)를 다시 정리하면 다음과 같다. 예상입출력이용-런/실제입출력이용-런 제어모듈(2)은 출력을 위한 로컬 설계객체(1)의 예상출력/실제출력 비교모듈(4)과 예상입력/실제입력 비교모듈(5)과 분산병렬 시뮬레이션을 위한 통신 및 동기화 모듈(7)로부터 입력들을 받아서 이 입력들의 값들과 현재 로컬 시뮬레이션이 예상입출력이용-런 방식으로 진행되는지 혹은 실제입출력이용-런 방식으로 진행되는지의 현 상태(따라서, 예상입출력이용-런/실제입출력이용-런 제어모듈(2)은 내부적으로 현재 로컬 시뮬레이션이 예상입출력이용-런 방식으로 진행되는지 혹은 실제입출력이용-런 방식으로 진행되는지를 판단할 수 있는 상태변수를 가지고 있음)에 따라서 예상입력/실제입력 선택모듈(3)로 출력을 생성하여 예상입력/실제입력 선택모듈(3)이 예상입력을 선택하게 하던지, 또는 실제입력을 선택하게 하던지, 또는 롤백이 필요하게 되면 롤백 수행을 제어하게 된다. 즉, 현재 로컬 시뮬레이션이 예상입출력이용-런 방식으로 진행 중에 있으면서(따라서 예상입출력이용-런/실제입출력이용-런 제어모듈(2)은 현재 예상입력/실제입력 선택모듈(3)이 예상입력을 선택하도록 하는 출력을 예상입력/실제입력 선택모듈(3)에 보내어 제어 중) 동시에 출력을 위한 로컬 설계객체(1)의 모든 서브설계객체들의 예상출력/실제출력 비교모듈(4)에서부터 예상출력과 실제출력이 다르다는 판단이 입력으로서 오면 예상입출력이용-런/실제입출력이용-런 제어모듈(2)은 예상입력/실제입력 선택모듈(3)이 실제입력을 선택하도록 출력을 예상입력/실제입력 선택모듈(3)에 보내고 내부의 현재 상태변수를 예상입출력이용-런에서 실제입출력이용-런으로 스위칭하고 동시에 분산병렬 시뮬레이션을 위한 통신 및 동기화 모듈(7)로부터 롤백을 위한 특정 롤백 시간이 입력되면 상기 특정 롤백 시간으로 롤백을 수행할 수 있게 제어도 수행하며, 현재 로컬 시뮬레이션이 실제입출력이용-런 방식으로 진행되고 있으면서(따라서 예상입출력이용-런/실제입출력이용-런 제어모듈(2)은 현재 예상입력/실제입력 선택모듈(3)이 실제입력을 선택하도록 하는 출력을 예상입력/실제입력 선택모듈(3)에 보내어 제어 중) 동시에 예상입력/실제입력 비교모듈(5)에서부터 예상입력과 실제입력이 일정 횟수 이상 같다는 판단이 입력으로 오게되면 예상입출력이용-런/실제입출력이용-런 제어모듈(2)은 예상입력/실제입력 선택모듈(3)이 예상입력을 선택하도록 출력을 예상입력/실제입력 선택모듈(3)에 보내고 동시에 내부의 현재 상태변수를 실제입출력이용-런에서 예상입출력이용-런으로 스위칭하게 된다. 뿐만 아니라, 예상입출력이용-런/실제입출력이용-런 제어모듈(2)은 내부의 현재 상태를 분산병렬 시뮬레이션을 위한 통신 및 동기화 모듈(7)를 통하여 다른 로컬 시뮬레이션들에게 알리기 위한 두개의 출력(실제입출력이용-런 필요, 예상입출력이용-런 가능)을 분산병렬 시뮬레이션을 위한 통신 및 동기화 모듈(7)로 보내고, 예상입력/예상출력 생성/저장 모듈(8)을 제어하여서 (8)로부터 맞는 예상입력 또는 예상출력을 출력하도록 한다. 출력을 위한 로컬 설계객체(1)의 예상출력/실제출력 비교모듈(4)은 예상입력/예상출력 생성/저장 모듈(8)에서 실시간으로 생성되어지거나 또는 기저장된 예상출력과 로컬시뮬레이터에서 수행되는 설계 검증 대상 모델의 일부분(1)에서부터 로컬 시뮬레이션 실행 과정에서 실제적으로 나오게 되는 실제출력을 비교하여, 이 비교가 일치하면 예상입출력이용-런/실제입출력이용-런 제어모듈(2)에 일치함을 출력으로 보내고 이 비교가 불일치하면 예상입출력이용-런/실제입출력이용-런 제어모듈(2)에 불일치함을 출력으로 보내는 동시에 분산병렬 시뮬레이션을 위한 통신 및 동기화 모듈(7)로 롤백을 위한 현재의 시뮬레이션 시간을 보내어 다른 로컬 시뮬레이션들에게 이들 정보(롤백을 위한 현재의 시뮬레이션 시간)를 보낼 수 있게 한다. 예상입력/실제입력 비교모듈(5)는 예상입력/예상출력 생성/저장 모듈(8)에서 실시간으로 생성되거나 또는 기저장된 예상입력과 분산병렬 시뮬레이션을 위한 통신 및 동기화 모듈(7)로부터 오는 다른 1 이상의 로컬 시뮬레이션으로부터의 실제입력을 비교하여 이 비교가 일정 횟수만큼 일치하게 되면 이를 예상입출력이용-런/실제입출력이용-런 제어모듈(2)에 출력으로 보내게 된다. 마지막으로, 예상입력/실제입력 선택모듈(3)은 예상입출력이용-런/실제입출력이용-런 제어모듈(2)의 출력으로써 통신 및 동기화 모듈(7)로부터 오는 실제입력과 예상입력/예상출력 생성/저장 모듈(8)에서 실시간으로 생성되거나 또는 기저장된 예상입력 중에서 하나를 선택하여서 이 로컬시뮬레이터에서 수행되는 설계 검증 대상 모델의 일부분인 로컬 설계객체(1)에 입력으로 인가한다. 예상입력/예상출력 생성/저장 모듈(8)은 예상입력/예상출력을 로컬시뮬레이션 실행 과정 중에서 실시간으로 동적으로 생성(예상입력/예상출력 동적 발생 방법에 사용)하거나, 또는 이전 시뮬레이션에서 이미 생성되어져 파일 형태로 예상입력/예상출력을 정적으로 저장(패턴기반의 정적 예상입력/예상출력 활용 방법에 사용)하고 있는 모듈이다. 예상입력/예상출력 생성/저장 모듈(8)은 예상입력/예상출력을 로컬시뮬레이션 실행 과정 중에서 실시간으로 동적으로 생성시키기 위해서 게이트수준 타이밍 시뮬레이션 대상 설계객체의 추상화 상위수준 모델(즉 레지스터전송수준 모델)이나 추상화 혼합수준 모델을 포함하고 있다. 또한 도 5에서 통상적인 분산병렬 시뮬레이션에서 필요한 통상적인 통신 및 동기화 수행은 분산병렬 시뮬레이션을 위한 통신 및 동기화 모듈(7)이 수행한다.5 is a diagram schematically showing an example of the configuration of components constituting the inside of a design code (additional code) added for prediction-based parallel gate-level timing simulation proposed in the present invention with respect to a specific local simulation. That is, in this example, it is a diagram schematically showing an example in which the behavior of the additional code added to the local design object 1, which is a part of the simulation target model M performed in the local simulation, is composed of components. Therefore, the above additional code is added to the local design object (1) so that the components shown in FIG. 5 (expected input/output use-run/actual input/output use-run control module (2), expected input/actual input selection module (3) ), expected output / actual output comparison module (4), expected input / actual input comparison module (5), expected input / expected output generation / storage module (8)) of the local design object (1) for output should be able to do The behavior of each module is reorganized as follows. The expected I/O use-run/actual I/O use-run control module (2) is distributed with the expected output/actual output comparison module (4) and expected input/actual input comparison module (5) of the local design object (1) for output. Inputs are received from the communication and synchronization module 7 for parallel simulation, and the values of these inputs and the current state of whether the current local simulation is proceeding in an expected I/O-run method or an actual I/O-run method (thus, the expected The I/O use-run/actual I/O use-run control module (2) internally has a state variable that can determine whether the current local simulation proceeds in the expected I/O use-run method or the actual I/O use-run method. Depending on the expected input/actual input selection module (3), an output is generated and the expected input/actual input selection module (3) selects the expected input, or the actual input, or a rollback is required. This will control the performance of the rollback. That is, while the current local simulation is in progress in the expected input/output use-run method (therefore, the expected input/output use-run/actual input/output use-run control module (2) is currently expected input/actual input selection module (3) is expected input The output to be selected is sent to the expected input/actual input selection module (3) for control) and the expected output and actual output from the expected output/actual output comparison module (4) of all sub-design objects When the judgment that the actual output is different comes as an input, the expected input/output use-run/actual input/output use-run control module (2) selects the expected input/actual input so that the expected input/actual input selection module (3) selects the actual input. module (3), switch the internal current state variable from expected I/O use-run to actual I/O use-run, and at the same time, when a specific rollback time for rollback is input from the communication and synchronization module (7) for distributed parallel simulation, Control is also performed so that rollback can be performed with a specific rollback time, and while the current local simulation is in progress in the actual I/O use-run method (therefore, the expected I/O use-run/actual I/O use-run control module (2) An output that allows the input/actual input selection module (3) to select the actual input is sent to the expected input/actual input selection module (3) for control. When the determination that this is equal to a certain number of times or more comes as an input, the expected input/output use-run/actual input/output use-run control module (2) outputs the output so that the expected input/actual input selection module (3) selects the expected input. It is sent to the input selection module 3, and at the same time, the current state variable inside is switched from actual I/O use-run to expected I/O use-run. In addition, the expected I/O use-run/actual I/O use-run control module (2) has two outputs ( Actual input/output use-run required, expected input/output use-run possible) is sent to the communication and synchronization module (7) for distributed parallel simulation, and the expected input/expected output generation/storage module (8) is controlled to fit the result from (8). It outputs the expected input or expected output. The expected output / actual output comparison module (4) of the local design object (1) for output is generated in real time in the expected input / expected output generation / storage module (8) or previously stored expected output and performed in the local simulator The actual output that is actually produced in the local simulation execution process is compared from part (1) of the design verification target model. output, and if this comparison is inconsistent, send the mismatch to the expected I/O use-run/actual I/O use-run control module (2) as an output, and at the same time send the current value for rollback to the communication and synchronization module (7) for distributed parallel simulation. Sending the simulation time allows other local simulations to pass this information (the current simulation time for rollback). The expected input/actual input comparison module 5 is generated in real time by the expected input/expected output generation/storage module 8 or previously stored expected input and another one coming from the communication and synchronization module 7 for distributed parallel simulation. Actual inputs from the above local simulation are compared, and if the comparison matches a certain number of times, it is sent as an output to the expected I/O use-run/actual I/O use-run control module 2. Finally, the expected input/actual input selection module (3) uses the expected input/output use-run/actual input/output use-run as the output of the control module (2) and the actual input and expected input/expected output coming from the communication and synchronization module (7). In the generation/storage module 8, one of expected inputs generated in real time or previously stored is selected and applied as an input to the local design object 1, which is a part of the design verification target model performed in the local simulator. The expected input/expected output generation/storage module 8 dynamically generates the expected input/expected output in real time during the local simulation run process (used for the dynamic generation method of the expected input/expected output), or already created in a previous simulation. This is a module that statically stores expected input/expected output in the form of a file (used for pattern-based static expected input/expected output utilization method). The expected input/expected output generation/storage module (8) is an abstracted high-level model (i.e., a register transfer level model) of the gate-level timing simulation target design object in order to dynamically generate the expected input/expected output in real time during the local simulation execution process. or a mixed-level model of abstraction. In addition, in FIG. 5, the communication and synchronization module 7 for distributed parallel simulation performs normal communication and synchronization required in a typical distributed parallel simulation.

도 6은, 본 특허에서의 예측기반 병렬 게이트수준 타이밍 시뮬레이션 방법을 도 4에서 예시한 시뮬레이션대상 모델을 6개의 로컬 설계객체로 분할하여 6개의 로컬 시뮬레이션에서 진행하는 상황에서 예상입력과 예상출력을 위하여 패턴기반의 정적 예상입력/예상출력 활용 방법이 사용되어지는 것을 개념적으로 도시한 도면이다.6 is a prediction-based parallel gate-level timing simulation method in this patent for expected input and expected output in a situation in which the simulation target model illustrated in FIG. 4 is divided into six local design objects and six local simulations are performed. It is a diagram conceptually showing that the pattern-based static expected input/expected output utilization method is used.

도 7은. 본 특허에서의 예측기반 병렬 게이트수준 타이밍 시뮬레이션 방법을 도 4에서 예시한 시뮬레이션대상 모델을 6개의 로컬 설계객체로 분할하여 6개의 로컬 시뮬레이션에서 진행하는 상황에서 예상입력과 예상출력을 위하여 추상화 상위수준(이 예에서는 레지스터전송수준) 모델(142)이 각 로컬 시뮬레이션에서 각 로컬 설계객체와 함께 실시간으로 실행(즉 시뮬레이션) 되어지면서 예상입력/예상출력을 동적으로 발생하는 방법, 즉 추상화 상위수준(이 예에서는 레지스터전송수준) 모델기반의 예상입력/예상출력 동적 발생 방법이 사용되어지는 것을 개념적으로 도시한 도면이다.Figure 7. The prediction-based parallel gate-level timing simulation method in this patent divides the simulation target model exemplified in FIG. In this example, the register transfer level) model 142 is executed (i.e., simulated) in real time with each local design object in each local simulation, and the expected input/expected output is dynamically generated, that is, the higher level of abstraction (this example In , it is a diagram conceptually showing that the register transfer level) model-based expected input/expected output dynamic generation method is used.

도 8은, 본 특허에서의 예측기반 병렬 게이트수준 타이밍 시뮬레이션 방법을 도 4에서 예시한 시뮬레이션대상 모델을 6개의 로컬 설계객체로 분할하여 6개의 로컬 시뮬레이션에서 진행하는 상황에서 예상입력과 예상출력을 위하여 추상화 혼합수준(이 예에서는 레지스터전송수준과 게이트수준이 혼합된) 모델(146)이 각 로컬 시뮬레이션에서 각 로컬 설계객체와 함께 실시간으로 실행(즉 시뮬레이션) 되어지면서 예상입력/예상출력을 동적으로 발생하는 방법, 즉 추상화 혼합수준 모델기반의 예상입력/예상출력 동적 발생 방법이 사용되어지는 것을 개념적으로 도시한 도면이다.8 shows the prediction-based parallel gate-level timing simulation method in this patent for expected input and expected output in a situation where the simulation target model illustrated in FIG. 4 is divided into six local design objects and six local simulations are performed. Mixed levels of abstraction (mixed register transfer level and gate level in this example) model 146 is run (i.e. simulated) in real time with each local design object in each local simulation, dynamically generating expected inputs/expected outputs. It is a diagram conceptually showing how to do this, that is, a method of dynamic generation of expected input/expected output based on a mixed-level model of abstraction is used.

도 9는. 도 8에서 예상입력/예상출력을 실시간으로 생성하는 혼합수준 모델(146)을 좀 더 구체적으로 계층구조까지 포함시켜 도시한 도면이다. 상기 혼합수준 모델은 설계오류가 존재하여 이를 제거하기 위하여 설계변경이 이루어진 설계객체 1a(즉,설계오류가 설계객체 1a에서 발견되어져서 이를 제거하기 위한 설계변경이 이루어짐)만 게이트수준이고, 이 설계객체 1a를 제외한 나머지 모든 설계객체들은 게이트수준보다 추상화수준이 높은 레지스터전송수준으로 예시되고 있다. 이와 같은 혼합수준 모델을 도 5에서의 예상입력/예상출력 생성/저장 모듈(8) 내부에 두고서 예상입력/예상출력을 로컬시뮬레이션 실행 과정에서 실시간으로 생성하게 되면, 기존 패턴기반의 정적 예상입력/예상출력 활용 방법을 사용하는 예측기반 병렬 게이트수준 타이밍 시뮬레이션과 비교하여서 설계변경 이후 예측정확도가 훨씬 높은 예상입력/예상출력을 설계변경 이후의 예측기반 병렬 게이트수준 타이밍 시뮬레이션에도 빠르게 생성시킬 수 있다.Figure 9. In FIG. 8, it is a diagram showing the mixed-level model 146 that generates expected input/expected output in real time, including a hierarchical structure in more detail. In the mixed-level model, only the design object 1a (i.e., a design error was found in the design object 1a and a design change was made to eliminate it) is the gate level, and this design Except for object 1a, all other design objects are exemplified at the register transfer level, which has a higher abstraction level than the gate level. When such a mixed level model is placed inside the expected input/expected output generation/storage module 8 in FIG. 5 and the expected input/expected output is generated in real time during the local simulation execution process, the existing pattern-based static expected input/ Compared to prediction-based parallel gate-level timing simulation using the expected output utilization method, expected input/expected output with much higher prediction accuracy after design change can be quickly generated even in prediction-based parallel gate-level timing simulation after design change.

도 10은, 도 9에서 구체적으로 도시한 예상입력/예상출력을 실시간으로 생성하는 혼합수준 모델(146)에서 "혼합수준 모델에서 게이트수준 설계객체 확장"이 발생한 상황을 구체적으로 도시한 도면이다. 즉, 설계변경이 이루어진 설계객체 1a만 게이트수준이며 나머지 모든 설계객체들은 추상화상위수준인 레지스터전송수준인 혼합수준 모델을 통하여 동적으로 생성하는 예상입력/예상출력의 예측정확도(즉, 타이밍 예측정확도)가 충분히 정확하지 않은 경우에, 해당 로컬 시뮬레이션의 성능저하를 최소화하는 동시에 상기 예상입력/예상출력의 정확도를 높이기 위하여서 상기 설계변경이 이루어진 설계객체 1a를 내부에 포함하는 제일 작은 설계객체인 설계객체 1은 게이트수준이고 나머지 모든 설계객체들은 추상화상위수준인 레지스터전송수준인 새로운 혼합수준 모델을 "혼합수준 모델에서 게이트수준 설계객체 확장"을 통하여 생성하여 이를 각 로컬 시뮬레이션에서 동적으로 새로운 예상입력/예상출력을 실시간으로 생성하는 혼합수준 모델로 사용하는 상황을 나타낸 것이다.FIG. 10 is a diagram specifically showing a situation in which "gate level design object expansion in mixed level model" occurs in the mixed level model 146 generating the expected input/expected output in real time shown in FIG. 9 . In other words, only the design object 1a where the design change was made is at the gate level, and all other design objects are the prediction accuracy of the expected input/expected output dynamically generated through the mixed-level model, which is the register transfer level, which is the upper level of abstraction (ie, timing prediction accuracy) is not sufficiently accurate, design object 1, which is the smallest design object that contains the design object 1a to which the design change has been made, in order to minimize the degradation of the local simulation and at the same time increase the accuracy of the expected input/expected output. A new mixed-level model is created at the gate level and all other design objects are at the register transfer level, which is the upper level of abstraction, through “expansion of gate-level design objects in mixed-level models” and dynamically new expected input/expected output in each local simulation. is used as a mixed-level model generated in real time.

도 11은, 본 발명에서의 예측기반 병렬 게이트수준 타이밍 시뮬레이션 방법 전과정을 하나의 플로우차트로 도식화한 것이다.11 is a flow chart illustrating the entire process of the prediction-based parallel gate-level timing simulation method in the present invention.

우선, 설계변경후 시뮬레이션인지 아닌지에 따라서 예상입력/예상출력으로서“패턴기반의 정적 예상입력/예상출력 활용 방법"을 사용할지, 혹은 “모델기반의예상입력/예상출력 동적 발생 방법"을 사용할지 결정한다. 또한, 설계변경이 함수적 설계오류를 제거하는 함수적 설계변경인지 아닌지에 따라서 “추상화 상위수준 모델기반의 예상입력/예상출력 동적 발생 방법"을 사용할지, 혹은 “추상화 혼합수준 모델기반의 예상입력/예상출력 동적 발생 방법"을 사용할지 결정한다. 이후 "모델기반의 예상입력/예상출력 동적 발생 방법"에서는 로컬 시뮬레이션별로 예상입출력이용-런 모드로 실행하면서 동시에 예측이 맞는지 틀린지를 조사하며 실제값과 예측값의 다름의 정도가 "지연시간 차이"(본 특허에서 다름의 정도가 지연시간 차이라 함은 실제값과 예측값이 시뮬레이션 시간 상에서 시간차이만 존재하고 값차이는 존재하지 않는 것을 정의함. 일 예로 예측값이 시뮬레이션 시간 0에서부터 112나노초까지 0이었다가 112나노초부터 198나노초까지 1이었다가 198나노초부터 0인 반면, 실제값이 시뮬레이션 시간 0에서부터 102나노초까지 0이었다가 102나노초부터 188나노초까지 1이었다가 188나노초부터 0인 경우는 지연시간 차이만이 존재함)이지만 이 지연시간의 차이가 설계객체에 존재하는 클럭의 한주기보다 작지않은 경우 혹은 실제값과 예측값의 다름의 정도가 지연시간 차이 이상일 때에만 롤백 실행 후에 실제입출력이용-런 모드로 전환한다. 그리고 실제입출력이용-런 모드로 시뮬레이션을 실행하면서 예상입출력이용-런 모드로 전환이 가능한지 조사하여서 가능하면 다시 전환(모든 로컬시뮬레이션의 실제입력과 실제출력이 예상입력과 예상출력과 일치하는 횟수가 사전에 미리 정해진 횟수에 도달하는지를 판단하여 모든 로컬 시뮬레이션에서 상기 일치하는 횟수가 미리 정해진 횟수에 도달하면 실제입출력이용-런 모드에서 예상입출력이용-런 모드로 전환)한다. 그러나, "모델기반의 예상입력/예상출력 동적 발생 방법"에서는 로컬 시뮬레이션별로 예상입출력이용-런 모드로 실행하면서 동시에 예측이 맞는지 틀린지를 조사하며 실제값과 예측값의 다름의 정도가 지연시간 차이이며 이 지연시간 차이가 설계객체에 존재하는 클럭의 한주기보다 작으면, 추상화 혼합수준 모델에서게이트수준 설계 확장을 진행한 후 계속적으로 로컬 시뮬레이션별로 예상입출력이용-런 모드로 실행하면서 동시에 예측이 맞는지 틀린지를 조사하는 과정으로 진행하게 된다.First of all, whether to use “pattern-based static expected input/expected output utilization method” or “model-based expected input/expected output dynamic generation method” as expected input/output depending on whether it is simulation after design change or not. Decide. In addition, depending on whether the design change is a functional design change that eliminates functional design errors, whether to use the "dynamic generation method of expected input/expected output based on a high-level abstraction model" or "expected input based on a mixed-level model of abstraction" /Determines whether to use "Expected output dynamic generation method". Afterwards, in the "model-based expected input/expected output dynamic generation method", each local simulation is run in the expected I/O use-run mode, and at the same time, whether the prediction is correct or not is investigated, and the degree of difference between the actual value and the predicted value is called "delay time difference" ( In this patent, the degree of difference is the delay time difference, which defines that there is only a time difference between the actual value and the predicted value in the simulation time, and no value difference. If the actual value is 1 from 112 nanoseconds to 198 nanoseconds and then 0 from 198 nanoseconds, while the actual value is 0 from simulation time 0 to 102 nanoseconds, then 1 from 102 nanoseconds to 188 nanoseconds, and then 0 from 188 nanoseconds, only the delay time difference exists), but only when the difference in delay time is not smaller than one cycle of the clock existing in the design object or when the degree of difference between the actual value and the predicted value is greater than the difference in delay time do. Then, while executing the simulation in the actual I/O use-run mode, investigate whether it is possible to switch to the expected I/O use-run mode, and if possible, switch back (the number of times that the actual input and actual output of all local simulations match the expected input and expected output is checked in advance). It is determined whether a predetermined number of times is reached, and if the matching number reaches a predetermined number in all local simulations, the actual I/O use-run mode is switched from the expected I/O use-run mode). However, in the "model-based expected input/expected output dynamic generation method", each local simulation is executed in the expected I/O use-run mode, and at the same time, whether the prediction is correct or not is investigated, and the degree of difference between the actual value and the predicted value is the difference in delay time If the delay time difference is less than one cycle of the clock existing in the design object, after proceeding with the gate-level design extension in the mixed-level abstraction model, it is continuously executed in the expected I/O-run mode for each local simulation, and at the same time checks whether the prediction is correct or not. We will proceed through the investigation process.

1 : 로컬 설계객체
2 : 예상입출력이용-런/실제입출력이용-런 제어모듈
3 : 예상입력/실제입력 선택모듈
4 : 예상출력/실제출력 비교모듈
5 : 예상입력/실제입력 비교모듈
6 : 또 다른 로컬 설계객체
7 : 분산병렬 시뮬레이션을 위한 통신 및 동기화 모듈
8 : 예상입력/예상출력 생성/저장 모듈
10 : 검증 소프트웨어로써 검증대상 설계코드에 부가되어진 부가 코드
11 : 로컬 시뮬레이션
12 : 예상 입력/출력
14 : 통신 오버헤드 및 동기 오버헤드
35 : 로컬컴퓨터
61 : 예상입력 생성/저장 모듈
63 : 예상출력 생성/저장 모듈
71 : 버스
73 : 프로세서코어
75 : 캐쉬
77 : 프로세서
79 : 메모리
80 : 레지스터전송수준 설계객체
84 : 추상화 혼합수준 설계객체
90 : 게이트수준 설계객체
100 : 시뮬레이션대상 모델
135 : 로컬컴퓨터간 연결구조
140 : 예상입력/예상출력 패턴 파일
142 : 추상화 상위수준 모델
146 : 추상화 혼합수준 모델
243 : 로컬시뮬레이터
312 : 파일에 저장된 패턴형식의 예상입력/예상출력
343 : 로컬 시뮬레이션에서 실행되는 부가 코드와 로컬 설계객체
412 : 추상화 상위수준 시뮬레이션 모델
1: Local design object
2: Expected I/O use-run/actual I/O use-run control module
3: expected input/actual input selection module
4: expected output/actual output comparison module
5: expected input/actual input comparison module
6: another local design object
7: Communication and synchronization module for distributed parallel simulation
8: Expected input/expected output generation/save module
10: Additional code added to the design code to be verified as verification software
11: local simulation
12: expected input/output
14: communication overhead and synchronous overhead
35: local computer
61: expected input generation / storage module
63: expected output generation / storage module
71: bus
73: processor core
75 : Cash
77: processor
79: memory
80: register transfer level design object
84: abstraction mixed level design object
90: gate level design object
100: simulation target model
135: connection structure between local computers
140: expected input/expected output pattern file
142: abstract high-level model
146: Abstraction Mixed Level Model
243: local simulator
312: Expected input/expected output of the pattern format stored in the file
343: Additional code and local design objects running in local simulation
412: abstract high-level simulation model

Claims (3)

2이상의 설계객체로 구성되어진 게이트수준 타이밍 시뮬레이션 대상 모델에 대한 시뮬레이션에 사용되는 복수의 시뮬레이터를 복수의 CPU 또는 CPU 코어상에서 분산병렬하여 실행시키는 분산병렬 시뮬레이션을 행할 때에, (i) 예상입출력이용-런 모드와 (ii) 실제입출력이용-런 모드의 두 가지 실행 모드를 번갈아가면서 실행하는 과정을 통하여 상기 분산병렬 시뮬레이션이 수행되는 예측기반 게이트수준 타이밍 시뮬레이션 방법으로서,
상기 복수의 시뮬레이터는 적어도 하나의 로컬 시뮬레이션을 수행하는 제1 로컬시뮬레이터 및 또 다른 로컬시뮬 레이션을 수행하는 제2 로컬시뮬레이터를 포함하고,
예상입력/예상출력으로서 이전 시뮬레이션에서 저장한 패턴기반의 예상입력/예상출력을 정적으로 활용(패턴기반의 정적 예상입력/예상출력 활용방법)하거나, 또는 추상화 상위수준 모델을 각 로컬 시뮬레이션에서 로컬 설계객체와 함께 실행시켜서 예상입력/예상출력을 동적으로 발생(추상화 상위수준 모델기반의 예상입력/예상출력 동적 발생 방법)하거나, 또는 추상화 혼합수준 모델을 각 로컬 시뮬레이션에서 로컬 설계객체와 함께 실행시켜서 예상입력/예상출력을 동적으로 발생(추상화 혼합수준 모델기반의 예상입력/예상출력 동적 발생 방법)하며,
(A) 최소 1회 이상을 각 로컬 시뮬레이션 별로 로컬 설계객체에 대하여 시뮬레이션 실행을 상기 3가지 방법들(패턴기반의 정적 예상입력/예상출력 활용방법, 추상화 상위수준 모델기반의 예상입력/예상출력 동적 발생 방법, 추상화 혼합수준 모델기반의 예상입력/예상출력 동적 발생 방법)중에 하나를 통해서 얻어지는 예상입력과 예상출력을 활용하는 예상입출력이용-런 모드로 진행하면서,
동시에 실제출력과 예상출력의 다름의 정도를 파악하는 단계,
(B) 상기 실제출력과 예상출력의 다름의 정도를 파악에서 단계에서 실제출력과 예상출력의 다름의 정도가 지연시간 차이이며 이 지연시간 차이가 설계객체에 존재하는 클럭의 한주기보다 크거나 또는 실제출력과 예상출력의 다름의 정도가 지연시간 차이만이 아닌 경우, 또는 실제출력과 예상출력의 다름이 존재하며 패턴기반의 정적 예상입력/예상출력 활용방법을 사용 중인 경우에는 예상입출력이용-런 모드에서 실제입출력이용-런 모드로 전환하여 모든 로컬시뮬이션을 실제입출력이용-런 모드로 진행시키는 단계,
(C) 실제 실제입출력이용-런 모드로 진행하면서,
동시에 모든 로컬 시뮬레이션의 실제입력과 실제출력이 예상입력과 예상출력과 일치하는 횟수가 사전에 미리 정해진 횟수에 도달하는지를 판단하여 모든 로컬 시뮬레이션에서 상기 일치하는 횟수가 미리 정해진 횟수에 도달하면 실제입출력이용-런 모드에서 예상입출력이용-런 모드로 전환하여 모든 로컬 시뮬레이션을 예상입출력이용-런 모드로 진행시키는 단계,
를 포함하는 예측기반 병렬 게이트수준 타이밍 시뮬레이션 방법.
When performing distributed parallel simulation in which a plurality of simulators used for simulation of a gate-level timing simulation target model composed of two or more design objects are executed in distributed parallel on a plurality of CPUs or CPU cores, (i) Expected I/O use-run As a prediction-based gate-level timing simulation method in which the distributed parallel simulation is performed through a process of alternately executing two execution modes, (ii) using actual I/O-run mode,
The plurality of simulators include a first local simulator that performs at least one local simulation and a second local simulator that performs another local simulation,
Static utilization of pattern-based expected input/expected output saved in previous simulations as expected input/expected output (How to use pattern-based static expected input/expected output), or local design of abstraction high-level model in each local simulation Expected input/expected output is dynamically generated by executing with an object (a method of dynamically generating expected input/expected output based on an abstract high-level model), or by executing a mixed-level model of abstraction with a local design object in each local simulation. Dynamically generate input/expected output (method of dynamic generation of expected input/expected output based on abstraction mixture level model),
(A) The above three methods (pattern-based static expected input/expected output utilization method, abstraction high-level model-based expected input/expected output dynamic) While proceeding to the expected input/output use-run mode, which utilizes the expected input and expected output obtained through one of the expected input/expected output dynamic generation method based on the generation method and the mixed level of abstraction model,
At the same time, grasping the degree of difference between the actual output and the expected output,
(B) In the step of figuring out the degree of difference between the actual output and the expected output, the difference between the actual output and the expected output is the delay time difference, and this delay time difference is greater than one cycle of the clock existing in the design object, or If the degree of difference between actual output and expected output is not only the difference in delay time, or if there is a difference between actual output and expected output and the pattern-based static expected input/expected output utilization method is in use, use expected I/O-Run mode to the real I/O use-run mode and proceeding all local simulations to the real I/O use-run mode;
(C) Actual actual input/output use-while proceeding to run mode,
At the same time, it is determined whether the number of matches between actual inputs and actual outputs of all local simulations and expected inputs and expected outputs reaches a predetermined number of times, and when the number of coincidences reaches a predetermined number of times in all local simulations, actual input/output use- Switching from the run mode to the expected input/output use-run mode to progress all local simulations to the expected input/output use-run mode;
A prediction-based parallel gate-level timing simulation method comprising a.
제 1 항에 있어서,
예상입력/예상출력을 위하여 상기 추상화 상위수준 모델기반의 예상입력/예상출력 동적 발생 방법을 사용하는 경우는, 상기 예측기반 게이트수준 타이밍 시뮬레이션은 상기 2이상의 설계객체로 구성되어진 시뮬레이션 대상 모델에 존재하는 1이상의 설계오류를 제거하기 위한 설계변경이 이루어진 후에 진행되는 시뮬레이션이고, 상기 설계변경은 함수적 설계오류를 제거하는 함수적 설계변경이며,
예상입력/예상출력을 위하여 상기 추상화 혼합수준 모델기반의 예상입력/예상출력 동적 발생 방법을 사용하는 경우는, 상기 예측기반 게이트수준 타이밍 시뮬레이션은 상기 2이상의 설계객체로 구성되어진 시뮬레이션 대상 모델에 존재하는 1이상의 설계오류를 제거하기 위한 설계변경이 이루어진 후에 진행되는 시뮬레이션이고, 상기 설계변경은 타이밍 설계오류를 제거하는 타이밍 설계변경인,
예측기반 병렬 게이트수준 타이밍 시뮬레이션 방법.
According to claim 1,
When the expected input/expected output dynamic generation method based on the abstracted high-level model is used for expected input/expected output, the prediction-based gate-level timing simulation exists in the simulation target model composed of two or more design objects. It is a simulation that proceeds after a design change to remove one or more design errors is made, and the design change is a functional design change to remove a functional design error,
When the expected input/expected output dynamic generation method based on the mixed-level abstraction model is used for expected input/expected output, the prediction-based gate-level timing simulation exists in the simulation target model composed of the two or more design objects. A simulation that proceeds after a design change is made to remove one or more design errors, and the design change is a timing design change to remove a timing design error,
A predictive-based parallel gate-level timing simulation method.
제 1 항에 있어서,
예상입력/예상출력을 위하여 상기 추상화 상위수준 모델기반의 예상입력/예상출력 동적 발생 방법을 사용하는 경우는, 상기 예측기반 게이트수준 타이밍 시뮬레이션은 상기 2이상의 설계객체로 구성되어진 시뮬레이션 대상 모델에 존재하는 1이상의 설계오류를 제거하기 위한 설계변경이 이루어진 후에 진행되는 시뮬레이션이고, 상기 설계변경은 함수적 설계오류를 제거하는 함수적 설계변경이며,
예상입력/예상출력을 위하여 상기 추상화 혼합수준 모델기반의 예상입력/예상출력 동적 발생 방법을 사용하는 경우는, 상기 예측기반 게이트수준 타이밍 시뮬레이션은 상기 2이상의 설계객체로 구성되어진 시뮬레이션 대상 모델에 존재하는 1이상의 설계오류를 제거하기 위한 설계변경이 이루어진 후에 진행되는 시뮬레이션이고, 상기 설계변경은 타이밍 설계오류를 제거하는 타이밍 설계변경이며,
상기 실제출력과 예상출력의 다름의 정도를 파악하는 단계에서 파악된 실제출력과 예상출력의 다름의 정도가 지연시간 차이이며 이 지연시간 차이가 설계객체에 존재하는 클럭의 한주기보다 작은 경우에 상기 시뮬레이션 실행을 모델기반의 예상입력/예상출력 동적 발생 방법에서 사용되는추상화 혼합수준 모델에서 게이트수준 설계객체 확장을 진행한 후 계속적으로 예상입출력이용-런 모드로 진행하는 것을 특징으로 하는,
예측기반 병렬 게이트수준 타이밍 시뮬레이션 방법.
According to claim 1,
When the expected input/expected output dynamic generation method based on the abstracted high-level model is used for expected input/expected output, the prediction-based gate-level timing simulation exists in the simulation target model composed of two or more design objects. It is a simulation that proceeds after a design change to remove one or more design errors is made, and the design change is a functional design change to remove a functional design error,
When the expected input/expected output dynamic generation method based on the mixed-level abstraction model is used for expected input/expected output, the prediction-based gate-level timing simulation exists in the simulation target model composed of the two or more design objects. A simulation performed after a design change to remove one or more design errors is made, the design change is a timing design change to remove a timing design error,
In the step of determining the degree of difference between the actual output and the expected output, the degree of difference between the actual output and the expected output is the delay time difference, and if the delay time difference is smaller than one cycle of the clock existing in the design object, Characterized in that the simulation execution proceeds with the extension of the gate-level design object in the abstraction mixed-level model used in the model-based expected input/expected output dynamic generation method, and then continues in the expected I/O use-run mode.
A predictive-based parallel gate-level timing simulation method.
KR1020220135466A 2022-10-20 2022-10-20 Performance Improvement Method in Prediction-based Parallel Gate-level Timing Logic Simulation Using Adaptive Prediction Data KR102493046B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220135466A KR102493046B1 (en) 2022-10-20 2022-10-20 Performance Improvement Method in Prediction-based Parallel Gate-level Timing Logic Simulation Using Adaptive Prediction Data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220135466A KR102493046B1 (en) 2022-10-20 2022-10-20 Performance Improvement Method in Prediction-based Parallel Gate-level Timing Logic Simulation Using Adaptive Prediction Data

Publications (1)

Publication Number Publication Date
KR102493046B1 true KR102493046B1 (en) 2023-01-27

Family

ID=85101313

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220135466A KR102493046B1 (en) 2022-10-20 2022-10-20 Performance Improvement Method in Prediction-based Parallel Gate-level Timing Logic Simulation Using Adaptive Prediction Data

Country Status (1)

Country Link
KR (1) KR102493046B1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000259684A (en) * 1999-03-04 2000-09-22 Hitachi Ltd Paralleled logical simulator system
KR20070039857A (en) * 2005-10-10 2007-04-13 양세양 Verification method from electronic system level to gate level using systematic progressive refinement
KR20080096723A (en) * 2007-04-29 2008-11-03 양세양 Distributed parallel simulation method based on adaptive synchronization/communication scheme
KR20130081354A (en) * 2012-01-09 2013-07-17 삼성전자주식회사 Communication method in distributed parallel simulation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000259684A (en) * 1999-03-04 2000-09-22 Hitachi Ltd Paralleled logical simulator system
KR20070039857A (en) * 2005-10-10 2007-04-13 양세양 Verification method from electronic system level to gate level using systematic progressive refinement
KR20080096723A (en) * 2007-04-29 2008-11-03 양세양 Distributed parallel simulation method based on adaptive synchronization/communication scheme
KR20130081354A (en) * 2012-01-09 2013-07-17 삼성전자주식회사 Communication method in distributed parallel simulation

Similar Documents

Publication Publication Date Title
KR100921314B1 (en) High Performance Design Verification Apparatus Using Verification Results Re-use Technique and Its Rapid Verification Method Using the Same
US20130179142A1 (en) Distributed parallel simulation method and recording medium for storing the method
Gayathri et al. RTL synthesis of case study using design compiler
US20220385280A1 (en) Testable time-to-digital converter
WO2005093575A1 (en) Dynamic-verification-based verification apparatus achieving high verification performance and verification efficency and the verification methodology using the same
US11347917B2 (en) Determining and verifying metastability in clock domain crossings
KR102493046B1 (en) Performance Improvement Method in Prediction-based Parallel Gate-level Timing Logic Simulation Using Adaptive Prediction Data
Tan et al. Verilog hdl simulator technology: a survey
KR102181273B1 (en) Performance improvement method in prediction-based parallel logic simulation by dynamic reconfiguration of local design objects
US20210374314A1 (en) Engineering Change Order Scenario Compression by Applying Hybrid of Live and Static Timing Views
KR102318192B1 (en) Performance improvement method in prediction-based parallel logic simulation by dynamic reconfiguration of local design objects
KR20060066634A (en) Dynamic-verification-based verification apparatus achieving high verification performance and verification efficiency, and the verification methodology using the same
Banerjee et al. Design aware scheduling of dynamic testbench controlled design element accesses in FPGA-based HW/SW co-simulation systems for fast functional verification
KR101328263B1 (en) Verification Method from Electronic System Level to Gate Level Using Systematic Progressive Refinement
KR20080096723A (en) Distributed parallel simulation method based on adaptive synchronization/communication scheme
Ahmad et al. Fast STA prediction-based gate-level timing simulation
US7246053B2 (en) Method for transforming behavioral architectural and verification specifications into cycle-based compliant specifications
Erickson TLM-Driven Design and Verification–Time For a Methodology Shift
US11868694B1 (en) System and method for optimizing emulation throughput by selective application of a clock pattern
Peterson Predicting the performance of SoC verification technologies
US20230035693A1 (en) Clock signal realignment for emulation of a circuit design
US20230195982A1 (en) Transformations for multicycle path prediction of clock signals
US20240104279A1 (en) Multicycle path prediction of reset signals
Plassan et al. Improving the efficiency of formal verification: the case of clock-domain crossings
US20240111660A1 (en) Managing high performance simulation representation of an emulation system

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant