KR102523518B1 - 칩을 검증하는 방법, 장치, 전자 기기, 저장 매체 및 프로그램 - Google Patents

칩을 검증하는 방법, 장치, 전자 기기, 저장 매체 및 프로그램 Download PDF

Info

Publication number
KR102523518B1
KR102523518B1 KR1020210041903A KR20210041903A KR102523518B1 KR 102523518 B1 KR102523518 B1 KR 102523518B1 KR 1020210041903 A KR1020210041903 A KR 1020210041903A KR 20210041903 A KR20210041903 A KR 20210041903A KR 102523518 B1 KR102523518 B1 KR 102523518B1
Authority
KR
South Korea
Prior art keywords
information
executed
instructions
data
file
Prior art date
Application number
KR1020210041903A
Other languages
English (en)
Other versions
KR20210047286A (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 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디.
Publication of KR20210047286A publication Critical patent/KR20210047286A/ko
Application granted granted Critical
Publication of KR102523518B1 publication Critical patent/KR102523518B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • 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/31704Design for test; Design verification
    • 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/318314Tools, e.g. program interfaces, test suite, test bench, simulation hardware, test compiler, test program languages
    • 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/20Design optimisation, verification or simulation
    • G06F30/27Design optimisation, verification or simulation using machine learning, e.g. artificial intelligence, neural networks, support vector machines [SVM] or training a model
    • 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
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/331Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/3312Timing analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • 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/318364Generation of test inputs, e.g. test vectors, patterns or sequences as a result of hardware simulation, e.g. in an HDL environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

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)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

본 개시의 실시예에 따르면, 칩을 검증하는 방법, 장치, 전자 기기, 저장 매체 및 프로그램를 제공하는바, 인공지능 칩 설계, 시뮬레이터 개발, 기능 검증에 사용될 수 있다. 칩을 검증하는 방법은, 구성 파일에 의해, 칩에 관련되는 소프트웨어 환경과 하드웨어 환경을 구성하는 단계 - 구성 파일은 복수의 명령 및 복수의 명령을 실행하는 데 필요한 데이터를 포함하고, 소프트웨어 환경과 하드웨어 환경은 칩에 기반하여 생성됨 - ; 복수의 명령을 각각 소프트웨어 환경과 하드웨어 환경에서 실행하는 단계; 복수의 명령이 소프트웨어 환경에서 실행되면서 생성된 제1 정보 및 복수의 명령이 하드웨어 환경에서 실행되면서 생성된 제2 정보를 각각 취득하는 단계 - 제1 정보와 제2 정보는 실행된 복수의 명령 및 그 주소, 및 복수의 명령이 실행되면서 생성된 데이터를 포함함 - ; 및 생성된 제1 정보와 제2 정보에 기반하여 칩을 검증하는 단계를 포함한다. 본 개시의 방안에 따르면, 시뮬레이터 기능의 정확성 및 무결성을 확보하고, 칩을 더 잘 검증할 수 있다.

Description

