KR102323748B1 - 데이터 변환 파이프라인용 하드웨어 설계 검증 - Google Patents

데이터 변환 파이프라인용 하드웨어 설계 검증 Download PDF

Info

Publication number
KR102323748B1
KR102323748B1 KR1020207031790A KR20207031790A KR102323748B1 KR 102323748 B1 KR102323748 B1 KR 102323748B1 KR 1020207031790 A KR1020207031790 A KR 1020207031790A KR 20207031790 A KR20207031790 A KR 20207031790A KR 102323748 B1 KR102323748 B1 KR 102323748B1
Authority
KR
South Korea
Prior art keywords
data transformation
pipeline
hardware design
data
output
Prior art date
Application number
KR1020207031790A
Other languages
English (en)
Other versions
KR20200139235A (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
Priority claimed from GB1805723.2A external-priority patent/GB2572633A/en
Priority claimed from GB1805722.4A external-priority patent/GB2572632B/en
Application filed by 이메지네이션 테크놀로지스 리미티드 filed Critical 이메지네이션 테크놀로지스 리미티드
Publication of KR20200139235A publication Critical patent/KR20200139235A/ko
Application granted granted Critical
Publication of KR102323748B1 publication Critical patent/KR102323748B1/ko

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/3323Design verification, e.g. functional simulation or model checking using formal methods, e.g. equivalence checking or property checking
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3183Generation of test inputs, e.g. test vectors, patterns or sequences
    • G01R31/318342Generation of test inputs, e.g. test vectors, patterns or sequences by preliminary fault modelling, e.g. analysis, simulation
    • G01R31/318357Simulation
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/12Timing analysis or timing optimisation
    • 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/323Translation or migration, e.g. logic to logic, hardware description language [HDL] translation or netlist translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/36Circuit design at the analogue level
    • G06F30/367Design verification, e.g. using simulation, simulation program with integrated circuit emphasis [SPICE], direct methods or relaxation methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/398Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Image Processing (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)

Abstract

하나 이상의 데이터 변환 요소를 포함한 데이터 변환 파이프라인용 하드웨어 설계를 공식 검증을 통해 검증하기 위한 방법 및 시스템으로서, 하나 이상의 입력에 대한 데이터 변환을 수행하되, 공식 검증은, 공식 검증 툴이 수행해야 하는 데이터 변환 계산을 단순화하는 조건 하에서 수행된다. 일 구현예에서, 데이터 변환 파이프라인 사이에서 실질적으로 등가인 데이터 변환 요소가 동일한 입력(들)에 응답하여 동일한 출력(들)을 생성하는 제약 하에서, 하드웨어 설계의 인스턴스의 출력이 소정의 트랜잭션 세트에 대해 다른 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스와 동일한 출력을 생성한다는 것을 공식적으로 검증함으로써 데이터 변환 파이프라인용 하드웨어 설계를 검증한다.

Description

데이터 변환 파이프라인용 하드웨어 설계 검증
시스템-온-칩(SoCs)과 같은 많은 전자 장치는, 데이터 변환 파이프라인을 구현하는 하드웨어를 포함한다. 당업자에게 공지된 바와 같이, 파이프라인은 처리 요소 세트를 포함하고, 상기 세트 내의 처리 요소의 출력이 상기 세트 내의 처리 요소로의 입력이다. 데이터 변환 파이프라인은, 하나 이상의 입력 세트에 대한 데이터 변환을 수행하도록 구성된 파이프라인의 유형이다. 용어 "데이터 변환"은, 새로운 데이터를 생성하기 위해 데이터 세트에 수행되거나 이에 적용될 수 있는 임의의 연산(예, 가, 감, 승, 제 등을 포함하는 산술 연산과 같으나 이에 제한되지 않는 수학 연산)을 의미하도록 본원에서 사용된다. 따라서, 데이터 변환 파이프라인은 하나 이상의 입력 세트를 수신하고, 상기 입력 세트에 대하여 수행된 데이터 변환 결과를 출력한다. 데이터 변환 파이프라인은 입력 세트에 대해 데이터 변환을 수행하도록 구성된 적어도 하나의 데이터 변환 요소를 포함하나, 다른 유형의 처리 요소를 또한 포함할 수도 있다. 파이프라인이 입력 세트에 대한 출력을 생성하는 경우, 파이프라인이 '트랜잭션'을 실행하는 것으로 말한다. 따라서, 파이프라인은, 동일한 입력 세트에 대한 출력을 발생시키는 경우, 동일한 트랜잭션을 실행한다고 말한다.
데이터 변환 파이프라인은 선형 또는 비선형 파이프라인일 수 있으며, 단일 처리 요소 또는 다중 처리 요소를 가질 수 있다. 도 1 내지 도 3은, 입력 세트에 대해 산술 계산을 수행하도록 구성된 예시적인 데이터 변환 파이프라인을 나타낸다. 도 1은 8개의 입력(
Figure 112020117296811-pct00001
) 총합을 계산하기 위해 구성된 제1 예시 데이터 변환 파이프라인(100)을 나타낸다. 도 1의 데이터 변환 파이프라인(100)은 단일 데이터 변환 요소(102), 레지스터(104) 및 제어 로직(106)을 포함한다. 데이터 변환 요소(102)는, 8회 사이클(0에서 7까지 표시) 각각에 입력
Figure 112020117296811-pct00002
을 추가하고 상기 입력을 상기 이전 입력의 총합
Figure 112020117296811-pct00003
(즉, 이전 사이클에서 레지스터(104)의 값)에 추가하고 레지스터(104)에 새로운 합을 저장한다. 제어 로직(106)은 각 사이클에서 데이터 변환 요소(102)에 레지스터(104)의 값을 제공하고, 제8 사이클 후(즉, 총합
Figure 112020117296811-pct00004
이 생성된 후)에 레지스터(104)의 값을 출력하도록 구성된다. 제어 로직(106)은, 또한 리셋시 및 레지스터(104)의 값이 출력된 후, 레지스터(104) 값을 0으로 설정하도록 또한 구성된다. 데이터 변환 요소(102)가 단일 사이클에서 두 입력(
Figure 112020117296811-pct00005
Figure 112020117296811-pct00006
)의 합을 생성하도록 구성된 곳에서, 상기 파이프라인의 출력은 8회의 사이클 후에 출력될 것으로 예상할 수 있다. 그러나, 하나 이상의 클록 사이클에 의해 파이프라인을 통한 데이터의 이동에 영향을 미치는 스톨 또는 중단과 같은 무작위 외부 이벤트가 있을 수 있다.
도 2는
Figure 112020117296811-pct00007
을 계산하기 위해 구성된 제2 예시 데이터 변환 파이프라인(200)을 나타낸다. 데이터 변환 파이프라인(200)은 2개의 데이터 변환 요소(202, 204), 레지스터(206), 및 제어 로직(208)을 포함한다. 제1 데이터 변환 요소(202)는 입력
Figure 112020117296811-pct00008
Figure 112020117296811-pct00009
의 총합을 계산하고 레지스터(206)에
Figure 112020117296811-pct00010
의 총합을 저장하도록 구성된다. 제2 데이터 변환 요소(204)는 레지스터(206)(즉, 제1 데이터 변환 요소(202))
Figure 112020117296811-pct00011
와 입력
Figure 112020117296811-pct00012
의 곱을 계산하도록 구성된다. 제어 로직(208)은 레지스터(206)의 연산을 제어하여, 레지스터(206)의 값이 정확한 시간에 제2 데이터 변환 요소(204)로 제공되는 것을 보장한다.
도 3은
Figure 112020117296811-pct00013
을 계산하기 위해 구성된 제3 예시 데이터 변환 파이프라인(300)을 나타낸다. 데이터 변환 파이프라인(300)은 2개의 처리 요소(302, 304), 레지스터(306) 및 제어 로직(308)을 포함한다. 제1 처리 요소(302)는 입력
Figure 112020117296811-pct00014
Figure 112020117296811-pct00015
의 총합을 계산하도록 구성된 데이터 변환 요소이다. 제2 처리 요소(304)는, 데이터 입력을 변형시키지 않기 때문에 데이터 변환 요소가 아니며, 상기 결과가 하류 구성 요소에 의해 요청될 때까지, 단순히 레지스터(306)의 값(즉, 데이터 변환 요소(302)의 출력)
Figure 112020117296811-pct00016
을 저장한다. 제어 로직(308)은 레지스터(306)의 연산을 제어하여, 레지스터(306)의 값이 제2 처리 요소(304)에 정확한 시간에 제공되는 것을 보장한다.
데이터 변환 파이프라인을 구현하는 하드웨어 생성 단계는, 일반적으로 데이터 변환 파이프라인을 구현하는 집적 회로의 구조 및/또는 기능을 설명한 하드웨어 설계를 개발하는 단계; 설계에 따라 제조된 집적 회로가 예상대로 작동할 수 있도록 보장하기 위한 하드웨어 설계를 검증하거나 테스트하는 단계; 및 일단 검증되면, 하드웨어 설계에 따라 집적 회로 제조 시스템에서 집적 회로를 제조하는 단계를 포함한다.
일부 경우에, 데이터 변환 파이프라인용 하드웨어 설계를 검증하는 단계는, 하드웨어 설계의 인스턴스가 변환이 수행되는 시기에 상관없이, 데이터 변환에 대한 정확한 결과를 생성함을 검증하는 단계를 포함할 수 있다. 구체적으로, 데이터 변환 파이프라인은 리셋 후 어느 때라도 (예를 들어, 리셋 직후에, 또는 리셋 후 10,000회의 사이클 직후에) 그리고 다양한 양의 대기시간(예, 스톨 또는 중단)을 갖고 변환을 수행할 수 있기 때문에, 변환이 수행되는 시기에 상관없이, 하드웨어 설계의 인스턴스가 변환에 정확한 결과를 생성할 것이라는 것 검증하는 것이 중요하다.
다른 경우에, 데이터 변환 파이프라인용 하드웨어 설계를 검증하는 단계는, 하드웨어 설계의 인스턴스가 항상 (변환이 수행되는 시기에 상관없이) 다른 유사 하드웨어 설계의 인스턴스로서 동일한 결과를 생성함을 검증하는 단계를 포함할 수 있다. 이러한 유형의 검증은, 하드웨어 설계가 기능적으로 등가임을 검증하는 단계로서 지칭될 수 있다. 이러한 유형의 검증은, 원래의 하드웨어 설계를 수정하여 수정된 하드웨어 설계가 원래의 하드웨어 설계와 동일한 결과를 생성하는지 검증하는 경우에, 사용될 수 있다.
하드웨어 설계는, 예를 들어 공식 검증 또는 시뮬레이션 기반 검증에 의해 검증될 수 있다. 공식 검증은 체계적인 처리로, 이는 하드웨어 설계의 수학 모델 및 하드웨어 설계를 검증하는 수학적인 근거를 사용한다. 대조적으로, 시뮬레이션 기반 검증은, 하드웨어 설계의 인스턴스에 자극을 적용하고 자극에 응답하여 하드웨어 설계의 인스턴스의 출력을 모니터링 함으로써, 하드웨어 설계를 시험하는 공정이다.
공식 검증에서, 하드웨어 설계는 수학 모델(예, 상태 전이 시스템, 또는 흐름 그래프)로 변형됨으로써 하드웨어 설계의 인스턴스를 제공하고, 이는 하드웨어 설계, 및 검증될 공식 특성이 정밀한 수학 구문 및 언어로 정확한 구문이나 언어를 사용한 수학 로직을 사용하여 표현되는 것을 검증하도록 테스트될 수 있다.
공식 검증은 공식 검증 툴(즉, 하드웨어 설계의 공식 검증을 수행할 수 있는 소프트웨어 툴)을 사용하여 수행된다. 공식 검증 툴은, OneSpin 360 DV™, Mentor Graphics Questa® 공식 검증, Synopsys® VC Formal, Cadence® Incisive® Enterprise Verifier 및 JasperGold® 등의 공식 등가 체커; 및 Synopsys® HECTOR와 다른 논리적 등가 체커(LECC)와 순차적 논리 등가 체커(SLEC)와 같은 공식 속성 체커(공식 모델 체커로도 지칭될 수 있음)를 포함하지만, 이에 제한되지 않는다. 본원에서 산술 공식 검증 툴이라 칭할 수 있는 일부 공식 검증 툴은, 데이터 변환(산술 연산과 같음)과 관련된 특성을 검증하는 데 능숙하지만, 통상적으로 한정된 기간에 걸쳐 특성을 증명하기 위해서만 사용될 수 있다. 본원에서 무한 시간 공식 검증 툴이라 지칭될 수 있는 다른 검증 툴은, 무한 기간에 걸쳐 특성을 검증하는 데 능숙하지만 데이터 변환(예컨대, 산술 연산)과 관련된 특성을 검증하는 데 부족하다.
기존의 공식 검증 툴은 데이터 변환과 관련된 특성을 검증하거나, 무한 기간에 걸쳐 특성을 검증함에 능숙하기 때문에, 둘 다는 아니지만, 가능한 경우, 무한 시간에 걸친 데이터 변환에 대한 하드웨어 설계의 인스턴스의 출력을 검증하기 위해 기존의 공식 검증 툴을 사용하는 것이 어렵다. 따라서, 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스가 항상 데이터를 정확하게 변환될 것인지, 또는 변환이 수행되는 시기에 관계없이, 다른 하드웨어 설계의 인스턴스와 동일한 방식으로 데이터를 항상 변환할 것인지를 검증하기 위해 기존의 공식 검증 툴을 사용하는 것이 어렵다.
후술하는 구현예는 단지 예시로서 제공되며, 데이터 변환 파이프라인용 하드웨어 설계를 검증하기 위한 공지된 방법 및 시스템의 단점 중 임의의 또는 전부를 해결하는 구현예를 제한하지 않는다.
본 발명의 내용은 상세한 설명에서 이하 추가로 설명된 개념을 선택하도록 도입하기 위해 제공된다. 본 발명의 내용은 청구된 주제의 주요 특징 또는 필수 특징을 식별하고자 하는 것이 아니며, 청구된 주제의 범주를 제한하는 데 사용되도록 의도한 것도 아니다.
본원에서, 하나 이상의 입력에 대한 데이터 변환을 수행하는 하나 이상의 데이터 변환 요소를 포함한 데이터 변환 파이프라인용 하드웨어 설계를, 공식 검증을 통해 검증하기 위한 방법 및 시스템이 설명되며, 상기 공식 검증은 공식 검증 툴이 수행해야 하는 데이터 변환 계산을 단순화하는 하나 이상의 조건 하에서 수행된다. 일 구현예에서, 데이터 변환 파이프라인 사이에서 실질적으로 등가인 데이터 변환 요소가 동일한 입력(들)에 응답하여 동일한 출력(들)을 생성하는 제약 하에서, 하드웨어 설계의 인스턴스의 출력이 소정의 트랜잭션 세트에 대해 다른 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스와 동일한 출력을 생성한다는 것을 공식적으로 검증함으로써 데이터 변환 파이프라인용 하드웨어 설계를 검증한다. 또 다른 구현예에서, 하드웨어 설계에서 하나 이상의 데이터 변환 요소를 공식 검증 툴에 의한 조합 입력의 피평가 기능으로 처리된 기능 요소로 대체함으로써, 데이터 변환 파이프라인용 하드웨어 설계를 검증해서, 공식 검증 과정에서 기능 요소는 동일한 입력에 대해 동일한 출력을 생성하도록 하고 트랜잭션 세트의 각 트랜잭션에 대해 데이터 변환 파이프 라인에 대한 수정 하드웨어 설계의 인스턴스가, 그 트랜잭션에 대해 하나 이상의 출력 기준 세트와 매칭하는지 공식 검증하도록 한다.
제1 양태는 제1 데이터 변환 파이프라인용 하드웨어 설계를 검증하는 컴퓨터 구현 방법을 제공하며, 상기 제1 데이터 변환 파이프라인은 하나 이상의 입력에 대해 데이터 변환을 수행하는 하나 이상의 데이터 변환 요소를 포함하고, 상기 방법은 하나 이상의 프로세서에서, 상기 제1 데이터 변환 파이프 라인용 하드웨어 설계 인스턴스의 하나 이상의 출력 세트가, 소정의 트랜잭션 세트에 대한 제2 데이터 변환 파이프 라인용 하드웨어 설계의 인스턴스의 하나 이상의 출력 세트와 매칭하는지 공식적으로 검증하는 단계를 포함하되, 상기 제2 데이터 변환 파이프라인은 하나 이상의 입력에 대해 데이터 변환을 수행한 하나 이상의 데이터 변환 요소를 포함하고, 상기 제2 데이터 변환 파이프 라인의 데이터 변환 요소는 상기 제1 데이터 변환 파이프 라인의 데이터 변환 요소와 실질적으로 등가이며; 상기 공식 검증은, 상기 제1 및 제2 데이터 변환 파이프 라인의 실질적으로 등가인 데이터 변환 요소가 상기 동일한 입력에 응답하여 동일한 출력을 생성하는 제약 하에서 수행된다.
제2 양태는 제1 데이터 변환 파이프라인용 하드웨어 설계를 검증하는 시스템을 제공하며, 상기 데이터 변환 파이프라인은 하나 이상의 입력에 대해 데이터 변환을 수행하는 하나 이상의 데이터 변환 요소를 포함하고, 상기 시스템은, 상기 제1 데이터 변환 파이프라인용 하드웨어 설계; 제2 데이터 변환 파이프 라인용 하드웨어 설계(상기 제2 데이터 변환 파이프라인은 하나 이상의 입력에 대해 데이터 변환을 수행하는 하나 이상의 데이터 변환 요소를 포함하고, 상기 제2 데이터 변환 파이프라인의 데이터 변환 요소는 상기 제1 데이터 변환 파이프라인의 데이터 변환 요소와 실질적으로 등가이임); 및 공식 검증 툴; 및 하나 이상의 프로세서(상기 하나 이상의 프로세서는 상기 공식 검증 툴을 사용하여 상기 제1 데이터 변환 파이프 라인용 하드웨어 설계 인스턴스의 하나 이상의 출력 세트가, 소정의 트랜잭션 세트에 대한 제2 데이터 변환 파이프 라인용 하드웨어 설계의 인스턴스의 하나 이상의 출력 세트와 매칭하는지 공식적으로 검증하도록 구성됨)을 포함하고; 상기 공식 검증은, 상기 제1 및 제2 데이터 변환 파이프 라인의 실질적으로 등가인 데이터 변환 요소가 상기 동일한 입력에 응답하여 동일한 출력을 생성하는 제약 하에서 수행된다.
집적 회로 제조 시스템에서 처리되는 경우, 데이터 변환 파이프라인용 하드웨어 설계는 데이터 변환 파이프라인을 제조하도록 시스템을 구성한다. 집적 회로 제조 시스템에서 처리되는 경우, 집적 회로 제조 시스템으로 하여금 데이터 변환 파이프라인을 구현한 집적 회로를 제조시키는 데이터 변환 파이프라인용 하드웨어 설계를 위에 저장한 비일시적 컴퓨터 판독 가능 저장 매체가 제공될 수 있다.
집적 회로 제조 시스템이 제공될 수 있으며, 이는, 데이터 변환 파이프라인용 하드웨어 설계를 위에 저장한 비 일시적 컴퓨터 판독 가능 저장 매체; 데이터 변환 파이프라인을 구현한 집적 회로의 회로 레이아웃 설명을 생성하기 위해 컴퓨터 판독 가능 설명을 처리하도록 구성된 레이아웃 처리 시스템; 및 회로 레이아웃 설명에 따라 데이터 변환 파이프라인을 구현한 집적 회로를 제조하도록 구성된 집적 회로 생성 시스템을 포함한다.
본원에서 설명된 바와 같은 방법을 수행하기 위한 컴퓨터 프로그램 코드가 제공될 수 있다. 컴퓨터 시스템에서 실행되는 경우, 컴퓨터 시스템으로 하여금 본원에 설명된 바와 같은 방법을 수행시키는 컴퓨터 판독가능 명령어가 저장된 비일시적 컴퓨터 판독 가능 저장 매체가 제공될 수 있다.
상기 특징은 당업자에게 명백할 수 있는 바와 같이 적절히 조합될 수 있고, 본원에 기술된 구현예의 임의의 양태와 조합될 수 있다.
이제 첨부된 도면을 참조하여 예시를 상세히 설명할 것이고, 그 중:
도 1은 제1 예시 데이터 변환 파이프라인의 블록도이다.
도 2는 제2 예시 데이터 변환 파이프라인의 블록도이다.
도 3은 제3 예시 데이터 변환 파이프라인의 블록도이다.
도 4는 데이터 변환 파이프라인용 하드웨어 설계를 검증하기 위한 제1 예시 방법의 흐름도이다.
도 5는 제1 및 제2 데이터 변환 파이프라인의 제1 예시 세트의 블록도이고, 제1 및 제2 데이터 변환 파이프라인은 상이하다.
도 6은 제1 및 제2 데이터 변환 파이프라인의 제2 예시 세트의 블록도이고, 제1 및 제2 데이터 변환 파이프라인은 동일하다.
도 7은 데이터 변환 파이프라인용 하드웨어 설계를 검증하기 위한 예시 시스템의 블록도이다.
도 8은, 도 4의 방법의 공식 검증 단계를 구현하기 위한 예시 방법의 흐름도로, 데이터 변환 파이프라인용 하드웨어 설계를 다른 데이터 변환 파이프라인용 하드웨어와 기능적으로 등가임을 검증한다.
도 9는, 도 4의 방법의 공식 검증 단계를 구현하기 위한 예시 방법의 흐름도로, 데이터 변환 파이프라인용 하드웨어 설계가 일관성이 있음을 검증한다.
도 10은 제1 및 제2 데이터 변환 파이프라인의 제1 예시 세트의 블록도이고, 데이터 변환 요소는 블랙 박스 요소로 대체된다.
도 11은 제1 및 제2 데이터 변환 파이프라인의 제2 예시 세트의 블록도이고, 데이터 변환 요소는 블랙 박스 요소로 대체된다.
도 12는 데이터 변환 파이프라인용 하드웨어 설계를 검증하기 위한 제2 예시 방법의 흐름도이다.
도 13은, 도 12의 방법에 따라 데이터 변환 파이프라인용 하드웨어 설계를 검증하기 위한 예시 시스템의 블록도이다.
도 14는 예시적인 컴퓨터 기반 장치의 블록도이다.
도 15는 데이터 변환 파이프라인이 구현될 수 있는 컴퓨터 시스템 예시의 블록도이다.
도 16은 데이터 변환 파이프라인을 구현하는 집적 회로를 생성하는 데 사용될 수 있는 집적 회로 제조 시스템 예시의 블록도이다.
첨부된 도면은 다양한 구현예를 나타낸다. 당업자라면, 도시된 요소 경계선(예, 박스, 박스 그룹, 또는 다른 형상)이 경계선의 한 예를 나타낸다는 것을 이해할 것이다. 일부 예에서, 하나의 요소는 다수의 요소로서 설계될 수 있거나, 다수의 요소가 하나의 요소로서 설계될 수 있다. 공통의 참조 번호는, 유사한 특징부에 적절한 경우 도면 전체에 걸쳐 사용된다.
하기 설명은, 예를 들어 당업자가 본 발명을 만들고 사용할 수 있도록 하기 위해 예시로 제시된다. 본 발명은 본원에 기술된 구현예에 제한되지 않으며 개시된 구현예에 대한 다양한 변형이 당업자에게 명백할 것이다. 구현예는 단지 예로서 설명된다.
"하드웨어 설계"는 집적 회로 제조 시스템에서 처리되는 경우, 집적 회로 제조 시스템으로 하여금 하드웨어 설계에 의해 설명된 집적 회로를 생성시키는 집적 회로의 구조 및/또는 기능의 설명이다. 예를 들어, 도 16에 대해 이하에서 더욱 상세히 설명되는 바와 같이, 하드웨어 설계가 집적 회로 제조 시스템에서 처리되는 경우, 집적 회로 제조 시스템은, 하드웨어 설계를 실리콘으로 합성으로써, 또는 구성 데이터를 필드 프로그래머블 게이트 어레이(FPGA)로 로딩함으로써 집적 회로를 생성할 수 있다.
하드웨어 설계는 하이-레벨 하드웨어 설명 언어(HDL), 예컨대 레지스터 전송 레벨(RTL) 언어로 구현될 수 있지만 이에 제한되지 않는다. 레지스터 전송 레벨 언어 예시는 VHDL(VHSIC 하드웨어 설명 언어) 및 Verilog®를 포함하나 이에 제한되지 않는다. 독점 하이-레벨 하드웨어 설명 언어와 같은 다른 하이-레벨 하드웨어 설명 언어를 사용할 수 있음이 당업자에게 명백할 것이다.
"하드웨어 설계의 인스턴스"는 하드웨어 설계에 의해 정의된 하드웨어의 하드웨어 및/또는 기능의 표현이다. 하드웨어 설계의 예시는 하드웨어 설계의 에뮬레이션(emulation) 모델을 포함하지만, 이에 제한되지 않고, 이는, 하드웨어 설계에 의해 정의된 하드웨어, 하드웨어 설계의 합성 버전(예, 넷리스트), 하드웨어 설계의 하드웨어 실행(예, 집적 회로 또는 필드 프로그래머블 게이트 어레이(FPGA)), 및 공식 검증 툴에 의해 생성된 하드웨어 설계의 수학 모델 거동을 시뮬레이션한다. 하드웨어 설계의 인스턴스는 하드웨어 설계를 구현하여, 하드웨어 설계를 검증하도록 테스트할 수 있는 형태로 하드웨어 설계를 구현한다.
따라서, 데이터 변환 파이프라인용 하드웨어 설계는 데이터 변환 파이프라인을 구현하는 집적 회로의 구조 및/또는 기능에 대한 설명으로, 이는 집적 회로 제조 시스템에서 처리되는 경우, 집적 회로 제조 시스템이 데이터 변환 파이프라인을 구현하는 집적 회로를 생성시킨다. 전술한 바와 같이, 데이터 변환 파이프라인은, 하나 이상의 입력 세트에 대해 데이터 변환을 수행하도록 구성되는 적어도 하나의 데이터 변환 요소를 포함한다. 추가적으로, 데이터 변환 파이프라인용 하드웨어 설계는 파이프라인의 각 데이터 변환 요소의 구조 및/또는 기능에 대한 설명을 포함한다.
전술한 바와 같이, 기존의 공식 검증 툴은 일반적으로 데이터 변환(예, 산술 연산)과 관련된 특성을 검증하거나, 무한 시간에 걸쳐 특성을 검증함에 있어서 능숙하기 때문에, 둘 다는 아니지만 기존 공식 검증 툴을 사용하여 무한 시간에 걸쳐 데이터 변환 파이프라인용 하드웨어의 인스턴스 출력을 검증하는 것이 어렵다- 예를 들어, 리셋 후에 변환이 수행되는 시기에 관계없이, 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스가 트랜잭션의 정확한 결과를 항상 생성할 것이다; 또는 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스가 다른 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스로서 동일한 결과를 항상 생성할 것이다.
예를 들어, 데이터 변환(즉, 산술 공식 검증 툴)을 검증함에 있어, 능숙한 공식 검증 툴은, 하나 이상의 소정의 조건(예, 스톨 또는 중단 없음) 하에서 파이프라인의 소정의 상태(예, 리셋 후에 발생한 상태)로부터 입력 세트(즉, 실행된 트랜잭션)에 대해 수행된 데이터 변환에 정확한 결과를 생성하는 것을 공식적으로 검증할 수 있다. 이는, 예를 들어 하나 이상의 조건 하에서 소정의 상태(예, 리셋 후에 발생하는 상태)로부터의 입력 세트에 대한 하드웨어 설계의 인스턴스에 의해 수행되는 변환 결과가, 데이터 변환 파이프라인의 거동을 시뮬레이션 하도록 구성된 테스트 벤치 구성요소의 결과와 매칭함을 연산 공식 검증 툴를 통해 공식 검증하는 것에 의해 달성될 수 있다. 공식 검증 툴은 모든 가능한 입력 세트에 출력이 매칭하는지 확인하기 때문에, 하드웨어 설계의 인스턴스가 모든 입력 세트에 대한 올바른 결과를 생성할 것임을 검증한다. 그러나, 변환이 소정의 상태(예, 리셋으로부터 발생하는 상태)로부터 수행되는 경우, 이는 하드웨어 설계의 인스턴스가 정확한 결과를 생성할 것임을 검증한다. 또한, 변환이 파이프라인의 다른 상태(예, 제1 트랜잭션 후에 발생하는 상태 및 2개의 트랜잭션 및 2개의 스톨 후에 발생하는 상태)로부터의 입력 세트에 대해 수행되는 경우, 하드웨어 설계의 인스턴스가 정확한 결과를 생성할 것인지 검증하지 못한다.
하드웨어 설계의 인스턴스가 다른 상태(예, 리셋 후 일정 시간에 발생하는 상태)로부터 입력 세트(즉, 실행되는 트랜잭션)에 대해 수행되는 변환에 대한 정확한 결과를 생성하는지 검증하기 위해, 공식 검증 툴은 다른 소정의 상태(예, 리셋, 제1 트랜잭션 및 스톨 후에 발생하는 상태)로부터의 입력 세트에 하드웨어 설계의 인스턴스에 의해 변환 결과를 검증하도록 구성될 수 있다. 파이프라인의 다수의 상태에서 수행된 변환의 결과 검증이 에러 또는 버그를 잡을 기회를 증가시키지만, 이는 하드웨어 설계의 인스턴스가, 다른 상태의 파이프라인이 아니라 명시적으로 테스트된 소정의 상태(예, 리셋으로부터 발생하는 상태, 및 입력 세트에 대해 수행된 제1 변환 및 스톨 후에 발생하는 상태)로부터 수행된(즉, 트랜잭션 실행된) 변환에 정확한 결과를 생성할 것임을 여전히 검증한다.
그러나, 본 발명자는, 예를 들어 산술 공식 검증 툴을 통해 하드웨어 설계의 인스턴스가 소정의 조건 상태(예, 일단 계산이 시작되면 스톨 또는 중단 없음) 하에서 소정의 상태(예, 리셋으로부터 생긴 상태)로부터 임의의 입력 상태에 대해 수행된 변환에 정확한 결과를 생성할 것이라고 검증되면, 하드웨어 설계의 인스턴스가 변환이 수행되는 시기에 상관없이 임의의 입력 세트에 대해 수행된 변환에 정확한 결과를 항상 생성할 것이라고 검증하는 단계는, 소정의 상태(예, 리셋으로부터 생긴 상태)로부터 입력 세트에 대한 하드웨어 설계의 인스턴스에 의해 수행된 변환 결과가 임의의 다른 상태로부터 하드웨어 설계의 인스턴스에 의해 수행되는 동일한 변환(즉, 동일한 입력)의 결과와 매칭함을 증명하는 단계에 의해 수행될 수 있음을 확인하였다.
그러나, 무한 시간에 대해 특성을 입증하는데 능숙한 공식 검증 툴(즉, 무한한 시간 공식 검증 툴)을 사용하여, 소정 상태로부터의 입력 세트에 대한 하드웨어 설계의 인스턴스에 의해 수행되는 변환 결과가 파이프라인의 다른 임의의 상태로부터의 입력 세트에 대한 하드웨어 설계의 인스턴스에 의해 수행되는 변환의 결과와 일치하는 것으로 검증함으로써 단순히 수행될 수는 없다. 이는, 무한 시간에 걸쳐 특성을 검증함에 있어서 능숙한 공식 검증 툴이 데이터 변환의 결과를 효율적으로 검증할 수 없고 따라서 데이터 변환 요소의 출력을 검증할 수 없기 때문이다.
산술 공식 검증 툴을 사용하여, 파이프라인이 소정의 상태로부터 임의의 입력 세트에 대해 수행된 변환에 정확한 결과를 생성할 것이라는 것을 증명할 수 있기 때문에, 검증하기 위해 남는 것은, 변환이 입력 세트에 대해 수행되는 시기에 상관없이 동일한 결과를 생성할 것임을 검증하는 것이다. 즉, 검증하기 위해 남는 것은, 파이프라인이 일관성이 있는지 이다. 이를 검증하기 위해, 파이프라인의 다른 임의의 상태로부터 하드웨어 설계의 인스턴스에 의해 수행되는 변환의 결과가 절대적으로 정확한지 검증하는 것은 필수가 아니나, 파이프라인에 동일한 입력이 제공된 동일한 출력을 생성할 것인지는 필수이다. 즉, 검증하기 위해 남는 것은, 파이프라인의 상태에 상관없이 파이프라인이 동일한 입력을 제공받는 경우, 데이터는 파이프라인을 통해 동일한 방식으로 이동하고, 즉 파이프라인의 제어 로직이 예상대로 작동하는 지이다. 따라서, 검증하기 위해 남는 것은, 파이프라인이 동일한 트랜잭션을 실행하는 경우(즉, 동일한 입력을 처리하는 경우) 동일한 출력을 생성할 것이다.
따라서, 하나 이상의 입력에 대한 데이터 변환을 수행하는 하나 이상의 데이터 변환 요소를 포함한 데이터 변환 파이프라인용 하드웨어 설계를, 공식 검증을 통해 검증하기 위한 방법 및 시스템이 본원에 설명되고, 여기서 공식 검증은 하나 이상의 조건 또는 제한 하에 수행되고, 이는 공식 검증이 수렴하는 가능성을 증가시킨 공식 검증 툴을 수행해야 하는 데이터 변환 계산을 단순화한다. 하나 이상의 조건 또는 제한은 데이터 변환 파이프라인의 제어를 제한하도록 구성되나, 데이터 변환 파이프라인에 대한 입력은 아니다.
제1 데이터 변환 파이프라인용 하드웨어 설계를 검증하기 위한 제1 구현예가 도 4 내지 도 11에 관해 설명된다. 본 구현예에서, 상기 방법은, 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 출력(들)이 소정의 트랜잭션 세트에 대한 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 출력(들)과 매칭하는지 공식적으로 검증하는 단계를 포함한다. 제2 데이터 변환 파이프라인은, 또한 하나 이상의 입력에 대한 데이터 변환을 수행하는 하나 이상의 데이터 변환 요소를 포함한다. 제2 데이터 변환 파이프라인의 데이터 변환 요소 중 적어도 하나는, 제1 데이터 변환 파이프라인의 데이터 변환 요소와 실질적으로 등가이다. 공식 검증은, 제1 및 제2 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소가 동일한 입력에 응답하여 동일한 출력을 생성한다는 제약 하에서 수행된다.
제2 데이터 변환 파이프라인이 제1 데이터 변환 파이프라인과 상이한 경우, 그 방법은 제1 및 제2 데이터 변환용 하드웨어 설계가 기능적으로 등가인지를 검증하기 위해 사용될 수 있다. 대조적으로, 제2 데이터 변환 파이프라인이 제1 데이터 변환 파이프라인과 동일한 경우, 그 방법은, 하드웨어 설계가 일관성이 있는지(즉, 하드웨어 설계의 인스턴스가 입력(들) 처리 여부와 상관없이 동일한 입력에 응답하여 동일한 출력을 생성할 것인지)를 검증하기 위해 사용될 수 있다. 이는, 하드웨어 설계의 인스턴스가 항상 정확한 결과를 생성할 것이라는 것을 검증하지 않으며, 단지 하드웨어 설계의 인스턴스가 동일한 결과를 생성할 것임을 검증한다는 것에 유의한다. 그러나, 하드웨어 설계의 인스턴스가 파이프라인의 특정 상태의 임의 입력 세트에 대해 수행된 데이터 변환에 대한 정확한 결과를 생성한다는 검증(전술한 바와 같이, 이는 산술 공식 검증 툴을 사용하여 수행됨)과 조합하여, 이러한 검증은, 하드웨어 설계의 인스턴스가 변환에 정확한 결과를 항상 생성할 것임을 확실하게 검증한다.
데이터 변환 파이프라인용 하드웨어 설계를 검증하기 위한 제2 구현예가 도 12 및 도 13에 관해 설명된다. 이 구현예에서, 상기 방법은, 데이터 변환 파이프라인용 하드웨어 버전을 생성시키는 단계(공식 검증 동안에 기능 요소가 동일한 입력에 대해 동일한 출력을 생성하도록, 공식 검증 툴에 의해 입력의 피평가 기능으로서 처리된 기능 요소를 데이터 변환 요소의 선택된 세트가 대체하거나 이에 링크됨); 및 상기 데이터 변환 파이프라인용 하드웨어 설계 버전의 인스턴스가 상기 트랜잭션용 하나 이상의 출력 기준 세트와 매칭하는 하나 이상의 출력 세트를 일체 트랙잭션에 대해 생성함을 공식적으로 검증하는 단계를 포함한다.
일부 경우에, 상기 데이터 파이프라인용 하드웨어 설계 버전의 인스턴스가 일체 트랙잭션에 대해 상기 트랙잭션용 하나 이상의 출력 기준 세트와 매칭하는 하나 이상의 출력 세트를 생성함을 검증하는 단계는, 하드웨어 설계 버전의 인스턴스가 일관성이 있음(즉, 트랜잭션이 실행되는 시기에 상관없이 트랜잭션에 대한 동일한 결과를 항상 생성할 것)을 공식적으로 검증하는 단계를 포함할 수 있다. 다른 경우에, 상기 데이터 파이프라인용 하드웨어 데이터 버전의 인스턴스가 일체 트랙잭션에 대해 상기 트랙잭션용 하나 이상의 출력 기준 세트와 매칭하는 하나 이상의 출력 세트를 생성함을 검증하는 단계는, 하드웨어 설계 버전의 인스턴스가 다른 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스와 기능적으로 등가임을 공식적으로 검증하는 단계를 포함할 수 있다.
도 4를 이제 참조하면, 이는 제1 데이터 변환 파이프라인용 하드웨어 설계를 검증하기 위한 제1 예시 방법(400)을 나타낸다. 방법(400)은, 도 14에 관해 후술하는 컴퓨터 기반 장치(1400)와 같으나 이에 제한되지 않는 컴퓨터 기반 장치에 의해 구현될 수 있다. 예를 들어, 컴퓨터 기반 장치에서 실행되는 경우, 컴퓨터 기반 장치로 하여금 도 4의 방법(400)을 수행시킬 수 있는 컴퓨터 판독가능 명령어를 위에 저장한 컴퓨터 판독 가능 저장 매체가 있을 수 있다.
방법(400)은 블록(402)에서 시작하고, 여기서 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 출력(들)은 소정의 트랜잭션 세트에 대한 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 출력(들)과 매칭함(즉, 두 데이터 변환 파이프라인용 하드웨어 설계가 기능적으로 등가임)을 공식적으로 검증한다. 전술한 바와 같이, 데이터 변환 파이프라인은 하나 이상의 입력 세트에 대해 데이터 변환을 수행하도록 구성된 적어도 하나의 데이터 변환 요소를 포함하나, 다른 유형의 처리 요소를 또한 포함할 수도 있다. 따라서, 제1 및 제2 데이터 변환 파이프라인 각각은 하나 이상의 입력에서 데이터 변환(예, 산술 연산)을 수행하는 적어도 하나의 데이터 변환 요소를 포함한다.
제2 데이터 변환 파이프라인의 데이터 변환 요소 중 적어도 하나는, 제1 데이터 변환 파이프라인의 적어도 하나의 데이터 변환 요소와 실질적으로 등가이거나 기능적으로 등가이다. 두 개의 데이터 변환 요소는 동일한 입력(들)에 응답하여 동일한 출력(들)을 생성하는 경우에 실질적으로 동등하다고 말한다. 예를 들어, 제1 및 제2 데이터 변환 파이프라인은 각각 두 개의 입력의 곱을 계산하도록 구성되는 데이터 변환 요소를 포함할 수 있다. 공식 검증은, 제1 및 제2 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소 쌍이 동일한 입력(들)에 응답하여 동일한 출력(들)을 생성한다는 제약 하에서 수행된다. 예를 들어, 제1 데이터 변환 파이프라인의 데이터 변환 요소(A)가 제2 데이터 변환 파이프라인의 데이터 변환 요소(B)와 실질적으로 등가인 경우, 데이터 변환 요소(A) 및 데이터 변환 요소(B)가 동일한 입력(들)에 응답하여 동일한 출력(들)을 생성하는 제약 하에서 공식 검증을 수행한다.
하나의 데이터 변환 파이프라인의 데이터 변환 요소는, 다른 하나의 데이터 변환 파이프라인의 데이터 변환 요소 하나 이상과 실질적으로 등가일 수 있다. 이들 경우에서, 공식 검증은, 실질적으로 등가인 데이터 변환 요소의 각 쌍이 동일한 입력(들)에 응답하여 동일한 출력(들)을 생성한다는 제약 또는 제약 세트 하에서 수행될 수 있다. 예를 들어, 제1 데이터 변환 파이프라인이 데이터 변환 요소 A 및 B를 포함하고 제2 데이터 변환 파이프라인이 데이터 변환 요소 C 및 D를 포함하는 경우, 데이터 변환 요소 A는 데이터 변환 요소 C와 D에 실질적으로 등가일 수 있고, 데이터 변환 요소 B는 데이터 변환 요소 C와 D에 또한 실질적으로 등가일 수 있다. 이 예시에서, 데이터 변환 요소는 다음 제한 하에 수행될 수 있다: (i) 데이터 변환 요소(A 및 C)는 동일한 입력(들)에 응답해 동일한 출력(들)을 생성한다; (ii) 데이터 변환 요소(A 및 D)는 동일한 입력(들)에 응답해 동일한 출력(들)을 생성한다; (iii) 데이터 변환 요소(B 및 C)는 동일한 입력(들)에 응답해 동일한 출력(들)을 생성한다; 및 (iv) 데이터 변환 요소(B 및 D)는 동일한 입력(들)에 응답해 동일한 출력(들)을 생성한다.
본원에 설명된 예시에서, 실질적으로 등가 데이터 변환 요소는 조합인 것으로 추정되지만(즉, 저장된 데이터는 없음), 본원에 설명된 방법 및 기술은, 비조합 요소의 상태를 고려하는 한, 실질적으로 등가인 데이터 변환 요소가 비조합인 경우에 또한 적용될 수 있다.
일부 경우에, 제1 및 제2 데이터 변환 파이프라인은 상이할 수 있다. 즉, 일부 경우에, 제1 및 제2 데이터 변환 파이프라인용 하드웨어 설계는 상이한 하드웨어 설계이다. 도 8에 관해 더욱 상세히 후술하는 바와 같이, 두 개의 상이한 하드웨어 설계의 인스턴스의 출력(들)을 검증하는 단계를 사용하여, 두 개의 하드웨어 설계의 인스턴스가 기능적으로 등가인지(즉, 이들이 동일한 입력(들)에 응답하여 동일한 출력(들)을 항상 생성할 것인지) 검증할 수 있다. 다른 경우에, 제1 및 제2 데이터 변환 파이프라인은 동일할 수 있다. 즉, 일부 경우에, 제1 및 제2 데이터 변환 파이프라인용 하드웨어 설계는 동일한 하드웨어 설계의 두 개의 사본일 수 있다. 도 9에 관해 이하에서 더욱 상세히 설명되는 바와 같이, 동일한 하드웨어 설계의 두 개의 사본의 출력(들)을 검증하는 단계를 사용하여, 하드웨어 설계의 인스턴스가 일관성이 있음(즉, 입력이 처리되는 시기에 상관없이(즉, 입력(들)이 처리되는 경우의 파이프라인 상태와 상관없이) 동일한 입력(들)에 응답하여 항상 동일한 출력(들)을 생성함)을 검증할 수 있다.
제1 및 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 출력(들)이 트랜잭션의 소정의 세트에 대해 매칭하는지 공식적으로 검증하는 단계는, 검증될 하나 이상의 어서션(assertion)을 생성하는 단계, 상기 제1 및 제2 데이터 변화 파이프라인용 하드웨어 설계에 상기 하나 이상의 어서션을 연결시키는 단계; 및 상기 공식 검증 툴을 사용하여, 상기 하나 이상의 어서션이 상기 제1 데이터 변환 파이프라인용 하드웨어 설계에 대해 참인지(또는 유효한지) 공식적으로 검증하는 단계; 및 상기 하나 이상의 어서션을 성공적으로 검증하였는지를 표시하는 하나 이상의 신호를 출력하는 단계를 포함할 수 있다.
어서션은 특정한 특성이 하드웨어 설계를 위해 유효할(즉, 항상 참일) 것으로 예상되는 진술이다. "어서트 특성[평가 가능 표현]"이라는 형태의 어서션은, "평가 가능 표현"에 의해 구체화된 특성을 "어서트한다"라고 말한다. 어서트 특성(예, 평가 가능 표현)이, 임의의 유효한 입력에 대한 하드웨어 설계에 대해 거짓이도록 평가된 경우, 하드웨어 설계는 예상대로 작동하지 않고 에러가 있다. 예를 들어, 어서션 예시에서 "어서트 특성
Figure 112020117296811-pct00017
"이고; 만약
Figure 112020117296811-pct00018
Figure 112020117296811-pct00019
와 임의의 지점에서 동등하지 않다면, 하드웨어 설계는 예상대로 작동하지 않고 에러가 있다.
어서션은, 공식적이고 모호하지 않은 방식으로 하드웨어 설계에 필요한 시간 및 조합 거동을 캡처하기 위해 사용된다. 그 다음, 하드웨어 설계는, 어서션(들)에 의해 캡처된 요건에 부합하는지 결정하기 위해 검증될 수 있다. 어서션은 중간 거동을 검증하기 위해 사용될 수 있는데, 그 이유는 이는 사이클 별 기반으로 하드웨어 설계 거동을 캡처하기 때문이다.
어서션은 전형적으로 어서션 언어로 표현된다. 특성 언어로도 또한 지칭될 수 있는 어서션 언어는, 간결하고 모호하지 않은 방식으로 다중 하드웨어 설계 사이클(예, 클록 사이클)에 걸쳐 하드웨어 설계 거동 스프레드를 캡처한다. RTL 언어와 같은 종래 하드웨어 설명 언어(HDL)는, 개별 사이클 거동을 캡처할 수 있는 능력을 갖지만, 이들은 더 하이 레벨의 특성을 설명하는 데 너무 세부적이다. 특히, 어서션 언어는 간결한 방식으로 일시적인 관계 및 복잡한 하드웨어 설계 거동을 표현하는 수단을 제공한다. 어서션 언어는, SVA(System Verilog Assertions ), PSL(Property Specification Language ), IAL(Incisive Assertion Library), Synopsys OVA(OpenVera Assertions), STE(Symbolic Trajectory Evaluation), SCV(SystemC Verification), 0-In, Specman, 및 OVL(OpenVera Library)를 포함하나, 이에 제한되지 않는다.
제1 및 제2 하드웨어 설계의 인스턴스가 소정의 트랜잭션 세트에 대한 동일한 출력(들)을 생성할 것이라는 것을 검증하기 위해, 하나 이상의 어서션이 생성될 수 있고, 이 어서션은 참으로 증명되면, 트랜잭션의 소정의 세트 중 임의의 것이 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스에 의해 실행되는 경우의 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 출력이 동일한 트랙잰션이 이에 의해 실행되는 경우의 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 출력(들)과 매칭하도록 설정한다. 하나 이상의 어서션은, 동일한 상태로부터 두 개의 인스턴스에 의해 실행된 트랜잭션에 대한 출력(들)을 비교할 수 있다. 예를 들어, 도 8에 관해 후술하는 바와 같이, 상기 방법이 두 개의 상이한 하드웨어 설계의 인스턴스가 항상 동일한 출력(들)을 생성하는지 검증하기 위해 사용되는 경우, 하나 이상의 어서션은 동일한 상태로부터 동일한 트랜잭션을 실행하는 경우의 하드웨어 설계의 인스턴스의 출력(들)과 비교하도록 구성될 수 있다. 대조적으로, 도 9에 관해 후술하는 바와 같이, 상기 방법이 하드웨어 설계의 인스턴스가 일관성이 있는지(즉, 트랜잭션이 실행되는 시기에 상관없이 상기 트랜잭션에 동일한 출력을 항상 생성하는지) 검증하기 위해 사용되는 경우, 상기 하나 이상의 어서션은 상이한 상태로부터 동일한 트랜잭션을 실행하는 경우의 하드웨어 설계의 인스턴스의 출력(들)과 비교하도록 구성될 수 있다. 예를 들어, 파이프라인의 소정의 상태로부터 트랜잭션을 실행하는 경우의 제2 데이터 변환 파이프라인용 하드웨어 설계의 출력(들)은, 파이프라인의 다른 상태로부터 동일한 트랜잭션을 실행하는 경우의 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 출력(들)과 비교될 수 있다. 이들 경우에 사용될 수 있는 예시적인 어서션이 아래에 설명되어 있다.
하나 이상의 어서션이 일단 생성되었다면, 상기 하나 이상의 어서션은 제1 및 제2 데이터 변환 파이프라인용 하드웨어 설계에 링크된다. 하나 이상의 어서션은 제1 및 제2 데이터 변환 파이프라인용 하드웨어 설계에 링크될 수 있고, 이는 하나 이상의 어서션을 하드웨어 설계 중 하나에 통합하고 하드웨어 설계를 결합 또는 링크하는 단계; 또는 제1 및 제2 데이터 변환 파이프라인용 하드웨어 설계에 하나 이상의 어서션을 결합하는 것에 의한다. 구체적으로, 하나 이상의 어서션은, 제1 및 제2 데이터 변환 파이프라인용 하드웨어 설계의 관련 신호에 결합되어 인스턴스가 소정의 트랜잭션 중 하나를 언제 실행하였는지를 결정할 수 있고, 소정의 트랜잭션 중 임의의 것이 실행되는 경우 출력이 일치하는지를 결정할 수 있다.
하나 이상의 어서션이 제1 및 제2 데이터 변환 파이프라인용 하드웨어 설계에 링크되었다면, 제1 및 제2 데이터 변환 파이프라인용 하드웨어 설계, 상기 하나 이상의 어서션, 및 바인딩은 공식 검증 툴에 로딩되고, 상기 공식 검증 툴은 제1 데이터 변환 파이프라인용 하드웨어 설계에 대해 상기 하나 이상의 어서션이 참인지 검증하도록 구성된다.
어서션은, 모든 상태를 명시적으로 지나지 않고서 하드웨어 설계(예, 상태 전이 시스템, 또는 흐름 그래프)의 인스턴스의 전체 도달 가능한 상태 공간을 검색함으로써, 검증된다. 이러한 검색은, 예를 들어 BDDS(Binary decision diagrams)를 사용하거나 고급 SAT(satisfiability-based bounded model checking) 기반 기법을 사용하는 효과적인 Boolean 인코딩을 사용하여 상태를 인코딩함으로써, 수행된다. 일부 경우에, 툴은 성능을 개선하고 확장성을 달성하기 위해, 추상, 대칭, 상징적 인덱스, 및 상수 등의 기술을 구현하는 데 사용될 수 있다. 특성의 공식 검증은 시간의 경과에 따라 모든 유효한 입력 값을 알고리듬적으로 그리고 확실하게 갖기 때문에, 이러한 방식으로 특성을 검증하면 특성으로 하여금 모든 유효한 상태에 대해 확실하게 증명되거나 증명되지 않을 수 있다.
도 4의 방법(400)에 전술한 바와 같이, 공식 검증은, 제1 및 제2 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소 쌍이 동일한 입력(들)에 응답하여 동일한 출력(들)을 생성한다는 하나 이상의 제약 하에서 수행된다. 예를 들어, 제1 및 제2 데이터 변환 파이프라인이 두 개의 입력의 곱을 연산하도록 구성되는 데이터 변환 요소를 각각 포함하는 경우, 이들 두 개의 데이터 변환 요소는 실질적으로 등가인 것으로 간주될 수 있고, 이들 두 개의 데이터 변환 요소가 동일한 입력(들)에 응답하여 동일한 출력(들)을 생성할 수 있는 제약 하에서 공식 검증을 수행할 수 있다. 본 발명자는, 이러한 제약(들) 하에서 공식 검증을 수행하는 것이, 공식 검증이 수렴할(예를 들어, 네와 같은 결론적 답, 어서션(들) 유효, 또는 아니오, 어서션 중 적어도 하나가 유효하지 않음을 생성할) 가능성을 상당히 증가시킨다는 것을 확인했다. 이는, 공식 검증 툴에 의해 수행된 계산을 단순화할 수 있는 힌트로서 제약이 작용하기 때문이다.
일부 경우에, 제약은 하나 이상의 가정 진술에 의해 구현될 수 있다. 당업자에게 공지된 바와 같이, 가정 진술은, 공식 검증 툴에 의해 공식 검증 동안에 하드웨어 설계의 인스턴스의 거동에 대한 제약으로서 해석된다. 구체적으로, 특성을 가정하는 경우에, 공식 검증 툴은 특성이 유효하도록 입력을 제약한다. 따라서, 가정은, 하드웨어 설계의 특성이 검증되는 환경을 정의한다.
이하에서 더욱 상세히 설명되는 바와 같이, 상기 방법이 두 개의 하드웨어 설계가 기능적으로 등가인지(즉, 두 개의 하드웨어 설계의 인스턴스는 동일한 입력에 응답하여 동일한 출력을 항상 생성하는지) 검증하기 위해 사용되는 경우에, 상기 가정은 제1 및 제2 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소가 동일한 시간, 또는 시간적으로 관련있는 시점에 동일한 입력을 수신할 때마다 이들의 출력(들)이 동일함을 진술할 수 있다. 대조적으로, 상기 방법이 하드웨어 설계가 일관성이 있는지(즉, 하드웨어 설계의 인스턴스가 트랜잭션이 실행되는 시기에 상관없이 임의의 트랜잭션의 동일한 출력을 생성하는지) 검증하기 위해 사용되는 경우에, 상기 가정은, 제2 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소가 입력 세트를 수신하고 소정의 상태로부터 실행된 트랜잭션의 부분으로서 출력 세트를 생성하는 경우에, 제1 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소가 동일한 입력 세트를 수신하면 동일한 결과 세트를 생성할 것임을 진술할 수 있다. 이들 경우에, 실질적으로 등가인 데이터 변환 요소는 동일할 것이다. 이들 경우에. 사용될 수 있는 예시적인 가정은 도 8 및 도 9에 관해 이하에서 설명된다.
공식 검증 툴이 어서션을 검증하는 데 사용되는 경우, 공식 검증 툴은 어서션의 유효(즉, 어서트 특성이 모든 유효한 상태나 상태의 시퀀스에 대해 참)의 표시를 출력할 수 있고, 이는 또한 본원에서 어서션이 성공적으로 검증된 것으로서 지칭될 수 있다. 출력은 '예'일 수 있거나 어서션이 유효하거나 성공적으로 검증되었음; 아니요, 어서션이 유효하지 않음(즉, 어서트 특성이 사실이 아니거나 적어도 하나의 유효 상태 또는 상태의 시퀀스에 대해 실패함) 또는 성공적으로 검증되지 않았음; 또는 공식 검증이 확정적이지 않음일 수 있다. 공식 검증은 확정적이지 않을 수 있는데, 그 이유는, 예를 들어 공식 검증 툴을 실행하는 컴퓨터 기반 장치가 메모리 부족이기 때문에 또는 공식 검증 툴이 소정의 기간 후에도 특정 양의 진전이 이루어지지 않았다고 결정하였기 때문이다.
어서션이 유효하지 않거나 성공적으로 검증되지 않은 경우, 공식 검증 툴은 또한 어서트 특성을 실패시키는 하드웨어 설계의 상태 또는 상태의 시퀀스를 표시하는 정보를 출력할 수 있다. 예를 들어, 공식 검증 툴은 어느 시점, 상태 또는 상태의 시퀀스가 실패하였는지를 나타내는 검증의 추적을 출력할 수 있다.
공식 검증이 완료되면, 방법(400)은 종료될 수 있거나, 방법은 블록(404)으로 진행할 수 있다.
블록(404)에서, 데이터 변환 파이프라인용 하드웨어 설계의 제1 버전의 검증이 성공적이었는지 여부에 대한 결정이 이루어질 수 있다. 전술한 바와 같이, 공식 검증 툴이 하드웨어 설계에 대한 어서션을 검증하기 위해 사용되는 경우에, 공식 검증 툴은, 어서션이 유효한지(즉, 어서트 특성이 모든 유효한 상태 또는 상태의 시퀀스에 대하여 참인지) 여부를 표시하는 신호 또는 신호 세트를 출력할 수 있다. 이들 경우에, 검증이 성공적이었는지 여부에 대한 결정은 출력 신호(들)에 기초할 수 있다.
검증이 성공적이었다고(하드웨어 설계의 인스턴스가 예상대로 작동하고 있음을 나타냄) 결정되면, 방법(400)은 블록(406)으로 진행할 수 있고, 여기서 하드웨어 설계에 의해 설명된 데이터 변환 파이프라인을 구현하는 집적 회로가 제조된다. 그러나, 제1 데이터 변환 파이프라인용 하드웨어 설계의 검증이 성공적이지 못하였다고(하드웨어 설계에 에러가 있음을 나타냄) 결정되면, 방법(400)은 블록(408)으로 진행할 수 있고, 여기서 예기치 못한 거동을 야기하는 하드웨어 설계의 에러를 수정하도록 제1 데이터 변환용 하드웨어 설계가 수정된다. 하드웨어 설계가 일단 수정되면, 수정된 하드웨어 설계는 다시 검증될 수도 있다(예를 들어, 블록(402~408)이 수정된 하드웨어 설계에 대하여 반복될 수도 있음).
일부 경우에, 공식 검증을 수행하기 전에, 제1 및 제2 데이터 변환 파이프라인 중 적어도 하나의 실질적으로 등가인 데이터 변환 요소는 보다 단순한 로직으로 대체될 수 있다. 구체적으로, 공식 검증은 제1 및 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 출력(들)이 매칭함을 검증하고 이들 모두가 '정확함'을 검증하는 것은 아니기 때문에, 중요한 것은 파이프라인을 통한 제어 로직 이동 데이터가 정확한 것이고, 따라서 실질적으로 등가인 데이터 변환 요소는 보다 단순한 로직으로 대체될 수 있다. 구체적으로, 제1 및/또는 제2 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소는 블랙 박스화 될 수 있다(즉, 블랙 박스 요소로 대체될 수 있음).
예를 들어, 도 5 및 도 6은 예시적인 제1 및 제2 데이터 변환 파이프라인(502, 504, 602, 604)을 나타내고, 이들 각각은 복수의 데이터 변환 요소(506, 508, 510, 512, 606, 608, 610, 612)를 포함한다. 도 5의 예에서, 제1 및 제2 데이터 변환 파이프라인(502, 504)은 상이하지만, 실질적으로 등가인 데이터 변환 요소(506, 510)를 포함한다. 따라서, 이 예시에서, 실질적으로 등가인 데이터 변환 요소(506, 510) 중 하나 또는 둘 모두는 블랙 박스화될 수 있다(즉, 블랙 박스 요소로 대체될 수 있음). 대조적으로, 도 6의 예시에서, 제1 및 제2 데이터 변환 파이프라인(602, 604)은 동일하므로, 따라서 제1 데이터 변환 파이프라인(602)의 데이터 변환 요소(606, 608)의 각각은 제2 데이터 변환 파이프라인(604)에서 동일한 데이터 변환 요소(610, 612)를 갖는다. 따라서, 이 예시에서의 모든 데이터 변환 요소는 실질적으로 등가인 데이터 변환 요소를 갖는다. 따라서, 도 6의 예시에서, 데이터 변환 요소(606, 608, 610, 612) 중 임의 또는 전부는 블랙 박스화될 수 있다(즉, 블랙 박스 요소로 대체될 수 있음).
하드웨어 설계의 구성 요소를 블랙 박스 요소로 대체하는 공정을 블랙 박스화로 지칭한다. 당업자에게 공지된 바와 같이, 하드웨어 설계의 구성 요소가 블랙 박스화되면, 이는 구성 요소의 출력(들)을 구동하는 로직을 절단하고 출력(들)을 ''자유값"으로 만들고, 즉 출력(들)은 입력(들)에 관계없이 임의의 값을 취할 수 있음을 의미한다. 따라서, 블랙 박스 요소가 동일한 입력 값(들)을 두 개의 상이한 시간에서 수신한다 해도, 상이한 출력 값(들)을 발생시킬 수 있다. 블랙 박스화는 대안적으로, 데이터 변환 요소의 출력을 구동하는 로직을 절단점 또는 중지점으로 대체하는 것으로 설명될 수 있다.
데이터 변환 파이프라인의 데이터 변환 요소를 블랙 박스화하면 파이프라인으로부터 변환 로직을 제거하기(무한 시간 공식 검증 툴을 통상적으로 처리할 수 없기) 때문에, 블랙 박스화된 데이터 변환 요소가 더 많을수록 공식 검증이 수렴할(즉, 결론적 답을 생성할) 확률이 더 높다. 이는, 데이터 변환 요소를 블랙 박스화하면 공식 검증 툴이 그 데이터 변환 요소의 결과를 계산할 필요가 없음을 의미하기 때문이다. 그러나, 블랙 박스화된 데이터 변환 요소가 더 많을수록 위음성의 확률을 높인다(즉, 하드웨어 설계에 에러가 없더라도 공식 검증이 실패할 확률이 높음). 이는, 특정 신호에 대한 구동 로직을 제거하면 하드웨어 설계의 하나 이상의 이전에 미리 접하지 못한 상태가 도달할 수 있음을 의미할 수 있기 때문이다. 이들 상태 중 일부는 공식 검증을 실패시킬 수 있지만, 실제 하드웨어 설계에서는 도달되지 않을 수 있으므로, 이것은 잘못된 실패(즉, 위음성)이다.
구체적으로, 실질적으로 등가인 데이터 변환 요소 중 아무것도 블랙 박스화되지 않으면, 공식 검증은 제약 없이 수행된 공식 검증보다 수렴할 가능성이 있지만, 만약 제1 데이터 변환 파이프라인 및/또는 제2 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소가 블랙 박스화되는 경우보다 수렴할 가능성은 더 적다. 그러나, 위음성의 확률은 영(zero)이다. 대조적으로, 제1 및 제2 데이터 변환 파이프라인 모두의 실질적으로 등가인 데이터 변환 요소가 블랙 박스화되면, 공식 검증은 수렴할 가능성이 상당히 더 높다. 이는, 공식 검증 툴이 수행할 데이터 변환이 거의 없기 때문이다. 그러나, 위음성의 확률은 증가한다. 이는, 위음성이 이제 가능할 수 있기 때문이다(즉, 도달할 수 없는 상태가 이제 도달할 수 있음). 그러나, 제1 및 제2 데이터 변환 파이프라인 중 오직 하나의 실질적으로 등가인 데이터 변환 요소가 블랙 박스화가 되면 - 즉, 제1 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소가 블랙 박스화가 되고 제2 데이터 변환 파이프라인의 실질적으로 등가 데이터 변환 요소가 블랙 박스화가 되지 않으면, 또는 제2 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소가 블랙 박스화가 되고 제1 데이터 변환 파이프라인의 실질적으로 등가 데이터 변환 요소가 블랙 박스화가 되지 않으면 - 공식 검증은 데이터 변환 요소 모두 블랙 박스화되지 않는 경우보다 수렴할 가능성이 더욱 크나, 두 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소가 모두 블랙 박스화되는 경우보다 수렴할 가능성이 더욱 작다. 그러나, 두 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소가 블랙 박스화 되는 경우보다 위음성의 가능성은 더 낮다. 이는 아래 표 1에 요약되어 있다.
표 1
Figure 112020117296811-pct00020
그러나, 본원에 설명된 검증 방법의 한 가지 중요한 이점은, 어느 것인지, 얼마나 많은지, 데이터 변환 요소는 블랙 박스화 되는지와 상관없이, 위양성은 없을 것이다(즉, 공식 검증은, 제1 데이터 변환 파이프라인용 하드웨어 설계에 에러(하드웨어 설계의 인스턴스로 하여금 에러 방식으로 작용시킴)가 존재하면 성공하지 못할 것임).
제1 데이터 변환 요소의 실질적으로 등가인 데이터 변환 요소가 블랙 박스가 되면, 제약(들)은 대응하는 데이터 변환 요소를 대체하는 블랙 박스 요소의 출력을 제어한다. 이는, 제약이 입력에 기초하여 실질적으로 등가인 데이터 변환 요소의 출력(들)(즉, 출력 신호(들))을 제어하고 따라서 실질적으로 등가인 데이터 변환 요소가 블랙 박스로 대체되면 블랙 박스 요소의 출력(들)(즉, 출력 신호(들))이 여전히 입력에 기초하여 동일한 방식으로 제어되기 때문이다. 이는 블랙 박스 요소로 하여금 결정적 방식으로 작용시킨다. 제약(들)이 없다면, 제1 데이터 변환 파이프라인의 임의의 블랙 박스 요소의 출력(들)은 '자유값'이고, 이는 입력(들)에 대해 임의의 값을 독립적으로 취할 수 있고, 따라서 동일한 입력(들)에 상이한 출력(들)을 생성할 수 있다. 따라서, 제1 데이터 변환 요소의 블랙 박스 요소의 출력(들)이 제약에 의해 제어되지 않은 경우, 공식 검증은 실패할 가능성이 있고, 하드웨어 설계의 인스턴스가 동일한 파이프라인 입력(들)을 수신하였지만 설계가 적절히 구성되는 경우에도 상이한 출력을 생성하였던 불가피한 시나리오일 수 있다.
제1 데이터 변환 파이프라인의 데이터 변환 요소가 블랙 박스화 되지 않고 제2 데이터 변환 파이프라인의 데이터 변환 요소가 블랙 박스화 되지 않고(즉, 표 1의 방법 2) 제2 데이터 변환 파이프라인의 초기 트랜잭션이 제1 데이터 변환 파이프라인의 후기 트랜잭션과 비교되는 경우에, 상기 가정은 역전파된다고 말한다. 구체적으로, 공식 검증 툴은, 최대
Figure 112020117296811-pct00021
사이클까지 가정을 만족시키는 상태가 없는 경우에 하나 이상의 제약(예, 가정)으로 평가된 어서션이
Figure 112020117296811-pct00022
사이클에서 유효한 것으로 간주하나
Figure 112020117296811-pct00023
사이클에서 어서션에 실패한다. 이는, 현재 (또는 과거) 가정에 실패하도록 불가피하게 유도한 과거의 임의 상태가 배제될 것임을 의미한다. 이는 가정의 역전파를 야기할 수 있다.
위음성의 가능성 있는 곳에 검증 방법(즉, 하나 이상의 데이터 변환 요소가 블랙 박스화 되는 방법)을 사용하는 경우, 하나 이상의 블랙 박스 요소의 출력에 제한 또는 제약 사항을 배치하여 블랙 박스 요소가 예상하지 못한 특성을 갖는 출력(들)(즉, 대응하는 데이터 변환 요소에 의해 유효하게 생성되지 않을 수 있는 출력)을 생성하지 않는 것을 보장할 수 있다. 이러한 제한은, 예를 들어 가정을 생성하고 제1 데이터 변환 파이프라인용 하드웨어 설계에 상기 가정을 링크시킴으로써, 블랙 박스 요소에 부과될 수 있다. 예를 들어, 데이터 변환 요소가 입력의 제곱을 생성하도록 구성되는 경우, 하류 구성요소는 데이터 변환 요소가 0 이상인 수를 출력하도록 예상할 수 있다. 이 예시에서, 블랙 박스 요소의 출력이 0 이상임을 진술하는 이러한 데이터 변환 요소를 대체하는 블랙 박스 요소에 대한 가정을 생성할 수 있다. 유사하게, 데이터 변환 요소가 입력의
Figure 112020117296811-pct00024
을 출력하도록 구성되면, 상기 블랙 박스 요소의 출력이
Figure 112020117296811-pct00025
내지
Figure 112020117296811-pct00026
(두 수치 포함)임을 진술하는 데이터 변환 요소를 대체하는 블랙 박스 요소에 대한 가정을 생성할 수 있다. 일반적으로, 특성은, 실제로 참으로 증명될 때까지 공식 검증 동안 가정되지 않는다. 예를 들어, 데이터 변환 요소(또는 이를 대체하는 블랙 박스 요소)의 출력이 0 이상으로 진술하는 가정이 생성되기 전에, 데이터 변환 요소의 출력이 항상 0 이상으로 (공식 검증 또는 다른 검증 수단에 의해) 검증된다. 이들은 단지 예시이고 다른 제한 또는 제약이 블랙 박스 요소의 출력에 부과될 수 있음이 당업자에게 명백할 것이다. 일부 경우에, 특정 검증 방법과 연관된 위음성이 블랙 박스 요소(들)의 출력(들)에 부과된 제약 또는 제한을 통해 제거될 수 없는 경우, 특정 방법은 실행 가능한 검증 방법으로 간주되지 않을 수 있다.
제1 데이터 변환 파이프라인용 하드웨어 설계를 검증하기 위한 제1 구현예에 따른 예시적 시스템(700)을 나타낸 도 7을 이제 참조한다. 시스템(700)은, 도 14에 관해 후술하는 컴퓨터 기반 장치(1400)와 같은 하나 이상의 컴퓨터 기반 장치에 의해 구현될 수 있다. 예를 들어, 도 7의 시스템(700)의 하나 이상의 구성 요소는 컴퓨터 판독가능 명령어로서 구현될 수 있으며, 이는 컴퓨터 기반 장치에 의해 실행되는 경우에 컴퓨터 기반 장치로 하여금 후술하는 구성 요소의 기능을 수행시킨다.
시스템(700)은 제1 데이터 변환 파이프라인(702)용 하드웨어 설계, 제2 데이터 변환 파이프라인(704)용 하드웨어 설계, 하나 이상의 가정(706), 하나 이상의 어서션(708) 및 공식 검증 툴(710)을 포함한다.
제1 및 제2 데이터 변환 파이프라인(702, 704)에 대한 하드웨어 설계는, 제1 또는 제2 데이터 변환 파이프라인의 구조 및/또는 기능에 대한 설명을 각각 포함한다. 제1 및 제2 데이터 변환 파이프라인 각각은, 하나 이상의 입력 세트에 대한 데이터 변환을 수행하도록 구성된 하나 이상의 데이터 변환 요소를 포함한다. 제1 및 제2 데이터 변환 파이프라인은 기능적으로 등가로 의도된다(즉, 이들은 동일한 파이프라인 입력(들)에 응답하여 동일한 파이프라인 출력(부)를 생성하도록 의도됨). 제1 및 제2 데이터 변환 파이프라인은 동일할 수 있거나, 또는 상이할 수 있다. 어느 경우이든, 제2 데이터 변환 파이프라인의 데이터 변환 요소와 실질적으로 등가인 제1 데이터 변환 파이프라인의 적어도 하나의 데이터 변환 요소가 있다. 일부 경우에, 제1 및/또는 제2 데이터 변환 요소의 실질적으로 등가인 데이터 변환 요소는 블랙 박스화 될 수 있다. 제1 및/또는 제2 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소의 블랙 박스화의 이점 및 단점을 전술하였다.
하나 이상의 가정(706)은, 제1 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소(들)(또는 대응하는 블랙 박스 요소(들))의 거동을 제한하여, 제2 데이터 변환 파이프라인의 대응하는 데이터 변환 요소와 동일한 방식으로 작용한다. 즉, 하나 이상의 가정은 제1 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소의 거동을 제한하여, 제1 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소가 제2 데이터 변환 파이프라인의 대응하는 데이터 변환 요소와 동일한 입력을 수신하는 경우에 동일한 출력(들)을 생성시킨다. 하나 이상의 가정은 제1 및 제2 데이터 변환 파이프라인용 하드웨어 설계에 링크되어, 제1 및 제2 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소의 입력이 링크된다.
이하에서 더욱 상세히 설명되는 바와 같이, 상기 시스템이 두 개의 하드웨어 설계가 기능적으로 등가인지(즉, 상기 하드웨어 설계의 인스턴스는 동일한 입력에 응답하여 동일한 출력을 항상 생성하는지) 검증하기 위해 사용되는 경우에, 상기 가정은 제1 및 제2 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소가 동일한 시간, 또는 시간적으로 관련있는 시점에 동일한 입력을 수신할 때마다 이들의 출력(들)이 동일함을 진술할 수 있다. 대조적으로, 상기 시스템이 단일 하드웨어 설계가 일관성이 있는지(즉, 하드웨어 설계의 인스턴스가 트랜잭션이 실행되는 시기에 상관없이 임의의 트랜잭션의 동일한 출력을 생성하는지) 검증하기 위해 사용되는 경우에, 상기 가정은, 제2 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소가 하나 이상의 입력 세트를 수신하고 소정의 상태로부터 실행된 트랜잭션의 부분으로서 하나 이상의 출력 세트를 생성하는 경우에, 제1 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소가 동일한 입력 세트를 언제라도 수신하면 동일한 결과 세트를 생성할 것임을 진술할 수 있다. 이들 경우, 두 개의 하드웨어 설계가 동일하므로, 실질적으로 등가인 데이터 변환 요소가 동일할 것이다.
어서션(708)은 하나 이상의 어서션을 포함하고, 이는, 제1 데이터 변환 파이프라인용 하드웨어 설계에 대해 검증된 경우에 제1 및 제2 하드웨어 설계의 인스턴스가 소정의 트랜잭션 세트에 대한 동일한 출력(들)을 생성함을 증명한다. 당업자에게 공지된 바와 같이, 어서션은 특정한 특성이 하드웨어 설계를 위해 유효할(즉, 항상 참일) 것으로 예상되는 진술이다. 후술하는 바와 같이, 시스템(700)이 두 개의 상이한 하드웨어 설계의 인스턴스가 항상 동일한 출력(들)을 생성하는지 검증하기 위해 사용되는 경우, 하나 이상의 어서션은 동일한 상태로부터 동일한 트랜잭션을 실행하는 경우의 하드웨어 설계의 인스턴스의 출력(들)과 비교하도록 구성될 수 있다. 대조적으로, 상기 시스템(700)이 하드웨어 설계의 인스턴스가 일관성이 있는지(즉, 트랜잭션이 실행되는 시기에 상관없이 상기 트랜잭션에 동일한 출력을 항상 생성하는지) 검증하기 위해 사용되는 경우에, 상기 하나 이상의 어서션은, 상기 파이프라인의 소정의 상태로부터 트랜잭션을 실행하는 경우의 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 출력(들)을, 상기 파이프라인의 임의 다른 상태로부터 상기 동일한 트랜잭션을 실행하는 경우의 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 출력(들)에 비교하도록 구성될 수 있다. 이들 경우에 사용될 수 있는 예시적인 어서션이 아래에 설명되어 있다.
하나 이상의 어서션(708)은, 어서트 특성(들)을 평가할 수 있도록 하나 이상의 어서션이 하드웨어 설계의 관련 신호에 접속되도록, 제1 및 제2 데이터 변환 파이프라인용 하드웨어 설계에 링크된다. 전술한 바와 같이, 하나 이상의 어서션은 하나 이상의 어서션(708)을 제1 및 제2 데이터 변환 파이프라인용 하드웨어 설계에 결합함으로써 하드웨어 설계에 링크될 수 있다.
전술한 바와 같이, 공식 검증 툴(710)은 하드웨어 설계의 공식 검증을 수행할 수 있는 소프트웨어 툴이다. 공식 검증은 무한한 시간에 걸쳐 하나 이상의 어서션을 이상적으로 검증하기 때문에, 무한 시간 공식 검증 툴을 사용하는 것이 유리할 수 있다.
제1 데이터 변환 파이프라인(702)용 하드웨어 설계, 제2 데이터 변환 파이프라인(704)용 하드웨어 설계, 하나 이상의 가정(706), 하나 이상의 어서션(708) 및 바인딩(있다면)은 공식 검증 툴(710)에 로딩된다. 그 다음, 공식 검증 툴(710)은, 하나 이상의 어서션이 제1 데이터 변환 파이프라인용 하드웨어 설계에 대해 참인지 공식적으로 검증하도록 구성된다.
공식 검증 툴(710)이 어서션을 검증하는 데 사용되는 경우, 공식 검증 툴(710)은 어서션의 유효(즉, 어서트 특성이 모든 유효한 상태나 상태의 시퀀스에 대해 참)의 표시를 출력할 수 있고, 이는 또한 본원에서 어서션이 성공적으로 검증된 것으로서 지칭될 수 있다. 출력은 '예'일 수 있거나 어서션이 유효하거나 성공적으로 검증되었음; 아니요, 어서션이 유효하지 않음(즉, 이는 사실이 아니거나 적어도 하나의 유효 상태 또는 상태의 시퀀스에 대해 실패함) 또는 성공적으로 검증되지 않았음; 또는 공식 검증이 확정적이지 않음일 수 있다. 공식 검증은 확정적이지 않을 수 있는데, 그 이유는, 예를 들어 공식 검증 툴(710)을 실행하는 컴퓨터 기반 장치가 메모리 부족이기 때문에 또는 공식 검증 툴(710)이 소정의 기간 후에도 특정 양의 진전이 이루어지지 않았다고 결정하였기 때문이다.
어서션이 유효하지 않거나 성공적으로 검증되지 않은 경우, 공식 검증 툴(710)은 또한 어서션을 실패시키는 하드웨어 설계의 상태 또는 상태의 시퀀스를 표시하는 정보를 출력할 수 있다. 예를 들어, 공식 검증 툴(710)은 어느 시점, 상태 또는 상태의 시퀀스가 실패하였는지를 나타내는 검증의 추적을 출력할 수 있다.
방법(400)을 사용하여 제1 데이터 변환 파이프라인용 하드웨어 설계가 제2 데이터 변환 파이프라인용 하드웨어 설계와 기능적으로 등가인지(즉, 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스와 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스가 동일한 입력(들)에 응답하여 항상 동일한 출력을 생성할 것인지) 검증하는 경우에, 도 4의 방법(400)의 단계(402)를 구현하기 위한 예시 방법(800)을 나타낸 도 8을 이제 참조한다.
도 8의 방법(800)에서, 제1 및 제2 데이터 변환 파이프라인은 상이하나(즉, 동일하지 않음), 제1 및 제2 데이터 변환 파이프라인에 적어도 한 쌍의 실질적으로 등가인 데이터 변환 요소가 있다. 구체적으로, 제2 데이터 변환 파이프라인의 적어도 하나의 데이터 변환 요소와 실질적으로 등가인 제1 데이터 변환 파이프라인의 적어도 하나의 데이터 변환 요소가 있다. 두 개의 데이터 변환 요소는, 이들이 동일하거나 기능적으로 동등한 경우에 "실질적으로 등가"이다. 두 개의 데이터 변환 요소는, 동일한 입력(들)에 응답하여 동일한 출력(들)을 생성하는 경우에 실질적으로 등가이다라고 말한다. 제1 및 제2 데이터 변환 파이프라인 내의 실질적으로 등가인 데이터 변환 요소 쌍은 수동으로(예, 사람에 의해) 식별되거나 자동으로 식별될 수 있다. 예를 들어, 도 14의 컴퓨터 기반 장치(1400)와 같은 컴퓨터 기반 장치는, 제1 및 제2 데이터 변환 파이프라인용 하드웨어 설계에서 동일한 코드를 식별함으로써, 실질적으로 등가인 데이터 변환 요소를 자동으로 식별하도록 구성될 수 있다.
도 8의 방법(800)에서, 제1 및 제2 데이터 변환 파이프라인용 하드웨어 설계의 기능적 등가는, 임의의 파이프라인 입력 세트에 있어서 제1 및 제2 데이터 변환용 하드웨어 설계의 인스턴스가 동일한 출력 세트를 생성할 것이라는 것을 공식적으로 검증함으로써, 검증된다. 공식 검증은, 제1 및 제2 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소가 동일한 입력(들)에 응답하여 동일한 출력(들)을 생성한다는 제약 하에서 수행된다. 전술한 바와 같이, 본 발명자는 이러한 제약 하에서 공식 검증을 수행하는 것이 공식 검증이 수렴할 가능성을 상당히 개선한다는 것을 식별하였다.
방법(800)은 블록(802)에서 시작하고, 여기서 공식 검증 툴을 사용하여, 임의의 파이프라인 입력에 있어서 제1 및 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스가 동일한 출력 세트를 생성할 것이라는 것을 공식적으로 검증한다.
임의의 파이프라인 세트에 대해, 제1 및 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스가 동일한 출력(들) 세트를 생성할 것이라는 것을 공식적으로 검증하는 단계는, 하나 이상의 어서션을 생성하는 단계와 하나 이상의 어서션을 공식적으로 검증하는 단계를 포함할 수 있다. 예를 들어, 일부 경우에, 제1 및 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스에 대한 입력(들)은 함께 연결되어, 공식 검증 동안에 상기 인스턴스는 동일한 입력(들)을 수신할 수 있다. 이들 경우에, 임의의 입력 세트에 대해 대응하는 출력 세트(들)가 동일함을 진술하는 어서션을 생성할 수 있다.
제1 및 제2 데이터 변환 파이프라인이 동일한 수의 사이클에서 트랜잭션(즉, 파이프라인 입력 세트)을 처리하도록 구성(예, 제1 및 제2 데이터 변환 파이프라인 모두 5회 사이클 동안 트랜잭션을 처리하도록 구성)되는 경우, 어서션은 제1 및 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 출력이 동일함을 진술하는 만큼 간단할 수 있다. 다음은 SV 어서션의 예시로, 이는 first_pipe_output 이 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 출력이고, second_pipe_output 이 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 출력인 경우에 사용될 수 있다:
Figure 112020117296811-pct00027
제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 출력 결과(first_pipe_output)는 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 출력 결과(second_pipe_output)와 동일함을 이 어서션이 진술하고 있다는 것이 당업자에게 명백할 것이다. 공식 검증 툴은 어서션이 사실이 아닐 때(즉, 출력이 매칭하지 않을 때) 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 상태 유무를 결정함으로써 어서션을 검증한다. 그런 상태가 없다면, 어서션은 성공적으로 검증된다고 말한다. 따라서, 이 어서션은, 하드웨어 설계의 인스턴스의 출력이 매칭하지 않는 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스 중 적어도 하나의 상태가 존재하는 경우에, 실패할 것이다.
제1 및 제2 데이터 변환 파이프라인이 동일한 수의 사이클에서 트랜잭션(즉, 파이프라인 입력 세트)을 처리하도록 구성(예, 제1 데이터 변환 파이프라인 모두 5회 사이클 동안 트랜잭션을 처리하도록 구성되는 반면에 제2 데이터 변환 파이프라인 모두 7회 사이클 동안 트랜잭션을 처리하도록 구성)되는 경우, 어서션은 출력 사이의 지연 또는 오프셋을 고려한다. 예를 들어, 다음은 SV 어서션의 예시로, 이는 제2 데이터 변환 파이프라인이 동일한 트랜잭션에 출력을 생성한 이후에 n 회 사이클 트랜잭션에 출력을 생성하는 경우에 사용될 수 있고, 여기서 first_pipe_output 은 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 출력이고, second_pipe_output 은 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 출력이다. 당업자에게 공지된 바와 같이 "$past (a, b)"는 a, b 사이클 이전(또는 이전 b 사이클)의 값으로 돌려주는 SV 연산자이다.
Figure 112020117296811-pct00028
제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 출력 결과(first_pipe_output)는 n 사이클 전의 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 출력 결과(second_pipe_output)와 동일함을 이 어서션이 진술하고 있다는 것이 당업자에게 명백할 것이다.
공식 검증은, 제1 및 제2 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소가 동일한 시간 또는 관련 시점에 동일 입력(들)을 수신하는 경우에 동일한 입력(들)에 응답하여 동일한 출력(들)을 생성한다는 제약 하에서 수행된다. 예를 들어, 도 5의 제1 및 제2 데이터 변환 파이프라인(502, 504) 예시는, 실질적으로 등가인 데이터 변환 요소(506 및 510) 한 쌍을 포함한다. 이 예시에서, 공식 검증은, 데이터 변환 요소(506) 및 데이터 변환 요소(510)가 동일한 시간 또는 관련 시점에 동일한 입력(들)을 수신하는 경우에 동일한 출력(들)을 생성한다는 제약 하에 수행될 수 있다. 실질적으로 등가인 데이터 변환 요소 중 다수의 쌍이 있는 경우, 제약은 실질적으로 등가인 데이터 변환 요소 쌍의 임의의 조합에 적용될 수 있다. 예를 들어, 상기 제약은, 실질적으로 등가인 데이터 변환 요소의 오직 한 쌍; 실질적으로 등가인 데이터 변환 요소의 한 쌍 이상; 또는 실질적으로 등가인 데이터 변환 요소의 모든 쌍에 적용될 수 있다.
일부 경우에, 실질적으로 등가인 데이터 변환 요소의 한 쌍 이상은 시간 정렬될 수 있다. 두 개의 실질적으로 등가인 데이터 변환 요소는, 동일한 트랜잭션에 대해 동일한 시간(즉 동일한 사이클)에서 동일한 입력을 수신하는 경우, "시간 정렬"된다고 말한다. 이들 경우에, 이들 실질적으로 등가인 데이터 변환 요소 쌍에 관한 제약은, 실질적으로 등가인 데이터 변환 요소가 동일한 시간에 동일한 입력(들)을 수신하는 경우에 이들이 동일한 출력(들)을 생성할 수 있다. 일부 경우에, 실질적으로 등가인 데이터 변환 요소의 한 쌍 이상은 시간 오프셋 될 수 있다. 두 개의 데이터 변환 요소는, 동일한 트랜잭션에 대해 이들이 관련 시점에(예, 고정된 횟수의 이격 사이클)에 동일한 입력을 수신하는 경우에 "시간 오프셋"된다고 말한다. 예를 들어, 데이터 변환 요소(510)는, 데이터 변환 요소(506)가 해당 트랜잭션에 대한 입력을 수신한 이후에 특정 트랜잭션 2회 사이클에 대한 입력(들)을 항상 수신할 수 있다. 이들 경우에, 이들 실질적으로 등가인 데이터 변환 요소 쌍에 관한 제약은, 실질적으로 등가인 데이터 변환 요소가 관련 시점(예, 고정된 횟수의 이격 사이클)에 동일한 입력을 수신하는 경우에 이들이 동일한 출력(들)을 생성할 수 있다. 일부 경우에, 하나 이상의 실질적으로 등가인 데이터 변환 요소 쌍은 고정된 시간 관계를 갖지 않을 수 있지만, 일어날 수 있는 오프셋 세트는 제한될 것이다. 예를 들어, 실질적으로 등가인 데이터 변환 요소는 5, 7 및 9 사이클 중 하나에 의해 오프셋될 수 있다. 이들 경우에, 이들 실질적으로 등가인 데이터 변환 쌍에 관한 제약은, 실질적으로 등가인 데이터 변환 요소가 소정의 관련 시점 세트 중 하나(예, 소정의 사이클 오프셋 세트 중 하나)에 동일한 입력을 수신하는 경우에 이들이 동일한 출력(들)을 생성할 수 있다.
전술한 바와 같이, 제약은 하나 이상의 가정 진술문으로 구현될 수 있다. 실질적으로 등가인 데이터 변환 요소(506, 510)가 시간 정렬된(즉, 이들은 동일한 시간에 동일한 트랜잭션에 입력(들)을 수신할 것임) 도 5의 실질적으로 등가인 데이터 변환 요소(506, 510)에 대해 SV에 기록된 예시적인 가정이 아래에 나타나 있다. 이 예시 가정에서, input_DTE_first_pipe 은 제1 데이터 변환 파이프라인(502)의 데이터 변환 요소(DTE)(506)로의 입력이고, input_DTE_second_pipe 은 제2 데이터 변환 파이프라인의 데이터 변환 요소(DTE)(510)으로의 입력이고, output_DTE_first_pipe 은 제1 데이터 변환 파이프라인(502)의 데이터 변환 요소(DTE)(506)의 출력이고, output_DTE_second_pipe 제2 데이터 변환 파이프라인의 데이터 변환 요소(DTE)(510)의 출력이다.
Figure 112020117296811-pct00029
당업자에게 이해되는 바와 같이, 이 예시적 가정은, 제1 및 제2 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소(506, 510)에 대한 입력이 동일하면 (input_DTE_first_pipe == input_DTE_second_pipe), 제1 및 제2 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소(506, 510)의 해당 출력이 동일하다(output_DTE_first_pipe == output_DTE_second_pipe)).
테스트는, 이러한 제약 하에서 공식 검증을 수행하면, 공식 검증이 수렴할 가능성을 증가시키는 것으로 나타났다. 일단 공식 검증이 완료되면 방법(800)은 종료된다.
일부 경우에, 블록(802)의 공식 검증을 수행하기 전에, 블록(804 내지 812) 중 하나 이상을 수행할 수 있다. 예를 들어, 블록(802)의 공식 검증을 수행하기 전에, 제1 및 제2 데이터 변환 파이프라인 내의 실질적으로 등가인 데이터 변환 요소 쌍의 잠재 목록은 블록(804)에서 식별될 수 있다. 제1 및 제2 데이터 변환 파이프라인 내의 실질적으로 등가인 데이터 변환 요소 잠재 쌍은 수동으로(예, 사람에 의해) 식별되거나 자동으로 식별될 수 있다. 예를 들어, 도 14의 컴퓨터 기반 장치(1400)와 같은 컴퓨터 기반 장치는, 제1 및 제2 데이터 변환 파이프라인용 하드웨어 설계에서 동일한 코드를 식별함으로써, 실질적으로 등가인 데이터 변환 요소를 자동으로 식별하도록 구성될 수 있다. 일단 실질적으로 등가인 데이터 변환 요소 쌍의 잠재 목록이 식별되었다면, 방법(800)은 블록(806)으로 진행할 수 있다.
블록(806)에서, 블록(804)에서 식별된 실질적으로 등가인 데이터 변환 요소의 임의의 잠재 쌍 중 어는 것도 동일하지 않은지(즉, 각각의 하드웨어 설계에서 동일한 코드로 형성되지 않거나 동일한 코드에 의해 정의되지 않은지), 결정이 이루어진다. 실질적으로 등가인 데이터 변환 요소 중 적어도 한 쌍이 동일하지 않은 것으로 결정되는 경우, 방법(800)은 블록(808)으로 진행할 수 있고, 그렇지 않으면 방법(800)은 블록(802)으로 직접 진행할 수 있고, 여기서 제1 데이터 변환 파이프라인용 하드웨어 설계의 공식 검증에서, 실질적으로 등가인 데이터 변환 요소의 쌍의 목록으로서 실질적으로 등가인 데이터 변환 요소 쌍의 잠재 목록을 사용한다.
블록(808)에서, 블록(804)에서 식별된 적어도 한 쌍의 실질적으로 등가인 데이터 변환 요소가 동일하지 않은 경우, 실질적으로 등가인 데이터 변환 요소의 비동일한 각 쌍에 대해, 실질적으로 등가인 데이터 변환 요소가 기능적으로 등가임이 검증된다. 한 쌍의 데이터 변환 요소가 기능적으로 등가인지 검증하는 단계는, 두 개의 데이터 변환 요소가 항상 동일한 입력(들)에 응답하여 동일한 출력(들)을 생성함을 (예를 들어, 하나 이상의 어서션을 공식 검증함으로써) 공식 검증하는 단계를 포함할 수 있다. 일단 비동일한 데이터 변환 요소 쌍의 기능적 등가성의 검증이 완료되면, 방법(800)은 블록(810)으로 진행한다.
블록(810)에서, 블록(808) 내의 검증이 성공적이었는지 여부를 결정한다. 검증이 성공적인 것으로 결정되면, 방법(800)은 블록(802)으로 직접 진행하고, 여기서 제1 데이터 변환 파이프라인용 하드웨어 설계의 공식 검증에서, 실질적으로 등가인 데이터 변환 요소 쌍의 목록으로서 실질적으로 등가인 데이터 변환 요소 쌍의 잠재 목록을 사용한다. 그러나, 블록(808) 내의 검증 중 적어도 하나가 성공적이지 않다면, 방법(800)은 블록(812)으로 진행하고, 여기서 실질적으로 등가인 데이터 변환 요소 쌍의 목록이 업데이트되어 블록(808) 내의 검증이 성공적이지 않은 임의의 쌍을 배제한다. 방법(800)은 그다음 블록(802)으로 진행하고, 여기서 제1 데이터 변환 파이프라인용 하드웨어 설계의 공식 검증에서, 실질적으로 등가인 데이터 변환 요소 쌍의 업데이트된 잠재 목록을 사용한다. 이러한 방식으로, 제약(예, 가정)은 동일한 또는 기능적으로 등가인 데이터 변환 요소 쌍에만 부과될 것이다. 이는, 공식 검증 동안에, 이게 사실로 증명되지 않는다면 두 개의 비동일 데이터 변환 요소가 동일한 입력에 응답하여 동일한 출력을 생성할 것임을 가정하는 것이 안전하지 않기 때문이다.
방법(400)을 사용하여 제1 데이터 변환 파이프라인용 하드웨어 설계가 일관성이 있는지(즉, 하드웨어 설계의 인스턴스가 트랜잭션이 실행되는 시기에 상관없이 동일한 트랜잭션(즉, 파이프라인 입력(들) 세트)에 동일한 결과를 항상 생성할 것인지) 검증하는 경우에, 도 4의 방법(400)의 단계(402)를 구현하기 위한 예시 방법(900)을 나타낸 도 9를 이제 참조한다. 이 방법(900)에서, 제1 및 제2 데이터 변환 파이프라인은 같다(즉, 동일하다). 즉, 이 방법(900)에서, 제1 및 제2 데이터 변환 파이프라인용 하드웨어 설계는 동일한 하드웨어 설계의 두 개의 사본이다.
도 9의 방법(900)에서, 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스가 소정의 상태로부터 트랜잭션을 실행하는 경우, 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스가 다른 임의의 상태로부터 동일한 트랜잭션을 실행한다면 상기 하드웨어 설계의 인스턴스가 동일한 출력을 생성함을 검증함으로써, 제1 데이터 변환 파이프라인용 하드웨어 설계의 일관성을 검증한다. 이는, 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스가 파이프라인의 소정 상태(예, 하드웨어 설계의 인스턴스의 리셋 후에 발생하는 상태)로부터 트랜잭션(본원에서 감시 트랜잭션으로 지칭됨)을 실행하는 경우, 상기 입력 및 출력을 파이프라인에 그리고 상기 입력 및 출력을 하나 이상의 데이터 변환 요소에 기록함으로써, 수행된다. 기록된 데이터는 총괄적으로 감시 트랜잭션 데이터로 지칭될 수 있다. 그 다음, 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스가 감시 트랜잭션을 실행하는 경우, 이는 기록된 파이프라인 출력을 생성함을 공식 검증한다. 공식 검증 툴은, 감시 트랜잭션이 임의의 상태로부터 실행되는 경우에 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 출력이 각각의 가능한 감지 트랜잭션(즉, 각각의 가능한 입력 세트)에 대해 기록된 파이프라인 출력과 매칭하는지 검증할 것이다. 이는, 임의의 감지 트랜잭션에 대해(즉, 임의의 파이프라인 입력 세트에 대해), 하드웨어 설계의 인스턴스는, 감시 트랜잭션이 실행되는 시기와 상관없이 감시 트랜잭션에 동일한 출력을 생성할 것임을 검증한다.
방법(900)은, 캡처 모듈용 하드웨어 설계를 생성하는 블록(902)에서 시작한다. 캡처 모듈은, 제2 데이터 변환 파이프라인에 대한 감시 트랜잭션 데이터를 캡처하도록 구성된다. 검사 트랜잭션 데이터는, 감시 트랜잭션(즉, 파이프라인의 소정의 상태로부터 실행된 트랜잭션)에 대한 파이프라인 입력(들) 및 출력(들)의 기록; 및 감시 트랜잭션에 대한 하나 이상의 데이터 변환 요소로부터의 출력(들) 및 이로의 입력(들)의 기록을 포함한다. 데이터 변환 요소의 출력이 파이프라인 출력을 나타내는 경우, 파이프라인 출력은 데이터 변환 요소의 입력 및 출력과 별도로 기록되지 않을 수 있지만, 관련 데이터 변환 요소의 출력으로부터 추론될 수 있다. 유사하게, 하나 이상의 데이터 변환 요소로의 입력이 파이프라인 입력을 나타내는 경우, 파이프라인 입력은 데이터 변환 요소의 입력 및 출력과 별도로 기록되지 않을 수 있다. 일부 경우에, 캡처 모듈은 하나 이상의 저장 요소(예, 하나 이상의 레지스터)에 입력과 출력을 기록하도록 구성될 수 있다.
따라서, 캡처 모듈용 하드웨어 설계는, 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 적어도 하나의 데이터 변환 요소(또는 대응하는 블랙 박스 요소) 중 적어도 하나의 입력 및 출력 신호를 모니터링하고, 하나 이상의 저장 요소(예, 하나 이상의 레지스터)에 파이프라인의 소정의 상태로부터 실행된 트랜잭션에 대한 각각의 입력 및 출력 신호의 값을 저장하도록 구성된 로직의 기능 및 구조를 정의한다. 즉, 로직은, 파이프라인의 소정의 상태로부터 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스에 의해 실행되는 트랜잭션에 대해 적어도 하나의 데이터 변환 요소(또는 대응하는 블랙 박스 요소)의 입력 및 출력을 캡처하도록 구성된다.
예를 들어, 도 1의 데이터 변환 파이프라인(100) 예시는 8개의 입력(
Figure 112020117296811-pct00030
) 총합을 계산하기 위해 구성된다. 도 1의 데이터 변환 파이프라인(100)은, 두 개의 입력의 총합을 출력하도록 구성된 단일 데이터 변환 요소(102)를 포함한다. 트랜잭션을 실행하기 위해(8개의 입력의 총합을 계산하기 위해) 데이터 변환 요소(102)는 8회의 사이클에서 사용된다 - 이들 8회의 사이클 각각에서 데이터 변환 요소(102)는 두 개의 입력 - 이전 입력의 총합을 나타내는 입력과 신규 입력 값 -을 수신하고 상기 두 입력의 총합을 출력한다. 따라서, 소정의 상태로부터 실행된 트랜잭션에 대해 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 데이터 변환 요소(102)의 입력 및 출력 신호를 캡처하는 단계는, 소정의 상태(계산을 연장하는 다른 사건 또는 스톨이 없다라고 가정함)로부터 8회의 연속 사이클에 대해 데이터 변환 요소(102)의 입력 및 출력 신호를 캡처하는 단계를 포함한다. 이 경우, 파이프라인으로의 입력(
Figure 112020117296811-pct00031
)은 데이터 변환 요소(102)로의 입력의 서브세트이고, 파이프라인 출력(
Figure 112020117296811-pct00032
)은 데이터 변환 요소(102)의 출력 중 하나와 동일하기 때문에, 파이프라인 입력과 출력은 데이터 변환 요소에 대해 기록된 입력과 출력으로부터 추론될 수 있고 이를 개별적으로 저장하거나 기록할 필요가 없다.
유사하게, 도 2의 데이터 변환 파이프라인(200) 예시는
Figure 112020117296811-pct00033
을 계산하기 위해 구성된다. 도 2의 예시적인 데이터 변환 파이프라인(200)은 2개의 데이터 변환 요소 - 입력
Figure 112020117296811-pct00034
Figure 112020117296811-pct00035
의 총합을 계산하도록 구성된 제1 데이터 변환 요소(202), 그리고 제1 데이터 변환 요소의 총합
Figure 112020117296811-pct00036
및 입력
Figure 112020117296811-pct00037
의 곱을 계산하도록 구성된 제2 데이터 변환 요소(204)를 포함한다. 따라서, 트랜잭션을 실행하기 위해, 데이터 변환 요소(202)는 제1 사이클에서 사용되고 제2 데이터 변환 요소(204)는 제2 사이클에서 사용된다. 따라서, 소정의 상태로부터 실행되는 트랜잭션에 대해 제2 데이터 변환 파이프용 하드웨어 설계의 인스턴스의 데이터 변환 요소(202, 204)의 입력 및 출력 신호를 캡처하는 단계는, 소정의 상태로부터 제1 사이클에서 제1 데이터 변환 요소(202)의 입력 및 출력 신호를 캡처하는 단계, 및 상기 파이프라인의 소정의 상태로부터 제2 사이클에서 제2 데이터 변환 요소(204)의 입력 및 출력 신호를 캡처하는 단계를 포함한다.
본원에서 트랜잭션이 파이프라인의 소정의 상태로부터 실행되는 것으로 본원에서 설명되는 경우, 파이프라인의 "상태"라는 문구는 본원에서 하드웨어 설계의 가변 요소, 및 이들의 현재 값을 설명하는데 사용된다. 일부 경우에, 소정의 상태는 리셋 직후에 발생하는 상태일 수 있다. 그러나, 이것은 단지 예시일 뿐이고 파이프라인의 다른 상태가 소정의 상태로 사용될 수 있음이 당업자에게 명백할 것이다. 예를 들어, 다른 경우에서 소정의 상태는 리셋, 제1 랜덤 트랜잭션, 및 스톨 이후에 발생한 상태일 수 있다.
캡처 모듈용 하드웨어 설계는, 예를 들어 VHDL과 같은 하드웨어 설명 언어(HDL)로 구현될 수 있거나, 또는 SVA와 같은 어서션 기반 언어로 구현될 수 있지만, 이에 제한되지 않는다. 다음은, 도 1의 예시적인 데이터 변환 파이프라인(100)용 하드웨어 설계를 위한 캡처 모듈용 하드웨어 설계를 나타내는 SVA 코드이다. 이 예시에서, add.a 는 데이터 변환 요소(102)로의 입력
Figure 112020117296811-pct00038
이고, add.b 는 데이터 변환 요소(102)로의 입력
Figure 112020117296811-pct00039
이고, add.y 는 데이터 변환 요소(102)의 출력
Figure 112020117296811-pct00040
이고, stored_add_a 는 입력
Figure 112020117296811-pct00041
값을 데이터 변환 요소(102)에 저장하기 위해 사용되는 레지스터이고, stored_add_b 는 입력
Figure 112020117296811-pct00042
값을 데이터 변환 요소(102)에 저장하기 위해 사용되는 레지스터이고, stored_add_y 는 데이터 변환 요소(102)의 출력
Figure 112020117296811-pct00043
값을 저장하기 위해 사용되는 레지스터이고, cycles_since_reset는 리셋 이후 사이클의 수이고, MAX_CYCLES 은 데이터 변환 요소(102)의 입력과 출력이 기록되는 최대 사이클 수(카운트가 0에서 시작하는 경우에 도 1의 데이터 변환 파이프라인(100) 예시에 대해 7일 수 있음)이다.
Figure 112020117296811-pct00044
이 예시적인 포착 모듈은 데이터 변환 요소(102)의 입력(
Figure 112020117296811-pct00045
Figure 112020117296811-pct00046
) 및 출력(
Figure 112020117296811-pct00047
)으로 하여금 최대 MAX_CYLES(제1 사이클이 사이클(0)인 경우 도 1의 예시적 데이터 변환 파이프라인(100)에 대해 7일 수 있음)까지 리셋한 후 stored_add_a, stored_add_b 및 stored_add_y 각각에 더해지도록 하는 것이 당업자에게 명백할 것이다. 표 2 내지 표 4는 레지스터에 저장될 수 있는 것의 예시(stored_add_a, stored_add_b 및 stored_add_y)를 나타내고, 여기서
Figure 112020117296811-pct00048
,
Figure 112020117296811-pct00049
,
Figure 112020117296811-pct00050
는 사이클
Figure 112020117296811-pct00051
내의 입력 및 출력을 나타낸다. 레지스터에 저장된 데이터는 함께 감시 트랜잭션 데이터를 형성한다.
표 2
Figure 112020117296811-pct00052
표 3
Figure 112020117296811-pct00053
표 4
Figure 112020117296811-pct00054
캡처 모듈용 하드웨어 설계가 생성되면, 방법(900)은 블록(904)으로 진행한다.
블록(904)에서, 캡처 모듈용 하드웨어 설계는 제2 데이터 변환 파이프라인용 하드웨어 설계에 링크되어, (i) 관련 데이터 변환 요소의 입력 및 출력을 모니터링하고 캡처할 수 있도록 제2 데이터 변환 파이프라인의 적당한 신호에 연결되고, (ii) 캡처 모듈용 하드웨어 설계와 제2 데이터 변환 파이프라인용 하드웨어 설계를 공식 검증 목적상 하나의 하드웨어 설계로서 취급한다. 따라서, 캡처 모듈용 하드웨어 설계가 제2 데이터 변환 파이프라인용 하드웨어 설계에 링크되면, 공식 검증 툴이 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스를 생성하는 경우에 이는 캡처 모듈의 인스턴스를 포함한다.
일부 경우에, 캡처 모듈용 위한 하드웨어 설계를 제2 데이터 변환 파이프라인용 하드웨어 설계에 통합함으로써, 캡처 모듈용 하드웨어 설계는 제2 데이터 변환 파이프라인용 하드웨어 설계에 링크될 수 있다. 다른 경우에, 캡처 모듈을 제2 데이터 변환 파이프라인용 하드웨어 설계에 결합함으로써, 캡처 모듈용 하드웨어 설계는, 제2 데이터 변환 파이프라인용 하드웨어 설계에 링크될 수 있다. 예를 들어, 제2 데이터 변환용 하드웨어 설계가 VHDL에서 구현되고 캡처 모듈용 하드웨어 설계가 SV에서 구현되는 경우, VHDL 인스턴스는 SV 인스턴스에 결합될 수 있다. 일단 캡처 모듈용 하드웨어 설계가 제2 데이터 변환 파이프라인용 하드웨어 설계에 링크되면, 방법(900)은 블록(906)으로 진행한다.
블록(906)에서, 공식 검증 툴을 사용하여, 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스가 상기 파이프라인의 임의의 상태로부터 감시 트랜잭션을 실행하는 경우, 이는 감시 트랜잭션 데이터에기록된 파이프라인 출력을 생성함을 공식 검증한다. 전술한 바와 같이, 트랜잭션은 파이프라인으로의 입력에 의해 정의된다. 따라서, 감시 트랜잭션 데이터에 기록된 것과 동일한 파이프라인 입력에 대해 트랜잭션을 실행하면, 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스는, 감시 트랜잭션을 실행한다고 말한다. 예를 들어, 도 1의 예시적인 데이터 변환 파이프라인(100)에 의해 실행되는 트랜잭션에 대해 파이프라인 입력은
Figure 112020117296811-pct00055
,
Figure 112020117296811-pct00056
,
Figure 112020117296811-pct00057
,
Figure 112020117296811-pct00058
,
Figure 112020117296811-pct00059
,
Figure 112020117296811-pct00060
,
Figure 112020117296811-pct00061
Figure 112020117296811-pct00062
이다.
Figure 112020117296811-pct00063
,
Figure 112020117296811-pct00064
,
Figure 112020117296811-pct00065
,
Figure 112020117296811-pct00066
,
Figure 112020117296811-pct00067
,
Figure 112020117296811-pct00068
,
Figure 112020117296811-pct00069
Figure 112020117296811-pct00070
각각에 대해 감시 트랜잭션 데이터가 파이프라인 입력(3, 4, 2, 6, 8, 3, 9, 10)을 기록하면, 그 다음 공식 검증은, 데이터 변환 파이프라인용 하드웨어 설계의 제1 버전의 인스턴스가 파이프라인의 임의 상태로부터
Figure 112020117296811-pct00071
,
Figure 112020117296811-pct00072
,
Figure 112020117296811-pct00073
,
Figure 112020117296811-pct00074
,
Figure 112020117296811-pct00075
,
Figure 112020117296811-pct00076
,
Figure 112020117296811-pct00077
Figure 112020117296811-pct00078
에 대해 3, 4, 2, 6, 8, 3, 9, 10을 수신하는 경우에 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 출력이 감시 트랜잭션 데이터에 기록된 상기 파이프라인 출력과 매칭하는지 증명한다. 이는 단지 예시이며 공식 검증 동안 공식 검증 툴이 모든 가능한 감시 트랜잭션(즉, 모든 가능한 파이프라인 입력 세트)에 대한 특성을 검증할 것임을 유의해야 한다.
제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스가 파이프라인의 임의의 상태로부터 감시 트랜잭션을 실행하는 경우에 감시 트랜잭션에 기록된 파이프라인 출력을 생성하는 것을 검증하는 단계는, 하나 이상의 어서션을 생성하는 단계 및 하나 이상의 어서션을 검증하는 단계를 포함할 수 있다. 예를 들어, 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스가, 감시 트랜잭션 데이터에 기록된 파이프라인 입력과 동일한 순서로 동일한 파이프라인 입력을 수신하는 경우에 감시 트랜잭션 데이터에 기록된 파이프라인 출력을 생성하는 것을 설정하는 어서션이 생성될 수 있다. 다음은 사용될 수 있는 예시적인 SV 어서션으로, expect_watched_output_on_first_pipe은, 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스가 감시 트랜잭션을 실행하는(즉, 동일한 파이프라인 입력 세트를 감시 트랜잭션 데이터에 기록된 동일한 순서로 처리하는) 경우에 높고, 이제 상기 트랜잭션을 완료하고 상기 결과(들)를 출력할 준비가 될 것으로 예상되고, first_pipe_output은 상기 감시 트랜잭션에 대해 상기 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 출력이고, stored_output 은 감시 트랜잭션 데이터에 기록된 파이프라인 출력이다.
Figure 112020117296811-pct00079
제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스가 감시 트랜잭션을 실행하는 경우에 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 출력이 감시 트랜잭션 데이터에 기록된 파이프라인 출력과 동일함을 이 어서션이 진술하고 있다는 것이 당업자에게 명백할 것이다.
입력과 출력이 감시 트랜잭션 데이터에 기록된 제1 데이터 변환 요소의 하나 이상의 데이터 변환 요소가 상기 감시 트랙잭션에 기록된 입력 세트를 수신하는 경우에 상기 데이터 변환 요소가 상기 기록된 출력 세트를 출력하는 제약 하에서, 공식 검증을 수행한다.
전술한 바와 같이, 제약은 하나 이상의 가정 진술문으로 구현될 수 있다. 도 1의 데이터 변환 파이프라인(100)의 데이터 변환 요소(102)에 대해 SV에 기록된 예시적인 가정이 아래에 나타나 있다. 이 예시적인 가정에서, stored_add_a[i] 은 상기 ith 사이클에서 데이터 변환 요소(102)에 대해 상기 감시 트랜잭션 데이터에 기록된 제1 입력
Figure 112020117296811-pct00080
이고, stored_add_b[i] 은 상기 ith 사이클에서 데이터 변환 요소(102)에 대해 상기 감시 트랜잭션 데이터에 기록된 제2 입력
Figure 112020117296811-pct00081
이고, stored_add_y[i] 은 상기 ith 사이클에서 데이터 변환 요소(102)에 대해 상기 감시 트랜잭션 데이터에 기록된 출력
Figure 112020117296811-pct00082
이고, first_pipe_add_a 는 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 데이터 변환 요소(102)의 제1 입력
Figure 112020117296811-pct00083
이고, first_pipe_add_b 는 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 데이터 변환 요소(102)의 제2 입력
Figure 112020117296811-pct00084
이고, first_pipe_add_y 는 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 데이터 변환 요소(102)의 출력
Figure 112020117296811-pct00085
이고, MAX_CYCLES 은 이 예시에서 7이다.
Figure 112020117296811-pct00086
당업자에게 명백하듯이, 이러한 예시적 가정은, 제1 데이터 변환 파이프라인용 하드웨어 설계의 데이터 변환 요소(102)의 제1 및 제2 입력이, 임의의 사이클 (i) (stored_add_a[i] == first_pipe_add_a) &&(stored_add_b[i] == first_pipe_add_b)동안 데이터 변환 요소에 대해 감시 트랜잭션 데이터에 기록된 제1 및 제2 입력과 매칭하면, 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 데이터 변환 요소(102)의 출력은 그 사이클 (i) (stored_add_y[i] == first_pipe_add_y))에서 데이터 변환 요소(102)에 대해 감시 트랜잭션 데이터에 기록된 출력과 같다고 가정한다.
테스트는, 이러한 제약 하에서 공식 검증을 수행하면, 공식 검증이 수렴할 가능성을 상당히 증가시키는 것으로 나타났다. 일단 공식 검증이 완료되면 방법(900)은 종료된다.
전술한 바와 같이, 블록(906)의 공식 검증을 수행하기 이전의 일부 경우에, 제1 및 제2 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소 중 하나 이상은 블랙 박스화 될 수 있어 공식 검증을 수렴시킬 가능성을 개선할 수 있다. 도 9의 방법(900)에서, 제1 및 제2 데이터 변환 파이프라인은 동일하기 때문에, 제1 데이터 변환 파이프라인의 데이터 변환 요소의 각각은 제2 데이터 변환 파이프라인에서 동일한 데이터 변환 요소를 갖는다. 따라서, 제1 및 제2 데이터 변환의 데이터 변환 요소 모두는, 다른 데이터 변환 파이프라인의 데이터 변환 요소와 "실질적으로 등가"이다. 이는, 상기 데이터 변환 요소의 출력(들) 또는 제1 데이터 변환 요소의 해당 데이터 변환 요소가 전술한 바와 같이 공식 검증 동안에 제약되는 한, 제1 또는 제2 데이터 변환 파이프라인의 임의의 데이터 변환 요소는 블랙 박스화 될 수 있음을 의미한다.
전술한 바와 같이, 제1 데이터 변환 파이프라인의 데이터 변환 요소가 블랙 박스로 되는 경우, 그 출력에 대한 제약은 블랙 박스 요소를 공식 검증 동안에 결정적 방식으로 작용시킨다. 전술한 바와 같이, 제약은 하나 이상의 가정 진술문에 의해 구현될 수 있다. 당업자에게 공지된 바와 같이, 하드웨어 설계의 가정 진술은, 공식 검증 툴에 의해 공식 검증 동안에 하드웨어 설계의 인스턴스의 거동에 대한 제약으로서 해석된다. 구체적으로, 특성을 가정하는 경우에, 공식 검증 툴은 특성이 유효하도록 입력을 제약한다. 따라서, 가정은, 하드웨어 설계의 특성이 검증되는 환경을 정의한다. 따라서, 블랙 박스 요소의 출력이 저장된 입력에 관해 특정한 방식으로 효과적으로 작용한다고 진술한 가정은, 저장된 입력에 관한 공식 검증 동안에 블랙 박스 요소를 결정적 방식으로 작용시킨다. 구체적으로, 블랙 박스 요소로의 입력이 해당 데이터 변환 요소에 대해 감시 트랜잭션 데이터에 기록된 입력 세트와 매칭하면, 블랙 박스 요소의 출력은 상기 입력 세트에 대해 해당 데이터 변환 요소용 감시 트랜잭션 데이터에 기록된 출력이라고 가정은 진술할 수 있다. 이는, 감시 트랜잭션 데이터에 설정된 방식으로 블랙 박스를 감시 트랜잭션 데이터에 기록된 입력 데이터에 효과적으로 응답시킨다.
예를 들어, 제1 및 제2 데이터 변환 파이프라인(1002, 1004)이 데이터 변환 파이프라인이고 도 1에 나타낸 바와 같이 두 입력을 수신하고 상기 두 입력의 총합을 출력하는 단일 데이터 변환 요소(102)를 포함하는 경우에, 각각의 데이터 변환 파이프라인(1002, 1004)용 하드웨어 설계의 데이터 변환 요소(102)는 블랙 박스 요소(1006)로 대체될 수 있고 도 10에 나타낸 바와 같이 두 입력을 수신하고 단일 출력을 생성시킨다. 데이터 변환 요소(102)를 블랙 박스화 함으로써, 더하기(
Figure 112020117296811-pct00087
)를 수행하는 로직은 하드웨어 설계로부터 제거된다.
전술한 바와 같이, 이 예시에서, 제2 데이터 변환 파이프라인용 하드웨어 설계는 캡처 모듈에 링크되고, 이는 소정의 상태로부터 8회 연속 사이클 동안 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 블랙 박스 요소(1006)의 입력 및 출력 신호(
Figure 112020117296811-pct00088
,
Figure 112020117296811-pct00089
,
Figure 112020117296811-pct00090
)를 캡처하도록 구성된다. 그 다음, 제1 데이터 변환 파이프라인(1002)용 하드웨어 설계의 인스턴스가 동일한 순서로 캡처 모듈에 의해 기록된 파이프라인 입력을 수신하는 경우에 상기 캡처 모듈에 의해 기록된 파이프라인 출력을 생성하는 것으로 공식 검증된다.
제1 데이터 변환 파이프라인(1002)용 하드웨어 설계의 인스턴스의 블랙 박스 요소(1006)의 입력(
Figure 112020117296811-pct00091
Figure 112020117296811-pct00092
)이 캡처 모듈에 의해 기록된 입력 세트와 매칭하면, 그 다음 출력(
Figure 112020117296811-pct00093
)은 상기 입력 세트에 대해 상기 캡처 모듈에 의해 기록된 출력과 같다는 제약(예, 가정(1008)) 하에 공식 검증을 수행한다. 이는, 블랙 박스 요소(1006)를 감시 트랜잭션 데이터에 따라 효과적으로 작용시킨다. 예를 들어, 감시 트랜잭션 데이터가 제2 데이터 변환 파이프라인(1004)용 하드웨어 설계의 인스턴스의 블랙 박스 요소(1006)에 대해 입력
Figure 112020117296811-pct00094
Figure 112020117296811-pct00095
, 그리고 출력
Figure 112020117296811-pct00096
을 기록하면, 제1 데이터 변환 파이프라인(1002) 용 하드웨어 설계의 인스턴스의 블랙 박스 요소(1006)가 입력
Figure 112020117296811-pct00097
Figure 112020117296811-pct00098
를 수신하는 경우에, 이는
Figure 112020117296811-pct00099
를 출력할 것이다. 따라서, 공식 검증 동안에 제2 데이터 변환 파이프라인의 블랙 박스 요소(1006)는 '자유값' 출력을 갖는 것으로 처리되지만, 제1 데이터 변환 파이프라인의 블랙 박스 요소(1006)는, 공식 검증 동안에 상기 블랙 박스 요소에 대해 저장된 입력에 관해 결정적 출력을 갖는 것으로 처리된다.
다른 예에서, 제1 및 제2 데이터 변환 파이프라인(1102, 1104)이 데이터 변환 파이프라인이고 도 2의 데이터 변환 파이프라인(200)에 나타낸 바와 같이 두 입력을 수신하고 상기 두 입력의 총합을 출력하는 제1 데이터 변환 요소(202), 및 두 입력을 수신하고 상기 두 입력의 곱을 출력하는 제2 데이터 변환 요소(204)를 포함하는 경우에, 제1 및 제2 데이터 변환 파이프라인용 하드웨어 설계의 데이터 변환 요소(202, 204) 각각은 블랙 박스 요소(1106, 1108)로 대체될 수 있고 도 11에 나타낸 바와 같다. 구체적으로, 각각의 제1 데이터 변환 요소(202)는, 두 개의 입력을 수신하고 '자유값' 출력을 갖는 블랙 박스 요소(1106)로 대체될 수 있고, 제2 데이터 변환 요소(204)는, 두 개의 입력을 수신하고 '자유값' 출력을 갖는 블록 박스 요소(1108)로 대체된다. 데이터 변환 요소(202, 204)를 블랙 박스화 함으로써, 더하기 (
Figure 112020117296811-pct00100
) 및 곱하기 (
Figure 112020117296811-pct00101
)를 수행하는 로직은 하드웨어 설계로부터 제거된다.
전술한 바와 같이, 이 예시에서, 제2 데이터 변환 파이프라인용 하드웨어 설계는 캡처 모듈에 링크되고, 이는 파이프라인의 소정의 상태로부터 제1 사이클에서 제1 블랙 박스 요소(1106)의 입력 및 출력 신호를 캡처하고 파이프라인의 소정의 상태로부터 제2 사이클에서 제2 블랙 박스 요소(1108)의 입력 및 출력 신호를 캡처하도록 구성된다. 그 다음, 제1 데이터 변환 파이프라인(1102)용 하드웨어 설계의 인스턴스가 동일한 순서로 캡처 모듈에 의해 기록된 파이프라인 입력을 수신하는 경우에 상기 캡처 모듈에 의해 기록된 파이프라인 출력을 생성하는 것으로 공식 검증된다.
제1 제약(예, 가정(1110))(제1 데이터 변환 파이프라인(1102)용 하드웨어 설계의 인스턴스의 제1 블랙 박스 요소(1106)로의 입력(
Figure 112020117296811-pct00102
Figure 112020117296811-pct00103
)이 상기 요소에 대해 감시 트랜잭션 데이터에 기록된 입력 세트와 매칭하면, 상기 출력(
Figure 112020117296811-pct00104
)은 상기 요소에 대해 감시 트랜잭션 데이터에 기록된 해당 출력과 동일함); 및 제2 제약(예, 가정(1112))(제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 제2 블랙 박스 요소(1108)로의 입력(
Figure 112020117296811-pct00105
Figure 112020117296811-pct00106
)이 상기 요소에 대해 감시 트랜잭션 데이터에 기록된 입력 세트와 매칭하면, 상기 출력(
Figure 112020117296811-pct00107
)은 상기 요소에 대해 감시 트랜잭션 데이터에 기록된 해당 출력과 동일함) 하에 공식 검증을 수행한다. 이는, 제1 데이터 변환 파이프라인(1102)용 하드웨어 설계의 인스턴스에서, 각각의 블랙 박스 요소(1106, 1108)로 하여금, 기록된 입력 세트를 수신하면 기록된 출력을 생성시키며, 그렇지 않으면 출력이 '자유값'이다. 예를 들어, 감시 트랜잭션 데이터가 상기 데이터 변환 요소에 대해 입력 4 및 6, 그리고 출력 8을 기록하면, 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 해당 블랙 박스 요소가 입력 4 및 6을 수신하는 경우에, 이는 8을 출력할 것이다.
도 9의 방법(900)은, 테스트 중인 데이터 변환 파이프라인용 하드웨어 설계의 두 개의 사본으로 구현되는 것으로 설명되지만, - 즉, 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 데이터 변환 요소의 입력/출력(즉, 제1 데이터 변환 파이프라인용 하드웨어 설계의 제2 사본)은 파이프라인의 소정 상태로부터 실행된 트랜잭션에 대해 기록되고, 상기 파이프라인의 임의의 상태에서 실행되는 트랜잭션에 대해 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 입력/출력(즉, 제1 데이터 변환 파이프라인용 하드웨어 설계의 제1 사본)에 비교되지만 - 다른 예시에서, 상기 방법은 테스트 중인 데이터 변환 파이프용 하드웨어 설계의 단일 사본으로 구현될 수 있다. 이들 경우에, 하드웨어 설계는 소정의 상태로부터 트랜잭션을 실행하도록 먼저 구성될 수 있고, 설계의 인스턴스의 관련 데이터 변환 요소의 입력/출력은 캡처 모듈에 의해 기록되고; 그 다음 하드웨어 설계는 임의의 상태로부터 트랜잭션을 실행하도록 재구성될 수 있고, 하드웨어 설계의 인스턴스의 관련 데이터 변환 요소의 입력/출력을 기록된 입력/출력과 비교한다. 이 방식으로, 하드웨어 설계가 소정의 상태로부터 트랜잭션을 실행하도록 구성되는 경우, 하드웨어 설계는 제2 데이터 변환 파이프라인용 하드웨어 설계로서 기능하고, 하드웨어 설계가 임의의 상태로부터 트랜잭션을 실행하도록 구성되는 경우, 하드웨어 설계는 제1 데이터 변환 파이프라인용 하드웨어 설계로서 기능하고, 용어 제1 및 제2 데이터 변환 파이프라인은 상기에서 사용된 바와 같다.
도 12 및 도 13을 이제 참조하여 데이터 변환 파이프라인용 하드웨어 설계를 검증하기 위한 제2 구현예를 설명한다. 이 구현예에서, 데이터 변환 파이프라인용 하드웨어 버전을 생성하고, 여기서 공식 검증 동안에 기능 요소가 동일한 입력(들)에 대해 동일한 출력(들)을 생성하도록, 공식 검증 툴에 의해 입력의 피평가 기능으로서 처리된 기능 요소를 데이터 변환 요소의 선택된 세트가 대체하거나 이에 링크되고; 및 트랜잭션 세트의 각 트랜잭션에 대해 상기 데이터 변환 파이프라인용 하드웨어 설계 버전의 인스턴스가 상기 트랜잭션용 하나 이상의 출력 기준 세트와 매칭하는 하나 이상의 출력 세트를 생성함을 공식적으로 검증하는 단계를 포함한다.
일부 경우에, 트랜잭션 세트의 각 트랜잭션에 대해 상기 데이터 파이프라인용 하드웨어 설계 버전의 인스턴스가 상기 트랙잭션용 하나 이상의 출력 기준 세트와 매칭하는 하나 이상의 출력 세트를 생성함을 검증하는 단계는, 하드웨어 설계 버전의 인스턴스가 일관성이 있음(즉, 트랜잭션이 실행되는 시기에 상관없이 트랜잭션에 대한 동일한 결과를 항상 생성할 것)을 공식적으로 검증하는 단계를 포함할 수 있다. 이들 경우에, 트랜잭션에 대한 하나 이상의 출력의 기준 세트는, 인스턴스가 파이프라인의 소정의 상태로부터 트랜잭션을 실행하는 경우에 데이터 변환 파이프라인용 하드웨어 설계의 버전의 인스턴스에 의해 생성된 하나 이상의 출력 세트일 수 있다.
다른 경우에, 트랙잭션 세트의 각 트랜잭션에 대해 상기 데이터 파이프라인용 하드웨어 설계 버전의 인스턴스가 상기 트랙잭션용 하나 이상의 출력 기준 세트와 매칭하는 하나 이상의 출력 세트를 생성함을 검증하는 단계는, 하드웨어 설계 버전의 인스턴스가 다른 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스와 기능적으로 등가임을 공식적으로 검증하는 단계를 포함할 수 있다. 다른 데이터 변환 파이프라인은 적어도 하나의 데이터 변환 요소를 포함하고, 이는 테스트 하의 데이터 변환 파이프라인의 데이터 변환 요소와 실질적으로 등가이다. 이들 경우에, 트랜잭션에 대한 하나 이상의 출력의 기준 세트는, 인스턴스가 트랜잭션을 실행하는 경우에 다른 데이터 변환 파이프라인용 하드웨어 설계의 버전의 인스턴스에 의해 생성된 하나 이상의 출력 세트일 수 있다.
도 12를 이제 참조하면, 이는 데이터 변환 파이프라인용 하드웨어 설계를 검증하기 위한 제2 예시 방법(1200)을 나타낸다. 상기 방법(1200)은, 데이터 변환 파이프라인용 하드웨어 설계의 버전이 생성되는 블록(1202)에서 시작하고, 여기서 파이프라인의 데이터 변환 요소의 선택 세트(데이터 변환 요소의 전부 또는 서브세트일 수 있음)는 상기 데이터 변환 요소로의 입력의 미평가 기능으로서 처리되는 기능 요소로 대체된다. 미평가 기능 함수
Figure 112020117296811-pct00108
는 상징 객체로
Figure 112020117296811-pct00109
와 같다. 이는, 공식 검증 툴이
Figure 112020117296811-pct00110
임을 검증할 수 있으나 공식 검증 툴은
Figure 112020117296811-pct00111
를 검증할 수 없고 이는 실패할 것임을 의미한다.
기능 요소로 대체되는 데이터 변환 요소의 특정 세트는, 데이터 변환 파이프라인용 하드웨어 설계가 일관성이 있는지 검증하기 위해 상기 방법을 사용하는지, 또는 데이터 변환 파이프라인용 하드웨어 설계가 다른 데이터 변환 파이프라인용 하드웨어 설계에 기능적으로 등가인지 검증하기 위해 상기 방법을 사용하는지에 기초할 수 있다. 데이터 변환 파이프라인용 하드웨어 설계가 일관성이 있는지(즉, 트랜잭션이 실행되는 시기에 상관없이 항상 동일한 결과를 트랜잭션에 항상 생성할 것인지) 검증하기 위해 상기 방법을 사용하는 경우, 데이터 변환 파이프라인의 데이터 변환 요소의 임의의 조합을 기능 요소로 대체할 수도 있다. 대조적으로, 데이터 변환 파이프라인용 하드웨어 설계가 다른 데이터 변환 파이프라인용 하드웨어 설계와 기능적으로 등가인지(즉, 두 개의 하드웨어 설계의 인스턴스가 동일한 입력에 동일한 결과를 생성할 것인지) 검증하기 위해 상기 방법을 사용하고, 다른 데이터 변환 파이프라인의 적어도 하나의 데이터 변환이 테스트 하에서 데이터 변환 파이프라인의 데이터 변환 요소와 실질적으로 등가인 경우, 실질적으로 등가인 데이터 변환 요소의 임의의 조합을 기능 요소로 대체할 수도 있다.
예를 들어, 도 1의 예시적 데이터 변환 파이프라인(100)용 하드웨어 설계가 공식 검증에서 사용되는 하드웨어 설계의 버전과 일관성이 있는지 검증하는 것은, 데이터 변환 요소(102)를 미평가 기능 함수
Figure 112020117296811-pct00112
으로서 처리된 기능 요소로 대체함으로써 생성될 수 있고,
Figure 112020117296811-pct00113
Figure 112020117296811-pct00114
의 동일한 세트가 수신될 때마다 상기 출력
Figure 112020117296811-pct00115
은 동일할 것이나,
Figure 112020117296811-pct00116
의 다른 특성을 가정하지 않도록 한다. 유사하게, 도 2의 예시적 데이터 변환 파이프라인(200)용 하드웨어 설계가 공식 검증에서 사용되는 하드웨어 설계의 버전과 일관성이 있는지 검증하는 것은, 제1 데이터 변환 요소(202) 및/또는 제2 데이터 변환 요소(204)를 해당 기능 요소로 대체함으로써 생성될 수 있다. 예를 들어, 제1 데이터 변환 요소(202)는 미평가 기능 함수
Figure 112020117296811-pct00117
으로서 처리되는 기능 요소로 대체될 수 있고,
Figure 112020117296811-pct00118
Figure 112020117296811-pct00119
의 동일한 세트를 수신할 때마다, 출력
Figure 112020117296811-pct00120
은 동일할 것이다; 제2 데이터 변환 요소(204)를 미평가 기능 함수
Figure 112020117296811-pct00121
으로서 처리되는 기능 요소로 대체될 수 있고,
Figure 112020117296811-pct00122
및 c의 동일한 세트를 수신할 때마다, 출력
Figure 112020117296811-pct00123
은 동일할 것이다.
대조적으로, 오직 한 쌍의 실질적으로 등가인 데이터 변환 요소(즉, 데이터 변환 요소(506, 510))만 있는 도 5의 제1 예시적 데이터 변환 파이프라인(502)용 하드웨어 설계가, 도 5의 제2 예시적 데이터 변환 파이프라인(504)용 하드웨어 설계와 기능적으로 등가인 것을 검증하기 위해, 제1 예시적 데이터 변환 요소용 하드웨어 설계에서 제1 데이터 변환 요소(506)만이, 동일한 입력(들) 세트가 수신될 때마다 출력(들)이 동일할 수 있도록 그 입력의 미평가 기능으로서 처리되는 기능 요소로 대체될 수 있다.
데이터 변환 요소를 기능 요소로 대체하는 것은, 동일한 입력 세트가 임의의 시간에 동일한 기능 요소를 통과할 경우, 데이터 변환 파이프라인은 동일한 결과를 생성해야 함을 의미한다(제어 로직이 예상대로 작동하고 있다고 가정함).
일단 데이터 변환 파이프라인용 하드웨어 설계의 버전이 생성되었다면, 방법(1200)은 블록(1204)으로 진행한다.
블록(1204)에서, 트랜잭션 세트의 각 트랜잭션에 대해, 블록(1202)에서 생성된 데이터 변환 파이프라인용 하드웨어 설계의 버전의 인스턴스가 하나 이상의 출력의 기준 세트와 매칭하는 하나 이상의 출력 세트를 생성함을 공식적으로 검증이 된다. 트랜잭션 세트는, 데이터 변환 파이프라인에 의해 실행될 수 있는 모든 유효한 트랜잭션 또는 데이터 변환 파이프라인에 의해 실행될 수 있는 유효한 트랜잭션의 서브세트만을 포함할 수 있다.
일부 경우에, 트랜잭션 세트의 각 트랜잭션에 대해 상기 데이터 파이프라인용 하드웨어 설계 버전의 인스턴스가 상기 트랙잭션용 하나 이상의 출력 기준 세트에 매칭하는 하나 이상의 출력 세트를 생성함을 공식 검증하는 단계는, 데이터 변환 파이프라인용 하드웨어 설계 버전의 인스턴스가 일관성이 있음(즉, 데이터 변환 파이프라인용 하드웨어 설계 버전의 인스턴스가 트랜잭션이 실행되는 시기에 상관없이(즉, 트랜잭션이 실행되는 경우 파이프라인의 상태에 상관없이), 동일한 트랜잭션에 대한 동일한 결과(또는 출력)를 생성함)을 공식적으로 검증하는 단계를 포함할 수 있다. 이들 경우에, 트랜잭션에 대한 하나 이상의 출력의 기준 세트는, 인스턴스가 파이프라인의 소정의 상태로부터 트랜잭션을 실행하는 경우에 데이터 변환 파이프라인용 하드웨어 설계의 버전의 인스턴스에 의해 생성된 하나 이상의 출력 세트일 수 있다. 전술한 바와 같이, 트랜잭션은 트랜잭션으로의 입력에 의해 정의된다. 따라서, 데이터 변환 파이프라인용 하드웨어 설계의 버전의 인스턴스는, 동일한 입력 세트를 처리할 경우에 동일한 트랜잭션을 수행한다고 말한다. 예를 들어, 도 1의 예시적인 데이터 변환 파이프라인(100)에 있어서 트랜잭션에 대해 입력은
Figure 112020117296811-pct00124
,
Figure 112020117296811-pct00125
,
Figure 112020117296811-pct00126
,
Figure 112020117296811-pct00127
,
Figure 112020117296811-pct00128
,
Figure 112020117296811-pct00129
,
Figure 112020117296811-pct00130
Figure 112020117296811-pct00131
이다. 이 예시에서, 데이터 변환 파이프라인용 하드웨어 설계 버전의 인스턴스는, 파이프라인의 한 상태(예, 리셋에서 발생하는 상태)에서
Figure 112020117296811-pct00132
,
Figure 112020117296811-pct00133
,
Figure 112020117296811-pct00134
,
Figure 112020117296811-pct00135
,
Figure 112020117296811-pct00136
,
Figure 112020117296811-pct00137
,
Figure 112020117296811-pct00138
,
Figure 112020117296811-pct00139
= 3, 4, 2, 6, 8, 3, 9, 10에 대해 트랜잭션을 실행하고, 파이프라인의 다른 상태에서
Figure 112020117296811-pct00140
,
Figure 112020117296811-pct00141
,
Figure 112020117296811-pct00142
,
Figure 112020117296811-pct00143
,
Figure 112020117296811-pct00144
,
Figure 112020117296811-pct00145
,
Figure 112020117296811-pct00146
,
Figure 112020117296811-pct00147
= 3, 4, 2, 6, 8, 3, 9, 10에 대해 실행하는 경우, 두 상이한 상태에서 동일한 트랜잭션을 실행한다고 말한다.
데이터 변환 파이프라인용 하드웨어 설계 버전의 인스턴스가 일관성이 있는지 공식적으로 검증하는 단계는, 데이터 변환 파이프라인이 소정의 상태로부터 트랜잭션을 실행하는 경우의 데이터 변환 파이프라인용 하드웨어 설계 버전의 인스턴스의 출력(들)을, 데이터 변환 파이프라인이 임의의 상태로부터 데이터 변환 파이프라인용 하드웨어 설계 버전의 인스턴스의 출력(들)과 비교하는 단계를 포함할 수 있다. 이는, 데이터 변환용 하드웨어 설계 버전의 두 사본 또는 데이터 변환 파이프라인용 하드웨어 설계 버전의 단일 사본을 사용하여, 구현될 수 있다. 예를 들어, 데이터 변환 파이프라인용 하드웨어 설계 버전의 인스턴스가 일관성이 있는지 공식적으로 검증하는 단계는, 소정의 상태로부터 트랜잭션을 실행하도록 구성된 데이터 변환 파이프라인용 하드웨어 설계 버전의 인스턴스의 출력(들)이, 두 인스턴스에 의해 동일한 트랜잭션을 실행하는 경우에 임의의 상태로부터 트랜잭션을 실행하도록 구성된 하드웨어 설계 버전의 제2 사본의 인스턴스의 출력(들)과 매칭하는지 공식 검증하는 단계를 포함할 수 있다. 대안적으로, 데이터 변환 파이프라인용 하드웨어 설계 버전의 인스턴스가 일관성이 있는지 공식적으로 검증하는 단계는, 소정의 상태로부터 트랜잭션을 실행하기 위해 데이터 변환 파이프라인용 하드웨어 설계 버전을 구성하고 상기 하드웨어 설계 버전의 인스턴스의 출력(들)을 기록하는 단계; 및 임의의 상태로부터 트랜잭션을 실행하기 위해 데이터 변환 파이프라인용 하드웨어 설계 버전을 구성하고 상기 하드웨어 설계 버전의 인스턴스의 출력(들)을 상기 기록된 출력(들)과 비교하는 단계를 포함할 수 있다.
다른 경우에, 트랙잭션 세트의 각 트랜잭션에 대해 상기 데이터 파이프라인용 하드웨어 설계 버전의 인스턴스가 상기 트랙잭션용 하나 이상의 출력 기준 세트와 매칭하는 하나 이상의 출력 세트를 생성함을 공식 검증하는 단계는, 하드웨어 설계 버전의 인스턴스가 다른 데이터 변환 파이프라인용 하드웨어 설계 버전의 인스턴스와 기능적으로 등가임을 공식적으로 검증하는 단계를 포함할 수 있다. 다른 데이터 변환 파이프라인은 적어도 하나의 데이터 변환 요소를 포함하고, 이는 테스트 하의 데이터 변환 파이프라인의 데이터 변환 요소와 실질적으로 등가이다. 이들 경우에서, 공식 검증은, 데이터 변환 파이프라인용 하드웨어 설계 버전의 출력(들)을 다른 데이터 변환 파이프라인용 하드웨어 설계의 출력(들)에 비교할 수 있고, 여기서 다른 데이터 변환 파이프라인의 하나 이상의 실질적으로 등가인 데이터 변환 요소는, 테스트 하에서 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소를 대체하기 위해 사용된 기능 요소로 대체되어 있다. 따라서, 이들 경우에, 트랜잭션에 대한 하나 이상의 출력의 기준 세트는, 인스턴스가 트랜잭션을 실행하는 경우에 다른 데이터 변환 파이프라인용 하드웨어 설계의 버전의 인스턴스에 의해 생성된 하나 이상의 출력 세트일 수 있다.
어느 경우이든, 복수의 트랜잭션의 각 트랜잭션에 대해 데이터 변환 파이프라인용 하드웨어 설계 버전의 인스턴스가 상기 트랜잭션에 대해 하나 이상의 출력 기준 세트와 매칭하는 하나 이상의 출력 세트를 생성함을 공식적으로 검증하는 단계는, 검증될 하나 이상의 어서션을 생성하는 단계, 상기 데이터 변화 파이프라인(들)용 하드웨어 설계(들) 버전(들)에 상기 하나 이상의 어서션을 연결시키는 단계, 및 상기 공식 검증 툴을 사용하여, 상기 하나 이상의 어서션이 상기 데이터 변환 파이프라인용 하드웨어 설계 버전에 대해 참인지(또는 유효한지) 공식적으로 검증하는 단계, 및 상기 하나 이상의 어서션을 성공적으로 검증하였는지를 표시하는 하나 이상의 신호를 출력하는 단계를 포함할 수 있다.
공식 검증이 완료되면, 방법(1200)은 종료될 수 있거나, 방법(1200)은 블록(1206)으로 진행할 수 있다.
블록(1206)에서, 데이터 변환 파이프라인용 하드웨어 설계 버전의 검증이 성공적이었는지 여부에 대한 결정이 이루어질 수 있다. 전술한 바와 같이, 공식 검증 툴이 하드웨어 설계에 대한 어서션을 검증하기 위해 사용되는 경우에, 공식 검증 툴은, 어서션이 유효한지(즉, 어서트 특성이 모든 유효한 상태 또는 상태의 시퀀스에 대하여 참인지) 여부를 표시하는 신호 또는 신호 세트를 출력할 수 있다. 이들 경우에, 검증이 성공적이었는지 여부에 대한 결정은 공식 검증 툴의 출력 신호(들)에 기초할 수 있다.
데이터 변환 파이프라인용 하드웨어 설계 버전의 검증이 성공적이었고, 임의의 트랜잭션에 대해, 하드웨어 설계의 인스턴스가 상기 트랜잭션에 대한 하나 이상의 출력의 기준 세트와 매칭하는 하나 이상의 출력 세트를 생성하는 것이 표시됨(즉, 인스턴스가 일관성이 있거나 또는 인스턴스가 다른 설계의 인스턴스와 기능적으로 등가임)이 결정되면, 방법(1200)은 블록(1210)으로 진행할 수 있고 여기서 상기 하드웨어 설계에 의해 설명된 데이터 변환 파이프라인을 구현하는 집적회로가 제조된다. 그러나, 데이터 변환 파이프라인용 하드웨어 설계 버전의 검증이 성공적이지 못하였다고(하드웨어 설계에 에러가 있음을 나타냄) 결정되면, 방법(1200)은 블록(1208)으로 진행할 수 있고, 여기서 예기치 못한 거동을 야기하는 하드웨어 설계의 에러를 수정하도록 하드웨어 설계가 수정된다. 하드웨어 설계가 일단 수정되면, 수정된 하드웨어 설계는 다시 검증될 수도 있다(예를 들어, 블록(1202~1210)이 수정된 하드웨어 설계에 대하여 반복될 수도 있음).
도 12의 검증 방법(1200)은, 데이터 변환 파이프라인용 하드웨어 설계가 일관성이 있음을 검증하기 위한 전술의 도 4의 검증 방법(400)보다 상당히 단순화되고, 이는 감시 트랜잭션 데이터를 저장하는 단계를 수반하지 않거나, 감시 트랜잭션 데이터에 따라 데이터 변환 요소 또는 블랙 박스 요소의 출력을 제어하는 것을 수반하지 않는다. 그러나, 통상적으로 도 12의 검증 방법(1200)은 이러한 기능 요소를 전술한 방식으로 해석하는 공식 검증 툴로만 가능할 것이다. 구체적으로, 도 12의 검증 방법(1200)은 이러한 기능 요소를 입력의 미평가 기능으로서 해석하는 공식 검증 툴로만 가능할 것이다.
일부 경우에, 기능 요소가 예기치 못한 특성을 갖는 예기치 못한 출력(들)(즉, 대응하는 데이터 변환 요소에 의해 유효하게 생성될 수 없는 출력)을 생성하지 않을 것을 보장하기 위해, 기능 요소 중 하나 이상의 출력에 제약 또는 제한이 배치될 수 있다. 이러한 제한은, 예를 들어 데이터 변환 파이프라인용 하드웨어 설계 버전에 가정을 추가시킴으로써, 기능 요소에 부과될 수 있다. 예를 들어, 데이터 변환 요소가 입력의 제곱을 생성하도록 구성되는 경우, 데이터 변환 요소는 음수를 유효하게 출력할 수 없다. 따라서, 하류 구성 요소는 데이터 변환 요소가 0 이상인 수를 출력하도록 예상할 수 있다. 이 예시에서, 기능 요소의 출력이 0 이상임을 진술하는 이러한 데이터 변환 요소를 대체하는 기능 요소에 대한 가정을 생성할 수 있다. 유사하게, 데이터 변환 요소가 입력의
Figure 112020117296811-pct00148
을 출력하도록 구성되면, 상기 기능 요소의 출력이
Figure 112020117296811-pct00149
내지
Figure 112020117296811-pct00150
(두 수치 포함)임을 진술하는 데이터 변환 요소를 대체하는 기능 요소에 대한 가정을 생성할 수 있다. 이들은 단지 예시이고 다른 제약 또는 제한이 기능 요소에 부과될 수 있음이 당업자에게 명백할 것이다.
제2 구현예에 따라 데이터 변환 파이프라인용 하드웨어 설계를 검증하기 위한 예시적 시스템(1300)을 나타낸 도 13을 이제 참조하면, 여기서 상기 파이프라인의 하나 이상의 데이터 변환 요소가 기능 요소로 대체되는 데이터 변환 파이프라인용 하드웨어 설계 버전은, 트랜잭션 세트의 각 트랜잭션에 대해, 상기 트랜잭션에 대한 하나 이상의 출력의 기준 세트와 매칭하는 하나 이상의 출력 세트를 생성할 것인지 검증한다.
시스템(1300)은, 하나 이상의 데이터 변환 요소가 기능 요소로 대체된 데이터 변환 파이프라인용 하드웨어 설계 버전(1302); 하나 이상의 공식 어서션(1304); 및 공식 검증 툴(1306)을 포함한다. 상이한 데이터 변환 파이프라인용 두 개의 하드웨어 설계가 기능적으로 등가인지를 검증하기 위해 시스템(1300)을 사용하는 경우, 시스템(1300)은, 하나 이상의 데이터 변환 요소가 기능 요소로 대체된 다른 데이터 변환 파이프라인용 하드웨어 설계 버전을 또한 포함할 수 있다. 일반적으로, 데이터 변환 파이프라인의 인스턴스가 임의의 트랜잭션에 대해 상기 트랜잭션용 하나 이상의 출력의 기준 세트와 매칭하는 하나 이상의 출력 세트를 생성할 것이라는 것을 데이터 변환 파이프라인(1302)용 하드웨어 설계 버전이 검증한 것에 대해 상기 하나 이상의 어서션(1304)이 참인지를 공식 검증하기 위해 공식 검증 툴(1306)을 구성한다.
데이터 변환 파이프라인용 하드웨어 설계 버전(1302)은, 데이터 변환 파이프라인의 데이터 변환 요소의 선택된 세트 각각의 구조 및/또는 기능의 설명이, 공식 검증 툴에 의해 그 입력의 미평가 기능으로서 처리되는 기능 요소의 구조 및/또는 기능의 설명으로 대체된, 데이터 변환 파이프라인의 하드웨어 설계의 버전이다. 즉, 데이터 변환 파이프라인용 하드웨어 설계 버전은 초기 하드웨어 설계의 데이터 변환 파이프라인을 설명하나 데이터 변환 요소의 선택된 세트 각각이 대응하는 기능 요소로 대체되었음은 제외한다.
유사하게, 다른 데이터 변환 파이프라인용 하드웨어 설계 버전이 있는 경우에, 이 다른 데이터 변환 파이프라인용 하드웨어 설계 버전은, 데이터 변환 파이프라인의 데이터 변환 요소의 선택된 세트 각각의 구조 및/또는 기능의 설명이, 공식 검증 툴에 의해 그 입력의 미평가 기능으로서 처리되는 기능 요소의 구조 및/또는 기능의 설명으로 대체된, 다른 데이터 변환 파이프라인의 하드웨어 설계의 버전이다. 이들 경우, 기능 요소로 대체된 데이터 변환 요소의 선택된 세트는, 실질적으로 등가인 데이터 변환 요소(즉, 다른 데이터 변환 파이프라인에 실질적으로 등가인 데이터 변환 요소를 갖는 데이터 변환 요소)이고, 실질적으로 등가인 데이터 변환 요소의 각 쌍은 동일한 기능 요소로 대체된다.
어서션(1304)은, 참으로 검증되면 데이터 변환 파이프라인용 하드웨어 설계 버전에 대해, 데이터 변환용 하드웨어 설계의 인스턴스가 임의의 트랜잭션에 대해 상기 트랜잭션에 대한 하나 이상의 출력의 기준 세트와 매칭하는 하나 이상의 출력 세트를 생성함을 설정하는 하나 이상의 공식 어서션을 포함한다. 전술한 바와 같이, 어서션은 특정한 특성이 하드웨어 설계를 위해 유효할(즉, 항상 참일) 것으로 예상되는 진술이다.
상기 데이터 파이프라인용 하드웨어 설계 버전의 인스턴스가 임의의 트랜잭션에 대해, 상기 트랙잭션에 대한 하나 이상의 출력 기준 세트와 매칭하는 하나 이상의 출력 세트를 생성하는 경우, 데이터 변환 파이프라인용 하드웨어 설계 버전의 인스턴스가 변환이 수행되는 시기에 상관없이(즉, 변환이 수행되는 파이프라인의 상태에 상관없이) 동일한 입력에 수행된 변환에 대한 동일한 결과를 생성한다면, 하나 이상의 어서션(1304)은 데이터 변환 파이프라인용 하드웨어 설계 버전의 인스턴스가 이전에 본 트랜잭션을 수행하는 경우에 출력은 동일하다고 어서트할 수 있다.
데이터 파이프라인용 하드웨어 설계 버전의 인스턴스가 임의의 트랜잭션에 대해, 하나 이상의 출력 기준 세트와 매칭하는 하나 이상의 출력 세트를 생성하는 경우, 데이터 변환 파이프라인용 하드웨어 설계 버전의 인스턴스가 다른 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스에 기능적으로 등가라면, 하나 이상의 어서션(1304)은 두 개의 하드웨어 설계 버전의 인스턴스의 출력이 항상 동일하다고 어서트할 수 있다.
하나 이상의 어서션(1304)은 데이터 변환 파이프라인(들)용 하드웨어 설계(들)의 버전(들)(1302, 1308)에 링크되어, 하나 이상의 어서션은 어서트 특성을 평가할 수 있도록 데이터 변환 파이프라인(들)용 하드웨어 설계(들)의 버전(들)의 관련 신호에 연결된다. 전술한 바와 같이, 하나 이상의 어서션을 데이터 변환 파이프라인용 하드웨어 설계 버전에 통합하거나, 하나 이상의 어서션(1304)을 데이터 변환 파이프라인(들)용 하드웨어 설계(들)의 버전에 결합함으로써, 하나 이상의 어서션을 하드웨어 설계(들)의 버전(들)에 링크할 수 있다.
공식 검증 툴(1306)은, 하드웨어 설계의 공식 검증을 수행할 수 있는 소프트웨어 툴이다. 공식 검증은 무한 시간에 걸쳐 어서션을 이상적으로 검증하기 때문에, 무한 시간 공식 검증 툴을 사용하는 것이 유리할 수 있다.
데이터 변환 파이프라인(들)용 하드웨어 설계(들)의 버전(들)(1302, 1308); 하나 이상의 어서션(1304); 및 (존재한다면) 바인딩은 공식 검증 툴(1306)에 로딩된다. 이어서, 하나 이상의 어서션(1304)이 데이터 변환 파이프라인용 하드웨어 설계의 버전에 대해 참인지 공식적으로 검증하기 위해, 공식 검증 툴(1306)을 구성한다.
전술한 바와 같이, 공식 검증 툴(1306)은, 어서션이 성공적으로 검증되었는지 나타내는 정보 및/또는 어서션 중 하나 이상이 성공적으로 검증되지 않으면 어서션으로 하여금 실패시킨 하드웨어 설계의 상태 또는 상태 시퀀스를 나타내는 정보를 출력할 수 있다.
도 12와 도 13의 방법(1200) 및 시스템(1300)은, 적어도 하나의 데이터 변환 요소가 기능 요소로 대체된 데이터 변환용 하드웨어 설계 버전을 생성하는 단계 및 그 다음 트랜잭션 세트의 각 트랜잭션에 대해 하드웨어 설계 버전의 인스턴스의 출력 세트가 상기 트랜잭션에 대한 출력의 기준 세트와 매칭하는 것을 공식적으로 검증하는 단계를 포함하는 것으로서 설명되었지만, 일부 예시에서 데이터 변환 요소를 기능 요소로 대체하는 단계 대신에, 상기 공식 검증 동안에 기능 요소가 데이터 변환 요소의 출력에 대한 힌트를 제공하도록 상기 데이터 변환 요소를 상기 기능 요소에 연결함으로써 상기 하드웨어 설계의 버전을 생성할 수 있다. 이 방식으로, 기능 요소는 도 4 내지 도 11의 방법 및 시스템의 제약과 동일한 방식으로 작용한다. 구체적으로, 공식 검증 툴은 공식 검증을 단순화하기 위해 데이터 변환 요소의 전체 복잡성을 회피함으로써, 기능 요소 추상화를 사용할 수 있고, 여기서 검증되는 특성은 데이터 변환의 세부 사항에 의존하지 않고 동일한 입력에 응답하여 항상 동일한 출력을 제공한다는 사실에만 의존한다. 데이터 변환의 세부 사항에 의존하는 다른 특성의 경우, 이러한 추상화는 검증에 도움을 주지 않을 수 있지만, 데이터 변환의 다른 특성(예, 제곱만이 양의 출력만 생성)은 수렴성을 개선하기 위해 기능 요소 상에 (예를 들어, 하나 이상의 가정으로서) 부과될 수 있다. 일부 경우에, 검증을 위해 데이터 변환의 전체 상세가 필요할 수 있고, 기능 요소 추상화가 도움을 제공하지 않지만, 이는 매우 드물 것이다.
또 다른 구현예에서, 기능 요소의 두 가지 용도는 조합되어 데이터 변환 파이프라인용 하드웨어 설계를 검증할 수 있다. 특히, 일부 예시에서, 하나 이상의 데이터 변환 요소는 기능 요소에 링크됨으로써, 기능 요소는 공식 검증 동안 데이터 변환 요소의 출력에 대한 힌트를 제공할 수 있고; 하나 이상의 다른 데이터 변환 요소는 기능 요소로 대체될 수 있다.
또한, 도 4 내지 도 11의 방법 및 시스템, 그리고 도 12와 도 13의 방법 및 시스템이 별도 및 별개의 것으로 상기에서 설명되고 있지만, 다른 예시에서 데이터 변환 파이프라인용 하드웨어 설계를 검증하기 위해 두 개의 방법을 조합해서 사용할 수 있다. 특히, 다른 예시에서, 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 하나 이상의 출력 세트가 트랜잭션의 소정 세트에 대해 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 하나 이상의 출력 세트와 매칭하는 것을 공식 검증하는 단계에 의해 제1 데이터 변환 파이프라인용 하드웨어 설계를 검증할 수 있고, 여기서 (i) 제1 및 제2 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소의 쌍이 동일한 입력에 응답하여 동일한 출력을 생성하는 제약 아래 공식 검증을 수행하고; (ii) 제1 및 제2 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소의 다른 쌍은 공식 검증 이전에 기능 요소로 대체될 수 있거나 이에 링크될 수 있다. 이들 예에서, 실질적으로 등가인 데이터 변환 요소 제약 쌍 중 하나 이상은 전술한 바와 같이 공식 검증 전에 블랙 박스 요소로 대체될 수 있다.
도 14는 임의의 형태의 컴퓨터 및/또는 전자 장치로서 구현될 수 있는 예시적인 컴퓨터 기반 장치(1400)의 다양한 구성 요소를 나타내고, 여기서 본원에 설명된 방법 및 시스템의 구현예가 구현될 수 있다.
컴퓨터 기반 장치(1400)는 하나 이상의 프로세서(1402)를 포함하고, 이는 데이터 변환 파이프라인용 하드웨어 설계를 검증하도록 장치 연산을 제어하는 컴퓨터 실행가능 명령어를 처리하기 위한 마이크로프로세서, 컨트롤러 또는 임의의 다른 적절한 유형의 프로세서일 수 있다. 일부 예시에서, 칩 아키텍처 상의 시스템이 사용되는 일부 예시에서, 프로세서(1402)는 하나 이상의 고정 기능 블록(가속기라고도 지칭됨)을 포함할 수 있고, 이는 (소프트웨어 또는 펌웨어 대신에) 하드웨어에서 데이터 변환 파이프라인용 하드웨어 설계를 검증하는 방법의 일부를 구현한다. 운영 체제(1404) 또는 임의의 다른 적절한 플랫폼 소프트웨어를 포함하는 플랫폼 소프트웨어는, 공식 검증 툴과 같은 애플리케이션 소프트웨어를 장치 상에서 실행할 수 있도록 컴퓨터 기반 장치에 제공될 수 있다.
컴퓨터 실행가능 명령어는, 컴퓨터 기반 장치(1400)에 의해 접근 가능한 임의의 컴퓨터 판독가능 매체를 사용하여 제공될 수 있다. 컴퓨터 판독가능 매체는, 예를 들어 메모리(1406)와 같은 컴퓨터 저장 매체와 통신 매체를 포함할 수 있다. 메모리(1406)와 같은 컴퓨터 저장 매체(즉, 비일시적 기계 판독가능 매체)는, 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 기타 데이터와 같은 정보를 저장하기 위해 임의의 방법 또는 기술로 구현되는, 휘발성 및 비휘발성, 착탈식 및 비착탈식 매체를 포함한다. 컴퓨터 저장 매체는, RAM, ROM, EPROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, 디지털 다목적 디스크(DVD) 또는 기타 광학 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 또는 기타 자기 저장 장치, 또는 컴퓨터 장치에 의한 액세스를 위한 정보를 저장하는데 사용될 수 있는 임의의 다른 비-전송 매체를 포함하지만, 이에 제한되지 않는다. 대조적으로, 통신 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 변조된 데이터 신호, 예컨대 캐리어 파, 또는 다른 전송 기구의 다른 데이터를 구현할 수 있다. 본원에서 정의된 바와 같이, 컴퓨터 저장 매체는 통신 매체를 포함하지 않는다. 컴퓨터 저장 매체(즉, 비일시적인 기계 판독가능 매체, 예컨대 메모리(1406))가 컴퓨터 기반 장치(1400) 내에 나타나 있지만, 원격으로 분산되거나 위치할 수 있고 네트워크 또는 다른 통신 링크를 통해 (예를 들어, 통신 인터페이스(1408)를 사용하여) 액세스될 수 있음을 이해할 것이다.
컴퓨터 기반 장치(1400)는 또한 디스플레이 장치(1412)에 디스플레이 정보를 출력하도록 배열된 입력/출력 컨트롤러(1410)를 포함하고, 이는 컴퓨터 기반 장치(1400)와 분리되거나 이에 통합될 수 있다. 디스플레이 정보는 그래픽 사용자 인터페이스를 제공할 수 있다. 입력/출력 컨트롤러(1410)는 또한 사용자 입력 장치(1414)(예, 마우스 또는 키보드)와 같은 하나 이상의 장치로부터 입력을 수신하고 처리하기 위해 배열된다. 이 사용자 입력은 검증 개시에 사용될 수 있다. 일 구현예에서, 디스플레이 장치(1412)는, 터치 감지형 디스플레이 장치인 경우에, 사용자 입력 장치(1414)로서 또한 기능할 수 있다. 입력/출력 컨트롤러(1410)는 디스플레이 장치 외의 장치, 예를 들어 국부적으로 연결된 인쇄 장치(도 14에 미도시)에 데이터를 출력할 수 있다.
도 15는 본원에서 설명하는 데이터 변환 파이프라인 중 어느 하나가 구현될 수 있는 컴퓨터 시스템을 나타낸다. 컴퓨터 시스템은 CPU(1502), GPU(1504), 메모리(1506) 및 디스플레이(1516), 스피커(1518) 및 카메라(1520)와 같은 다른 장치(1514)를 포함한다. 데이터 변환 파이프라인(1510)(예를 들어, 도 1 내지 도 3에 관해 전술한 데이터 변환 파이프라인(100, 200 또는 300) 중 임의의 것과 같으나 이에 제한되지 않음)을 GPU(1504)에 구현한다. 다른 예시에서, 데이터 변환 파이프라인(1510)은 CPU(1502) 상에서 구현될 수 있다. 컴퓨터 시스템의 구성 요소는 통신 버스(1522)를 통해 서로 통신할 수 있다.
일반적으로, 전술한 기능, 방법, 기술 또는 구성 요소 중 임의의 것은 소프트웨어, 펌웨어, 하드웨어(예, 고정 논리 회로) 또는 이들의 임의의 조합으로 구현될 수 있다. 용어 "모듈", "기능", "구성 요소", "요소", "단위", "블록" 및 "로직"은 일반적으로 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 임의의 조합을 나타내기 위해 본원에 사용될 수 있다. 소프트웨어 구현의 경우, 모듈, 기능, 구성 요소, 요소, 단위, 블록 또는 로직은 프로세서 상에서 실행되는 경우 특정 작업을 수행하는 프로그램 코드를 나타낸다. 본원에 설명된 알고리즘 및 방법은 하나 이상의 프로세서에 의해 수행될 수 있고, 이는 프로세서(들)로 하여금 알고리즘/방법을 수행시킨다. 컴퓨터 판독가능 저장 매체의 예시는 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 광학 디스크, 플래시 메모리, 하드 디스크 메모리, 및 자기, 광학, 및 다른 기술을 사용할 수 있는 기타 메모리 장치를 포함하여, 명령어 또는 다른 데이터를 저장하고 기계에 의해 액세스될 수 있다.
본원에서 사용되는 용어 컴퓨터 프로그램 코드 및 컴퓨터 판독가능 명령은, 기계 언어, 해석된 언어 또는 스크립팅 언어로 표현된 코드를 포함하는, 프로세서용 임의의 종류의 실행가능 코드를 지칭한다. 실행가능 코드는, 이진 코드, 기계 코드, 바이트 코트, 집적 회로를 정의하는 코드(예, 하드웨어 설명 언어 또는 넷리스트), 및 C, Java 또는 OpEncL과 같은 프로그래밍 언어 코드로 표현된 코드를 포함한다. 예를 들어, 실행가능 코드는, 가상 머신 또는 다른 소프트웨어 환경에서 적절히 실행되고, 처리되고 해석되고, 컴파일되고, 실행되는 경우에 실행 가능 코드를 지원하는 컴퓨터 시스템의 프로세서로 하여금 상기 코드에 의해 지정된 작업을 수행시키는, 임의의 종류의 소프트웨어, 펌웨어, 스크립트, 모듈 또는 라이브러리일 수 있다.
프로세서, 컴퓨터, 또는 컴퓨터 시스템은, 명령을 실행할 수 있도록 처리 능력을 갖는 임의의 종류의 장치, 기계 또는 전용 회로, 또는 이의 군 또는 일부일 수 있다. 프로세서는 임의의 종류의 범용 또는 전용 프로세서, 예컨대 CPU, GPU, 시스템-온-칩, 상태 기계, 미디어 프로세서, 주문형 집적 회로(ASIC), 프로그래밍 가능한 로직 어레이, 필드 프로그래머블 게이트 어레이(FPGA) 등일 수 있다. 컴퓨터 또는 컴퓨터 시스템은 하나 이상의 프로세서를 포함할 수 있다.
또한, 원하는 기능을 수행하기 위해 집적 회로를 설계하거나 프로그래밍 가능한 칩을 구성하기 위해 사용되는 바와 같이, 본원에 기술된 바와 같은 하드웨어의 구성을 정의하는 소프트웨어, 예컨대 HDL(하드웨어 설명 언어) 소프트웨어를 포함하고자 한다. 즉, 집적 회로 제조 시스템에서 처리(즉, 실행)되는 경우, 본원에 기술된 임의의 장치(예, 데이터 변환 파이프라인)를 포함한 장치(예, 프로세서 또는 다른 컴퓨터 기반 장치)를 제조하도록 시스템을 구성하는 집적 회로 정의 데이터 세트(예, 하드웨어 설계)의 형태의 컴퓨터 판독가능 프로그램 코드를 갖는 컴퓨터 판독가능 저장 매체가 제공될 수 있다. 집적 회로 정의 데이터 세트는, 예를 들어 집적 회로 설명일 수 있다.
따라서, 본원에 설명된 바와 같은 데이터 변환 파이프라인을 집적 회로 제조 시스템에서 제조하는 방법이 제공될 수 있다. 또한, 집적 회로 제조 시스템에서 처리되는 경우, 데이터 변환 파이프라인의 제조 방법을 수행시키는 집적 회로 정의 데이터 세트(예, 하드웨어 설계)가 제공될 수 있다.
집적 회로 정의 데이터 세트(예, 하드웨어 설계)는 컴퓨터 코드 형태로, 예를 들어 프로그래머블 칩을 구성하기 위한 코드인 넷리스트로서, 임의의 레벨에서 집적식 회로 제조에 적절한 하드웨어를 정의한 하드웨어 설명 언어로서의 형태일 수 있고, 레지스터 전송 레벨(RTL) 코드로서, Verilog 또는 VHDL과 같은 하이-레벨 회로 표현으로서, 그리고 OASIS(RTM) 및 GDSII와 같은 로우-레벨 회로 표현으로서의 형태를 포함한다. 집적 회로에서의 제조에 적절한 하드웨어를 논리적으로 정의하는 더 높은 레벨의 표현(예컨대, RTL)은, 상기 표현에 의해 그렇게 정의된 집적 회로의 제조 정의를 생성하기 위해, 이들 요소를 결합하기 위한 회로 요소의 정의와 규칙을 포함한 소프트웨어 환경의 맥락에서 집적 회로의 제조 정의를 생성하도록 구성된 컴퓨터 시스템에서 처리될 수 있다. 기계를 정의하도록 컴퓨터 시스템에서 실행되는 소프트웨어를 통상적으로 갖는 경우와 같이, 집적 회로의 제조 정의를 생성하도록 구성된 컴퓨터 시스템이, 집적 회로의 제조 정의를 생성하도록 집적 회로를 정의하는 코드를 수행하기 위해 중간 사용자 단계(예, 명령어, 변수 제공 등)를 요구할 수 있다.
이제 도 15에 관해, 데이터 변환 파이프라인을 제조하도록 시스템을 구성하기 위해 집적 회로 제조 시스템에서 집적 회로 정의 데이터 세트(예, 하드웨어 설계)를 처리하는 일례를 설명할 것이다.
도 16은, 본원의 임의의 예시에 설명된 바와 같이, 데이터 변환 파이프라인을 제조하도록 구성된 집적 회로(IC) 제조 시스템(1602)의 일례를 나타낸다. 특히, IC 제조 시스템(1602)은, 레이아웃 처리 시스템(1604) 및 집적 회로 생성 시스템(1606)을 포함한다. IC 제조 시스템(1602)은, 하드웨어 설계과 같은 IC 정의 데이터 세트를 수신하고(예, 본원의 임의의 예시에 설명된 데이터 변환 파이프라인을 정의함), IC 정의 데이터 세트를 처리하고, 상기 IC 정의 데이터 세트(예, 이는 본원의 임의의 구현예에 설명된 데이터 변환 파이프라인을 구현함)에 따라 IC를 생성하도록 구성된다. IC 정의 데이터 세트의 처리는, 데이터 변환 파이프라인을 구현하는 집적 회로를 제조하기 위해 IC 제조 시스템(1602)을 구성하고, 본원의 임의의 예시에 설명된 바와 같다.
레이아웃 처리 시스템(1604)은 IC 정의 데이터 세트(예, 하드웨어 설계)를 수신하고 처리하여 회로 레이아웃을 결정하도록 구성된다. IC 정의 데이터 세트로부터의 회로 레이아웃을 결정하는 방법은 당업계에 공지되어 있으며, 예를 들어 논리 구성 요소(예, NAND, NOR, AND, MUX 및 FLIP-FLOP 구성 요소)의 관점에서 생성될 회로의 게이트 레벨 표현을 결정하기 위한 RTL 코드를 합성하는 단계를 포함할 수 있다. 회로 레이아웃은, 논리 구성 요소에 대한 위치 정보를 결정함으로써 회로의 게이트 레벨 표현으로부터 결정될 수 있다. 이는, 회로 레이아웃을 최적화하기 위해 자동으로 또는 사용자가 참여해서 행해질 수 있다. 레이아웃 처리 시스템(1604)이 회로 레이아웃을 결정한 경우, 회로 레이아웃 정의를 IC 생성 시스템(1606)으로 출력할 수 있다. 회로 레이아웃 정의는, 예를 들어 회로 레이아웃 설명일 수 있다.
IC 생성 시스템(1606)은 당업계에 공지된 바와 같이, 회로 레이아웃 정의에 따라 IC를 생성한다. 예를 들어, IC 생성 시스템(1606)은 반도체 소자 제조 공정을 구현하여 IC를 생성할 수 있고, 이는 전자 회로가 반도체 재료로 제조된 웨이퍼 상에 점진적으로 생성되는 동안에 광 리소그래피 및 화학적 처리 단계의 다중 단계 시퀀스를 포함할 수 있다. 회로 레이아웃 정의는, 회로 정의에 따라 IC를 생성시키기 위한 리소그래피 공정에 사용될 수 있는 마스크의 형태일 수 있다. 대안적으로, IC 생성 시스템(1606)에 제공된 회로 레이아웃 정의는, IC 생성 시스템(1606)이 IC 생성용으로 적절한 마스크를 형성하기 위해 사용할 수 있는 컴퓨터 판독가능 코드의 형태일 수 있다.
IC 제조 시스템(1602)에 의해 수행되는 상이한 공정은 하나의 위치에 모두, 예를 들어 한 군에 의해 구현될 수 있다. 대안적으로, IC 제조 시스템(1602)은 분산 시스템일 수 있어서, 일부 공정은 상이한 위치에서 수행될 수 있고, 상이한 군에 의해 수행될 수 있다. 예를 들어, (i) 생성될 회로의 게이트 레벨 표현을 형성하기 위해 IC 정의 데이터 세트를 나타내는 RTL 코드를 합성하는 단계, (ii) 상기 게이트 레벨 표현에 기초한 회로 레이아웃을 생성하는 단계, (iii) 상기 회로 레이아웃에 따라 마스크를 형성하는 단계, 및 (iv) 상기 마스크를 사용하여 집적 회로를 제조하는 단계 중, 일부는 상이한 위치에서 및/또는 상이한 군에 의해 수행될 수 있다.
다른 예시에서, 집적 회로 제조 시스템에서 집적 회로 정의 데이터 세트의 처리는, 회로 레이아웃을 결정하기 위해 IC 정의 데이터 세트가 처리되지 않고서 데이터 변환 파이프라인을 제조하도록 시스템을 구성할 수 있다. 예를 들어, 집적 회로 정의 데이터세트는 FPGA와 같은 재구성 가능한 프로세서의 구성을 정의할 수 있고, 그 데이터세트의 처리는, (예를 들어, 구성 데이터를 FPGA에 로딩함으로써) 그 정의된 구성을 갖는 재구성 가능 프로세서를 생성하도록 IC 제조 시스템을 구성할 수 있다.
일부 구현예에서, 집적 회로 제조 시스템 내에서 처리되는 경우, 집적 회로 제조 정의 데이터세트는 집적 회로 제조 시스템으로 하여금 본원에 기술된 장치를 생성시킬 수 있다. 예를 들어, 도 16에 관해 전술한 방식으로 집적 회로 제조 정의 데이터 세트에 의해 집적 회로 제조 시스템을 구성하면, 본원에 설명된 바와 같은 장치를 제조할 수 있다.
일부 예시에서, 집적 회로 정의 데이터세트는, 데이터세트에서 또는 상기 데이터세트에서 정의된 하드웨어와 조합하여 정의된 하드웨어 상에서 실행하는 소프트웨어를 포함할 수 있다. 도 16에 나타낸 예시에서, IC 생성 시스템은, 집적 회로 정의 데이터 세트에서 정의된 프로그램 코드에 따라 집적 회로를 제조시, 집접 회로 상으로 펌웨어를 로딩하도록 추가로 구성될 수 있거나, 그렇지 않으면 집적 회로를 사용하기 위해 프로그램 코드에 집적 회로를 제공할 수 있다.
장치, 장비, 모듈, 및/또는 시스템(및 본원에서 구현되는 방법)에서 본 출원에 기재된 개념을 구현하는 것은 공지된 구현예와 비교할 때 성능 개선을 만들 수 있다. 성능 개선은, 컴퓨터 성능 증가, 대기시간 감소, 처리량 증가, 및/또는 전력 소비 감소 중 하나 이상을 포함할 수 있다. 이러한 장치, 장비, 모듈, 및 시스템의 제조 동안, (예를 들어, 집적 회로에서의) 성능 개선은 물리적 구현에 대해 트레이드-오프 될 수 있고, 이에 따라 제조 방법을 개선할 수 있다. 예를 들어, 성능 개선은 레이아웃 영역에 대해 트레이드될 수 있고, 이에 따라, 공지된 구현예의 성능과 매칭할 수 있지만, 실리콘을 덜 사용한다. 이는, 예를 들어 직렬화된 방식으로 기능적 블록을 재사용하거나 또는 장치, 장비, 모듈 및/또는 시스템의 요소 사이에 기능적 블록을 공유함으로써, 수행될 수 있다. 역으로, 장치, 장비, 모듈, 및 시스템의 물리적 구현에서의 개선(예, 실리콘 영역 감소)을 만드는, 본 출원에 개시된 개념은 개선된 성능을 위해 트레이드 될 수 있다. 이는, 예를 들어 모듈의 다수의 인스턴스를 소정의 영역 예산 내에 제조함으로써 수행될 수 있다.
본 출원인은 본원에 설명된 각각의 개별 특징부 및 이러한 특징부 둘 이상 임의의 조합을 개시하고, 이러한 특징부 또는 특징부 조합이 본원에 개시된 임의 문제를 해결하는지 여부에 상관없이, 이러한 특징부 및 조합이 당업자의 보편적 일반 지식에 비추어 전체적으로 현재 명세서에 기초해서 수행될 수 있을 정도로 개시한다. 전술한 설명을 고려할 때, 본 발명의 범주 내에서 다양한 변형이 이루어질 수 있음을 당업자에게 명백하게 할 것이다.

