KR101968214B1 - 사용자 프로그램 코드에 기반한 어써션 생성 장치 및 방법, 어써션을 이용한 프로세서 검증 장치 및 방법 - Google Patents

사용자 프로그램 코드에 기반한 어써션 생성 장치 및 방법, 어써션을 이용한 프로세서 검증 장치 및 방법 Download PDF

Info

Publication number
KR101968214B1
KR101968214B1 KR1020130096109A KR20130096109A KR101968214B1 KR 101968214 B1 KR101968214 B1 KR 101968214B1 KR 1020130096109 A KR1020130096109 A KR 1020130096109A KR 20130096109 A KR20130096109 A KR 20130096109A KR 101968214 B1 KR101968214 B1 KR 101968214B1
Authority
KR
South Korea
Prior art keywords
assertion
processor
test program
generating
result
Prior art date
Application number
KR1020130096109A
Other languages
English (en)
Other versions
KR20140034050A (ko
Inventor
정진세
심희준
조영철
한연조
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to US14/021,134 priority Critical patent/US9448777B2/en
Priority to EP13183531.6A priority patent/EP2720149A3/en
Priority to JP2013185979A priority patent/JP6352607B2/ja
Priority to CN201310407224.XA priority patent/CN103678114B/zh
Publication of KR20140034050A publication Critical patent/KR20140034050A/ko
Application granted granted Critical
Publication of KR101968214B1 publication Critical patent/KR101968214B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2236Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Debugging And Monitoring (AREA)

Abstract

테스트 프로그램에 포함되는 어써션 생성 구문을 이용하여 프로세서 동작 검증을 위한 어써션이 자동적으로 생성되도록 함으로써 어써션의 설계, 설계된 어써션의 검증 및 검증 대상의 아키텍처 변경에 따른 어써션 수정에 요구되는 시간을 줄일 수 있다.

Description

사용자 프로그램 코드에 기반한 어써션 생성 장치 및 방법, 어써션을 이용한 프로세서 검증 장치 및 방법{APPARATUS AND METHOD FOR GENERATING ASSERTION BASED ON USER PROGRAM CODE, APPARATUS AND METHOD FOR PROCESSOR VERIFICATION USING ASSERTION}
프로세서 검증을 위한 어써션 생성 및 어써션을 이용한 프로세서 검증과 관련된다.
프로세서의 기능 검증(functional verification)은 프로세서의 아키텍쳐 사양(architecture spec)과 레지스터 전송 수준(RTL: Resister Transfer Level)으로 설계된 프로세서가 논리적으로 같은 동작을 하는지 검증하는 것이다. 이를 위해 회귀 테스트(regression test), 랜덤 테스트(random test) 등 다양한 테스트 케이스(test case)를 설계된 프로세서에 적용하여 검증을 하고 있으며, 충분히 여러 설계 기능을 검증하였는지를 확인하기 위해 테스트 커버리지(test coverage)를 측정하고 있다.
테스트 커버리지(Test coverage)는 크게 코드 커버리지(code coverage)와 기능 커버리지(functional coverage)로 나눌 수 있다. 코드 커버리지는 테스트 케이스를 이용한 시뮬레이션 수행 중에 설계한 코드를 얼마나 빼먹지 않고 잘 테스트하는지를 나타내는 지표이다. 또한, 기능 커버리지는 테스트 케이스를 이용한 시뮬레이션 수행 중에 엔지니어가 측정하고자 하는 기능의 수행 여부에 대한 지표이다.
기능 커버리지는 검증하고자 하는 프로세서의 동작 중 반드시 수행되어야 하는 동작이나 또는 절대로 일어나서는 안되는 동작에 대한 어써션(assertion)을 설계하여, 어써션의 수행여부를 측정하는 방식이다.
어써션 기반 검증기법(ABV: Assertion based verification)은 설계된 프로세서 검증에 어써션을 삽입하여 시뮬레이션을 수행하여, 삽입된 어써션의 모니터 또는 체크(check) 기능을 통해 오류 검출 지점을 쉽게 찾을 수 있어 검증시간이 단축된다는 장점이 있다.
하지만, 어써션은 사용자가 프로세서의 아키텍처 사양(spec)에 기반하여 설계를 해야 하고, 사양 변경 시 마다 재설계를 해야 한다. 또한, 설계한 어써션이 올바르게 설계되었는지 추가적인 검증이 필요하므로 어써션 설계에 많은 시간과 인력이 요구된다.
사용자 프로그램 코드에 기반한 어써션 생성 장치 및 방법과 어써션을 이용한 프로세서 검증 장치 및 방법을 제공하는 것을 목적으로 한다.
일 양상에 따른 사용자 프로그램 코드에 기반한 어써션 생성 방법은 적어도 하나의 어써션 생성 구문을 포함하는 테스트 프로그램, 상기 테스트 프로그램의 컴파일 결과 및 프로세서 아키텍처 정보를 입력받는 단계 및 상기 컴파일 결과 및 상기 프로세서 아키텍처 정보에 기초하여 상기 어써션 생성 구문에 의해 지정된 테스트 프로그램 코드에 따라 프로세서가 수행해야 하는 동작을 기술하는 어써션을 생성하는 단계를 포함할 수 있다.
일양상에 따르면, 상기 어써션 생성 구문은 테스트 프로그램에 포함된 코드 중 프로세서 동작 확인이 필요한 부분을 지정할 수 있다.
일 양상에 따르면, 상기 어써션을 생성하는 단계는 상기 어써션 생성 구문을 해석하여 상기 테스트 프로그램에 포함된 코드 중 프로세서 동작 확인이 필요한 부분을 판단하는 단계 및 상기 컴파일 결과에 포함된 스케줄 정보 및 상기 프로세서 아키텍처 정보에 기초하여 상기 어써션 생성 구문에 의해 지정된 테스트 프로그램 코드를 실행해야 하는 실행 시점 및 기능 블록을 판단하는 단계를 더 포함할 수 있다.
일 양상에 따르면, 상기 어써션을 생성하는 단계는 상기 실행 시점에서 상기 기능 블록이 수행해야 하는 동작을 기술할 수 있다.
일 양상에 따르면, 상기 어써션을 생성하는 단계는 하드웨어 기술언어를 이용하여 상기 어써션을 생성할 수 있다.
일 양상에 따르면, 상기 어써션을 생성하는 단계는 상기 적어도 하나의 어써션 생성 구문 각각에 대응되는 어써션을 생성할 수 있다.
일 양상에 따른 사용자 프로그램 코드에 기반한 어써션 생성 장치는 적어도 하나의 어써션 생성 구문을 포함하는 테스트 프로그램, 상기 테스트 프로그램의 컴파일 결과 및 프로세서 아키텍처 정보를 입력받는 입력부 및 상기 컴파일 결과 및 상기 프로세서 아키텍처 정보에 기초하여 상기 어써션 생성 구문에 의해 지정된 테스트 프로그램 코드에 따라 프로세서가 수행해야 하는 동작을 기술하는 어써션을 생성하는 어써션 생성부를 포함할 수 있다.
일 양상에 따르면, 상기 어써션 생성 구문은 테스트 프로그램에 포함된 코드 중 프로세서 동작 확인이 필요한 부분을 지정할 수 있다.
일 양상에 따르면, 상기 어써션 생성부는 상기 어써션 생성 구문을 해석하여 상기 테스트 프로그램에 포함된 코드 중 프로세서 동작 확인이 필요한 부분을 판단하고, 상기 컴파일 결과에 포함된 스케줄 정보 및 상기 프로세서 아키텍처 정보에 기초하여 상기 어써션 생성 구문에 의해 지정된 테스트 프로그램 코드를 실행해야 하는 실행 시점 및 기능 블록을 판단할 수 있다.
일 양상에 따르면, 상기 어써션 생성부는 상기 실행 시점에서 상기 기능 블록이 수행해야 하는 동작을 기술하는 어써션을 생성할 수 있다.
일 양상에 따르면, 상기 어써션 생성부는 하드웨어 기술언어를 이용하여 상기 어써션을 생성할 수 있다.
일 양상에 따르면, 상기 어써션 생성부는 상기 적어도 하나의 어써션 생성 구문에 각각에 대응되는 어써션을 생성할 수 있다.
일 양상에 따른 어써션을 이용한 프로세서 검증 방법은 적어도 하나의 어써션 생성 구문을 포함하는 테스트 프로그램, 상기 테스트 프로그램의 컴파일 결과 및 프로세서 아키텍처 정보를 입력받는 단계, 상기 컴파일 결과 및 상기 프로세서 아키텍처 정보에 기초하여 상기 어써션 생성 구문에 의해 지정된 테스트 프로그램 코드에 따라 프로세서가 수행해야 하는 동작을 기술하는 어써션을 생성하는 단계 및 상기 컴파일 결과를 레지스터 전송 수준에서 설계된 프로세서 모델에서 시뮬레이션하여 상기 프로세서 모델에서 상기 어써션에 기술된 동작이 수행되는지 여부를 검증하는 단계를 포함할 수 있다.
일 양상에 따르면, 상기 어써션 생성 구문은 상기 테스트 프로그램에 포함된 코드 중 프로세서 동작 확인이 필요한 부분을 지정할 수 있다.
일 양상에 따르면, 상기 어써션을 생성하는 단계는 상기 어써션 생성 구문을 해석하여 상기 테스트 프로그램에 포함된 코드 중 프로세서 동작 확인이 필요한 부분을 판단하는 단계 및 상기 컴파일 결과에 포함된 스케줄 정보 및 상기 프로세서 아키텍처 정보에 기초하여 상기 어써션 생성 구문에 의해 지정된 테스트 프로그램 코드를 실행해야 하는 실행 시점 및 기능 블록을 판단하는 단계를 더 포함할 수 있다.
일 양상에 따르면, 상기 어써션을 생성하는 단계는 상기 실행 시점에서 상기 기능 블록이 수행해야 하는 동작을 기술하는 어써션을 생성할 수 있다.
일 양상에 따르면, 상기 어써션을 생성하는 단계는 하드웨어 기술언어를 이용하여 상기 어써션을 생성할 수 있다.
일 양상에 따르면, 상기 어써션을 생성하는 단계는 상기 적어도 하나의 어써션 생성 구문 각각에 대응되는 어써션을 생성할 수 있다.
일 양상에 따르면, 상기 시뮬레이션하는 단계는 상기 어써션을 상기 프로세서 모델에 삽입하고, 상기 컴파일 결과를 이용하여 어써션이 삽입된 상기 프로세서 모델을 시뮬레이션할 수 있다.
일 양상에 따른 어써션을 이용한 프로세서 검증 장치는 적어도 하나의 어써션 생성 구문을 포함하는 테스트 프로그램, 상기 테스트 프로그램의 컴파일 결과 및 프로세서 아키텍처 정보를 입력받는 입력부, 상기 컴파일 결과 및 상기 프로세서 아키텍처 정보에 기초하여 상기 어써션 생성 구문에 의해 지정된 테스트 프로그램 코드에 따라 프로세서가 수행해야 하는 동작을 기술하는 어써션을 생성하는 어써션 생성부 상기 컴파일 결과를 레지스터 전송 수준에서 설계된 프로세서 모델에서 시뮬레이션하여 상기 프로세서 모델에서 상기 어써션에 기술된 동작이 수행되는지 여부를 검증하는 검증부를 포함할 수 있다.
일 양상에 따르면, 상기 어써션 생성 구문은 상기 테스트 프로그램에 포함된 코드 중 프로세서 동작 확인이 필요한 부분을 지정할 수 있다.
일 양상에 따르면, 상기 어써션 생성부는 상기 어써션 생성 구문을 해석하여 상기 테스트 프로그램에 포함된 코드 중 프로세서 동작 확인이 필요한 부분을 판단하고, 상기 컴파일 결과에 포함된 스케줄 정보 및 상기 프로세서 아키텍처 정보에 기초하여 상기 어써션 생성 구문에 의해 지정된 테스트 프로그램 코드를 실행해야 하는 실행 시점 및 기능 블록을 판단할 수 있다.
일 양상에 따르면, 상기 어써션 생성부는 상기 실행 시점에서 상기 기능 블록이 수행해야 하는 동작을 기술하는 어써션을 생성할 수 있다.
일 양상에 따르면, 상기 어써션 생성부는 하드웨어 기술언어를 이용하여 상기 어써션을 생성할 수 있다.
일 양상에 따르면, 상기 어써션 생성부는 상기 적어도 하나의 어써션 생성 구문에 각각에 대응되는 어써션을 생성할 수 있다.
일 양상에 따르면, 상기 검증부는 상기 어써션을 상기 프로세서 모델에 삽입하고, 상기 컴파일 결과를 이용하여 어써션이 삽입된 상기 프로세서 모델을 시뮬레이션할 수 있다.
사용자 프로그램 코드에 기반하여 어써션을 자동 생성할 수 있도록 함으로써, 어써션 설계 및 검증, 프로세서의 스펙(spec) 또는 아키텍처 변경으로 인하여 어써션 수정을 위해 요구되는 시간을 단축시킬 수 있다.
도 1은 일 실시예에 따른 어써션 생성 장치의 구성도,
도 2는 일 실시예에 따른 프로세서 검증 장치의 구성도,
도 3은 테스트 프로그램의 예시도,
도 4는 도 3의 테스트 프로그램에 대한 컴파일 결과의 예시도,
도 5는 생성된 어써션의 예시도,
도 6은 일 실시예에 따른 어써션 생성 방법의 절차도,
도 7은 일 실시예에 따른 어써션 생성 방법의 상세 절차도,
도 8은 일 실시예에 따른 프로세서 검증 방법의 절차도이다.
이하, 첨부된 도면을 참조하여 실시예를 상세히 기술하기로 한다.
도 1은 일 실시예에 따른 어써션 생성 장치(100)의 구성도이다.
도 1을 참조하면, 어써션 생성 장치(100)는 하드웨어 기술 언어(HDL: Hardware Description Language)를 이용하여 레지스터 전송 수준(RTL: Resister Transfer Level)으로 모델링된 프로세서의 동작을 검증하기 위한 어써션(Assertion)을 생성한다.
어써션은 프로그램 런 타임 중에 프로세서가 반드시 실행해야 하는 동작을 기술(statement)한 것이다. 예를 들어, 어써션은 반드시 실행해야 하는 동작 조건을 선언하고, 테스트 프로그램 런 타임 중에 프로세서가 어써션에 선언된 동작 조건을 만족하지 않을 때 에러를 출력하도록 기술될 수 있다.
한편, 어써션 생성 장치(100)는 입력부(110) 및 어써션 생성부(130)을 포함할 수 있다.
입력부(110)는 테스트 프로그램, 테스트 프로그램에 대한 컴파일 결과 및 검증 대상인 프로세서의 아키텍처 정보를 입력 받는다.
테스트 프로그램은 프로세서의 동작 검증을 위하여 프로그래머에 의해 임의로 작성된 것으로, 하나 이상의 어써션 생성 구문(Assertion directive)을 포함할 수 있다.
어써션 생성 구문은 테스트 프로그램의 코드 중 검증 대상인 프로세서에서의 동작 확인이 필요한 부분을 지정한다. 구체적으로, 사용자는 테스트 프로그램의 코드 중 검증 대상인 프로세서의 동작확인이 필요한 부분에 어써션 생성 구문을 삽입함으로써 어써션 생성을 지정할 수 있다.
도 3에 도시된 예시적인 테스트 프로그램을 참조하면, 어써션 생성 구문(300)은 루프 수행 카운트 값(i)이 3일 때, 'A[i]=result'를 수행하는 프로세서의 동작을 확인하기 위한 어써션을 생성하도록 지정한다. 이러한 어써션 생성 구문은 하나의 테스트 프로그램 내에 하나 이상이 삽입될 수 있다.
한편, 프로세서 아키텍처 정보는 검증 대상 프로세서에 포함된 기능 블록의 수와 종류, 기능 블록들 사이의 내부 결선 및 제어 흐름 등 설계된 프로세서의 구조에 관한 정보를 포함할 수 있다.
테스트 프로그램에 대한 컴파일 결과는 테스트 프로그램을 검증 대상 프로세서에서 즉시 실행할 수 있도록 컴파일러에 의해 변환된 바이너리 코드를 의미한다.
한편, 어써션 생성부(130)는 입력된 테스트 프로그램의 소스 코드, 테스트 프로그램에 대한 컴파일 결과 및 프로세서의 아키텍처 정보에 기초하여 어써션을 생성한다.
구체적으로, 어써션 생성부(130)는 테스트 프로그램에 포함된 어써션 생성 구문을 해석하여 테스트 프로그램의 코드 중 프로세서 동작 확인이 필요한 부분을 파악할 수 있다. 예를 들어, 도 3의 어써션 생성 구문(300)의 경우, 루프 수행 카운트 값(i)이 3인 것을 조건으로 하여, 변수 A[i]를 저장하는 프로세서의 기능블록에 저장된 값을 확인하기 위한 어써션을 생성해야 함을 기술하고 있다. 따라서, 어써션 생성부(130)는 어써션 생성 구문(300)으로부터 루프 수행 카운트 값(i)이 3일 때, 'A[i]=result'를 수행하는 프로세서의 동작을 확인해야 함을 파악할 수 있다.
그러나, 어써션 생성 구문(300)의 해석만으로는 어써션 생성 구문(300)에 의해 지정된 코드가 프로세서의 어떤 기능 블록에서 어떤 시점에 실행되는지 알 수 없다. 따라서, 어써션 생성 구문에 의해 지정된 동작이 실제 프로세서에서 어떻게 실행되는지를 파악하기 위해서는 테스트 프로그램에 대한 컴파일 결과와 프로세서의 아키텍처 정보가 필요하다.
예를 들어, 어써션 생성 구문이 테스트 프로그램의 코드에 포함된 특정한 곱셈연산을 수행하는 프로세서의 동작을 확인할 것을 지정하고 있는 경우, 어써션 생성을 위해서는 테스트 프로그램의 컴파일 결과에 포함된 스케줄 정보 및 프로세서의 아키텍처 정보로부터 해당 곱셈연산을 실행하는 프로세서의 기능 블록의 동작과 실행 싸이클을 파악하여야 한다.
따라서, 어써션 생성부(130)는 테스트 프로그램에 대한 컴파일 결과 및 프로세서 아키텍처 정보에 기초하여 어써션 생성 구문에 의해 지정된 프로그램 코드를 실행해야 하는 프로세서의 기능블록 및 실행 시점을 판단할 수 있다. 구체적으로, 테스트 프로그램에 대한 컴파일 결과는 테스트 프로그램이 프로세서에서 즉시 실행될 수 있도록 프로세서의 아키텍처에 맞추어 스케줄링된 스케줄 정보를 포함하고 있다. 따라서, 이러한 스케줄링 정보와 프로세서의 아키텍처 정보에 기초하여 어써션 생성 구문에 의해 지정된 테스트 프로그램의 특정 코드가 프로세서의 어떤 기능 블록에서 어떤 싸이클에 실행되어야 하는지를 파악할 수 있다.
구체적인 예로, 도 3에 도시된 테스트 프로그램은 도 4와 같이 스케줄될 수 있다. 도 4에서 FU#00-FU#09는 프로세서에 포함된 기능 유닛(Function Unit)을 나타내며, 각각의 기능 유닛에는 각각의 싸이클에서 실행할 오퍼레이션이 할당된다. 한편, 도 4의 스케줄 정보에서 어써션 생성 구문(300)의 루프 수행 카운트 값이 3일 때, 'A[i]=result' 동작은 22번째 싸이클에 FU#00에 할당됨을 알 수 있다. 따라서, 어써션 생성부(130)는 도 5에 도시된 예와 같이 루프 수행 카운트 값을 나타내는 변수 i값이 매핑된 FU#05의 값이 0이면 루프가 시작된 것으로 간주하여, 22 싸이클 이후에 FU#00에 저장된 값을 확인하는 어써션을 생성할 수 있다.
한편, 테스트 프로그램에 삽입된 어써션 생성 구문이 하나 이상인 경우, 어써션 생성부(130)는 각각의 어써션 생성 구문에 대응되는 어써션을 생성할 수 있다.
또한, 어써션 생성부(130)는 System Verilog, Verilog HDL, VHDL, System Verilog, HDVL 등 과 같은 하드웨어 기술언어(HDL)를 이용하여 어써션을 생성할 수 있다.
도 2는 일 실시예에 따른 프로세서 검증 장치(230)의 구성도이다.
도 2를 참조하면, 프로세서 검증 장치(230)는 System Verilog, Verilog HDL, VHDL(Vhsic Hardware Description Language), HDVL(Hardware Description and Verification Language)등과 같은 하드웨어 기술언어(HDL: Hardware Description Language)를 이용하여 레지스터 전송 수준(RTL: Resistor Transfer Level)에서 모델링된 프로세서의 동작을 검증하기 위한 것이다.
컴파일러(210)는 프로세서 검증을 위한 테스트 프로그램의 설계된 프로세서의 아키텍처에 맞추어 테스트 프로그램의 코드를 변환하고, 프로세서 내부의 기능 블럭에 스케줄하여, 설계된 프로세서에서 실행할 수 있는 바이너리 코드를 생성한다. 이때, 테스트 프로그램은 적어도 하나의 어써션 생성 구문(assertion directive)을 포함할 수 있다.
한편, 프로세서 검증 장치(230)는 입력부(231), 어써션 생성부(233) 및 검증부(235)를 포함할 수 있다.
입력부(231)는 테스트 프로그램, 테스트 프로그램의 컴파일 결과 및 프로세서 아키텍처 정보를 입력받는다. 이때, 테스트 프로그램의 컴파일 결과는 컴파일러(210)에 의해 제공될 수 있다. 또한, 테스트 프로그램 및 프로세서 아키텍처 정보는 사용자에 의해 입력될 수 있다.
어써션 생성부(233)는 도 1에 도시된 어써션 생성 장치(100)에 대응되는 것으로, 입력부(231)를 통해 입력된 테스트 프로그램, 테스트 프로그램의 컴파일 결과 및 프로세서의 아키텍처 정보를 이용하여 어써션을 생성할 수 있다.
이때, 어써션은 System Verilog, Verilog HDL, VHDL, System Verilog, HDVL 등 과 같은 하드웨어 기술언어(HDL)를 이용하여 생성될 수 있다.
구체적으로, 어써션 생성부(233)는 테스트 프로그램에 포함된 어써션 생성 구문을 해석하여 테스트 프로그램의 코드 중 프로세서 동작 확인이 필요한 부분을 파악할 수 있다. 또한, 어써션 생성부(233)는 컴파일 결과에 포함된 스케줄 정보 및 프로세서 아키텍처 정보로부터 어써션 생성 구문에 의해 지정된 테스트 프로그램의 코드 실행에 따른 프로세서의 동작이 어떤 실행 싸이클에 어떤 기능 블록에서 실행되는지 판단하여, 프로세서에서 수행되어야 하는 동작을 기술하는 어써션을 생성할 수 있다.
한편, 검증부(235)는 입력부(231)를 통해 입력받은 테스트 프로그램의 컴파일 결과를 레지스터 전송 수준에서 설계된 프로세서 모델에서 시뮬레이션하여 어써션 생성부(233)에서 생성된 어써션에 기술된 동작이 수행되는지 여부를 검증할 수 있다.
구체적으로, 검증부(235)는 프로세서 설계 계층(Processor design hierarchy)정보에 기초하여 어써션 생성부(233)에서 생성된 어써션을 프로세서 모델에 삽입할 수 있다. 이후, 검증부(235)는 테스트 프로그램에 대한 컴파일 결과를 어써션이 삽입된 프로세서 모델에서 시뮬레이션할 수 있다. 이때, 검증부(235)는 시뮬레이션 중에 어써션에 기술된 동작이 수행되는지 여부를 확인함으로써 프로세서의 동작을 검증할 수 있다.
도 6은 일 실시예에 따른 어써션 생성 방법의 절차도이다.
도 6을 참조하면, 어써션 생성 장치(100)는 테스트 프로그램, 테스트 프로그램의 컴파일 결과 및 프로세서 아키텍처 정보를 입력받을 수 있다(610).
이때, 테스트 프로그램은 적어도 하나의 어써션 생성 구문을 포함할 수 있다.
한편, 어써션 생성 장치(100)는 테스트 프로그램의 컴파일 결과 및 프로세서 아키텍처 정보에 기초하여 어써션 생성 구문에 의해 지정된 테스트 프로그램 코드에 따라 프로세서가 수행해야 하는 동작을 기술하는 어써션을 생성할 수 있다(620). 이때, 어써션은 System Verilog, Verilog HDL, VHDL, System Verilog, HDVL 등 과 같은 하드웨어 기술언어(HDL)를 이용하여 생성될 수 있다.
또한, 테스트 프로그램에 포함된 어써션 생성 구문이 하나 이상인 경우, 어써션 생성 장치는 각각의 어써션 생성 구문에 대응되는 어써션을 생성할 수 있다.
도 7은 일 실시예에 따른 어써션 생성 방법의 상세 절차도이다.
도 7을 참조하면, 어써션 생성 장치(100)는 어써션 생성 구문을 해석하여 상기 테스트 프로그램에 포함된 코드 중 프로세서 동작 확인이 필요한 부분을 판단할 수 있다(710).
이후, 어써션 생성 장치(100)는 테스트 프로그램의 컴파일 결과에 포함된 스케줄 정보 및 프로세서 아키텍처 정보에 기초하여 어써션 생성 구문에 의해 지정된 테스트 프로그램 코드를 실행해야 하는 실행 시점 및 기능 블록을 판단할 수 있다(730).
이후, 어써션 생성 장치(100)는 어써션 생성 구문에 의해 지정된 테스트 프로그램 코드를 실행해야 하는 시점에서 프로세서의 기능 블록이 수행해야 하는 동작을 기술하는 어써션을 생성할 수 있다(750).
도 8은 일 실시예에 따른 프로세서 검증 방법의 절차도이다.
도 8을 참조하면, 프로세서 검증 장치(230)는 적어도 하나의 어써션 생성 구문을 포함하는 테스트 프로그램, 상기 테스트 프로그램의 컴파일 결과 및 프로세서 아키텍처 정보를 입력받을 수 있다(810).
이후, 프로세서 검증 장치(230)는 입력받은 테스트 프로그램의 컴파일 결과 및 프로세서 아키텍처 정보에 기초하여 어써션 생성 구문에 의해 지정된 테스트 프로그램 코드에 따라 프로세서가 수행해야 하는 동작을 기술하는 어써션을 생성할 수 있다(830). 이때, 프로세서 검증 장치(230)는 도 7에 도시된 절차와 동일한 절차를 통해 어써션을 생성할 수 있다.
또한, 프로세서 검증 장치(230)는 하드웨어 기술 언어를 이용하여 어써션을 생성할 수 있으며, 테스트 프로그램에 포함된 어써션 생성 구문이 복수인 경우, 각각의 어써션 생성 구문에 대응되는 어써션을 생성할 수 있다.
한편, 프로세서 검증 장치(230)는 입력받은 테스트 프로그램의 컴파일 결과를 레지스터 전송 수준에서 설계된 프로세서 모델에서 시뮬레이션하여 프로세서 모델에서 어써션에 기술된 동작이 수행되는지 여부를 검증할 수 있다(850).
구체적으로, 프로세서 검증 장치(230)는 생성된 어써션을 프로세서 설계 계층(Processor design hierarchy)정보에 기초하여 프로세서 모델에 삽입할 수 있다. 이후, 테스트 프로그램의 컴파일 결과를 이용하여 어써션이 삽입된 프로세서 모델을 시뮬레이션하여 어써션에 기술된 동작이 수행되는지 여부를 확인함으로써 프로세서의 동작을 검증할 수 있다.
한편, 본 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 실시예들을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 해당 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
이상에서는 실시예들을 중심으로 기술적 특징들을 설명하였다. 하지만, 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 하고, 권리 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 권리범위에 포함된 것으로 해석되어야 할 것이다.
100: 어써션 생성 장치 110: 입력부
130: 어써션 생성부 210: 컴파일러
230: 프로세서 검증 장치 231: 입력부
233: 어써션 생성부 235: 검증부

Claims (26)

  1. 어써션 생성 장치의 어써션 생성 방법에 있어서,
    적어도 하나의 어써션 생성 구문을 포함하는 테스트 프로그램, 상기 테스트 프로그램의 컴파일 결과 및 프로세서 아키텍처 정보를 입력받는 단계; 및
    상기 컴파일 결과 및 상기 프로세서 아키텍처 정보에 기초하여 상기 어써션 생성 구문에 의해 지정된 테스트 프로그램 코드에 따라 프로세서가 수행해야 하는 동작을 기술하는 어써션을 생성하는 단계;를 포함하며,
    상기 테스트 프로그램의 컴파일 결과는, 상기 테스트 프로그램을 상기 프로세서에서 즉시 실행할 수 있도록 컴파일러에 의해 변환된 바이너리 코드이며, 상기 프로세서의 아키텍처에 맞추어 스케줄링된 스케줄 정보를 포함하는 사용자 프로그램 코드에 기반한 어써션 생성 방법.
  2. 제 1 항에 있어서,
    상기 어써션 생성 구문은,
    테스트 프로그램에 포함된 코드 중 프로세서 동작 확인이 필요한 부분을 지정하는 사용자 프로그램 코드에 기반한 어써션 생성 방법.
  3. 제 1 항에 있어서,
    상기 어써션을 생성하는 단계는,
    상기 어써션 생성 구문을 해석하여 상기 테스트 프로그램에 포함된 코드 중 프로세서 동작 확인이 필요한 부분을 판단하는 단계; 및
    상기 컴파일 결과에 포함된 스케줄 정보 및 상기 프로세서 아키텍처 정보에 기초하여 상기 어써션 생성 구문에 의해 지정된 테스트 프로그램 코드를 실행해야 하는 실행 시점 및 기능 블록을 판단하는 단계;를 더 포함하는 사용자 프로그램 코드에 기반한 어써션 생성 방법.
  4. 제 3 항에 있어서,
    상기 어써션을 생성하는 단계는,
    상기 실행 시점에서 상기 기능 블록이 수행해야 하는 동작을 기술하는 어써션을 생성하는 사용자 프로그램 코드에 기반한 어써션 생성 방법.
  5. 제 1 항에 있어서,
    상기 어써션을 생성하는 단계는,
    하드웨어 기술언어를 이용하여 상기 어써션을 생성하는 사용자 프로그램 코드에 기반한 어써션 생성 방법.
  6. 제 1 항에 있어서,
    상기 어써션을 생성하는 단계는,
    상기 적어도 하나의 어써션 생성 구문 각각에 대응되는 어써션을 생성하는 사용자 프로그램 코드에 기반한 어써션 생성 방법.
  7. 적어도 하나의 어써션 생성 구문을 포함하는 테스트 프로그램, 상기 테스트 프로그램의 컴파일 결과 및 프로세서 아키텍처 정보를 입력받는 입력부; 및
    상기 컴파일 결과 및 상기 프로세서 아키텍처 정보에 기초하여 상기 어써션 생성 구문에 의해 지정된 테스트 프로그램 코드에 따라 프로세서가 수행해야 하는 동작을 기술하는 어써션을 생성하는 어써션 생성부;를 포함하며,
    상기 테스트 프로그램의 컴파일 결과는, 상기 테스트 프로그램을 상기 프로세서에서 즉시 실행할 수 있도록 컴파일러에 의해 변환된 바이너리 코드이며, 상기 프로세서 아키텍처에 맞추어 스케줄링된 스케줄 정보를 포함하는 사용자 프로그램 코드에 기반한 어써션 생성 장치.
  8. 제 7 항에 있어서,
    상기 어써션 생성 구문은,
    테스트 프로그램에 포함된 코드 중 프로세서 동작 확인이 필요한 부분을 지정하는 사용자 프로그램 코드에 기반한 어써션 생성 장치.
  9. 제 7 항에 있어서,
    상기 어써션 생성부는,
    상기 어써션 생성 구문을 해석하여 상기 테스트 프로그램에 포함된 코드 중 프로세서 동작 확인이 필요한 부분을 판단하고, 상기 컴파일 결과에 포함된 스케줄 정보 및 상기 프로세서 아키텍처 정보에 기초하여 상기 어써션 생성 구문에 의해 지정된 테스트 프로그램 코드를 실행해야 하는 실행 시점 및 기능 블록을 판단하는 사용자 프로그램 코드에 기반한 어써션 생성 장치.
  10. 제 9 항에 있어서,
    상기 어써션 생성부는,
    상기 실행 시점에서 상기 기능 블록이 수행해야 하는 동작을 기술하는 어써션을 생성하는 사용자 프로그램 코드에 기반한 어써션 생성 장치.
  11. 제 7 항에 있어서,
    상기 어써션 생성부는,
    하드웨어 기술언어를 이용하여 상기 어써션을 생성하는 사용자 프로그램 코드에 기반한 어써션 생성 장치.
  12. 제 7 항에 있어서,
    상기 어써션 생성부는,
    상기 적어도 하나의 어써션 생성 구문에 각각에 대응되는 어써션을 생성하는 사용자 프로그램 코드에 기반한 어써션 생성 장치.
  13. 프로세서 검증 장치의 프로세서 검증 방법에 있어서,
    적어도 하나의 어써션 생성 구문을 포함하는 테스트 프로그램, 상기 테스트 프로그램의 컴파일 결과 및 프로세서 아키텍처 정보를 입력받는 단계;
    상기 컴파일 결과 및 상기 프로세서 아키텍처 정보에 기초하여 상기 어써션 생성 구문에 의해 지정된 테스트 프로그램 코드에 따라 프로세서가 수행해야 하는 동작을 기술하는 어써션을 생성하는 단계; 및
    상기 컴파일 결과를 레지스터 전송 수준에서 설계된 프로세서 모델에서 시뮬레이션하여 상기 프로세서 모델에서 상기 어써션에 기술된 동작이 수행되는지 여부를 검증하는 단계;를 포함하며,
    상기 테스트 프로그램의 컴파일 결과는, 상기 테스트 프로그램을 상기 프로세서에서 즉시 실행할 수 있도록 컴파일러에 의해 변환된 바이너리 코드이며, 상기 프로세서 아키텍처에 맞추어 스케줄링된 스케줄 정보를 포함하는 어써션을 이용한 프로세서 검증 방법.
  14. 제 13 항에 있어서,
    상기 어써션 생성 구문은,
    상기 테스트 프로그램에 포함된 코드 중 프로세서 동작 확인이 필요한 부분을 지정하는 어써션을 이용한 프로세서 검증 방법.
  15. 제 13 항에 있어서,
    상기 어써션을 생성하는 단계는,
    상기 어써션 생성 구문을 해석하여 상기 테스트 프로그램에 포함된 코드 중 프로세서 동작 확인이 필요한 부분을 판단하는 단계; 및
    상기 컴파일 결과에 포함된 스케줄 정보 및 상기 프로세서 아키텍처 정보에 기초하여 상기 어써션 생성 구문에 의해 지정된 테스트 프로그램 코드를 실행해야 하는 실행 시점 및 기능 블록을 판단하는 단계;를 더 포함하는 어써션을 이용한 프로세서 검증 방법.
  16. 제 15 항에 있어서,
    상기 어써션을 생성하는 단계는,
    상기 실행 시점에서 상기 기능 블록이 수행해야 하는 동작을 기술하는 어써션을 생성하는 어써션을 이용한 프로세서 검증 방법.
  17. 제 13 항에 있어서,
    상기 어써션을 생성하는 단계는,
    하드웨어 기술언어를 이용하여 상기 어써션을 생성하는 어써션을 이용한 프로세서 검증 방법.
  18. 제 13 항에 있어서,
    상기 어써션을 생성하는 단계는,
    상기 적어도 하나의 어써션 생성 구문 각각에 대응되는 어써션을 생성하는 어써션을 이용한 프로세서 검증 방법.
  19. 제 13 항에 있어서,
    상기 시뮬레이션하는 단계는,
    상기 어써션을 상기 프로세서 모델에 삽입하고, 상기 컴파일 결과를 이용하여 어써션이 삽입된 상기 프로세서 모델을 시뮬레이션하는 어써션을 이용한 프로세서 검증 방법.
  20. 적어도 하나의 어써션 생성 구문을 포함하는 테스트 프로그램, 상기 테스트 프로그램의 컴파일 결과 및 프로세서 아키텍처 정보를 입력받는 입력부;
    상기 컴파일 결과 및 상기 프로세서 아키텍처 정보에 기초하여 상기 어써션 생성 구문에 의해 지정된 테스트 프로그램 코드에 따라 프로세서가 수행해야 하는 동작을 기술하는 어써션을 생성하는 어써션 생성부; 및
    상기 컴파일 결과를 레지스터 전송 수준에서 설계된 프로세서 모델에서 시뮬레이션하여 상기 프로세서 모델에서 상기 어써션에 기술된 동작이 수행되는지 여부를 검증하는 검증부;를 포함하며,
    상기 테스트 프로그램의 컴파일 결과는, 상기 테스트 프로그램을 상기 프로세서에서 즉시 실행할 수 있도록 컴파일러에 의해 변환된 바이너리 코드이며, 상기 프로세서 아키텍처에 맞추어 스케줄링된 스케줄 정보를 포함하는 어써션을 이용한 프로세서 검증 장치.
  21. 제 20 항에 있어서,
    상기 어써션 생성 구문은,
    상기 테스트 프로그램에 포함된 코드 중 프로세서 동작 확인이 필요한 부분을 지정하는 어써션을 이용한 프로세서 검증 장치.
  22. 제 20 항에 있어서,
    상기 어써션 생성부는,
    상기 어써션 생성 구문을 해석하여 상기 테스트 프로그램에 포함된 코드 중 프로세서 동작 확인이 필요한 부분을 판단하고, 상기 컴파일 결과에 포함된 스케줄 정보 및 상기 프로세서 아키텍처 정보에 기초하여 상기 어써션 생성 구문에 의해 지정된 테스트 프로그램 코드를 실행해야 하는 실행 시점 및 기능 블록을 판단하는 어써션을 이용한 프로세서 검증 장치.
  23. 제 22 항에 있어서,
    상기 어써션 생성부는,
    상기 실행 시점에서 상기 기능 블록이 수행해야 하는 동작을 기술하는 어써션을 생성하는 어써션을 이용한 프로세서 검증 장치.
  24. 제 20 항에 있어서,
    상기 어써션 생성부는,
    하드웨어 기술언어를 이용하여 상기 어써션을 생성하는 어써션을 이용한 프로세서 검증 장치.
  25. 제 20 항에 있어서,
    상기 어써션 생성부는,
    상기 적어도 하나의 어써션 생성 구문에 각각에 대응되는 어써션을 생성하는 어써션을 이용한 프로세서 검증 장치.
  26. 제 20 항에 있어서,
    상기 검증부는,
    상기 어써션을 상기 프로세서 모델에 삽입하고, 상기 컴파일 결과를 이용하여 어써션이 삽입된 상기 프로세서 모델을 시뮬레이션하는 어써션을 이용한 프로세서 검증 장치.
KR1020130096109A 2012-09-07 2013-08-13 사용자 프로그램 코드에 기반한 어써션 생성 장치 및 방법, 어써션을 이용한 프로세서 검증 장치 및 방법 KR101968214B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US14/021,134 US9448777B2 (en) 2012-09-07 2013-09-09 Apparatus and method for generating assertion based on user program code, and apparatus and method for verifying processor using assertion
EP13183531.6A EP2720149A3 (en) 2012-09-07 2013-09-09 Apparatus and method for generating assertion based on user program code, and apparatus and method for verifying processor using assertion
JP2013185979A JP6352607B2 (ja) 2012-09-07 2013-09-09 アサーション生成装置及び方法並びにプロセッサ検証装置及び方法
CN201310407224.XA CN103678114B (zh) 2012-09-07 2013-09-09 产生断言的设备和方法以及验证处理器的设备和方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201261698050P 2012-09-07 2012-09-07
US61/698,050 2012-09-07

Publications (2)

Publication Number Publication Date
KR20140034050A KR20140034050A (ko) 2014-03-19
KR101968214B1 true KR101968214B1 (ko) 2019-04-11

Family

ID=50644723

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130096109A KR101968214B1 (ko) 2012-09-07 2013-08-13 사용자 프로그램 코드에 기반한 어써션 생성 장치 및 방법, 어써션을 이용한 프로세서 검증 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101968214B1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000268074A (ja) 1999-03-18 2000-09-29 Toshiba Corp 検証プログラム自動生成装置および方法並びにプロパティ自動生成装置および方法
JP2006172113A (ja) * 2004-12-15 2006-06-29 Toshiba Corp 高位合成装置、自動高位合成方法及び高位合成プログラム
US20060271890A1 (en) 2005-05-24 2006-11-30 Amir Hekmatpour Systems, methods, and media for block-based assertion generation, qualification and analysis
JP2007528553A (ja) 2004-03-09 2007-10-11 セヤン ヤン 検証性能と検証效率性を高める動的検証−基盤方式の検証装置及びこれを用いた検証方法論
JP2008047053A (ja) * 2006-08-21 2008-02-28 Toshiba Corp アサーション記述変換装置および変換方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000268074A (ja) 1999-03-18 2000-09-29 Toshiba Corp 検証プログラム自動生成装置および方法並びにプロパティ自動生成装置および方法
JP2007528553A (ja) 2004-03-09 2007-10-11 セヤン ヤン 検証性能と検証效率性を高める動的検証−基盤方式の検証装置及びこれを用いた検証方法論
JP2006172113A (ja) * 2004-12-15 2006-06-29 Toshiba Corp 高位合成装置、自動高位合成方法及び高位合成プログラム
US20060271890A1 (en) 2005-05-24 2006-11-30 Amir Hekmatpour Systems, methods, and media for block-based assertion generation, qualification and analysis
JP2008047053A (ja) * 2006-08-21 2008-02-28 Toshiba Corp アサーション記述変換装置および変換方法

Also Published As

Publication number Publication date
KR20140034050A (ko) 2014-03-19

Similar Documents

Publication Publication Date Title
US8402438B1 (en) Method and system for generating verification information and tests for software
JP2009076073A (ja) 組込形ソフトウェアの実行時間の統計的評価のための方法及び装置
Droste et al. MPI-checker: static analysis for MPI
Wolf Behavioral intervals in embedded software: timing and power analysis of embedded real-time software processes
US7761272B1 (en) Method and apparatus for processing a dataflow description of a digital processing system
Bouchhima et al. Automatic instrumentation of embedded software for high level hardware/software co-simulation
US11003573B2 (en) Co-verification of hardware and software
JP6342129B2 (ja) 混合モードプログラムのソースコードエラー位置検出装置及び方法
Seshia et al. Quantitative analysis of systems using game-theoretic learning
Posadas et al. System-level performance analysis in SystemC
JP6352607B2 (ja) アサーション生成装置及び方法並びにプロセッサ検証装置及び方法
US10606732B2 (en) Hybrid genetic concolic co-verification of hardware and software
MX2011001796A (es) Ejecucion de procesador simulado utilizando supeditar ramificacion.
Huybrechts et al. COBRA-HPA: a block generating tool to perform hybrid program analysis
US8903700B2 (en) Concretization of abstracted traces
KR101968214B1 (ko) 사용자 프로그램 코드에 기반한 어써션 생성 장치 및 방법, 어써션을 이용한 프로세서 검증 장치 및 방법
KR101423634B1 (ko) 실시간 내장형 시스템을 위한 tta 적용 방법
Staschulat et al. Context sensitive performance analysis of automotive applications
Eriksson Evaluation of static time analysis for CC systems
Jerabek et al. Static worst-case execution time analysis tool development for embedded systems software
Yu et al. A hybrid approach to testing for nonfunctional faults in embedded systems using genetic algorithms
Gastel et al. Detecting energy bugs and hotspots in control software using model checking
Nélis et al. Timing Analysis Methodology
KR101962248B1 (ko) 재구성 가능 프로세서의 검증 지원 장치 및 방법
KR20130067098A (ko) 내장형 프로세서 코어 디버깅 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right