칩을 검증하는 방법, 장치, 전자 기기, 저장 매체 및 프로그램{METHOD AND APPARATUS FOR VERIFYING CHIP, ELECTRONIC DEVICE, STORAGE MEDIUM AND PROGRAM}
본 개시의 실시예는 칩 설계 분야에 관한 것이고, 더 구체적으로, 칩을 검증하는 방법, 장치, 전자 기기, 저장 매체 및 프로그램에 관한 것이다.
인공지능 칩 설계와 같은 현대의 칩 설계에서, 실제의 하드웨어를 구축하기 전에, 시뮬레이션 방식으로 구축하려는 칩의 아키텍처를 구현하여야 하는데, 칩의 기능을 빠르게 시뮬레이션하면서 칩의 설계가 기능적으로 정확한지 여부를 검증할 수 있는 시뮬레이터가 필요하다. 칩 설계 인원한테는, 시뮬레이션 방식으로 아키텍처를 구현하는 것이, 하드웨어를 구현하는 비용이 절약될 뿐만하니라 방안을 수정하기에도 편리하다. 개발에 있어서의 기능 시뮬레이터의 중요한 작용에 비추어 볼때, 기능 시뮬레이터의 기능이 정확하고 무결하도록 확보하는 개발방법이 필요하다.
본 개시의 실시예에 따르면, 칩을 검증하는 방안을 제공한다.
본 개시의 첫 번째 측면은, 칩을 검증하는 방법을 제공하는바, 상기 방법은, 구성 파일에 의해, 칩에 관련되는 소프트웨어 환경과 하드웨어 환경을 구성하는 단계 - 구성 파일은 복수의 명령 및 복수의 명령을 실행하는 데 필요한 데이터를 포함하고, 소프트웨어 환경과 하드웨어 환경은 칩에 기반하여 생성됨 - ; 복수의 명령을 각각 소프트웨어 환경과 하드웨어 환경에서 실행하는 단계; 복수의 명령이 소프트웨어 환경에서 실행되면서 생성된 제1 정보 및 복수의 명령이 하드웨어 환경에서 실행되면서 생성된 제2 정보를 각각 취득하는 단계 - 제1 정보와 제2 정보는 실행된 복수의 명령, 실행된 복수의 명령의 주소 및 복수의 명령이 실행되면서 생성된 데이터를 포함함 - ; 및 생성된 제1 정보와 제2 정보에 기반하여 칩을 검증하는 단계를 포함한다.
본 개시의 두 번째 측면은 칩을 검증하는 장치를 제공하는바, 상기 장치는, 구성 파일에 의해, 칩에 관련되는 소프트웨어 환경과 하드웨어 환경을 구성하도록 구성되는 구성 모듈 - 구성 파일은 복수의 명령 및 복수의 명령을 실행하는 데 필요한 데이터를 포함하고, 소프트웨어 환경과 하드웨어 환경은 칩에 기반하여 생성됨 - ; 복수의 명령을 각각 소프트웨어 환경과 하드웨어 환경에서 실행하도록 구성되는 실행 모듈; 복수의 명령이 소프트웨어 환경에서 실행되면서 생성된 제1 정보 및 복수의 명령이 하드웨어 환경에서 실행되면서 생성된 제2 정보를 각각 취득하도록 구성되는 정보 취득 모듈 - 제1 정보와 제2 정보는 실행된 복수의 명령, 실행된 복수의 명령의 주소 및 복수의 명령이 실행되면서 생성된 데이터를 포함함 - ; 및 생성된 제1 정보와 제2 정보에 기반하여 칩을 검증하도록 구성되는 검증 모듈을 포함한다.
본 개시의 세 번째 측면은 전자 기기를 제공하는바, 하나 또는 복수의 프로세서; 및 하나 또는 복수의 프로그램을 저장하는 저장 장치를 포함하고, 하나 또는 복수의 프로그램이 하나 또는 복수의 프로세서에 의해 실행되는 경우, 하나 또는 복수의 프로세서가 본 개시의 첫 번째 측면에 따른 방법을 구현하도록 한다.
본 개시의 네 번째 측면은 컴퓨터 프로그램이 저장되어 있는 컴퓨터 판독가능 저장 매체를 제공하는바, 당해 프로그램이 프로세서에 의해 실행되는 경우, 본 개시의 첫 번째 측면에 따른 방법이 구현된다.
본 개시의 다섯 번째 측면은 매체에 저장된 컴퓨터 프로그램을 제공하는바, 상술한 프로그램이 프로세서에 의해 실행되는 경우, 본 개시의 첫 번째 측면에 따른 방법이 구현된다.
발명의 내용 부분에서 서술한 내용은 본 개시의 실시예의 핵심적인 또는 중요한 특징을 한정하고자 하는 것이 아니고 본 개시의 범위를 한정하기 위한 것이 아님을 이해하여야 한다. 본 개시의 다른 특징은 아래 서술에 의해 이해하기 수월해질 것이다.
첨부 도면을 결부하고 아래 상세한 설명을 참조하면, 본 개시의 각 실시예의 상술한 및 다른 특징, 이점 및 측면은 더 뚜렷해질 것이다. 첨부 도면에서, 같거나 또는 유사한 도면부호는 같거나 또는 유사한 요소를 나타내는바, 여기서,
도 1은 본 개시의 복수의 실시예가 구현될 수 있는 예시 환경의 개략도이다.
도 2는 본 개시의 일부 실시예에 따른 칩을 검증하는 과정의 흐름도이다.
도 3은 본 개시의 일부 실시예에 따른 정보를 저장하는 과정의 흐름도이다.
도 4는 본 개시의 일부 실시예에 따른 칩을 검증하는 과정의 흐름도이다.
도 5는 본 개시의 일부 실시예에 따른 칩을 검증하는 과정의 흐름도이다.
도 6은 본 개시의 일부 실시예에 따른 칩을 검증하는 장치의 예시적인 블록도이다.
도 7은 본 개시의 복수의 실시예를 실시할 수 있는 컴퓨팅 기기의 블록도이다.
아래, 첨부 도면을 참조하여 본 개시의 바람직한 실시예를 더 상세히 서술하고자 한다. 비록 첨부 도면에 본 개시의 바람직한 실시예를 도시하였으나, 본 개시는 다양한 형식으로 구현될 수 있는 것으로, 여기서 서술하는 실시예에 의해 한정되지 않음을 이해하여야 한다. 반대로, 이러한 실시예를 제공한 것은, 본 개시를 더욱 투철하고 온전하게 하고 본 개시의 범위를 당업자한테 온전하게 전달하기 위해서이다.
본 명세서에서 사용하는 용어 "포함하다" 및 이의 변형은 개방적인 포함, 즉 "포함하나 이에 한정되지 않는다"를 나타낸다. 특별히 언급하지 않은 한, 용어 "또는"은 "및/또는"을 나타낸다. 용어 "에 기반하여"는 "적어도 부분적으로 ??에 기반하여"를 나타낸다. 용어 "일 예시적인 실시예" 및 "일 실시예"는 "적어도 하나의 예시적인 실시예"를 나타낸다. 용어 "다른 실시예"는 "적어도 하나의 다른 실시예"를 나타낸다. 용어 "제1", "제2" 등은 서로 다른 또는 같은 객체를 지칭할 수 있다. 후술하는 바는 또한 다른 명확한 및 암묵적인 정의를 포함할 수도 있다.
위에서 언급한 바와 같이, 시뮬레이터에 의해 칩의 기능과 아키텍처를 검증하여야 한다. 그러나 기존의 기능 시뮬레이터 개발은 일반적으로 소프트웨어 개발자에 의해 완성되고 개발된 후의 정확성 및 무결성에 대하여서도 소프트웨어 관련 인원에 의해 작성된 명령 테스트 프로그램을 통해 테스트가 수행되고, 당해 테스트는 소프트웨어 환경에서만 수행되는데, 이는 기능 시뮬레이터의 기능과 목표 칩 아키텍처의 완전한 일치를 보장하기 어렵고 목표 칩 아키텍처의 기능이 전부 구현될 수 있도록 보장하기도 어렵다. 이 외에도, 기능 시뮬레이터의 개발 이터레이션에 따라, 기능 시뮬레이터는 더욱 더 복잡해지는바, 무결성의 테스트를 보장하기가 더 어려워진다. 따라서, 기능 시뮬레이터의 기능이 정확하고 무결하도록 확보하는 개발방법이 필요하다.
본 개시의 실시예에 따르면, 칩을 검증하는 방안을 제공한다. 당해 방안은 구성 파일을 이용하여 소프트웨어 및 하드웨어 시뮬레이션 환경을 구성하고, 다음, 결과를 비교하여 칩의 기능을 검증한다. 당해 방안에서, 우선, 구성 파일에 의해, 소프트웨어 환경과 하드웨어 환경을 구성하는바, 구성 파일은 명령과 데이터를 포함하고, 소프트웨어 환경과 하드웨어 환경은 칩(예를 들면, 기능과 구조)에 기반하여 생성된다. 다음, 소프트웨어 환경과 하드웨어 환경에서 명령을 실행한다. 이어서 명령이 소프트웨어 환경에서 실행되면서 생성된 제1 정보 및 명령이 하드웨어 환경에서 실행되면서 생성된 제2 정보를 각각 취득하는바, 제1 정보와 제2 정보는 실행된 명령, 명령의 주소 및 생성된 데이터를 포함한다. 마지막으로, 생성된 제1 정보와 제2 정보에 의해 칩을 검증한다.
파일에 의해, 소프트웨어 및 하드웨어 시뮬레이션 환경을 초기화하면, 대량의 무작위 명령 및 데이터 테스트를 수행하기 편리하다. 소프트웨어 시뮬레이터 및 하드웨어 시뮬레이터를 각각 이용하여 같은 명령을 실행하고 결과를 비교함으로써 시뮬레이터의 기능 착오의 위치를 적시에 발견하여 수정 보완할 수 있는바, 기능 시뮬레이터의 기능 정확성을 확보할 수 있다. 대량의 무작위 명령의 테스트 및 검증 환경의 지속적인 스트레스 테스팅에 의하여 모든 명령 조합을 커버함으로써, 시뮬레이터의 기능의 무결성을 확보할 수 있다.
아래, 첨부 도면을 참조하여 본 개시의 기본 원리 및 몇몇 예시의 구현을 설명하고자 한다.
도 1은 본 개시의 복수의 실시예가 구현될 수 있는 예시 환경(100)의 개략도를 도시한다. 도 1에 도시한 환경(100)은 단지 예시적인 것으로, 본 개시에서 서술하는 구현의 기능 및 범위를 한정하지 않음을 이해하여야 한다. 도 1에 도시한 바와 같이, 환경(100)은 구성 파일(110), 명령(120-1), 명령(120-2)(아래 복수의 명령(120)르로 통칭함), 데이터(130), 컴퓨팅 기기(140), 소프트웨어 환경(150), 하드웨어 환경(160), 제1 정보(170), 제2 정보(180) 및 검증 결과(190)를 포함한다.
구성 파일(110)은 복수의 명령(120)을 포함할 수 있고, 비록 도 1에는 복수의 명령 중의 2개의 명령(120-1, 120-2)만을 도시하였으나, 이는 단지 예시적인 것으로, 더 많은 명령과 명령 집합이 존재할 수도 있다. 복수의 명령(120)은 같은 유형의 명령일 수 도 있고, 서로 다른 유형의 명령일 수 도 있고, 데이터 전송 명령, 산술연산 명령, 비트 연산 명령, 프로그램 플로우 제어 명령, 문자열 조작 명령, 프로세서 제어 명령 등을 포함하나 이에 한정되지 않는다. 구성 파일(110)은 또한 데이터(130)를 포함할 수 있는데, 당해 데이터(130)는 상술한 명령을 실행하는 데 필요한 데이터일 수도 있고 상술한 명령과는 무관한 다른 데이터일 수도 있으며, 데이터의 유형은 선형 테이블, 스택과 큐, 어레이, 트리, 그래프, 범용 리스트, 희소 행렬 등을 포함하나 이에 한정되지 않는다. 구성 파일(110)은 대량의 데이터와 명령을 무작위로 생성하여 후속 조작에 제공할 수 있다. 명령과 데이터는 이진법, 팔진법, 십진법 또는 십육진법 유형일 수 있는바, 본 개시는 이에 대해 한정하지 않는다.
컴퓨팅 기기(140)는 구조, 기능, 논리 등과 같은 칩의 특성에 기반하여 소프트웨어 환경(150) 및 하드웨어 환경(160)을 생성할 수 있다. 당해 소프트웨어 환경(150)은 칩 기능을 검증하는 기능 시뮬레이터일 수 있고, 당해 소프트웨어 환경(150)은 C, C++ 언어에 의해 생성될 수 있다. 당해 하드웨어 환경(160)은 하드웨어RTL(Register Transfer Level) 시스템일 수 있고, 당해 하드웨어RTL 시스템은 회로 조작의 추상레벌을 서술하고, 하드웨어 환경(160)은 하드웨어 서술 언어(예를 들면 Verilog, system Verilog, VHDL) 등에 의해 생성될 수 있다. 일 예시에서, 컴퓨팅 기기(140)는 소프트웨어 환경(150) 및 하드웨어 환경(160)을 통해, 명령, 데이터, 레지스터 및 메모리에 의해 칩의 기능에 대한 시뮬레이션을 완성한다.
컴퓨팅 기기(140)는 구성 파일(110) 중의 복수의 명령(120) 또는 데이터(130)에 의해 소프트웨어 환경(150) 및 하드웨어 환경(160)을 구성할 수 있는바, 예를 들면 구성 파일(110)을 통해 소프트웨어 환경(150) 및 하드웨어 환경(160)의 메모리, 레지스터를 초기화할 수 있다. 컴퓨팅 기기(140)는 구성을 거친 소프트웨어 환경(150) 및 하드웨어 환경(160)을 통해 명령과 데이터를 실행하여 제1 정보(170)와 제2 정보(180)를 각각 생성할 수 있다. 제1 정보(170)와 제2 정보(180)는 명령과 명령의 PC값, 발생되는 데이터, 명령의 상세내용, 예를 들면 명령의 의미, 기능, 소스 오퍼랜드, 결과 등일 수 있다.
비록 컴퓨팅 기기(140)는 소프트웨어 환경(150) 및 하드웨어 환경(160)을 포함하는 것으로 도시되었으나, 컴퓨팅 기기(140)는 소프트웨어 환경(150) 및 하드웨어 환경(160) 이외의 개체일 수도 있다. 컴퓨팅 기기(140)는 계산 능력을 가진 임의의 기기일 수 있다. 비한정적인 예시로, 컴퓨팅 기기(140)는 임의 유형의 고정형 컴퓨팅 기기, 모바일 컴퓨팅 기기 또는 휴대용 컴퓨팅 기기일 수 있는바, 데스크톱 컴퓨터, 랩톱 컴퓨터, 노트북 컴퓨터, 넷북 컴퓨터, 태블릿 컴퓨터, 멀티미디어 컴퓨터, 휴대 전화 등을 포함하나 이에 한정되지 않고; 컴퓨팅 기기(140)의 전체 컴포넌트 또는 일부 컴포넌트는 클라우드에 분산될 수 있다. 컴퓨팅 기기(140)는 적어도 프로세서, 메모리 및 범용 컴퓨터에 통상적으로 존재하는 컴포넌트를 포함함으로써 계산, 저장, 통신, 제어 등의 기능을 구현한다.
컴퓨팅 기기(140)는 또한 제1 정보(170)와 제2 정보(180)를 비교함으로써 검증 결과(190)를 생성하고, 검증 결과에 의해 소프트웨어 환경(150) 및 하드웨어 환경(160) 중의 착오가 발생된 위치를 결정하고 보완할 수 있다.
아래, 도 2 내지 도 5를 결부하여 상세한 검증 과정에 대해 나아가 서술하고자 한다. 도 2는 본 개시의 일부 실시예에 따른 칩을 검증하는 과정(200)의 흐름도이다. 과정(200)은 도 1에서의 컴퓨팅 기기(140)에 의해 실시될 수 있다. 서술의 편의를 위해, 도 1을 참조하여 과정(200)을 서술한다.
블록(210)에서, 컴퓨팅 기기(140)는 구성 파일(110)에 의해, 상기 칩에 관련되는 소프트웨어 환경(150) 및 하드웨어 환경(160)을 구성하는바, 구성 파일(110)은 복수의 명령(120) 및 복수의 명령을 실행하는 데 필요한 데이터(130)를 포함하고, 소프트웨어 환경(150)과 하드웨어 환경(160)은 칩에 기반하여 생성된다. 예를 들면, 컴퓨팅 기기(140)는 구성 파일(110)에 의해, 대량의 무작위 명령과 데이터를 생성하여 소프트웨어 환경(150) 및 하드웨어 환경(160)을 구성(configure)할 수 있고, 무작위 명령과 데이터는 소프트웨어 환경(150) 및 하드웨어 환경(160)을 테스트하기 위한 것이다. 컴퓨팅 기기(140)는 생성하려는 칩의 기능, 논리 및 구체적인 회로 구조에 따라, 서로 다른 프로그래밍 언어에 의해 칩을 테스트하는 소프트웨어 환경(150)과 하드웨어 환경(160)을 생성할 수 있다.
일 실시예에서, 하드웨어 환경(160)을 구축함에 있어서, 컴퓨팅 기기(140)는 칩의 상위 기능 및 구조로부터의 설계 방법으로, 칩 시스템을 복수의 기본 유닛으로 나누고, 각 기본 유닛을 다음 계층의 기본 유닛으로 나누는바, 이와 같이 유추하여, 게이트 또는 연결라인을 직접 사용할 수 있을 때까지, 순차적으로 하드웨어 환경(160)을 구축한다. 하드웨어 환경은 하드웨어RTL 시스템일 수 있는바, 일 예시에서, 컴퓨팅 기기(140)는 하기 단계인, 기능 정의 및 모델 분할을 수행하는 단계; 모든 모듈의 인터페이스를 정의하는 단계; 클럭 도메인을 설계하는 단계; 설계의 핵심 경로를 고려하는 단계; 상위 설계 단계; FSM 설계 단계; 시계열 논리 설계 단계; 조합 논리 설계 단계에 의해 하드웨어RTL 시스템을 구축할 수 있다.
파일에 의해 초기화함으로써, 대량의 무작위 명령 및 데이터의 테스트가 편리해지고, 이로써 이후에 테스트되는 명령의 커버율을 향상할 수 있고, 칩을 검증하는, 및 칩의 시뮬레이터의 기능의 무결성을 확보할 수 있다.
일 실시예에서, 컴퓨팅 기기(140)는 시간 시드(seed)에 의해, 구성 파일이 매 회 생성한 명령 및 데이터가 다르도록 확보할 수 있는바, 매 회 획득하는 시간 시드가 다르도록 확보함으로써 그에 대응되는 생성된 명령 및 데이터가 다르도록 확보한다.
일 실시예에서, 소프트웨어 환경(150)과 하드웨어 환경(160)은 명령 메모리, 레지스터 및 데이터 메모리를 사용하는바, 당해 명령 메모리는 복수의 명령 메모리일 수 있고, 당해 레지스터는 복수의 레지스터 또는 레지스터 그룹일 수 있고, 당해 데이터 메모리는 복수의 데이터 메모리일 수 있다. 소프트웨어 환경(150)을 예시로 하면, 컴퓨팅 기기(140)는 하기 단계(1), (2), (3)에 의해 소프트웨어 환경(150)을 구성할 수 있다.
(1)컴퓨팅 기기(140)는 구성 파일(110)에 의해 무작위로 생성된 복수의 명령(120)을 명령 메모리에 저장하는바, 여기서 각 행은 실행할 명령을 대표하고, 당해 복수의 명령은 PC값의 올림차순으로 정렬되고,
02003000
...
7ff1111b
(2)컴퓨팅 기기(140)는 구성 파일(110)에 의해 무작위로 생성된 복수의 데이터 중의 레지스터 데이터를 레지스터에 저장하는바, 각 행은 하나의 레지스터에 저장된 데이터를 대표하고, 레지스터 번호의 올림차순으로 정렬되고,
f323bad1
...
23dc0ab8
(3)컴퓨팅 기기(140)는 구성 파일(110)에 의해 무작위로 생성된 복수의 데이터 중의 메모리 데이터를 메모리에 저장하는바, 각 행은 하나의 메모리에 저장된 데이터를 대표하고, 메모리 주소의 올림차순으로 정렬되고,
1030f0bc
...
049a0dc1
비록 당해 예시에서, 16진법으로 상술한 데이터를 서술하였으나, 이는 본 개시를 한정하기 위한 것이 아니며, 다른 진법의 데이터를 사용할 수도 있다. 하드웨어 환경(160)을 구성하는 과정은 상술한 과정과 유사하므로, 이에 대한 상세한 설명은 생략하기로 한다.
블록(220)에서, 컴퓨팅 기기(140)는 복수의 명령(120)을 상기 소프트웨어 환경과 상기 하드웨어 환경에서 각각 실행되도록 한다. 예를 들면, 컴퓨팅 기기는 하드웨어 코드 검증 환경에 기반하여, 동시에 소프트웨어 환경(150)(예를 들면, 기능 시뮬레이터) 및 하드웨어 환경(160)(예를 들면, 하드웨어 RTL 시스템)에 의해 상술한 구성의 복수의 명령(120)을 실행할 수 있다.
블록(230)에서, 컴퓨팅 기기(140)는 복수의 명령(120)이 소프트웨어 환경(150)에서 실행되면서 생성된 제1 정보(170) 및 복수의 명령(120)이 하드웨어 환경(160)에서 실행되면서 생성된 제2 정보(180)를 각각 취득하고, 제1 정보(170)와 제2 정보(180)는 실행된 복수의 명령, 실행된 복수의 명령의 주소 및 복수의 명령이 실행되면서 생성된 데이터를 포함한다.
일 실시예에서, 소프트웨어 환경(150), 및 컴퓨팅 기기(140)가 이에 의해 생성한 제1 정보(170)를 예로 들면, 계속하여 상술한 단계(1), (2), (3)에 있어서, 컴퓨팅 기기(140)는 복수의 명령을 명령 메모리에 저장한 후, 명령 메모리로부터 PC값의 순서에 따라 단계(1)에서 저장된 명령을 취득하고, 명령을 해석(interpret)하고 레지스터로부터 단계(2)에서 저장된 레지스터 데이터(예를 들면 소스 오퍼랜드)를 취득한다. 컴퓨팅 기기(140)는 이어서 명령에 관련되는 계산을 수행하고, 명령의 복잡 정도에 따라, 명령 실행 기간에 데이터 메모리로부터 단계(3)에서 저장된 메모리 데이터를 판독할 수 있고, 실행 과정에서 생성된 데이터를 데이터 메모리에 라이트(write)한다. 마지막으로, 컴퓨팅 기기(140)는 명령의 최종 실행 결과를 레지스터에 라이트하고, 테스트할 모든 명령이 실행 완료될 때까지, 계속하여 상술한 과정을 반복한다. 컴퓨팅 기기(140)는 여기서 실행된 명령 및 그 주소, 및 생성된 데이터를 취득하여 제1 정보(170)로 한다.
일 예시에서, 하기 단계(4), (5), (6)를 통해 소프트웨어 환경(150)을 구성한다.
(4)컴퓨팅 기기(140)는 실행 과정에서의 PC값과 명령을 취득하여 제1 정보(170)로 하는바, 각 행은 하나의 PC값 및 대응되는 하나의 명령을 대표하고, 명령에 따라 순서 정렬을 수행하고,
00000000: 02003000
...
000007fc: 7ff1111b
(5)컴퓨팅 기기(140)는 명령이 실행 완료된 후, 소프트웨어 환경(150)에서의 레지스터의 결과 데이터를 취득하여 제1 정보(170)로 하는바, 각 행은 하나의 레지스터의 데이터를 대표하고, 레지스터 번호의 올림차순으로 정렬되고,
4f3eba17
...
19efdc80
(6)컴퓨팅 기기(140)는 명령이 실행 완료된 후, 소프트웨어 환경(150)에서의 데이터 메모리의 결과 데이터를 취득하여 제1 정보(170)로 하는바, 각 행은 데이터 메모리의 하나의 결과 데이터를 대표하고, 메모리 주소의 올림차순으로 정렬되고,
429a13fc
...
b92a8d12
컴퓨팅 기기(140)가 하드웨어 환경(160)에서의 제2 정보(180)를 취득하는 과정은 상술한 과정과 유사하므로, 이에 대한 상세한 설명은 생략하기로 한다.
일 실시예에서, 컴퓨팅 기기(140)는 취득된 상술한 정보를 저장하는바, 도 3을 참조하여 서술하고자 한다. 도 3은 본 개시의 일부 실시예에 따른 정보를 저장하는 과정의 흐름도이다.
블록(310)에서, 컴퓨팅 기기(140)는 제1 정보(170) 중의 사전결정 유형의 정보를 제1 파일에 저장하고, 사전결정 유형은 명령 유형, 메모리 데이터 유형 및 레지스터 데이터 유형 중의 하나를 포함한다. 예를 들면, 컴퓨팅 기기(140)는 상술한 단계(4)에서 취득된 제1 정보(170) 중의 명령 유형의 데이터(즉 실행된 명령, 그의 PC값 및 그의 실행 순서)를 제1 파일의 A파일에 저장하고, 상술한 단계(5)에서 취득된 제1 정보(170) 중의 레지스터 데이터 유형의 데이터를 제1 파일의 B파일에 저장하고, 상술한 단계(6)에서 취득된 제1 정보(170) 중의 메모리 데이터 유형의 데이터를 제1 파일의 C에 저장한다.
블록(320)에서, 컴퓨팅 기기(140)는 제2 정보(180) 중의 같은 사전결정 유형의 정보를 제2 파일에 저장한다. 예를 들면, 컴퓨팅 기기(140)는 제2 정보(180) 중의 명령 유형의 데이터를 제2 파일의 A'파일에 저장하고, 제2 정보(180) 중의 레지스터 데이터 유형의 데이터를 제2 파일의 B'파일에 저장하고, 제2 정보(180) 중의 메모리 데이터 유형의 데이터를 제2 파일의 C'파일에 저장한다.
명령 실행 결과 데이터를 파일에 저장함으로써, 후속으로 자동화된 비교를 수행하여 결과가 정확한지 여부를 검증하는 데 편리하게 된다.
블록(240)에서, 컴퓨팅 기기(140)는 생성된 제1 정보(170)와 제2 정보(180)에 기반하여, 칩을 검증한다. 도 4 및 도 5를 결부하여 나아가 서술하고자 한다.
도 4로 넘어가서 서술하면, 도 4는 본 개시의 일부 실시예에 따른 칩을 검증하는 과정의 흐름도이다. 블록(410)에서, 컴퓨팅 기기(140)는 제1 파일과 제2 파일을 비교함으로써, 제1 파일과 제2 파일에 있어서 매치되지 않는 부분을 결정한다. 일 예시에서, 컴퓨팅 기기(140)는 제1 파일 및 제2 파일 중의 같은 유형의 데이터를 각각 비교한다. 예를 들면, 컴퓨팅 기기(140)는 제1 파일 중의 A파일 중의 명령을 제2 파일 중의 A'파일 중의 명령과 행별로 비교하고, 제1 파일 중의 B파일 중의 데이터를 제2 파일 중의 B'파일 중의 데이터와 행별로 비교하고, 제1 파일 중의 C파일 중의 데이터를 제2 파일 중의 C'파일 중의 데이터와 행별로 비교하는바, 이로써 이 중의 불일치되는 부분을 결정한다.
블록(420)에서, 컴퓨팅 기기(140)는 매치되지 않는 부분에 기반하여, 정확하게 실행되지 않은 명령을 결정한다. 일 실시예에서, 컴퓨팅 기기(140)는 A파일 중의 한 행의 명령이 A'파일 중의 한 행의 명령과 불일치하다고 결정되는 경우, 해당 명령이 정확하게 실행되지 않았다고 바로 결정할 수 있다.
다른 실시예에서, 컴퓨팅 기기(140)는 B 또는 C파일 중의 한 행의 데이터가 B' 또는 C'파일 중의 한 행의 데이터와 불일치하다고 결정되는 경우, 당해 데이터에 의해 당해 데이터에 관련되는 명령을 찾아냄으로써, 정확하게 실행되지 않은 명령을 결정할 수 있다.
블록(430)에서, 컴퓨팅 기기(140)는 정확하게 실행되지 않은 명령에 기반하여 소프트웨어 환경(150) 및/또는 하드웨어 환경(160) 중의 정확하지 않은 부분을 결정한다. 예를 들면, 컴퓨팅 기기는 당해 정확하게 실행되지 않은 명령에 기반하여 소프트웨어 환경(150) 및/또는 하드웨어 환경(160) 중의 기능 착오를 결정할 수 있는바, 이로써 기능 시뮬레이터 또는 하드웨어 RTL 시스템을 보완할 수 있다. 도 5를 결부하여 나아가 서술하고자 한다.
도 5로 넘어가서 서술하면, 도 5는 본 개시의 일부 실시예에 따른 칩을 검증하는 과정의 흐름도이다.
블록(510)에서, 컴퓨팅 기기(140)는 정확하게 실행되지 않은 명령의 목표 서술 정보를 결정한다. 예를 들면, 컴퓨팅 기기(140)는 소프트웨어 환경(150)에 대해 상술한 단계(1) 내지 (6)을 수행하는 경우, 모든 실행된 명령의 목표 서술 정보를 취득하여 당해 정보를 제3 파일에 저장할 수 있고, 정확하게 실행되지 않은 명령이 결정된 후, 당해 파일에 의해, 정확하게 실행되지 않은 명령의 목표 서술 정보를 결정할 수 있다.
일 실시예에서, 서술 정보는 적어도 명령의 의미, 기능, 소스 오퍼랜드 및 실행 결과 중의 하나를 포함한다.
블록(520)에서, 컴퓨팅 기기(140)는 목표 서술 정보에 기반하여 정확하지 않은 부분을 결정한다. 예를 들면, 컴퓨팅 기기(140)는 당해 정확하게 실행되지 않은 명령의 의미, 기능, 소스 오퍼랜드 및 실행 결과에 기반하여, 소프트웨어 환경(150) 및/또는 하드웨어 환경(160) 중의 착오가 발생한 기능 및 착오가 발생한 위치를 더 용이하게 결정할 수 있다.
일 대안적인 실시예에서, 컴퓨팅 기기는 또한, 소프트웨어 환경(150) 및/또는 하드웨어 환경(160)에 의해 실행되는 과정 및 결과를 양자 간에 비교하는 것이 아니라 각각 역치와 비교함으로써 칩을 검증할 수도 있다.
본 개시는 파일에 의해 소프트웨어 및 하드웨어 시뮬레이션 환경을 초기화함으로써, 대량의 무작위 명령 및 데이터 테스트에 편리해지도록 하고, 실행 결과 데이터를 파일에 저장함으로써, 자동화된 비교를 수행하여 결과가 정확한지 여부를 검증하는 데 편리하게 된다. 소프트웨어 시뮬레이터 및 하드웨어 시뮬레이터를 각각 이용하여 같은 명령을 실행하고 결과를 비교함으로써 시뮬레이터의 기능 착오의 위치를 적시에 발견하여 수정 보완할 수 있는바, 기능 시뮬레이터의 기능 정확성을 확보할 수 있다. 대량의 무작위 명령의 테스트 및 검증 환경의 지속적인 스트레스 테스팅에 의하여 모든 명령 조합을 커버함으로써, 시뮬레이터의 기능의 무결성을 확보할 수 있다.
도 6은 본 개시의 일부 실시예에 따른 칩을 검증하는 장치의 예시적인 블록도이다. 장치(600)는 도 1의 컴퓨팅 기기(140)에 포함되거나 또는 컴퓨팅 기기(140)로 구현될 수 있다.
도 6에 도시한 바와 같이, 장치(600)는, 구성 파일에 의해, 칩에 관련되는 소프트웨어 환경과 하드웨어 환경을 구성하도록 구성되는 구성 모듈(610) - 구성 파일은 복수의 명령 및 복수의 명령을 실행하는 데 필요한 데이터를 포함하고, 소프트웨어 환경과 하드웨어 환경은 칩에 기반하여 생성됨 - ; 복수의 명령을 각각 소프트웨어 환경과 하드웨어 환경에서 실행하도록 구성되는 실행 모듈(620); 복수의 명령이 소프트웨어 환경에서 실행되면서 생성된 제1 정보 및 복수의 명령이 하드웨어 환경에서 실행되면서 생성된 제2 정보를 각각 취득하도록 구성되는 정보 취득 모듈(630) - 제1 정보와 제2 정보는 실행된 복수의 명령, 실행된 복수의 명령의 주소 및 복수의 명령이 실행되면서 생성된 데이터를 포함함 - ; 및 생성된 제1 정보와 제2 정보에 기반하여 칩을 검증하도록 구성되는 검증 모듈(640)을 포함한다.
일부 실시에서, 소프트웨어 환경과 하드웨어 환경은 명령 메모리, 레지스터 및 데이터 메모리를 사용하고, 구성 모듈(610)은, 구성 파일의 복수의 명령을 명령 메모리에 저장하도록 구성되는 명령 저장 모듈; 및 복수의 명령을 실행하는 데 필요한 복수의 데이터를 레지스터 및 데이터 메모리에 저장하도록 구성되는 데이터 저장 모듈을 포함할 수 있다.
일부 실시에서, 생성된 데이터는 레지스터 데이터와 메모리 데이터를 포함하고, 장치(600)는, 제1 정보 중의 사전결정 유형의 정보를 제1 파일에 저장하도록 구성되는 제1 정보 저장 모듈 - 사전결정 유형은 명령 유형, 메모리 데이터 유형 및 레지스터 데이터 유형 중의 하나를 포함함 - ; 및 제2 정보 중의 같은 사전결정 유형의 정보를 제2 파일에 저장하도록 구성되는 제2 정보 저장 모듈을 더 포함할 수 있다.
일부 실시에서, 검증 모듈(640)은, 제1 파일과 제2 파일을 비교함으로써, 제1 파일과 제2 파일에 있어서 매치되지 않는 부분을 결정하도록 구성되는 비교 모듈; 매치되지 않는 부분에 기반하여 결정정확하게 실행되지 않은 명령을 결정하도록 구성되는 제1 착오 결정 모듈; 및 정확하게 실행되지 않은 명령에 기반하여 소프트웨어 환경 및/또는 하드웨어 환경 중의 정확하지 않은 부분을 결정하도록 구성되는 제2 착오 결정 모듈을 포함할 수 있다.
일부 실시에서, 제1 정보는 실행된 복수의 명령의 서술 정보를 더 포함하고, 제2 착오 결정 모듈은, 정확하게 실행되지 않은 명령의 목표 서술 정보를 결정하도록 구성되는 목표 서술 정보 결정 모듈; 및 목표 서술 정보에 기반하여 정확하지 않은 부분을 결정하도록 구성되는 제3 착오 결정 모듈을 포함할 수 있다.
일부 실시에서, 실행된 복수의 명령의 서술 정보는 적어도 명령의 의미, 기능, 소스 오퍼랜드 및 실행 결과 중의 하나를 포함한다.
도 7은 본 개시 내용의 실시예를 실시할 수 있는 예시적인 기기(700)의 예시적인 블록도를 도시한다. 예를 들면, 도 1에 도시한 바와 같은 예시 환경(100)에서의 컴퓨팅 기기(140)는 기기(700)로 실시될 수 있다. 도에 도시한 바와 같이, 기기(700)는 중앙처리장치(CPU)(701)를 포함하고, 이는 읽기 전용 메모리(ROM)(702)에 저장된 컴퓨터 프로그램 명령 또는 저장 유닛(708)으로부터 랜덤 액세스 메모리(RAM)(703)로 로딩된 컴퓨터 프로그램 명령에 따라 다양한 적당한 동작 및 처리를 수행할 수 있다. RAM(703)에는 또한 기기(700) 조작에 필요한 다양한 프로그램 및 데이터를 저장할 수 있다. CPU(701), ROM(702) 및 RAM(703)은 버스(704)에 의해 서로 연결된다. 입력/출력(I/O) 인터페이스(705)도 버스(704)에 연결된다.
기기(700)에서의 복수의 부품은 I/O 인터페이스(705)에 연결되고, 입력 유닛(706), 예를 들면 키보드, 마우스 등; 출력 유닛(707), 예를 들면 다양한 유형의 디스플레이, 스피커 등; 저장 유닛(708), 예를 들면 자기 디스크, 광 디스크 등; 및 통신 유닛(709), 예를 들면 네트워크 인터페이스 카드, 모뎀, 무선 통신 송수신기 등을 포함한다. 통신 유닛(709)은 기기(700)가 인테넷과 같은 컴퓨터 네트워크 및/또는 다양한 전기통신 네트워크를 통해 다른 기기와 정보/데이터를 교환하도록 허용한다.
전술한 각 과정 및 처리 - 예를 들면 과정(200, 300, 400 및 500) - 은, 처리 유닛(701)에 의해 수행될 수 있다. 예를 들면, 일부 실시에서, 과정(200, 300, 400 및 500)은 컴퓨터 소프트웨어 프로그램으로 구현될 수 있는바, 이는 기계 판독가능 매체, 예를 들면 저장 유닛(708)에 유형으로(tangibly) 포함된다. 일부 실시에서, 컴퓨터 프로그램의 일부 또는 전부가 ROM(702) 및/또는 통신 유닛(709)에 의해 기기(700)에 로딩 및/또는 설치될 수 있다. 컴퓨터 프로그램이 RAM(703)에 로딩되어 CPU(701)에 의해 실행되는 경우, 상술한 과정(200, 300, 400 및 500) 중의 하나 또는 복수의 동작을 수행할 수 있다.
본 개시는 방법, 장치, 시스템 및/또는 컴퓨터 프로그램 제품일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 저장 매체를 포함할 수 있는바, 이는 본 개시의 각 측면을 수행하는 컴퓨터 판독가능 프로그램 명령을 탑재하고 있다.
컴퓨터 판독가능 저장 매체는 명령 실행 기기에 의해 사용되는 명령을 유지 및 저장하는, 유형의(tangible) 기기일 수 있다. 컴퓨터 판독가능 저장 매체는 예를 들면 전기 저장 기기, 자기 저장 기기, 광 저장 기기, 전자기 저장 기기, 반도체 저장 기기 또는 상술한 것의 임의의 적합한 조합일 수 있으나 이에 한정되지 않는다. 컴퓨터 판독가능 저장 매체의 더 구체적인 예(불완전 리스트)는 휴대용 컴퓨터 디스크, 하드디스크, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 소거 및 프로그램가능한 읽기 전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 컴팩트 디스크 읽기 전용 메모리(CD-ROM), 디지털 다기능 디스크(DVD), 메모리스틱, 플로피 디스크, 예를 들면 명령이 저장되어 있는 천공 카드 또는 요홈 내 돌기 구조와 같은 기계식 코딩 기기 및 상술한 것의 임의의 적합한 조합을 포함한다. 여기서 사용되는 컴퓨터 판독가능 저장 매체는, 라디오파 또는 자유 전파되는 다른 전자기파, 웨이브가이드 또는 다른 전송 매체를 통해 전파하는 전자기파(예를 들면, 광섬유 케이블을 통과하는 광펄스), 또는 전기선을 통해 전송되는 전기 신호와 같은 일시적 신호 자체로 해석되지 않는다.
여기서 서술하는 컴퓨터 판독가능 프로그램 명령은, 컴퓨터 판독가능 저장 매체로부터 각 계산/처리 기기에 다운로드되거나 또는 네트워크(예를 들면 인테넷, 근거리 통신망, 원거리 통신망 및/또는 무선 네트워크)를 통해 외부 컴퓨터 또는 외부 저장 기기에 다운로드될 수 있다. 네트워크는 구리 전송 케이블, 광섬유 전송, 무선 전송, 라우터, 방화벽, 스위치, 게이트웨이 컴퓨터 및/또는 엣지 서버를 포함할 수 있다. 각 계산/처리 기기 중의 네트워크 어댑터 카드 또는 네트워크 인터페이스는 네트워크로부터 컴퓨터 판독가능 프로그램 명령을 수신하고 당해 컴퓨터 판독가능 프로그램 명령을 전달함으로써 각 계산/처리 기기 중의 컴퓨터 판독가능 저장 매체에 저장되도록 한다.
본 개시 조작을 수행하는 컴퓨터 프로그램 명령은 어셈블리 명령, 명령어 집합 구조(ISA) 명령, 기계 명령, 기계 관련 명령, 마이크로코드, 펌웨어 명령, 상태 설정 데이터, 또는 하나의 또는 복수의 프로그래밍 언어의 임의 조합으로 작성된 소스 코드 또는 오브젝트 코드일 수 있고, 상기 프로그래밍 언어는 Smalltalk, C++ 등과 같은 객체지향 프로그래밍 언어, 및 'C' 언어 또는 이와 유사한 프로그래밍 언어와 같은 통상의 절차적 프로그래밍 언어를 포함한다. 컴퓨터 판독가능 프로그램 명령은 전부 사용자 컴퓨터에서 실행되거나, 일부가 사용자 컴퓨터에서 실행되거나, 하나의 독립적인 소프트웨어 패키지로 실행되어 일부가 사용자 컴퓨터에서, 일부는 원격 컴퓨터에서 실행되거나, 또는 전부가 원격 컴퓨터 또는 서버에서 실행될 수 있다. 원격 컴퓨터에 관련되는 상황에서, 원격 컴퓨터는 근거리 통신망(LAN) 또는 원거리 통신망(WAN)을 포함하는 임의 종류의 네트워크를 통해, 사용자 컴퓨터에 연결되거나 또는 외부 컴퓨터에 연결될 수 있다(예를 들면 인터넷 서비스 사업자를 이용하여 인터넷을 통해 연결된다). 일부 실시에서, 컴퓨터 판독가능 프로그램 명령의 상태 정보를 이용하여, 예를 들어 프로그램가능 논리 회로, 필드 프로그램가능 게이트 어레이(FPGA) 또는 프로그램가능 논리 어레이(PLA)와 같은 전자 회로를 맞춤 제작하는바, 당해 전자 회로는 컴퓨터 판독가능 프로그램 명령을 실행할 수 있고, 이로써 본 개시의 각 측면을 구현할 수 있다.
여기서는 본 개시의 실시예에 따른 방법, 장치(시스템) 및 컴퓨터 프로그램 제품의 흐름도 및/또는 블록도를 참조하여 본 개시의 각 측면을 서술하였다. 흐름도 및/또는 블록도의 각 블록 및 흐름도 및/또는 블록도 중의 각 블록의 조합은 모두 컴퓨터 판독가능 프로그램 명령에 의해 구현될 수 있음을 이해하여야 한다.
이러한 컴퓨터 판독가능 프로그램 명령은 범용 컴퓨터, 전용 컴퓨터 또는 다른 프로그램가능 데이터 처리 장치의 처리 유닛에 제공되어 일 종의 기계를 생성할 수 있는바, 이로써 이러한 명령이 컴퓨터 또는 다른 프로그램가능 데이터 처리 장치의 처리 유닛에 의해 실행되는 경우, 흐름도 및/또는 블록도 중의 하나 또는 복수의 블록에서 규정하는 기능/동작을 구현하는 장치가 발생하도록 한다. 이러한 컴퓨터 판독가능 프로그램 명령을 컴퓨터 판독가능 저장 매체에 저장할 수도 있고 이러한 명령은 컴퓨터, 프로그램가능 데이터 처리 장치 및/또는 다른 기기를 특정 방식으로 동작하게 하는데, 이로써 명령이 저장되어 있는 컴퓨터 판독가능 매체는 하나의 생산품을 포함하게 되고, 이는 흐름도 및/또는 블록도 중의 하나 또는 복수의 블록에서 규정한 기능/동작을 구현하는 각 측면의 명령을 포함한다.
또한, 컴퓨터 판독가능 프로그램 명령을 컴퓨터, 다른 프로그램가능 데이터 처리 장치 또는 다른 기기에 로딩하여 컴퓨터, 다른 프로그램가능 데이터 처리 장치 또는 다른 기기에서 일련의 조작단계가 수행되어 컴퓨터 구현 과정이 발생되도록 할 수 있는바, 이로써 컴퓨터, 다른 프로그램가능 데이터 처리 장치 또는 다른 기기에서 실행되는 명령에 의해, 흐름도 및/또는 블록도 중의 하나 또는 복수의 블록에서 규정한 기능/동작이 구현되도록 할 수 있다.
첨부 도면 중의 흐름도 및 블록도는 본 개시의 복수의 실시예에 따른 시스템, 방법 및 컴퓨터 프로그램 제품에 의해 구현 가능한 시스템 아키텍처, 기능 및 조작을 도시한다. 여기서, 흐름도 또는 블록도 중의 각 블록은 하나의 모듈, 프로그램 세그먼트 또는 명령의 일부분을 대표할 수 있고, 상기 모듈, 프로그램 세그먼트 또는 명령의 일부분은 하나 또는 복수의 규정된 논리 기능을 구현하는 실행가능 명령을 포함한다. 일부 대안적인 구현에서, 블록 내에 표기된 기능은 첨부도면에서의 표기와는 다른 순서로 발생할 수도 있다. 예를 들면, 연속된 2개의 블록은 실제로는 기본적으로 병렬로 수행될 수 있는데, 이들은 때로는 상반되는 순서로 수행될 수도 있으며, 이는 관련되는 기능에 따라 결정된다. 블록도 및/또는 흐름도 중의 각 블록 및 블록도 및/또는 흐름도 중의 블록의 조합은, 규정된 기능 또는 동작을 수행하는, 전용의, 하드웨어 기반의 시스템에 의해 구현될 수도 있고, 또는 전용 하드웨어와 컴퓨터 명령의 조합에 의해 구현될 수도 있다는 점 또한 유의하여야 한다.
이상으로 이미 본 개시의 각 실시 방식에 대해 서술하였으나, 상술한 설명은 예시적인 것이지, 완전한 것이 아니며, 또한 공개된 각 실시 방식에 한정되지 않는다. 설명한 각 실시 방식의 범위 및 사상을 벗어나지 않는 여러 가지 수정 및 변경은 당업자에 있어서 자명하다. 본 명세서에서 사용하는 용어의 선택은, 각 실시 방식의 원리, 실제 응용 또는 마켓 중의 기술에 대한 개량이 가장 잘 이해되도록 하거나 또는 다른 당업자들이 본 명세서에서 공개하는 각 실시 방식을 이해할 수 있도록 하려는 데 착안하였다.