Claims (32)

  1. 제1 데이터 변환 파이프라인용 하드웨어 설계를 검증하는 컴퓨터 구현 방법으로서, 상기 제1 데이터 변환 파이프는 하나 이상의 입력에 대해 데이터 변환을 수행하는 하나 이상의 데이터 변환 요소를 포함하고, 상기 방법은, 하나 이상의 프로세서에서,
    상기 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 하나 이상의 출력 세트가 소정의 트랜잭션 세트에 대해 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 하나 이상의 출력 세트에 매칭하는 단계를 공식 검증하는 단계 - 상기 제2 데이터 변환 파이프라인은 하나 이상의 입력에 대하여 데이터 변환을 수행하는 하나 이상의 데이터 변환 요소를 포함하고, 상기 제2 데이터 변환 파이프라인의 데이터 변환 요소는 상기 제1 데이터 변환 파이프라인의 데이터 변환 요소와 실질적으로 등가임 - 를 포함하되,
    상기 공식 검증은, 상기 제1 및 제2 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소가 동일한 입력에 응답하여 동일한 출력을 생성한다는 제약 하에서 수행되는, 방법.
  2. 제1항에 있어서, 상기 제1 데이터 변환 파이프라인과 상기 제2 데이터 변환 파이프라인은 상이한, 방법.
  3. 제2항에 있어서, 상기 제약은, 상기 제1 및 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 실질적으로 등가인 데이터 변환 요소가 상기 동일한 시간에 상기 동일한 입력을 수신하는 경우, 상기 입력에 응답하여 동일한 하나 이상의 출력 세트를 생성하는 것인, 방법.
  4. 제2항에 있어서, 상기 제약은, 상기 제1 및 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 실질적으로 등가인 데이터 변환 요소가 상이하나 관련된 시점에 상기 동일한 입력을 수신하는 경우, 상기 입력에 응답하여 동일한 하나 이상의 출력 세트를 생성하는 것인, 방법.
  5. 제2항에 있어서, 상기 제1 및 제2 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소는 동일한, 방법.
  6. 제2항에 있어서, 상기 제1 및 제2 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소는 동일하지 않고, 상기 방법은, 상기 제1 및 제2 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소가 기능적으로 등가인 것을 공식적으로 검증하는 단계를 추가로 포함하는, 방법.
  7. 제1항에 있어서, 상기 제1 및 제2 데이터 변환 파이프라인은 동일한, 방법.
  8. 제7항에 있어서, 상기 공식 검증 전에 상기 제2 데이터 변환 파이프라인용 하드웨어 설계를 캡처 모듈용 하드웨어 설계에 링크하는 단계를 추가로 포함하고, 상기 캡처 모듈은, 하나 이상의 입력 세트를 상기 제2 데이터 변환 파이프라인으로 기록하고 상기 제2 데이터 변환 파이프라인으로부터 하나 이상의 입력 세트를 기록하고, 상기 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스가 상기 제2 데이터 변환 파이프라인의 소정의 상태로부터 트랜잭션을 실행하는 경우에 하나 이상의 입력 세트를 상기 제2 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소에 기록하고 상기 제2 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소로부터 하나 이상의 출력 세트를 기록하도록 구성되는, 방법.
  9. 제8항에 있어서, 상기 제약은, 상기 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 실질적으로 등가인 데이터 변환 요소가 상기 데이터 변환 요소에 대해 상기 기록된 하나 이상의 입력 세트를 수신하는 경우, 상기 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 상기 실질적으로 등가인 데이터 변환 요소가 상기 데이터 변환 요소에 대해 상기 대응하여 기록된 하나 이상의 출력 세트를 생성하는 것인, 방법.
  10. 제8항에 있어서, 상기 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 하나 이상의 출력 세트가 소정의 트랜잭션 세트에 대해 상기 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 하나 이상의 출력 세트에 매칭하는지 공식적으로 검증하는 단계는, 상기 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스가 상기 기록된 하나 이상의 파이프라인 입력 세트를 수신하는 경우에 상기 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 하나 이상의 출력 세트가 상기 기록된 하나 이상의 파이프라인 출력 세트와 매칭하는지 공식적으로 검증하는 단계를 포함하는, 방법.
  11. 제8항에 있어서, 상기 캡처 모듈은, 소정의 사이클 횟수에 이어서 상기 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스 리셋 동안에, 상기 하나 이상의 입력 세트를 상기 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 실질적으로 등가인 데이터 변환 요소에 기록하고 상기 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 실질적으로 등가인 데이터 변환 요소로부터 상기 하나 이상의 출력 세트를 기록하도록 구성되는, 방법.
  12. 제8항에 있어서, 상기 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스가 상기 제2 데이터 변환 파이프라인의 소정의 상태로부터의 임의의 입력 세트에 대해 수행된 변환에 정확한 출력을 생성함을 공식적으로 검증하는 단계를 추가로 포함하는 방법.
  13. 제1항에 있어서, 상기 공식 검증 전에, 상기 제1 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소를 블랙 박스 요소로 대체하는 단계 및/또는 상기 제2 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소를 블랙 박스 요소로 대체하는 단계를 추가로 포함하되, 상기 제1 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소가 블랙 박스 요소로 대체되는 경우, 상기 제약은 상기 블랙 박스 요소의 거동을 제약하는, 방법.
  14. 제13항에 있어서, 적어도 하나의 블랙 박스 요소가 상기 대응하는 데이터 변환 요소에 의해 유효하게 생성될 수 없는 출력을 생성하지 않는다는 것을 보장하는 제2 제약 또는 제약 세트 하에서 상기 공식 검증을 수행하는, 방법.
  15. 제1항에 있어서,
    상기 제2 데이터 변환 파이프라인의 제2 데이터 변환 요소는, 상기 제1 데이터 변환 파이프라인의 다른 데이터 변환 요소와 실질적으로 등가이고;
    상기 방법은, 공식 검증 전에, 상기 제2 데이터 변환 파이프라인의 각각의 제2 데이터 변환 요소 및 상기 제1 데이터 변환 파이프라인의 다른 데이터 변환 요소를 기능 요소로 대체하는 단계를 추가로 포함하고, 상기 기능 요소는 공식 검증 툴에 의해 입력의 미평가 기능으로서 처리되어 공식 검증 동안에 상기 기능 요소가 동일한 하나 이상의 입력 세트에 응답하여 동일한 하나 이상의 출력 세트를 생성하는, 방법.
  16. 제1항에 있어서, 상기 공식 검증이 성공적이지 못했다고 결정하는 것에 응답하여, 상기 제1 데이터 변환 파이프라인용 하드웨어 설계를 수정하여 상기 제1 데이터 변환 파이프라인용 수정 하드웨어 설계를 생성하는 단계를 추가로 포함하는, 방법.
  17. 제1항에 있어서, 상기 공식 검증이 성공적이었다고 결정하는 것에 응답하여, 집적 회로 제조 시스템을 사용해서 상기 하드웨어 설계에 따라 상기 제1 데이터 변환 파이프라인을 구현한 집적 회로를 제조하는 단계를 추가로 포함하는, 방법.
  18. 제1항에 있어서, 집적 회로 제조 시스템에서 공정 처리되는 경우, 상기 제1 데이터 변환 파이프라인용 하드웨어 설계는 상기 집적 회로 제조 시스템을 구성하여 상기 제1 데이터 변환 파이프라인을 구현한 집적 회로를 제조하는 방법.
  19. 컴퓨터 시스템에서 실행될 때 상기 컴퓨터 시스템으로 하여금 청구항 1에 따르는 방법을 수행하게 하는 컴퓨터 판독형 명령이 저장되는 비일시적 컴퓨터 판독형 저장 매체.
  20. 제1 데이터 변환 파이프라인용 하드웨어 설계를 검증하는 시스템으로서, 상기 제1 데이터 변환 파이프는 하나 이상의 입력에 대해 데이터 변환을 수행하는 하나 이상의 데이터 변환 요소를 포함하고, 상기 시스템은,
    다음을 저장하도록 구성된 메모리:
    상기 제1 데이터 변환 파이프라인용 하드웨어 설계;
    제2 데이터 변환 파이프라인용 하드웨어 설계(상기 제2 데이터 변환 파이프라인은 하나 이상의 입력에 대하여 데이터 변환을 수행하는 하나 이상의 데이터 변환 요소를 포함하고, 상기 제2 데이터 변환 파이프라인의 데이터 변환 요소는 상기 제1 데이터 변환 파이프라인의 데이터 변환 요소와 실질적으로 등가임); 및
    공식 검증 툴; 및
    다음을 수행하도록 구성된 하나 이상의 프로세서:
    상기 공식 검증 툴을 사용해서 상기 제1 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 하나 이상의 출력 세트가 소정의 트랜잭션 세트에 대해 상기 제2 데이터 변환 파이프라인용 하드웨어 설계의 인스턴스의 하나 이상의 출력 세트에 매칭하는지 공식적으로 검증하는 단계를 포함하되;
    상기 공식 검증은, 상기 제1 및 제2 데이터 변환 파이프라인의 실질적으로 등가인 데이터 변환 요소가 동일한 입력에 응답하여 동일한 출력을 생성한다는 제약 하에서 수행되는, 시스템.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
KR1020207031790A 2018-04-05 2019-04-04 데이터 변환 파이프라인용 하드웨어 설계 검증 KR102323748B1 (ko)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
GB1805722.4 2018-04-05
GB1805723.2A GB2572633A (en) 2018-04-05 2018-04-05 Verification of hardware design for data transformation pipeline
GB1805723.2 2018-04-05
GB1805722.4A GB2572632B (en) 2018-04-05 2018-04-05 Verification of hardware design for data transformation pipeline
GB1818105.7 2018-11-06
GB1818108.1 2018-11-06
GB1818105.7A GB2572664B (en) 2018-04-05 2018-11-06 Verification of hardware design for data transformation pipeline
GB1818108.1A GB2572665B (en) 2018-04-05 2018-11-06 Verification of hardware design for data transformation pipeline
PCT/GB2019/050961 WO2019193334A2 (en) 2018-04-05 2019-04-04 Verification of hardware design for data transformation pipeline

Publications (2)

Publication Number Publication Date
KR20200139235A KR20200139235A (ko) 2020-12-11
KR102323748B1 true KR102323748B1 (ko) 2021-11-08

Family

ID=64655325

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020207031790A KR102323748B1 (ko) 2018-04-05 2019-04-04 데이터 변환 파이프라인용 하드웨어 설계 검증
KR1020207031916A KR102282981B1 (ko) 2018-04-05 2019-04-04 데이터 변환 파이프라인용 하드웨어 설계 검증

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020207031916A KR102282981B1 (ko) 2018-04-05 2019-04-04 데이터 변환 파이프라인용 하드웨어 설계 검증