Claims (15)

  1. 칩을 검증하는 방법으로서,
    구성 파일에 의해, 상기 칩에 관련되는 소프트웨어 환경과 하드웨어 환경을 구성하는 단계 - 상기 구성 파일은 복수의 명령 및 상기 복수의 명령을 실행하는 데 필요한 데이터를 포함하고, 상기 소프트웨어 환경과 상기 하드웨어 환경은 상기 칩에 기반하여 생성됨 - ;
    상기 복수의 명령을 각각 상기 소프트웨어 환경과 상기 하드웨어 환경에서 실행하는 단계;
    상기 복수의 명령이 상기 소프트웨어 환경에서 실행되면서 생성된 제1 정보 및 상기 복수의 명령이 상기 하드웨어 환경에서 실행되면서 생성된 제2 정보를 각각 취득하는 단계 - 상기 제1 정보와 상기 제2 정보는 실행된 상기 복수의 명령, 실행된 상기 복수의 명령의 주소 및 상기 복수의 명령이 실행되면서 생성된 데이터를 포함함 - ; 및
    생성된 상기 제1 정보와 상기 제2 정보에 기반하여 상기 칩을 검증하는 단계를 포함하고,
    생성된 상기 데이터는 레지스터 데이터와 메모리 데이터를 포함하고,
    상기 방법은,
    상기 제1 정보 중의 사전결정 유형의 정보를 제1 파일에 저장하는 단계 - 상기 사전결정 유형은 명령 유형, 메모리 데이터 유형 및 레지스터 데이터 유형 중의 하나를 포함함 - ; 및
    상기 제2 정보 중의 같은 상기 사전결정 유형의 정보를 제2 파일에 저장하는 단계를 더 포함하는, 칩을 검증하는 방법.
  2. 제1항에 있어서,
    소프트웨어 환경과 상기 하드웨어 환경은 명령 메모리, 레지스터 및 데이터 메모리를 사용하고,
    구성 파일에 의해, 상기 칩에 관련되는 소프트웨어 환경과 하드웨어 환경을 구성하는 상기 단계는,
    상기 구성 파일의 상기 복수의 명령을 상기 명령 메모리에 저장하는 단계; 및
    상기 복수의 명령을 실행하는 데 필요한 상기 복수의 데이터를 상기 레지스터와 상기 데이터 메모리에 저장하는 단계를 포함하는, 칩을 검증하는 방법.
  3. 삭제
  4. 제1항에 있어서,
    생성된 상기 제1 정보와 상기 제2 정보에 기반하여 상기 칩을 검증하는 상기 단계는,
    상기 제1 파일과 상기 제2 파일을 비교함으로써, 상기 제1 파일과 상기 제2 파일에 있어서 매치되지 않는 부분을 결정하는 단계;
    상기 매치되지 않는 부분에 기반하여 정확하게 실행되지 않은 명령을 결정하는 단계; 및
    상기 정확하게 실행되지 않은 명령에 기반하여 상기 소프트웨어 환경 및/또는 상기 하드웨어 환경 중의 정확하지 않은 부분을 결정하는 단계를 포함하는, 칩을 검증하는 방법.
  5. 제4항에 있어서,
    상기 제1 정보는 실행된 상기 복수의 명령의 서술 정보를 더 포함하고,
    상기 정확하게 실행되지 않은 명령에 기반하여 상기 소프트웨어 환경 및/또는 상기 하드웨어 환경 중의 정확하지 않은 부분을 결정하는 상기 단계는,
    상기 정확하게 실행되지 않은 명령의 목표 서술 정보를 결정하는 단계; 및
    상기 목표 서술 정보에 기반하여 상기 정확하지 않은 부분을 결정하는 단계를 포함하는, 칩을 검증하는 방법.
  6. 제5항에 있어서,
    실행된 상기 복수의 명령의 서술 정보는 적어도 명령의 의미, 기능, 소스 오퍼랜드 및 실행 결과 중의 하나를 포함하는, 칩을 검증하는 방법.
  7. 칩을 검증하는 장치로서,
    구성 파일에 의해, 상기 칩에 관련되는 소프트웨어 환경과 하드웨어 환경을 구성하도록 구성되는 구성 모듈 - 상기 구성 파일은 복수의 명령 및 상기 복수의 명령을 실행하는 데 필요한 데이터를 포함하고, 상기 소프트웨어 환경과 상기 하드웨어 환경은 상기 칩에 기반하여 생성됨 - ;
    상기 복수의 명령을 각각 상기 소프트웨어 환경과 상기 하드웨어 환경에서 실행하도록 구성되는 실행 모듈;
    상기 복수의 명령이 상기 소프트웨어 환경에서 실행되면서 생성된 제1 정보 및 상기 복수의 명령이 상기 하드웨어 환경에서 실행되면서 생성된 제2 정보를 각각 취득하도록 구성되는 정보 취득 모듈 - 상기 제1 정보와 상기 제2 정보는 실행된 상기 복수의 명령, 실행된 상기 복수의 명령의 주소 및 상기 복수의 명령이 실행되면서 생성된 데이터를 포함함 - ; 및
    생성된 상기 제1 정보와 상기 제2 정보에 기반하여 상기 칩을 검증하도록 구성되는 검증 모듈을 포함하고,
    생성된 상기 데이터는 레지스터 데이터와 메모리 데이터를 포함하고,
    상기 장치는,
    상기 제1 정보 중의 사전결정 유형의 정보를 제1 파일에 저장하도록 구성되는 제1 정보 저장 모듈 - 상기 사전결정 유형은 명령 유형, 메모리 데이터 유형 및 레지스터 데이터 유형 중의 하나를 포함함 - ; 및
    상기 제2 정보 중의 같은 상기 사전결정 유형의 정보를 제2 파일에 저장하도록 구성되는 제2 정보 저장 모듈을 더 포함하는, 칩을 검증하는 장치.
  8. 제7항에 있어서,
    상기 소프트웨어 환경과 상기 하드웨어 환경은 명령 메모리, 레지스터 및 데이터 메모리를 사용하고,
    상기 구성 모듈은,
    상기 구성 파일의 상기 복수의 명령을 상기 명령 메모리에 저장하도록 구성되는 명령 저장 모듈; 및
    상기 복수의 명령을 실행하는 데 필요한 상기 복수의 데이터를 상기 레지스터와 상기 데이터 메모리에 저장하도록 구성되는 데이터 저장 모듈을 포함하는, 칩을 검증하는 장치.
  9. 삭제
  10. 제7항에 있어서,
    상기 검증 모듈은,
    상기 제1 파일과 상기 제2 파일을 비교함으로써, 상기 제1 파일과 상기 제2 파일에 있어서 매치되지 않는 부분을 결정도록 구성되는 비교 모듈;
    상기 매치되지 않는 부분에 기반하여 정확하게 실행되지 않은 명령을 결정하도록 구성되는 제1 착오 결정 모듈; 및
    상기 정확하게 실행되지 않은 명령에 기반하여 상기 소프트웨어 환경 및/또는 상기 하드웨어 환경 중의 정확하지 않은 부분을 결정하도록 구성되는 제2 착오 결정 모듈을 포함하는, 칩을 검증하는 장치.
  11. 제10항에 있어서,
    상기 제1 정보는 실행된 상기 복수의 명령의 서술 정보를 더 포함하고,
    상기 제2 착오 결정 모듈은,
    상기 정확하게 실행되지 않은 명령의 목표 서술 정보를 결정하도록 구성되는 목표 서술 정보 결정 모듈; 및
    상기 목표 서술 정보에 기반하여 상기 정확하지 않은 부분을 결정하도록 구성되는 제3 착오 결정 모듈을 포함하는, 칩을 검증하는 장치.
  12. 제11항에 있어서,
    실행된 상기 복수의 명령의 서술 정보는 적어도 명령의 의미, 기능, 소스 오퍼랜드 및 실행 결과 중의 하나를 포함하는, 칩을 검증하는 장치.
  13. 전자 기기로서,
    하나 또는 복수의 프로세서; 및
    하나 또는 복수의 프로그램을 저장하는 저장 장치를 포함하고,
    상기 하나 또는 복수의 프로그램이 상기 하나 또는 복수의 프로세서에 의해 실행되는 경우, 상기 하나 또는 복수의 프로세서에 의해 제1항, 제2항, 및 제4항 내지 제6항 중 어느 한 항의 방법이 구현되도록 하는, 전자 기기.
  14. 컴퓨터 프로그램이 저장되어 있는 컴퓨터 판독가능 저장 매체에 있어서,
    상기 프로그램이 프로세서에 의해 실행되는 경우, 제1항, 제2항, 및 제4항 내지 제6항 중 어느 한 항의 방법이 구현되는, 컴퓨터 판독가능 저장 매체.
  15. 매체에 저장된 컴퓨터 프로그램으로서,
    상기 프로그램이 프로세서에 의해 실행되는 경우, 제1항, 제2항, 및 제4항 내지 제6항 중 어느 한 항의 방법이 구현되는, 매체에 저장된 컴퓨터 프로그램.