Country Status (6)

Country Link
US (4) US11126771B2 (ko)
EP (2) EP3776281A2 (ko)
KR (2) KR102323748B1 (ko)
CN (2) CN111936998B (ko)
GB (2) GB2572664B (ko)
WO (2) WO2019193354A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2572664B (en) * 2018-04-05 2020-07-08 Imagination Tech Ltd Verification of hardware design for data transformation pipeline
GB2588134B (en) 2019-10-08 2021-12-01 Imagination Tech Ltd Verification of hardware design for data transformation component
GB2607107B (en) 2021-05-28 2024-05-01 Imagination Tech Ltd Methods and systems for measuring the security of an electronic device comprising hardware and software
US11853195B2 (en) 2021-09-13 2023-12-26 International Business Machines Corporation Methods and systems to discover special outcomes in an instruction set architecture via formal methods
CN117150998B (zh) * 2023-10-31 2024-01-19 上海合见工业软件集团有限公司 一种硬件模块等价性验证系统

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6507874B1 (en) * 1998-01-07 2003-01-14 Microsoft Corporation System for efficient routing and translation of data
US6526544B1 (en) 1999-09-14 2003-02-25 Lucent Technologies Inc. Directly verifying a black box system
JP3974300B2 (ja) * 1999-11-18 2007-09-12 松下電器産業株式会社 Ipベースlsi設計システムおよび設計方法
US6665627B2 (en) * 2001-03-30 2003-12-16 Intel Corporation Method and apparatus for evaluating and correcting the tester derating factor (TDF) in a test environment
KR100429573B1 (ko) * 2001-12-24 2004-05-03 주식회사 하이닉스반도체 레지스터 전송레벨 코드의 생성방법
US7356424B2 (en) * 2003-09-26 2008-04-08 Texas Instruments Incorporated Diagnostic compiler for pipeline analog-to-digital converter, method of compiling and test system employing the same
US7350168B1 (en) * 2005-05-12 2008-03-25 Calypto Design Systems, Inc. System, method and computer program product for equivalence checking between designs with sequential differences
US7389479B2 (en) 2005-12-20 2008-06-17 Synopsys, Inc. Formally proving the functional equivalence of pipelined designs containing memories
US7890901B2 (en) * 2006-03-24 2011-02-15 International Business Machines Corporation Method and system for verifying the equivalence of digital circuits
US8555039B2 (en) * 2007-05-03 2013-10-08 Qualcomm Incorporated System and method for using a local condition code register for accelerating conditional instruction execution in a pipeline processor
US8121825B2 (en) * 2008-04-30 2012-02-21 Synopsys, Inc. Method and apparatus for executing a hardware simulation and verification solution
US10102091B2 (en) * 2008-06-04 2018-10-16 Oracle International Corporation System and method for supporting a testing framework for an event processing system using multiple input event streams
US9892009B2 (en) * 2008-06-04 2018-02-13 Oracle International Corporation System and method for supporting a sliding window for testing an event processing system
WO2010053603A1 (en) * 2008-11-07 2010-05-14 Intrinsity, Inc. Method for piecewise hierarchical sequential verification
US7996803B2 (en) 2009-01-30 2011-08-09 International Business Machines Corporation Automated use of uninterpreted functions in sequential equivalence
US8181134B2 (en) 2009-10-16 2012-05-15 International Business Machines Corporation Techniques for performing conditional sequential equivalence checking of an integrated circuit logic design
US20120030224A1 (en) * 2010-07-29 2012-02-02 Activepath Ltd. Enabling active content in messaging using automatic data replacement
US20180089341A1 (en) * 2012-06-04 2018-03-29 Reveal Design Automation Self Equivalence in Hardware Designs
GB2508233A (en) * 2012-11-27 2014-05-28 Ibm Verifying logic design of a processor with an instruction pipeline by comparing the output from first and second instances of the design
JP6273733B2 (ja) * 2013-09-20 2018-02-07 富士通株式会社 演算処理装置、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
US9420323B2 (en) * 2013-12-19 2016-08-16 The Nielsen Company (Us), Llc Methods and apparatus to verify and/or correct media lineup information
GB2526052B (en) * 2014-03-31 2016-04-13 Imagination Tech Ltd Deadlock detection using assertions
US9268597B2 (en) * 2014-04-01 2016-02-23 Google Inc. Incremental parallel processing of data
US10275386B2 (en) * 2014-06-27 2019-04-30 Advanced Micro Devices, Inc. Memory physical layer interface logic for generating dynamic random access memory (DRAM) commands with programmable delays
US9009468B1 (en) * 2014-08-26 2015-04-14 MagicCube, Inc. System for transaction authentication
US9363087B2 (en) * 2014-10-02 2016-06-07 Microsoft Technology Licensing, Inc. End-to-end security for hardware running verified software
GB2561299B (en) * 2015-05-01 2019-04-03 Imagination Tech Ltd Control path verification of hardware design for pipelined process
GB2550614B (en) * 2016-05-25 2019-08-07 Imagination Tech Ltd Assessing performance of a hardware design using formal verification and symbolic tasks
GB2558076B (en) * 2016-06-20 2019-02-20 Imagination Tech Ltd Livelock detection in a hardware design using formal verification
GB2554942B (en) * 2016-10-14 2018-11-21 Imagination Tech Ltd Verifying firmware binary images using a hardware design and formal assertions
GB2572664B (en) * 2018-04-05 2020-07-08 Imagination Tech Ltd Verification of hardware design for data transformation pipeline