KR1020210041903A 2020-08-31 2021-03-31 칩을 검증하는 방법, 장치, 전자 기기, 저장 매체 및 프로그램 KR102523518B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
CN202010899094.6 2020-08-31
CN202010899094 2020-08-31
CN202010915536.1A CN112100954B (zh) 2020-08-31 2020-09-03 验证芯片的方法、装置和计算机存储介质
CN202010915536.1 2020-09-03

Publications (2)

Publication Number Publication Date
KR20210047286A KR20210047286A (ko) 2021-04-29
KR102523518B1 true KR102523518B1 (ko) 2023-04-20

Family

ID=73757071

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210041903A KR102523518B1 (ko) 2020-08-31 2021-03-31 칩을 검증하는 방법, 장치, 전자 기기, 저장 매체 및 프로그램

Country Status (5)

Country Link
US (1) US11354474B2 (ko)
EP (1) EP3822840B1 (ko)
JP (1) JP7263427B2 (ko)
KR (1) KR102523518B1 (ko)
CN (1) CN112100954B (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112783961B (zh) * 2021-01-28 2022-07-19 湖北宸威玺链信息技术有限公司 基于托管运行的数据导出方法及系统
TWI824289B (zh) * 2021-02-08 2023-12-01 明俐科技有限公司 影像處理演算法的測試系統及測試方法
CN113138888A (zh) * 2021-04-30 2021-07-20 北京市商汤科技开发有限公司 功能检测方法及装置、电子设备和存储介质
KR102530599B1 (ko) * 2021-06-22 2023-05-09 인하대학교 산학협력단 반도체 설계 공정 비용 감소를 위한 hdevs 기반 rtl 설계 도구 및 복합 시뮬레이터
CN113485926A (zh) * 2021-07-05 2021-10-08 浙江大学 一种用于验证cpu指令模拟执行效果一致性的方法
CN113704043A (zh) * 2021-08-30 2021-11-26 地平线(上海)人工智能技术有限公司 芯片功能验证方法、装置、可读存储介质及电子设备
CN113822002B (zh) * 2021-08-31 2024-03-26 上海商汤阡誓科技有限公司 数据处理方法、装置、计算机设备及存储介质
CN114118356B (zh) * 2021-10-11 2023-02-28 北京百度网讯科技有限公司 神经网络处理器验证方法、装置、电子设备及存储介质
CN114047968B (zh) * 2021-10-30 2024-02-13 济南浪潮数据技术有限公司 一种硬件自动适配的方法、系统、存储介质及设备
CN114020626A (zh) * 2021-11-05 2022-02-08 北京百度网讯科技有限公司 芯片验证方法、装置、设备和介质
CN115481594B (zh) * 2021-11-22 2023-09-08 北京百度网讯科技有限公司 计分板实现方法、计分板、电子设备及存储介质
CN114330199B (zh) * 2021-12-28 2024-05-17 海光信息技术股份有限公司 一种设计文件生成方法、电路板的制作方法和相关设备
CN114428630B (zh) * 2022-03-31 2022-07-01 浙江地芯引力科技有限公司 芯片算法升级方法、装置和芯片
KR102644204B1 (ko) * 2022-11-30 2024-03-07 인하대학교 산학협력단 Cmos 기반 회로 설계 자동화 방법 및 시스템
CN116401113B (zh) * 2023-06-09 2023-08-18 太初(无锡)电子科技有限公司 一种异构众核架构加速卡的环境验证方法、装置及介质
KR102640248B1 (ko) * 2023-06-16 2024-02-27 주식회사 하이퍼엑셀 생성형 거대 인공지능 모델의 효율적인 하드웨어 매핑을 위한 방법 및 시스템
CN118261113B (zh) * 2024-05-29 2024-08-09 沐曦集成电路(上海)有限公司 共享存储器的设置与管理方法、电子设备和介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050076282A1 (en) * 2003-10-01 2005-04-07 Thompson Ryan Clarence System and method for testing a circuit design
JP2008516305A (ja) 2004-09-06 2008-05-15 メンター・グラフィクス・コーポレーション 集積回路の歩留り及び品質の分析の方法及びシステム
US20130185548A1 (en) * 2012-01-12 2013-07-18 Gueorgui Djabarov Multiple System Images for Over-The-Air Updates
JP2016224531A (ja) 2015-05-27 2016-12-28 ルネサスエレクトロニクス株式会社 半導体装置及び診断テスト方法

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4687988A (en) * 1985-06-24 1987-08-18 International Business Machines Corporation Weighted random pattern testing apparatus and method
DE4305442C2 (de) * 1993-02-23 1999-08-05 Hewlett Packard Gmbh Verfahren und Vorrichtung zum Erzeugen eines Testvektors
US6389379B1 (en) * 1997-05-02 2002-05-14 Axis Systems, Inc. Converification system and method
US6026230A (en) * 1997-05-02 2000-02-15 Axis Systems, Inc. Memory simulation system and method
US6052524A (en) * 1998-05-14 2000-04-18 Software Development Systems, Inc. System and method for simulation of integrated hardware and software components
US6272451B1 (en) * 1999-07-16 2001-08-07 Atmel Corporation Software tool to allow field programmable system level devices
KR100374328B1 (ko) * 2000-06-03 2003-03-03 박현숙 칩 설계 검증 및 테스트 장치 및 방법
KR100392569B1 (ko) * 2000-10-28 2003-07-23 (주)다이나릿시스템 반도체 칩의 논리 기능 검증용 에뮬레이터 장치 및 방법
JPWO2002063473A1 (ja) 2001-02-02 2004-06-10 株式会社ルネサステクノロジ データ処理システムの開発方法及び評価ボード
US20020173942A1 (en) * 2001-03-14 2002-11-21 Rochit Rajsuman Method and apparatus for design validation of complex IC without using logic simulation
JP4202673B2 (ja) * 2002-04-26 2008-12-24 株式会社東芝 システムlsi開発環境生成方法及びそのプログラム
GB0215033D0 (en) * 2002-06-28 2002-08-07 Critical Blue Ltd Instruction set translation method
US6848084B1 (en) * 2002-07-02 2005-01-25 Cadence Design Systems, Inc. Method and apparatus for verification of memories at multiple abstraction levels
US7302380B2 (en) * 2002-12-12 2007-11-27 Matsushita Electric, Industrial Co., Ltd. Simulation apparatus, method and program
US7197417B2 (en) * 2003-02-14 2007-03-27 Advantest America R&D Center, Inc. Method and structure to develop a test program for semiconductor integrated circuits
WO2006008721A2 (en) 2004-07-16 2006-01-26 Koninklijke Philips Electronics, N.V. Emulation and debug interfaces for testing an integrated circuit with an asynchronous microcontroller
US20060052997A1 (en) * 2004-09-09 2006-03-09 International Business Machines Corporation Automating identification of critical memory regions for pre-silicon operating systems
US20070234330A1 (en) * 2006-03-01 2007-10-04 Microsoft Corporation Prevention of executable code modification
US7496820B1 (en) * 2006-03-07 2009-02-24 Xilinx, Inc. Method and apparatus for generating test vectors for an integrated circuit under test
CN100487709C (zh) * 2006-08-17 2009-05-13 电子科技大学 Soc软硬件一体化设计验证方法
US8533545B2 (en) * 2009-03-04 2013-09-10 Alcatel Lucent Method and apparatus for system testing using multiple instruction types
CN102681924A (zh) * 2011-04-25 2012-09-19 中国电子科技集团公司第三十八研究所 软硬件协同验证平台
GB2512054A (en) * 2013-03-18 2014-09-24 Ibm Method to verify correctness of computer system software and hardware components and corresponding test environment
KR101476536B1 (ko) * 2013-05-27 2014-12-24 (주)스마일게이트엔터테인먼트 프로그램 검수 방법 및 시스템
CN104346272B (zh) * 2013-07-24 2018-04-10 无锡华润微电子有限公司 芯片自动仿真验证系统
US9600384B2 (en) * 2014-10-14 2017-03-21 Cypress Semiconductor Corporation System-on-chip verification
US9672351B2 (en) * 2015-02-02 2017-06-06 Qualcomm Incorporated Authenticated control stacks
US10176283B2 (en) * 2015-09-18 2019-01-08 Synopsys, Inc. Equivalence checking of analog models
CN105302950B (zh) * 2015-10-19 2018-07-24 北京精密机电控制设备研究所 一种软、硬件协同的可编程逻辑器件交联仿真测试方法
US9582274B1 (en) * 2016-01-06 2017-02-28 International Business Machines Corporation Architected store and verify guard word instructions
US10228992B2 (en) * 2016-01-06 2019-03-12 International Business Machines Corporation Providing instructions to facilitate detection of corrupt stacks
US10275245B2 (en) * 2016-03-04 2019-04-30 Montana Systems Inc. Event-driven design simulation
US10042571B2 (en) * 2016-03-31 2018-08-07 Intel Corporation Techniques to provide run-time protections using immutable regions of memory
GB2560336B (en) * 2017-03-07 2020-05-06 Imagination Tech Ltd Address generators for verifying integrated circuit hardware designs for cache memory
CN107038280B (zh) * 2017-03-10 2020-09-15 烽火通信科技股份有限公司 一种软硬件协同仿真的验证系统及其方法
US10740452B2 (en) * 2017-09-15 2020-08-11 Arm Limited Call path dependent authentication
GB2572440B (en) * 2018-03-29 2020-09-23 Imagination Tech Ltd Verifying a hardware design for a component that implements a permutation respecting function
CN108763743B (zh) * 2018-05-28 2022-08-05 天津芯海创科技有限公司 验证平台、方法及电子设备
US10769329B1 (en) * 2019-04-03 2020-09-08 Synopsys, Inc. Retention model with RTL-compatible default operating mode
US20200334092A1 (en) * 2019-04-16 2020-10-22 Vtool Ltd System and method for identifying a cause of a failure in operation of a chip
US11080444B1 (en) * 2019-12-12 2021-08-03 Cadence Design Systems, Inc. Concurrent fault co-simulator
US10997343B1 (en) * 2019-12-19 2021-05-04 Cadence Design Systems, Inc. In-system scan test of chips in an emulation system
US20210216328A1 (en) * 2020-01-09 2021-07-15 Qualcomm Incorporated Disabling portable computing device features using write-once register
CN111339731B (zh) * 2020-01-21 2021-01-08 中国人民解放军军事科学院国防科技创新研究院 一种面向SoC的FPGA验证平台和验证方法
US11036906B1 (en) * 2020-01-24 2021-06-15 Cadence Design Systems, Inc. Method and apparatus to accelerate verification signoff by selective re-use of integrated coverage models

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050076282A1 (en) * 2003-10-01 2005-04-07 Thompson Ryan Clarence System and method for testing a circuit design
JP2008516305A (ja) 2004-09-06 2008-05-15 メンター・グラフィクス・コーポレーション 集積回路の歩留り及び品質の分析の方法及びシステム
US20130185548A1 (en) * 2012-01-12 2013-07-18 Gueorgui Djabarov Multiple System Images for Over-The-Air Updates
JP2016224531A (ja) 2015-05-27 2016-12-28 ルネサスエレクトロニクス株式会社 半導体装置及び診断テスト方法

Also Published As

Publication number Publication date
JP7263427B2 (ja) 2023-04-24
US20210216693A1 (en) 2021-07-15
CN112100954A (zh) 2020-12-18
KR20210047286A (ko) 2021-04-29
EP3822840A2 (en) 2021-05-19
JP2022036889A (ja) 2022-03-08
EP3822840A3 (en) 2021-10-20
US11354474B2 (en) 2022-06-07
CN112100954B (zh) 2024-07-09
EP3822840B1 (en) 2023-05-24

Similar Documents

Publication Publication Date Title
KR102523518B1 (ko) 칩을 검증하는 방법, 장치, 전자 기기, 저장 매체 및 프로그램
US8181131B2 (en) Enhanced analysis of array-based netlists via reparameterization
US8146034B2 (en) Efficient Redundancy Identification, Redundancy Removal, and Sequential Equivalence Checking within Designs Including Memory Arrays.
US20220187899A1 (en) Methods And Apparatus For Selectively Extracting And Loading Register States
US10354028B2 (en) Formal verification driven power modeling and design verification
US8578311B1 (en) Method and system for optimal diameter bounding of designs with complex feed-forward components
US20070220461A1 (en) Method and system for sequential equivalence checking with multiple initial states
US10489534B1 (en) Support for multiple user defined assertion checkers in a multi-FPGA prototyping system
US8291359B2 (en) Array concatenation in an integrated circuit design
CN111198868A (zh) 一种智能分库实时数据迁移方法和装置
US10970449B2 (en) Learning framework for software-hardware model generation and verification
US20210311853A1 (en) Automated breakpoint creation
US20110276930A1 (en) Minimizing Memory Array Representations for Enhanced Synthesis and Verification
US10699044B2 (en) Integrated circuit design model splitting for formal verification
US10635767B2 (en) Glitch detection at clock domain crossing
US9576085B2 (en) Selective importance sampling
CN105447213A (zh) 用于对电路设计进行仿真的方法和装置
US11443088B1 (en) Simulation using accelerated models
KR102325612B1 (ko) 시뮬레이터를 구현하는 방법, 장치, 기기 및 매체
CN108334313A (zh) 用于大型soc研发的持续集成方法、装置及代码管理系统
CN114091391A (zh) 芯片验证方法、装置、设备和存储介质
US10606971B2 (en) Testing netlists based on singular independent signals
US11836426B1 (en) Early detection of sequential access violations for high level synthesis
CN115293078B (zh) 集成电路的节点改写方法、装置、电子设备及介质
US11010151B2 (en) Software patch ordering

Legal Events

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