Also Published As

Publication number Publication date
KR20200139235A (ko) 2020-12-11
EP3776281A2 (en) 2021-02-17
GB201818108D0 (en) 2018-12-19
GB2572664A (en) 2019-10-09
GB2572664B (en) 2020-07-08
EP3776282A1 (en) 2021-02-17
GB2572665A8 (en) 2020-06-17
GB201818105D0 (en) 2018-12-19
US20190311074A1 (en) 2019-10-10
US11663385B2 (en) 2023-05-30
WO2019193354A1 (en) 2019-10-10
US20220004690A1 (en) 2022-01-06
KR102282981B1 (ko) 2021-07-28
US20200302104A1 (en) 2020-09-24
WO2019193334A2 (en) 2019-10-10
US10719646B2 (en) 2020-07-21
KR20200139788A (ko) 2020-12-14
GB2572665B (en) 2020-07-08
WO2019193334A3 (en) 2019-11-28
US10984162B2 (en) 2021-04-20
US11126771B2 (en) 2021-09-21
GB2572665A (en) 2019-10-09
CN111936998B (zh) 2023-01-06
CN111936998A (zh) 2020-11-13
CN111954884A (zh) 2020-11-17
US20190311075A1 (en) 2019-10-10

Similar Documents

Publication Publication Date Title
KR102323748B1 (ko) 데이터 변환 파이프라인용 하드웨어 설계 검증
US10083262B2 (en) Deadlock detection in hardware design using assertion based verification
US10073933B2 (en) Automatic generation of properties to assist hardware emulation
US11995386B2 (en) Verification of hardware design for data transformation component
US20230085107A1 (en) Verifying a hardware design for a multi-stage component
US11023357B1 (en) Method and system for sequential equivalence checking
GB2572633A (en) Verification of hardware design for data transformation pipeline
GB2572632A (en) Verification of hardware design for data transformation pipeline
US8448109B1 (en) Vector evaluation of assertions
US11062069B1 (en) Bounded deadlock check
US20210294949A1 (en) Method and System for Verifying a Sorter

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant