KR20230117364A - 클록 인식 시뮬레이션 벡터 프로세서 - Google Patents

클록 인식 시뮬레이션 벡터 프로세서 Download PDF

Info

Publication number
KR20230117364A
KR20230117364A KR1020237020356A KR20237020356A KR20230117364A KR 20230117364 A KR20230117364 A KR 20230117364A KR 1020237020356 A KR1020237020356 A KR 1020237020356A KR 20237020356 A KR20237020356 A KR 20237020356A KR 20230117364 A KR20230117364 A KR 20230117364A
Authority
KR
South Korea
Prior art keywords
value
circuit
values
control signals
evaluation
Prior art date
Application number
KR1020237020356A
Other languages
English (en)
Inventor
라메쉬 나라야나스와미
수브라마니안 가네산
디네쉬 마두산케 파시쿠 한나디게
Original Assignee
시놉시스, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 시놉시스, 인크. filed Critical 시놉시스, 인크.
Publication of KR20230117364A publication Critical patent/KR20230117364A/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/3308Design verification, e.g. functional simulation or model checking using simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • 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
    • 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]
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Computing Systems (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

회로 설계를 검증하기 위한 처리 시스템으로서, 처리 시스템은 플로우 프로세서, 및 플로우 프로세서와 결합된 평가 시스템을 포함한다. 플로우 프로세서는 회로 설계로부터 명령어들을 생성한다. 평가 시스템은, 플로우 프로세서로부터 명령어들을 수신하고 제어 신호들을 생성하는 명령어 메모리 회로, 및 제어 신호들을 수신하고 제어 신호들에 기초하여 복수의 값을 라우팅하는 인터커넥트 회로를 포함한다. 복수의 값 각각은 4개의 상태 중 하나를 갖는다. 평가는 복수의 값 및 제어 신호들을 수신하고, 제어 신호들에 기초하여 복수의 값으로 회로 설계의 하나 이상의 연산을 수행하고, 및 하나 이상의 연산을 수행한 것에 기초하여 연산 값들을 출력하는 연산 회로를 추가로 포함하고, 연산 값들은 회로 설계 내의 오류를 나타낸다.

Description

클록 인식 시뮬레이션 벡터 프로세서
본 개시내용은 일반적으로 시뮬레이션 가속화 프로세서에 관한 것이다. 특히, 본 개시내용은 클록 인식 시뮬레이션 벡터 프로세서(clock aware simulation vector processor)를 제공하기 위한 시스템 및 방법에 관한 것이다.
로직 시뮬레이션이 회로 설계(예를 들어, DUV(Design Under Verification))의 기능적 정확성 및 설계 의도를 검증하기 위해 사용된다. 기능적 정확성은 DUV의 입력들 및 내부 변수들에 값들을 적용하고, DUV를 통해 적용된 입력들을 시뮬레이션하고, 예상된 거동에 대해 DUV의 출력들을 체크함으로써 검증된다. DUV의 기능적 정확성을 검증하는 것은 DUV의 내부 변수들이 리셋 입력 시퀀스에 기초하여 예상된 값(예를 들어, 0의 값)에 도달하는 것, 및 DUV의 출력이 인가된 입력들에 대한 예상된 결과(예를 들어, 덧셈 연산은 출력 상에 입력들의 합을 산출함)를 갖는 것을 체크하는 것을 포함한다.
회로 설계들의 로직 시뮬레이션을 수행하기 위해 사용되는 계산 자원들의 양은 회로 설계의 크기에 대응한다. 따라서, 회로 설계의 크기가 증가함에 따라, 계산 자원들의 양이 증가한다.
일 예에서, 처리 시스템은 플로우 프로세서(flow processor) 및 평가 시스템을 포함한다. 플로우 프로세서는 회로 설계와 연관된 입력 신호에 기초하여 명령어들을 생성한다. 평가 시스템은 플로우 프로세서와 전기적으로 결합된다. 평가 시스템은 명령어들을 수신하고 그리고 명령어들에 기초하여 회로 설계의 연산들을 수행한다. 평가 시스템은 플로우 프로세서로부터 명령어들을 수신하고 제어 신호들을 생성하는 명령어 메모리 회로를 포함한다. 평가 시스템은 명령어 메모리 회로에 전기적으로 결합된 인터커넥트 회로를 추가로 포함한다. 인터커넥트 회로는 제어 신호들 및 복수의 값을 수신하고, 제어 신호들에 기초하여 복수의 값을 라우팅한다. 복수의 값 각각은 4개의 상태 중 하나를 갖는다. 또한, 평가 시스템은 인터커넥트 회로 및 명령어 메모리 회로에 전기적으로 결합되는 연산 회로를 포함한다. 연산 회로는 복수의 값 및 제어 신호들을 수신하고, 제어 신호들에 기초하여 복수의 값으로 회로 설계의 하나 이상의 연산을 수행하고, 하나 이상의 연산을 수행한 것에 기초하여 연산 값들을 출력하는데, 연산 값들은 회로 설계 내의 오류를 나타낸다.
일 예에서, 방법은 회로 설계와 연관된 입력 신호에 기초하여 명령어들을 생성하는 단계, 및 명령어 메모리 회로를 통해 명령어들로부터 제어 신호들을 생성하는 단계를 포함한다. 또한, 방법은 제어 신호들에 기초하여 복수의 값을 인터커넥트 회로를 통해 라우팅하는 단계를 포함한다. 복수의 값 각각은 4개의 상태를 가진다. 방법은, 연산 회로를 통해, 제어 신호들에 기초하여 복수의 값으로 회로 설계의 하나 이상의 연산을 수행하는 단계, 및 하나 이상의 연산을 수행한 것에 기초하여 연산 값들을 출력하는 단계를 추가로 포함한다. 연산 값들은 회로 설계 내의 오류를 나타낸다.
일 예에서, 방법은 제1 기간에 회로 디바이스와 연관된 제1 값을 저장하는 단계, 및 회로 디바이스와 연관된 제1 클록 신호의 에지를 검출하는 단계를 포함한다. 또한, 방법은 제1 클록 신호의 에지를 검출한 것에 기초하여 저장된 제1 값을 회로 디바이스로부터 출력하는 단계를 포함한다.
본 개시내용은 아래에 주어지는 상세한 설명으로부터 그리고 본 개시내용의 실시예들의 첨부 도면들로부터 더 충분히 이해될 것이다. 도면들은 본 개시내용의 실시예들의 지식 및 이해를 제공하기 위해 사용되며, 본 개시내용의 범위를 이러한 특정 실시예들로만 제한하지는 않는다. 게다가, 도면들이 꼭 축척대로 그려져 있는 것은 아니다.
도 1은 본 개시내용의 일 실시예에 따른 시뮬레이션 벡터 프로세서 시스템의 블록도를 도시한다.
도 2는 본 개시내용의 일 실시예에 따른 시뮬레이션 벡터 프로세서 시스템의 부분의 블록도를 도시한다.
도 3은 본 개시내용의 일 실시예에 따른 시뮬레이션 벡터 프로세서 시스템의 또 다른 부분의 블록도를 도시한다.
도 4는 본 개시내용의 일 실시예에 따른 회로 그래프를 도시한다.
도 5는 본 개시내용의 일 실시예에 따른, 회로 설계의 기능성을 검증하는 방법의 흐름도를 예시한다.
도 6은 본 개시내용의 일 실시예에 따른 상태 메모리의 블록도를 도시한다.
도 7은 본 개시내용의 일 실시예에 따른, 회로 설계 내에서 조화(congruency)를 보존하기 위한 방법의 흐름도를 도시한다.
도 8은 본 개시내용의 일 실시예에 따른, 클록 신호를 추적하기 위한 방법을 도시한다.
도 9는 본 개시내용의 일부 실시예들에 따른, 집적 회로의 설계 및 제조 동안 사용되는 다양한 프로세스들의 흐름도를 묘사한다.
도 10은 본 개시내용의 실시예들이 연산할 수 있는 예시적인 컴퓨터 시스템의 도면을 묘사한다.
본 개시내용의 양태들은 클록 인식 시뮬레이션 벡터 프로세서에 관한 것이다.
검증 또는 테스트(DUV 또는 DUT)를 받는 설계(예를 들어, 회로 설계)는 특히 VLSI(very-large-scale integration) 회로 블록들 및 VLSI 칩들을 포함할 수 있다. DUV는 기능적 정확성 및 설계 의도를 결정하기 위해 시뮬레이션된다. 기능적 정확도를 결정하는 것은 시뮬레이트된 입력들에 기초하여 DUV의 출력들을 분석하는 것을 포함한다.
설계 의도는 하드웨어 기술 언어(예를 들어, System Verilog 또는 다른 것들) 어써션(assertion)들을 사용하여 거동의 예상된 시퀀스(예를 들어, 예상된 값들)를 특정함으로써 DUV의 설계 거동을 체크하는 것, 및 DUV의 부분들이 디스에이블되고 전력 의도에 기초하여 다시 인에이블될 때 DUV가 정확하게 연산하는 것을 검증하는 것을 포함한다. 전력 의도는 DUV의 부분인 저전력 사양들(예를 들어, UPF(Unified Power Format) 또는 저전력 기술들에 대한 다른 전력 포맷 사양)에서 특정된다.
DUV는 4개의 상태(예를 들어, 4-상태 모델)를 사용하여 모델링될 수 있다. 4개의 상태는 제로 값 상태(예를 들어, 0의 논리값), 1 값 상태(예를 들어, 1의 논리값), 알려지지 않은 상태(예를 들어, X 값), 및 3상태(tristate)(예를 들어, Z 값)를 포함한다. 4-상태 모델은 DUV가 리셋 절차 후에 적절히 복구되는 것을 검증하기 위해 사용된다. 예를 들어, 4-상태 모델은 DUV가 리셋 절차 후에 알려진 상태(예를 들어, 0 또는 1의 값) 또는 알려지지 않은 상태(예를 들어, X 값)로 복귀하는지 여부를 결정하기 위해 사용될 수 있다. 일 예에서, 리셋 절차는 DUV의 하나 이상의 변수를 알려진 값(예컨대, 0 또는 1의 값)에 설정한다. 그러나, 리셋 절차 후에 X 값을 갖는 DUV 내의 변수들의 검출에 기초하여, DUV 내의 오류들이 표시된다.
회로 설계를 검증하기 위한 로직 시뮬레이션 프로세스들은 계산 집약적인 프로세스이다. 따라서, 회로 설계들의 크기가 증가함에 따라, 로직 시뮬레이션 프로세스에 의해 사용되는 처리 자원들이 증가한다. 또한, 4-상태 모델을 사용하여 회로 설계의 연산을 시뮬레이션하는 로직 시뮬레이션 프로세스들은 다른 로직 시뮬레이션 프로세스들보다 더 계산 집약적이다. 본 명세서에 개시된 실시예들은 DUV의 기능적 정확성 및 설계 의도를 검증하기 위해 DUV의 연산들을 시뮬레이션하는 시뮬레이션 벡터 프로세서 시스템을 채택한다. 시뮬레이션 벡터 프로세서 시스템은 DUV의 연산들을 시뮬레이션하기 위해 병렬 하드웨어 구현을 사용한다. 또한, 시뮬레이션 벡터 프로세서는 DUV가 리셋 절차들, 또는 다른 전력 관련 절차들의 알려진 값을 반환하는 것을 검증하기 위해 4-상태 모델을 채택한다. 예를 들어, 시뮬레이션 벡터 프로세서 시스템의 요소들은 4-상태 값들을 지원하고 병렬 하드웨어 구현을 이용하여 연산한다. 따라서, 시뮬레이션 벡터 프로세서 시스템은 DUV의 더 많은 수의 연산 절차들을, 전형적인 방법들과 비교하여, 감소된 시간량으로, 예를 들어, 대략 10 내지 50배로 검증할 수 있다. 본 명세서에 설명된 실시예들은 DUV의 고속 컴필레이션(compilation)을 가능하게 하는 명령어 세트, 및 전형적인 방법들과 비교하여 DUV의 입력 값들, 출력 값들, 및 내부 변수들을 효율적으로 설정하고 체크하기 위한 개선된 검증 인터페이스를 제시한다.
도 1은 하나 이상의 예에 따른 시뮬레이션 벡터 프로세서 시스템(100)을 도시한다. 시뮬레이션 벡터 프로세서 시스템(100)은 회로 설계를 검증하는데 이용되는 하나 이상의 프로세서를 포함하는 벡터 프로세서라고 지칭될 수 있다. 시뮬레이션 벡터 프로세서 시스템(100)은 플로우 프로세서(110) 및 평가 회로(120)를 포함한다. 하나 이상의 예에서, 시뮬레이션 벡터 프로세서 시스템(100)은 데이터 회로(170) 및 트레이스 회로(trace circuitry)(172)를 추가로 포함한다.
시뮬레이션 벡터 프로세서 시스템(100)은 테스트 디바이스(180)에 결합된다. 테스트 디바이스(180)는 DUV로부터 명령어들을 생성하고 그 명령어들을 시뮬레이션 벡터 프로세서 시스템(100)에 전달한다. 명령어들은 DUV의 어느 부분들이 시뮬레이션될 것인지를 나타낸다. 일 예에서, 명령어들은 하나 이상의 클록 신호의 형태를 갖는다. 클록 신호들 각각은 DUV의 상이한 부분에 대응한다. 또한, 테스트 디바이스(180)는 하나 이상의 데이터 신호(예를 들어, 입력 신호 값들 및/또는 변수 값들)를 시뮬레이션 벡터 프로세서 시스템(100)에 전달한다. 시뮬레이션 벡터 프로세서 시스템(100)은 데이터 신호에 기초하여 DUV의 하나 이상의 연산을 시뮬레이션함으로써 DUV를 평가한다.
일 예에서, DUV는 상호연결된 복수의 프로세스(예를 들어, 연산들)로서 모델링된다. 각각의 프로세스는 하나 이상의 입력 변수 및 하나 이상의 출력 변수를 포함한다. 또한, 각각의 프로세스는 4-상태 프로세스이다. 검증 프로세스들 동안, 입력 값들이 각각의 대응하는 변수에 대해 수신되고, 복수의 출력 변수에 대응하는 출력 값들을 산출하기 위해 사용된다.
시뮬레이션 벡터 프로세서 시스템(100)은 메모리를 선언, 판독, 기입, 초기화/설정하기 위한 다수의 연산자를 제공한다. 하나의 예에서, 연산자들은 예약된 공간이 MDA(multi-dimensional array)의 4-상태 표현을 위한 것이 되도록 메모리 MDA를 위한 공간을 예약하는 메모리 공간 선언 연산자를 포함한다. 연산자들은 판독 연산자가 판독 요청 연산자 및 판독 주입 연산자로 분할될 수 있도록 어드레스에 기초하여 메모리로부터 값을 판독하는 메모리 판독 연산자를 포함한다. 연산자들은 메모리 기입 연산자가 어드레스에 기초하여 메모리에 값을 기입하는 것을 포함한다. 연산자들은 메모리 또는 메모리의 어드레스 범위를 4-상태 값 중 하나에 설정하는 메모리 초기화(예를 들어, 설정) 연산자를 포함한다.
플로우 프로세서(110)는 테스트 디바이스(180)에 결합된다. 플로우 프로세서(110)는 테스트 디바이스(180)로부터 회로 설계 데이터(예를 들어, 명령어들)를 수신한다. 플로우 프로세서(110)는 마이크로프로세서, 중앙 처리 유닛, 또는 그와 유사한 것과 같은 하나 이상의 프로세서이다. 또한, 플로우 프로세서(110)는 복합 명령어 세트 컴퓨팅 마이크로프로세서, 축소 명령어 세트 컴퓨팅 마이크로프로세서, VLIW(very long instruction word) 마이크로프로세서, 또는 다른 명령어 세트들을 구현하는 프로세서, 또는 명령어 세트들의 조합을 구현하는 프로세서들일 수 있다. 하나 이상의 예에서, 플로우 프로세서(110)는, 특히, ASIC(application specific integrated circuit), FPGA(field programmable gate array), DSP(digital signal processor), 및/또는 네트워크 프로세서와 같은 하나 이상의 특수 목적 처리 디바이스이다. 플로우 프로세서(110)는 본 명세서에 설명된 대응하는 연산들을 수행하기 위한 명령어들을 실행한다.
회로 설계 데이터는 평가 회로(120)에 의해 평가될 명령어들에 대응한다. 일 예에서, 회로 설계 데이터는 평가 회로(120)에 의해 평가될 명령어들과 연관된 클록 신호를 포함한다. 플로우 프로세서(110)는 클록 신호의 상승 에지 또는 하강 에지를 검출하고 및 검출된 클록 신호 에지에 기초하여 평가를 위한 회로 설계의 서브세트를 선택하도록 구성된 하나 이상의 에지 검출기를 포함한다. 다른 예들에서, 회로 설계 데이터는 하나보다 많은 클록 신호를 포함하고, 플로우 프로세서(110)는 클록 신호들 각각의 에지를 검출한다. 어느 클록 신호 또는 신호들의 에지가 검출됐는지에 좌우되어, DUV의 대응하는 부분 또는 부분들이 시뮬레이션을 위해 선택된다. DUV의 선택된 부분 또는 부분들과 연관된 명령어들은 평가 회로(120)에 출력된다.
평가 회로(120)는 명령어 메모리 회로(130), 인터커넥트 회로(140), 및 연산 회로(150)를 포함한다. 평가 회로(120)는 하나 이상의 트레이스를 통해 플로우 프로세서(110)에 전기적으로 연결된다. 평가 회로(120)는 플로우 프로세서(110)에 의해 출력된 명령어들을 수신한다. 평가 회로(120)는 테스트 중인 회로 설계를 평가하기 위한 명령어들에 기초하여 DUV와 연관된 연산들을 수행한다. 또한, 평가 회로(120)는 값들을 수신한다. 값들은 시뮬레이션 벡터 프로세서 시스템(100)의 데이터 회로(170)로부터 수신된다. 값들은 하나 이상의 비트의 신호일 수 있다. 일 예에서, 값들은 논리값 0, 논리값 1, X 값, 또는 Z 값일 수 있다. 이 값들은 DUV를 평가하기 위한 테스트를 받는 회로 설계의 연산들을 수행하기 위해 명령어와 함께 사용된다.
명령어 메모리 회로(130)는 플로우 프로세서(110)로부터 명령어들을 수신하고 제어 신호들을 생성한다. 예를 들어, 명령어 메모리 회로(130)는 인터커넥트 제어 신호(132), 판독 제어 신호들(), 기입 제어 신호들(), 및 연산자 제어 신호들(136)을 생성한다. 명령어 메모리 회로(130)는 포스(force) 메모리 제어 신호들(138)을 더 생성할 수 있다. 일 예에서, 명령어 메모리 회로(130)는 평가 클록 신호의 상이한 클록 사이클들에서 어느 연산들이 실행될 것인지 그리고 어느 값들이 연산되지를 결정함으로써 인터커넥트 제어 신호(132), 판독 제어 신호들(), 기입 제어 신호들(), 및 연산자 제어 신호들(136)을 생성한다. 평가 클록 신호의 클록 사이클들은 사이클들로서 지칭될 수 있다.
일 예에서, 명령어 메모리 회로(130)는 플로우 프로세서(110)에 의해 제공되는 명령어들로부터 제1 값을 연산 회로(150) 내의 메모리 로케이션에 결합하라고 인터커넥트 회로(140)에 지시하는 제어 신호들(132)을 생성한다.
판독 제어 신호들()은 4개의 판독 포인터를 포함하고, 기입 제어 신호들()은 4개의 상태(예를 들어, 논리값 0의 상태, 논리값 1의 상태, 알려지지 않은 값의 상태, 및 3상태)에 대한 4개의 기입 포인터를 포함한다. 판독 제어 신호들() 및 기입 제어 신호들()은, 함께, 어느 어드레스들로부터 데이터를 판독할지 그리고 어느 어드레스들에 데이터를 기입할지에 관해 연산 회로(150)에 지시한다.
연산자 제어 신호들(136)은 연산 명령어들을 포함한다. 연산자 제어 신호들(136)은 연산 회로(150)에 의해 수신되고, 어느 연산들을 수행할지에 관해 연산 회로(150)에 지시한다. 연산들은, 특히, 조건부 연산들, 테스트 연산들, 4개 상태 테스트 연산들, 연산들보다 큰 산술 연산들, 연산들보다 작은 연산들, 논리 동등 연산들(logical equality operations), case 동등 연산들, 산술 연산들, 논리 연산들, 및 시프트 연산들을 포함한다. 조건부 연산들은, 특히, if-else 연산들, case 연산들, 및 삼항 연산들을 포함한다. 테스트 연산들은, 특히, 보다 큰, 보다 작은, 및 논리 동등 연산들을 포함한다. 4개 상태 테스트 연산들은 case 동등 연산들을 포함한다. 4 상태 테스트 연산은 4개의 상태 값(예컨대, 논리값 0, 논리값 1, 알려지지 않은 값(예컨대, X 값) 및 Z 값)으로서 표현되는 2개의 신호를 비교한다. 4개의 상태 연산은 4개의 상태(예를 들어, 논리값 0, 논리값 1, X 값 및 Z 값) 중 하나일 수 있는 신호들의 추가적인 논리 지원 비교들을 사용한다. 산술 연산들은 특히 덧셈 연산들, 뺄셈 연산들, 곱셈 연산들, 나눗셈 연산들, 및 지수 연산들을 포함한다. 시프트 연산들은 좌측 시프트 연산들 및 우측 시프트 연산들을 포함한다. 논리 연산들은 특히 AND 연산들, OR 연산들, 및 XOR 연산들을 포함한다.
인터커넥트 회로(140)는 명령어 메모리 회로(130) 및 연산 회로(150)에 연결된다. 인터커넥트 회로(140)는 명령어 메모리 회로(130)로부터 인터커넥트 제어 신호(132)를 그리고 데이터 회로(170)로부터 값들을 수신한다. 인터커넥트 회로(140)는 인터커넥트 제어 신호(132)에 기초하여 데이터 회로(170)로부터 수신된 값들을 연산 회로(150) 내의 상이한 메모리 로케이션들에 라우팅한다.
연산 회로(150)는 값 메모리 회로들(152) 및 평가 회로들(154)을 포함한다. 값 메모리 회로들(152)은 인터커넥트 회로(140) 및 평가 회로들(154)에 연결된다. 일 예에서, 각각의 값 메모리 회로(152)는 각자의 평가 회로(154)에 연결된다. 다른 예들에서, 값 메모리 회로들(152) 중 하나 이상은 평가 회로들(154) 중 2개 이상에 연결된다. 추가적으로 또는 대안적으로, 값 메모리 회로들(152) 중 2개 이상은 동일한 평가 회로(154)에 연결된다. 일 예에서, 각각의 값 메모리 회로(152)에 대해, 각자의 평가 회로(154)가 있다. 다른 예들에서, 평가 회로들(154)에 대한 값 메모리 회로들(152)의 다른 비율이 있다.
인터커넥트 회로(140)는 멀티플렉서들(MUX들)()을 포함하고, 여기서 D는 1보다 큰 정수이다. 일 예에서, D는 192이다. 다른 예들에서, D는 192 초과 또는 192 미만이다. MUX들(142)은 다중의 비트가 MUX들(142)로부터 값 메모리 회로들(152)로 전달될 수 있도록 각자의 버스를 통해 값 메모리 회로들(152)에 연결된다. 각각의 MUX(142)는 각자의 버스를 통해 값 메모리 회로들(152) 중 하나 이상에 다중의 비트를 전달할 수 있다. 또한, 하나 이상의 비트가 데이터 회로(170)로부터 각각의 MUX(142)로 전달될 수 있도록 MUX들(142)은 하나 이상의 버스를 통해 데이터 회로(170)에 연결된다. 일 예에서, 각각의 MUX(142)는 값 메모리 회로들(152) 중 각자의 것에 연결된다. 또 다른 예에서, MUX들(142) 중 2개 이상이 단일 값 메모리 회로(152)에 연결된다. 하나 이상의 예에서, 적어도 하나의 MUX(142)는 2개의 값 메모리 회로(152)에 연결된다. 각각의 MUX(142)는 제어 신호(132)를 수신하고, 각각의 MUX(142)의 출력은 인터커넥트 제어 신호(132) 중 하나에 의해 제어된다. 하나 이상의 예에서, MUX(142)는 2개 이상의 입력 신호(값)를 수신하고 하나 이상의 출력 신호를 출력한다. 일부 예들에서, MUX들(142)은 P개의 출력 신호에 대한 M개의 입력 신호의 비율을 갖는다. M 및 P는 1보다 크다. 또한, M은 P보다 크다. MUX들(142)은 MUX들(142)이 4개의 상태 값을 지원할 수 있도록 적어도 2 비트 폭을 갖는다.
값 메모리 회로들(152)은 인터커넥트 회로(140)로부터 값들을 수신하고, 판독 제어 신호들() 및 기입 제어 신호들()에 기초하여 값들을 평가 회로들(154)에 출력한다. 값 메모리 회로들(152)은 값 메모리 회로들()을 포함하며, 여기서 E는 1보다 큰 정수이다. 일 예에서, E는 192이다. 다른 예들에서, E는 192 초과 또는 192 미만이다. 일 예에서, 판독 제어 신호들()은 판독 커맨드들이고, 기입 제어 신호들()은 판독 커맨드들이다. 값 메모리 회로들(152)은 판독 커맨드들에 기초하여 값들을 판독하고 기입 커맨드들에 기초하여 값들을 기입한다. 판독 커맨드들(예를 들어, 판독 제어 신호들())은 각자의 평가 회로(152)가 연산을 위해 어느 값 또는 값들을 판독하고 소비하는지를 나타낸다. 기입 커맨드들(예를 들어, 기입 제어 신호들())은 값 또는 값들이 평가 회로들(154)에 의해 기입되는 곳을 나타낸다. 값 메모리 회로들(152)은 멀티-포트형 값 저장 메모리 디바이스들이다. 멀티-포트형 값 저장 메모리 디바이스들은 평가 회로들(154)에 연결된 하나보다 많은 포트를 갖는 메모리 디바이스들이다. 일 예에서, 값 메모리 회로들(152)은 2개보다 많은 포트를 갖는 값 메모리 디바이스들이다. 하나의 특정 예에서, 값 메모리 회로들은 4개의 포트를 갖는 값 메모리 디바이스들이다. 예를 들어, 값 메모리 회로들(152)은 다중의 값을 저장하고 다중의 상이한 사이클에 걸쳐 다중의 값을 출력할 수 있다. 값 메모리 회로들(152)은 다중의 사이클에 대해 한 값을 저장하고 및/또는 2개 이상의 사이클에 대해 상이한 값들을 저장할 수 있다.
값 메모리 회로들(152)은 값 메모리 회로들(152)이 4개의 상태 값을 지원할 수 있도록 적어도 2 비트 폭을 갖는다. 값 메모리 회로들(152)은 4개의 상태(예를 들어, 제로 값 상태, 1 값 상태, 알려지지 않은 값 상태, 및 3상태) 중 하나로 값들을 저장한다. 따라서, 값 메모리 회로들(152)은 4-상태 메모리 회로들이다.
평가 회로들(154)은 값 메모리 회로들(152) 및 명령어 메모리 회로(130)에 연결된다. 평가 회로들(154) 각각은, 다중의 비트가 값 메모리 회로들(152)로부터 평가 회로들(154)로 전달될 수 있도록, 하나 이상의 버스를 통해 값 메모리 회로들(152) 중 하나 이상에 연결된다. 평가 회로들(154)은 평가 회로들()을 포함하고, 여기서 F는 1보다 큰 정수이다. 일 예에서, F는 192이다. 다른 예들에서, F는 192 초과 또는 192 미만이다. 하나 이상의 예에서, 각각의 평가 회로(154)는 각자의 값 메모리 회로(152)에 접속된다. 또 다른 예에서, 2개 이상의 평가 회로(154)가 동일한 값 메모리 회로(152)에 연결되고 및/또는 평가 회로(154)가 2개 이상의 값 메모리 회로(152)에 연결된다. 평가 회로들(154)은 명령어 메모리 회로(130)로부터 연산자 제어 신호들(136)을 수신한다. 또한, 평가 회로들(154)은 값 메모리 회로들(152)로부터 값들을 수신하고 값에 대해 연산을 수행한다. 연산은 수신된 연산자 제어 신호들(136)에 기초한다. 각각의 평가 회로(154)는 연산자 제어 신호들(136) 중 상이한 하나를 수신한다. 일 예에서, 각각의 평가 회로(154)는 값 메모리 회로들(152)로부터 하나 이상의 값을 수신하고, 수신된 연산자 제어 신호들(136)에 기초하여 연산을 수행한다. 각각의 평가 회로(154)는 수행된 연산 및 수신된 값들에 기초하여 출력 값을 출력한다.
평가 회로들(154) 중 2개 이상은 적어도 부분적으로 중첩하는 기간들 동안에 각자의 연산을 수행한다. 따라서, 평가 회로(154)들 중 2개 이상은 각자의 연산들을 서로 병렬로 수행한다.
일 예에서, 평가 회로(154)는 수신된 연산자 제어 신호들(136)에 기초하여 상이한 사이클들 동안 구성될 수 있다. 일 예에서, 제1 평가 회로(154)는 제1 제어 신호(136)에 기초하여 제1 사이클 동안 제1 연산을 수행하고, 제2 제어 신호(136)에 기초하여 제2 사이클 동안 제2 연산을 수행한다.
평가 회로들(154)은, 평가 회로들(154)이 4개의 상태(예를 들어, 제로 값 상태, 1 값 상태, 알려지지 않은 값 상태, 및 3상태) 중 하나를 갖는 값들에 대해 연산을 수행할 수 있도록, 적어도 2 비트 폭을 갖는다. 하나 이상의 예에서, 평가 회로들(154)은 4개의 상태 값 중 하나를 갖는 값들에 대해 연산한다. 따라서, 평가 회로들(154)은 4-상태 평가 회로들이다. 일 예에서, 평가 회로들(154)은 값 메모리 회로들(152)로부터 값들을 수신하는데, 여기서 값들은 4개의 상태 값이다. 평가 회로들(154)은 4개의 상태 값에 대해 연산들을 수행한다. 일 예에서, 아래에서 더 상세히 설명되는 바와 같이, 평가 회로들(154)은 수신된 X 값(예로서, 알려지지 않은 값 상태)에 기초하여 연산들을 수행하고, 알려지지 않은 값 상태가 출력 신호까지 쭉 전파되는지 또는 출력 신호가 상이한 값(예로서, 0의 논리값 또는 1의 논리값)을 갖는지를 결정한다.
평가 회로들(154)은 다중 비트 입력들을 수신하고 다중 비트 입력들에 대해 연산들을 수행하기 위해 광폭 연산자(wide operator)들이 되도록 그룹화될 수 있다. 광폭 연산자들은 2개 이상의 평가 회로(154)를 포함한다. 일 예에서, 2개의 평가 회로(154)는 이중 연산자(dual operator)가 되도록 그룹화될 수 있다. 예를 들어, 2개의 평가 회로(154)는 8개의 입력과 2개의 출력을 갖는 기능을 수행하기 위해 함께 수행하도록 구성될 수 있다. 다른 예들에서, 다른 수의 평가 회로들(154)이 그룹화되어 8개보다 많은 입력과 2개보다 많은 출력을 갖는 기능들을 수행한다. 예를 들어, 평가 회로(154) 각각은 4개의 입력과 하나의 출력을 갖는 기능을 수행할 수 있다. 따라서, "U"개의 평가 회로(154)는 4*U개의 입력 및 U개의 출력을 갖는 기능을 수행하도록 그룹화될 수 있다. 그룹화된 평가 회로들(154)은 임의의 순서로 그룹화될 수 있다. 하나 이상의 예에서, 평가 회로들(154)은 DUV의 연산들에 기초하여 그룹화된다. 예를 들어, DUV는 다중 비트 입력들로부터 결과들을 계산하는 광폭 연산자들 및 단일 비트 입력들로부터 결과들을 계산하는 스칼라 연산자들의 조합을 포함할 수 있다.
하나 이상의 예에서, 평가 회로(120)는 포스(force) 메모리 회로(160)를 추가로 포함한다. 포스 메모리 회로(160)는 연산 회로(150)의 출력에 연결된다. 포스 메모리 회로(160)는 MUX들()을 포함하고, 여기서 G는 1보다 큰 정수이다. 일 예에서, G는 192이다. 다른 예들에서, G는 192 초과 또는 192 미만이다. 포스 메모리 회로(160)는 포스 메모리 제어 신호들(138)을 수신한다. 또한, 포스 메모리 회로(160)는 강제(forced) 값들(139)을 수신한다. 포스 메모리 회로(160)는 평가 회로들(154)의 출력들을 통신 경로(174)에 연결한다. 포스 메모리 회로(160)는 포스 메모리 제어 신호들(138)에 기초하여 평가 회로들(154)로부터 수신된 값 또는 강제 값(139)을 출력하도록 구성된다. 일 예에서, 포스 메모리 회로들(162)은 MUX들을 포함한다. 각각의 MUX는 평가 회로들(154) 각자의 것에 연결된다. 또한, 각각의 MUX는 포스 값을 수신한다. 강제 값들(139)은 명령어 메모리 회로(130) 또는 평가 회로(120) 내의 또 다른 요소로부터 수신될 수 있다. 강제 값들(139)은 미리 결정된 값이라고 지칭될 수 있고, 특정 평가 회로(154)의 출력을 미리 결정된 값에 설정하기 위해 사용될 수 있다. 일 예에서, 포스 메모리 회로()는 제어 신호(138)에 기초하여 평가 회로()로부터 수신된 값 또는 강제 값(139)을 출력한다. 예를 들어, 제1 값을 갖는 제어 신호(138)에 기초하여, 포스 메모리 회로()는 평가 회로()로부터 수신된 값을 출력하고, 제2 값을 갖는 제어 신호(138)에 기초하여, 포스 메모리 회로()는 강제 값(139)을 출력한다. 일 예에서, 테스트 디바이스는 회로 설계의 테스팅 시나리오 또는 거동에 기초하여 연산의 값을 미리 결정된 값(예를 들어, 강제 값(139))에 설정하기 위해 강제 값(139)을 제공한다.
일 예에서, MUX들(142)의 수, 값 메모리 회로들(152)의 수, 평가 회로들(154)의 수, 및 포스 메모리 회로들(162)의 수는 서로 동일하다. 또 다른 예에서, MUX들(142)의 수, 값 메모리 회로들(152)의 수, 평가 회로들(154)의 수, 및 포스 메모리 회로들(162)의 수 중 적어도 하나는 MUX들(142)의 수, 값 메모리 회로들(152)의 수, 평가 회로들(154)의 수, 및 포스 메모리 회로들(162)의 수 중 또 다른 적어도 하나보다 크다.
통신 경로(174)는 평가 회로(120)의 출력을 데이터 회로(170) 및/또는 트레이스 회로(172)에 연결한다. 통신 경로(174)는 통신 버스일 수 있다. 통신 버스의 폭은 평가 회로들(154)의 수와 동일하다. 일 예에서, 통신 경로(174)는 데이터 회로(170) 및/또는 트레이스 회로(172)를 포스 메모리 회로(160)와 연결하는 다중의 트레이스를 포함한다. 일 예에서, 통신 경로(174)는 피드백 경로로서 기능하여, 평가 회로들(154)에 의해 결정된 값들을 데이터 회로(170)에 전달한다.
트레이스 회로(172)는 DUV의 관찰된 부분들(예를 들어, 네트들(nets))에 대한 변화들을 누적한다. 누적된 변화들은 포스 메모리 회로(160) 및 통신 경로(174)의 값들에 기초하여 결정된다. 값들은 연산 회로(150)의 출력 값들 또는 강제 값일 수 있다. 일 예에서, 트레이스 회로(172)는 테스트 디바이스(180)에 연결되고, 누적된 변화들을 추가 처리를 위해(예를 들어, 오류들 및/또는 다른 프로세스들을 검출하기 위해) 테스트 디바이스(180)에 전달한다. 하나 이상의 예에서, 트레이스 회로(172)는 DUV로부터 생성된 데이터를 캡처하는 메커니즘을 제공한다. 트레이스 회로(172)는 포스 메모리 회로(160)의 어느 출력 비트들이 이전 사이클로부터 변화되었는지를 검출한다. 트레이스 회로(172)는 시뮬레이션 벡터 프로세서 시스템(100) 외부의 메모리 디바이스에 데이터를 저장한다. 하나 이상의 예에서, 벡터 프로세서 시스템(100)을 통해 회로 설계를 시뮬레이션하는 동안, 또는 외부 메모리 디바이스가 가득 찬 것으로 결정될 때, 테스트 디바이스(180)는 외부 메모리 디바이스로부터 데이터를 판독한다. 이어서, 테스트 디바이스(180)는 데이터를 볼 수 있는 파일(예로서, 디스플레이 디바이스 상에 출력될 수 있는 파일)이 되도록 변환한다.
데이터 회로(170)는 통신 경로(174)를 통한 연산 회로(150)로부터의 값들 및/또는 테스트 디바이스(180)로부터의 값들을 수신하기 위한 회로 요소들의 조합을 포함한다. 일 예에서, 데이터 회로(170)는 값들을 인터커넥트 회로(140)에 출력한다. 또한, 데이터 회로(170)는 인터커넥트 회로(140)에 값들을 출력하기 위한 회로 요소들의 조합을 포함한다. 일 예에서, 데이터 회로(170)는 플로우 프로세서(110), 검증 인터페이스(112), 및/또는 테스트 디바이스(180) 사이의 데이터를 평가 회로들(154)로부터 생성되는 데이터와 멀티플렉싱한다.
 일 예에서, 데이터 회로(170) 및 트레이스 회로(172)는 시뮬레이션 벡터 프로세서 시스템(100)의 검증 인터페이스(112)에 연결된다. 검증 인터페이스(112)는 트레이스 회로(172)로부터 수신된 누적된 변화들 및/또는 데이터 회로(170)에 입력될 값들을 저장하도록 구성된 입력/출력(I/O) 버퍼를 포함한다. 하나 이상의 예에서, 검증 인터페이스(112)는 테스트 디바이스(180)가 시뮬레이션 벡터 프로세서 시스템(100)으로부터 데이터를 송신 및 수신하기 위한 메커니즘을 제공한다. 일 예에서, 검증 인터페이스(112)는 2개의 버퍼를 갖는다. 테스트 디바이스(180)로부터 입력을 수신하기 위한 제1 버퍼 및 시뮬레이션 벡터 프로세서 시스템(100)에 의해 생성된 출력들을 수신하기 위한 제2 버퍼. 하나 이상의 예에서, 검증 인터페이스(112)는 출력 버퍼에서 이용가능한 데이터가 존재하는지 그리고 언제 존재하는지를 테스트 디바이스(180)에 표시하기 위한 상태 비트들을 제공한다.
일 예에서, 평가 회로(120)에 의해 수행되는 연산들 동안 변화되는 값들은 트레이스 회로(172)에 의해 검증 인터페이스의 I/O 버퍼 내에 저장된다. I/O 버퍼로의 데이터 출력은 값 변화들로서 표현된다. 값 변화들은 테스트 디바이스(180)에 의해 판독될 출력 값들 상의 이벤트들에 대응한다. 일 예에서, 값들의 변화들을 출력하는 것은 통신되는 데이터의 양을 감소시켜, 입력/출력 시간을 감소시킨다. 일 예에서, 검증 인터페이스(112)는 플로우 프로세서(110)에 연결되고, 플로우 프로세서(110) 내의 제어 레지스터들에 제어 신호들을 출력한다. 제어 신호들은 DUV의 평가를 트리거한다.
일 예에서, 검증 인터페이스(112)는 특히 디버그, 설계 의도 체크, 및 검증 의도 체크를 가능하게 한다. 검증 인터페이스(112)는 DUV의 변수들의 값 변화들의 트레이스들을 생성할 수 있다. 일 예에서, 검증 인터페이스(112)는 실패한 연산들의 어써션들을 생성한다. 일 예에서, 실패한 연산의 어써션은 조건이 충족되지 않는 연산이다. 또한, 검증 인터페이스(112)는 평가 회로(120)에 의해 출력된 값들에 기초하여 커버리지 어써션 데이터를 생성한다.
일 예에서, 검증 인터페이스(112)는 테스트 디바이스(180)가 포스 값들을 평가 회로(120)에 전달하기 위한 인터페이스를 제공한다. 포스 값들은 명령어 메모리 회로(130)에 기입되어 포스 메모리 회로(160)에 기입될 수 있다. 포스 값들은 각자의 포스 메모리 회로(160)에 대응하는 명령어 메모리 회로(130) 내의 로케이션들에 기입될 수 있다. 명령어 메모리 회로(130)는 각자의 포스 메모리 제어 신호들(138)과 함께 포스 값들을 출력한다.
또한, 검증 인터페이스(112)는 DUV의 모델에서 값들의 로케이션을 제공한다. 일 예에서, 검증 인터페이스(112)는 DUV의 대응하는 모델을 다시 컴필레이션하지 않고 변화들이 DUV에 대해 이루어지는 것을 허용한다.
하나 이상의 예에서, 시뮬레이션 벡터 프로세서 시스템(100)은 DUV의 기능적 정확성 및 의도(예를 들어, 설계 의도, 전력 의도)를 검증한다. 시뮬레이션 벡터 프로세서 시스템(100)은 DUV의 함수들을 시뮬레이션하는 값들을 사용하여 기능적 정확성을 검증하여, 예상치 못한 값들에 대해 DUV의 출력들을 체크한다. 예상치 못한 값들은 DUV 내의 오류들을 나타낸다. 기능적 정확성은 리셋 입력 시퀀스의 적용에 기초하여 DUV의 내부 변수들이 예상 값에 도달하는지를 체크하는 것을 포함한다. 예에서, 리셋 프로세스 후의 DUV의 변수들의 예상 값들은 제로 값들이다. DUV의 변수들의 값들이 제로로부터 벗어난 것을 검출하는 것은 대응하는 DUV가 정확하게 기능하지 않는다는 것을 나타내기 위해 사용될 수 있다. DUV의 변수들의 값들이 제로 값을 갖는 것을 검출하는 것은 DUV가 오류들이 없고 정확한 기능성을 갖는다는 것을 나타낸다.
시뮬레이션 벡터 프로세서 시스템(100)은 하드웨어 기술 언어들을 사용하여 예상 거동 시퀀스를 특정함으로써 설계 의도를 체크하고, DUV의 부분들이 전력을 절약하기 위해 디스에이블되고 그 후 다시 인에이블될 때 DUV가 정확하게 연산하는지를 체크한다. 전력 의도는 DUV의 부분인 저전력 사양들(예를 들어, UPF(Unified Power Format) 또는 저전력 기술들에 대한 다른 전력 포맷 사양)에서 특정된다.
일 예에서, DUV는 RTL(register transfer level) 및 게이트 레벨에서 모델링된다. 다른 예들에서, DUV를 모델링하기 위해 다른 모델링 기법들이 사용될 수 있다. RTL 모델들은 프로세스들이라고 불리는 병렬 프로그램들의 컬렉션을 포함한다. 각각의 프로세스는 정의된 입력 값(또는 변수)이 변화될 때를 평가한다. 각각의 프로세스는 루프들, 분기 코드, case, 표현식들에 의한 변수들에 대한 할당들(또는 기입들)에 대한 것과 같은 문(statement)을 사용하여 입력들로부터 출력 값들을 생성한다. 표현식은 논리 표현식(예컨대, 특히, AND 표현식, OR 표현식, 및 XOR 표현식) 및 산술 표현식(예컨대, 특히, 덧셈 표현식, 곱셈 표현식, 및 시프트 표현식)일 수 있다. 프로세스들은 DUV의 다른 부분들을 모델링하는 다른 프로세스들에 의해 기입된 값들을 판독함으로써 상호작용한다. 일 예에서, 프로세스들은 평가 회로들(154)에 의한 연산들로서 실행된다. 게이트 레벨 모델들은 하나의 기능을 수행하는 특수 프로세스들이다. 예를 들어, 게이트 레벨 모델들은 논리 함수들(예컨대, 특히, AND 함수들, OR 함수, 및 XOR 함수들)을 수행한다. 함수들은 평가 회로들(154)에 의한 연산들로서 실행될 수 있다.
설계 의도의 함수 정정을 검증하기 위해, DUV는 값의 각각의 비트에 대해 4개의 상태(4-상태)로 모델링된다. 이하에서 더 상세히 설명되는 바와 같이, 각각의 값은 2개의 신호로 표현된다. 신호들의 비트들은 값의 상태를 결정하기 위해 디코딩된다.
4 상태 모델에서, 모든 DUV 변수들은 X 값(예를 들어, 알려지지 않은 값)에 설정된다. X 값은 변수가 0의 값 또는 1의 값을 가질 수 있는 가능성을 나타내고, 변수의 현재 값은 알려지지 않는다. 일 예에서, 리셋 프로세스의 발생에 기초하여, 정확하게 기능하는 DUV의 X 값을 갖는 변수가 0 또는 1 값을 갖도록 업데이트된다. 그러나, 하나 이상의 오류를 갖는 DUV에서, X 값을 갖는 변수는 리셋 값 후에 X 값을 유지한다. X 값을 유지하는 변수는 인에이블되는 전력 신호에 기초하여 적절히 리셋되지 않은 DUV를 나타낼 수 있다. X 값은 DUV 내의 오류들을 검출하기 위해 시뮬레이션 벡터 프로세서 시스템(100)에 의해 검출될 수 있다.
하나 이상의 예에서, 시뮬레이션 벡터 프로세서 시스템(100)은 DUV의 전력 디스에이블된 영역에서의 모든 변수들을 X 값에 설정함으로써 DUV가 4 상태 모델에서 정확하게 기능하는 것을 검증한다. 그 영역에 대해 전력이 인에이블될 때, 시뮬레이션 벡터 프로세서 시스템(100)의 평가 회로들(154)에 의해 연산들을 수행함으로써 변수들이 관찰된다. 변수들이 X 값으로서 남아 있는 것에 기초하여, DUV가 하나 이상의 오류를 갖는다는 결정이 이루어진다. 변수들이 0 값 또는 1 값으로 스위칭하는 것에 기초하여, DUV가 정확하게 기능하고 있다는 결정이 이루어진다.
시뮬레이션 벡터 프로세서 시스템(100)은 4개의 상태 연산자를 포함하는 DUV를 평가한다. 이러한 예에서, 시뮬레이션 벡터 프로세서 시스템(100)은 4개의 상태 연산자로부터 결정된 2개 이상의 결과적인 값을 병합한다. 예를 들어, if-else 문 연산에서, if-else 문 연산을 평가하기 위해 2 상태 평가 프로세스가 사용된다. 일 예에서, if-else 문에 대한 입력들은 a, b, c, 및 d이다. 평가 회로들(154)이 시뮬레이션 벡터 프로세서 시스템(100)을 수행하고, 인에이블 신호가 1의 논리값이라면 a+b를 결정하고, 인에이블 신호가 0의 논리값을 가진다면 c+d를 결정하기 위해 덧셈 연산을 수행한다. 4 상태 평가에서, 인에이블 신호가 0, 1, 또는 X의 논리값을 가질 수 있을 때, a+b와 c+d 둘 모두가 평가되고, 결과들은 병합된다. 2개의 결과를 병합하는 것은 대응하는 신호들의 비트들을 비트별로 병합하는 것을 포함한다. 일 예에서, 값 메모리 회로들(152) 및 평가 회로들(154)은 2개의 결과의 비트들을 병합하는데 이용된다. 2개의 결과의 비트들은 비트별로 그리고 비트들의 값들에 기초하여 병합될 수 있다. 예를 들어, 양쪽 비트들이 0의 값을 가진다면 병합된 신호의 대응하는 비트의 값은 0이고, 양쪽 비트들의 값이 1이라면 병합된 신호의 대응하는 비트의 값은 1이고, 비트들의 값이 서로 상이하다면 병합된 신호의 대응하는 비트의 값은 알려지지 않은 값이다.
상이한 연산들의 출력 값들은 값 메모리 회로들(152)로부터 통신 경로(174), 데이터 회로(170), 및 인터커넥트 회로(140)를 통해 전달된다. 출력 값들은 평가 회로들(154) 중 하나 이상에 제공되어 비트별로 병합된다. 일 예에서, 양쪽 신호들의 비트 0이 0의 값을 가진다면, 출력 신호의 대응하는 비트의 값은 0이다. 또한, 양쪽 신호들의 비트 1이 1의 값을 가진다면, 출력 신호의 대응하는 비트의 값은 1이다. 양쪽 신호들의 비트 2가 상이한 값을 가진다면, 출력 신호의 비트 2는 알려지지 않은 값이다. 다른 예들에서, 다른 조건문들이 4개의 상태 평가를 위해 사용될 수 있다.
시뮬레이션 벡터 프로세서 시스템(100)은 X(알려지지 않은 값) 전파를 구현한다. X 전파는, 분기의 조건이 1의 논리값인 경우, 조건부 연산자들(예를 들어, if-else 연산자들, case 연산자들, 삼항 연산자)의 분기들을 평가하는 것을 포함한다. 조건이 X 값(예를 들어, 알려지지 않은 값)인 경우, 조건이 0의 논리값일 때 그리고 조건이 1의 논리값일 때 할당될 수 있는 모든 가능한 값들이 병합되어 결과를 산출할 것이다. 일 예에서, 하나 이상의 평가 회로(154)가 대응하는 값 메모리 회로(152)로부터 X 값을 수신하고, X 값에 대해 대응하는 연산을 수행하고, 출력 값을 생성한다. 출력 값은 X 값을 가질 수 있고 DUV를 통해 전파된다.
또한, X 전파를 구현하는 것은 모든 입력들이 0 또는 1 값을 가질 때 결과를 0 또는 1 값으로 산출하기 위해 테스트 연산자들(예컨대, 특히, 보다 작은 연산자들(less than operators), 보다 큰 연산자들(greater than operators), 및 논리 동등 연산자들(logical equality operators))을 평가하는 것을 포함한다. 임의의 입력 값이 임의의 비트에서 X 값을 갖는다면, 출력 값은 X 값일 것이다. 일 예에서, 테스트 연산들은 하나 이상의 평가 회로(154)에 의해 수행된다.
4 상태 테스트 연산자(예컨대, case 동등)에서, X 전파는 4 상태 값들을 비트별로 비교하는 것을 포함한다. 2개의 대응하는 비트가 X 값을 갖고, 출력 신호는 X 값 또는 Z 값을 가진 경우, 출력 신호는 Z 값을 갖는다. 하나 이상의 값 메모리 회로(152) 및 평가 회로(154)는 출력의 비트들이 X 값 또는 또 다른 값을 갖는지를 결정하기 위해 값들을 비트별로 비교하기 위해 사용될 수 있다.
산술 연산자들(예컨대, 특히, 덧셈 연산자들, 뺄셈 연산자들, 곱셈 연산자들, 나눗셈 곱셈, 및 지수 연산자들)에 대해, X 전파는, 임의의 입력 비트가 X 값을 가지면, 결과가 X 값을 갖는 연산을 평가하는 것을 포함한다. 일 예에서, 산술 연산들은 하나 이상의 값 메모리 회로(152) 및 평가 회로(154)에 의해 수행된다.
메모리에서의 X 전파는 값을 X 값 또는 제1 어드레스로서 기입하는 것, 4 상태 값을 제1 메모리에 기입하는 것, 및 제1 값이 판독될 때 4 상태 값을 판독 출력하는 것을 포함한다. 값 메모리 회로들(152)은 X 값들을 판독하고 기입한다. 일 예에서, 기입 어드레스가 X 값인 경우, 설계 어써션이 불량 기입을 캐치하기 위해 사용될 수 있으므로 값은 기입되지 않고, 전체 메모리는 X 값에 설정된다. 판독 어드레스가 X 값인 경우, 판독 출력 값은 X 값이다.
하나 이상의 예에서, 병렬성 및 용량을 증가시키기 위해, 다중의 시뮬레이션 벡터 프로세서 시스템(100)이 효율적으로 상호접속된다. 시뮬레이션 벡터 프로세서 시스템(100)은 다중의 상호접속된 시뮬레이션 벡터 프로세서 시스템(100) 사이에서 통신하기 위한 명령어를 포함할 수 있다. 예를 들어, 시뮬레이션 벡터 프로세서 시스템(100)은 이웃 시뮬레이션 벡터 프로세서 시스템으로부터의 값들의 세트를 판독하고 그 값들을 하나 이상의 평가 회로(154)로의 명령어에 대한 입력 값들로서 이용한다. 이러한 예에서, 평가 회로들(154)은 시뮬레이션 벡터 프로세서 시스템으로부터의 값들이 이용가능할 때까지 대응하는 연산들을 수행하기를 기다린다. 일 예에서, 값들은 차단 수신 명령어를 통해 통신된다. 시뮬레이션 벡터 프로세서 시스템(100)은, 평가 회로(154)의 출력들을 취하고 그 출력을 또 다른 시뮬레이션 벡터 프로세서 시스템에 전송하는 비차단(non-blocking) 전송 명령어를 가진다.
하나 이상의 예에서, DUV는 서브회로 그래프들이 되도록 분할될 수 있고, 그 각각은 상이한 시뮬레이션 벡터 프로세서 시스템(100)에 할당된다. 서브회로 그래프들 사이에 들어가는 값들은 비차단 전송 명령어들 및 차단 수신 명령어들을 통해 전송된다. 일 예에서, 다중의 상이한 시뮬레이션 벡터 프로세서 시스템(100)이 동일한 서브회로 그래프에 대응하는 연산들을 수행할 수 있다.
다중의 시뮬레이션 벡터 프로세서 시스템(100)에 걸쳐 확산된 DUV 평가는 동기화를 사용한다. 예를 들어, 동기화 명령어들이 시뮬레이션 벡터 프로세서 시스템들(100) 사이에서 통신되어 시뮬레이션 벡터 프로세서 시스템(100)이 현재 작업 국면을 완료했다는 것을 나타낸다.
각각의 서브회로 그래프는 병렬로 컴필레이션되어 전체 컴필레이션 시간을 감소시킬 수 있다. 실제 프로세서(시스템) 식별자(ID)에 의한 시뮬레이션 벡터 프로세서 시스템으로의 서브회로 그래프의 할당은 식별된 시뮬레이션 벡터 프로세서 시스템을 서브회로 그래프에 초기에 할당함으로써 이루어질 수 있다. 대안적으로, 할당은 상징적인(symbolic) 시뮬레이션 벡터 프로세서 시스템 ID에 대한 것일 수 있다. 상징적인 시뮬레이션 벡터 프로세서 시스템 식별자는 나중에 수행되는 재배치(또는 할당) 단계에서 실제 시뮬레이션 벡터 프로세서 시스템에 할당될 수 있다.
도 2는 값 메모리 회로(152) 및 평가 회로(154)의 예시적인 구성을 도시한다. 값 메모리 회로(152)는 상태 식별 회로(210) 및 값 메모리들(222-228)을 포함한다. 상태 식별 회로(210)는 값 메모리(222)에 연결된다. 단일 상태 식별 회로(210)가 도 2에 도시되어 있지만, 다른 예들에서, 각자의 상태 식별 회로(210)는 각각의 값 메모리(224-228)에 연결된다. 상태 식별 회로(210)는 수신된 값의 상태를 결정한다. 각각의 값은 2개의 신호(4 비트)로 표현된다. 2개의 신호는 값의 4개의 상태를 인코딩한다. 4개의 상태는 0의 상태, 1의 상태, 알려지지 않은 상태(X), 및 3상태(Z)를 포함한다. 일 예에서, 상태 식별 회로(210)는 MUX(212) 및 MUX(214)를 포함한다. MUX(212) 및 MUX(214)는 H 입력 대 1 출력 MUX이고, 여기서 H는 1보다 크다. MUX(212) 및 MUX(214)는 선택 신호(206)를 수신한다. MUX(212) 및 MUX(214)는 제각기 신호들(202 및 204)을 수신한다. MUX(212) 및 MUX(214)는 선택 신호(206)에 기초하여 신호들(202 및 204)의 비트들을 선택하고 출력한다.
신호들(202 및 204) 각각은 J 비트를 포함한다. J는 하나 이상이다. 신호들(202 및 204)의 비트들의 비교에 기초하여, 대응하는 값의 상태가 결정된다. 일 예에서, 둘 다 0의 값을 갖는 신호(202)의 비트 및 신호(204)의 비트에 기초하여, 값의 상태는 논리 0이다. 0의 값을 갖는 신호(202)의 비트 및 1의 값을 갖는 신호(204)의 비트에 기초하여, 값의 상태는 논리 1이다. 1의 값을 갖는 신호(202)의 비트 및 0의 값을 갖는 신호(204)의 비트에 기초하여, 값의 상태는 3상태이다. 또한, 1의 값을 갖는 신호(202)의 비트 및 1의 값을 갖는 신호(204)의 상태에 기초하여, 값의 상태는 알려지지 않은 상태이다. 본 개시내용의 범위를 벗어나지 않고, 상태 식별 회로(210)가 신호들(202 및 204)의 비트들의 상이한 비교 조합들에 기초하여 값의 상태를 결정할 수 있다는 것을 알 것이다.
값 메모리(222, 224, 226, 및 228)는 인터커넥트 회로(140)에 의해 제공되는 값들을 저장한다. 값 메모리들(222, 224, 226 및 228) 각각은 Kx8 비트의 크기를 갖는다. K는 하나 이상이다. 4개의 값 메모리가 도 2에 도시되어 있지만, 다른 예들에서, 값 메모리 회로(152)는 4개보다 많거나 적은 값 메모리를 포함한다.
값 메모리들(222-228)은 평가 회로(154)에 연결된다. 평가 회로(154)는 4상태 및 4입력 평가 회로이다. 또한, 평가 회로(154)는 단일 출력(예를 들어, 하나의 출력 평가 회로)을 가진다. 평가 회로(154)는 4개의 입력 값을 수신하는데, 여기서 각각의 입력 값은 4 상태 입력 값이다. 평가 회로(154)는 명령어 메모리 회로(130)로부터 수신된 제어 신호(136)에 기초하여 입력 값들에 대한 연산을 수행하고 출력 값을 생성한다. 다른 예들에서, 평가 회로(154)는 4개의 입력 평가 회로보다 많거나 적을 수 있다. 추가적으로 또는 대안적으로, 평가 회로(154)는 하나보다 많은 출력을 가질 수 있다.
도 3은 본 개시내용의 실시예에 따른 값 메모리 회로(152) 및 연산자(354)를 도시한다. 값 메모리 회로(152)는 값 메모리들()을 포함한다. L은 1보다 크다. 일 예에서, L은 32이다. 그러한 예에서, 값 메모리 회로(152)는 32개의 값 메모리를 포함한다. 도시되지는 않았지만, 값 메모리 회로(152)는 값 메모리들(322)에 연결된 하나 이상의 상태 식별 회로(210)를 포함한다.
값 메모리들(322)은 인터커넥트 회로(140)에 의해 제공되는 값들을 저장한다. 값 메모리들(322) 각각은 P8 비트의 크기를 갖는다. P는 하나 이상이다.
값 메모리들(322)이 동일한 값 메모리 회로(152)의 일부인 것으로 예시되지만, 다른 예들에서, 값 메모리들(322)은 2개 이상의 값 메모리 회로(152)의 일부일 수 있다. 일 예에서, 각각의 값 메모리(322)는 상이한 값 메모리 회로(152)의 일부이다.
값 메모리들(322)은 연산자(354)에 연결된다. 연산자(354)는 평가 회로들(154) 중 하나 이상을 포함한다. 일 예에서, 연산자(354)는 넓은 연산자이고 하나보다 많은 평가 회로(154)를 포함한다. 하나 이상의 예에서, 넓은 연산자는 2개보다 많은 평가 회로(154)를 포함한다. 하나의 특정 예에서, 연산자(354)는 32개의 평가 회로(154)를 포함한다. 연산자(354)는 4 상태 및 32 입력 연산자이다. 또한, 연산자(354)는 8 출력 연산자이다. 따라서, 연산자(354)는 값 메모리들(322)로부터 32개의 입력 값을 수신하는데, 여기서 각각의 입력 값은 4 상태 입력 값이다. 연산자(354)는 명령어 메모리 회로(130)로부터 수신된 제어 신호(136)에 기초하여 입력 값들에 대한 연산을 수행하고 8개의 출력 값을 생성한다.
도 4는 본 개시내용의 실시예에 따른 예시적인 회로 그래프(400)를 도시한다. 회로 그래프(400)는 다중 레벨을 포함한다. 레벨들 각각의 연산들은 시뮬레이션 벡터 프로세서 시스템(100)에 의해 병렬로 평가될 수 있다. 회로 그래프(400)는 연산들(410, 412, 420, 422, 430, 및 432)을 포함한다. 연산들(410, 420, 및 430)은 "보다 큰" 연산들이다. 더 큰 연산은 제1 입력 신호가 제2 입력 신호보다 큰 것에 기초하여 논리값 0을 그리고 제1 입력 신호가 제2 입력 신호보다 작은 것에 기초하여 논리값 1을 출력한다. 연산들(412, 422, 및 432)은 if-else 연산들이다. if-else 연산은 조건부 연산이다. 일 예에서, if-else 연산은 제1 조건문이 참인 것에 기초하여 제1 출력 신호를 출력하고, 제1 조건문이 참이 아닌 것에 기초하여 제1 출력 신호와 상이한 제2 출력 신호를 출력한다. 연산들(410 및 412)은 입력 신호들 in0 및 in1을 수신한다. 연산(410)의 출력 신호 c0는 연산(412)에 전달된다. 연산(412)의 출력 신호 out0은 연산들(430 및 432)에 전달된다. 연산들(420 및 422)은 입력 신호들 in2 및 in3을 수신한다. 연산(420)의 출력 신호 c1은 연산(422)에 전달된다. 연산(422)의 출력 신호 out1은 연산들(430 및 432)에 전달된다.
연산(430)은 출력 신호 out0 및 출력 신호 out1을 수신하고, 출력 신호 c2를 생성한다. 출력 신호 c2는 연산(432)에 전달된다. 연산(432)은 출력 신호 out0, 출력 신호 out1, 및 출력 신호 c2를 수신하고, 출력 신호 out2를 생성한다.
연산들(410, 412, 420, 422, 430, 및 432)은 상이한 레벨들에 대응한다. 레벨들은 평가 클록 신호의 상이한 클록 사이클들 동안 수행되는 연산들에 대응한다. 일 예에서, 연산들은 연산이 입력으로서 수신하는 신호들의 가용성에 기초하여 수행된다. 일 예에서, 연산들(410 및 420)은 레벨 0에 할당된다. 레벨 0은 베이스 또는 제1 레벨이다. 연산들(410 및 420) 둘 모두는 제각기 입력 신호들 in0, in1, in2, 및 in3에 기초하여 대응하는 연산들을 수행한다. 연산들(412 및 422)은 레벨 1에 할당된다. 연산들(412 및 422)은 연산들(410 및 420)로부터 수신된 신호들에 의존하고, 따라서 연산들(412 및 422)은 연산들(410 및 420)에 할당된 레벨보다 적어도 하나 더 높은 레벨에 할당된다. 연산(430)은 레벨 2에 할당된다. 연산(430)은 제각기 연산들(412 및 422)로부터의 출력 신호 out0 및 out1을 수신한다. 따라서, 연산(430)은 연산들(412 및 422)보다 적어도 하나 더 높은 레벨에 할당된다. 연산(432)은 레벨 3에 할당된다.
각각의 대응하는 레벨의 연산들은 시뮬레이션 벡터 프로세서 시스템(100)에 의해 병렬로(적어도 부분적으로 중첩하는 기간들 동안) 수행될 수 있다. 예를 들어, 레벨 0을 참조하면, 연산들(410 및 420)은 병렬로 수행된다. 또한, 레벨 1의 연산들(412 및 422)은 시뮬레이션 벡터 프로세서 시스템(100)에 의해 병렬로 수행된다.
도 5는 본 개시내용의 실시예에 따른, 회로 설계를 검증하는 방법(500)의 흐름도를 도시한다. 방법(500)은 도 1의 시뮬레이션 벡터 프로세서 시스템(100)에 의해 수행된다. 일 예에서, 방법(500)은 메모리(예로서, 도 10의 메인 메모리(1004) 또는 머신 판독가능 매체(1024))에 저장된 명령어들(예로서, 도 10의 명령어들(1026))로서 프로세서(예로서, 도 10의 처리 디바이스(1002))에 의해 실행된다.
방법(500)의 (510)에서, DUV에 대응하는 명령어들이 시뮬레이션 벡터 프로세서 시스템(100)에서 수신된다. 일 예에서, 테스트 디바이스(180)가 DUV로부터 회로 시뮬레이션 시스템(100)에 대한 명령어들을 생성한다. 명령어들은 플로우 프로세서(110)에 의해 수신된다. 테스트 디바이스(180)는 DUV를 수신하고 DUV로부터 명령어들을 생성하는 컴파일러를 포함한다. 명령어들은 DUV를 벡터 명령어들을 형성하는 병렬 연산자들로서 표현하고, 병렬 연산자들의 그룹들은 명령어들(예를 들어, 벡터 명령어들)을 형성한다.
방법(500)의 (520)에서, 시뮬레이션 명령어들이 플로우 프로세서에 의해 생성된다. 시뮬레이션 명령어들은 테스트 디바이스(180)로부터 수신된 명령어들에 기초하여 플로우 프로세서(110)에 의해 생성된다. 일 예에서, 수신된 명령어들은 하나 이상의 클록 신호를 포함한다. 플로우 프로세서(110)는 클록 신호 또는 신호들의 에지를 검출하는 에지 검출기들을 포함한다. 일 예에서, 플로우 프로세서(110)의 에지 검출기들은 포지티브 에지 및/또는 네거티브 에지를 검출한다. 검출된 에지에 기초하여, 플로우 프로세서(110)는 검출된 에지를 갖는 클록 신호에 기초한 검증을 위해 DUV의 일부분을 식별한다.
일 예에서, DUV는 다중의 클록 신호를 포함한다. 하나의 기간 동안, 클록 신호들의 서브세트가 활성이다. 따라서, 클록 신호들의 에지들을 검출하는 것은 활성 클록 신호 또는 클록 신호들을 검출한다. 플로우 프로세서(110)의 에지 검출기들은 상이한 유형들의 변수 변화들을 검출한다. 예를 들어, 에지 검출기들은 신호 변수 에지들을 검출한다. 포지티브 에지는 0의 값(예를 들어, 저전압 레벨)으로부터 1의 값(예를 들어, 고전압 레벨) 또는 X의 값(예를 들어, 알려지지 않은 값)으로의 변화이다. 포지티브 에지는 X의 값으로부터 1의 값으로의 변화에 추가로 대응할 수 있다. 네거티브 에지는 1의 값으로부터 0의 값 또는 X의 값으로의 변화이다. 일 예에서, 검출되는 에지의 유형은 대응하는 모델에 기초하여 선택가능하다.
일 예에서, 평가될 변수들의 그룹은 검출된 에지의 유형(예를 들어, 포지티브 에지 또는 네거티브 에지)에 대응한다. 또한, 검증을 위한 명령어들의 시퀀스는 적어도 검출된 에지에 대응한다.
플로우 프로세서(110)는 검출된 에지를 갖는 클록 신호 또는 신호들에 기초하여 명령어들을 생성한다. 명령어들은 검증 프로세스를 위한 연산들 및 대응하는 변수들을 포함한다. 연산들은 4개의 상태 연산이고, 변수들은 4개의 상태 변수이다.
일 예에서, 도 4를 참조하면, 회로 그래프(400)가 검출된 에지에 기초하여 선택된다. 회로 그래프(400)에 대응하는 명령어들이 생성되고 명령어 메모리 회로(130)에 전달된다.
방법(500)의 (530)에서, 시뮬레이션 명령어들에 기초하여 제어 신호들이 생성된다. 예를 들어, 도 1을 참조하면, 명령어 메모리 회로(130)는 시뮬레이션 명령어들로부터 제어 신호들(132, 134, 136, 및 138)을 생성한다. 일 예에서, 명령어 메모리 회로(130)는 어느 연산들 및 변수들이 검증되는지 및 어느 사이클들 동안 연산들이 발생하고 변수들이 이용가능한지를 식별한다. 도 4를 참조하면, 명령어 메모리 회로(130)는 연산들(410 및 420)이 클록 신호의 제1 사이클 동안 수행되는 것(예를 들어, 제1 레벨의 일부)을 식별한다. 또한, 연산들(410 및 420)은 동일한 사이클 동안 발생하는 것으로 결정된다. 명령어 메모리 회로(130)는 제1 사이클 동안 연산되는 값들이 입력 신호들 in0, in1, in2, 및 in3인 것을 추가로 결정한다.
명령어 메모리 회로(130)는 연산들(412 및 422)이 시뮬레이션 명령어들에 기초하여 연산들(410 및 420) 후에 다수의 사이클에서 수행될 것임을 결정한다. 따라서, 명령어 메모리 회로(130)는 인터커넥션 회로(140), 값 메모리 회로(152), 및 평가 회로들(154)을 제어하기 위해 대응하는 제어 신호들(132, 134, 및 136)을 생성한다. 연산들(412 및 422)은 동일한 사이클 동안 발생하는 것으로 결정된다. 일 예에서, 연산들(412 및 422)은 연산들(410 및 420) 후에 하나 이상의 사이클에서 수행되고, 제2 레벨의 일부이다. 또한, 연산들(412 및 422)에 의해 연산되는 값들은 입력 신호들 in0, in1, in2, in3, 및 연산들(410 및 420)의 출력 값들 c0 및 c1인 것으로 결정된다.
명령어 메모리 회로(130)는 연산(430)이 연산들(412 및 422) 후에 그리고 제3 레벨의 일부로서 다수의 사이클에서 발생하는 것을 결정한다. 따라서, 명령어 메모리 회로(130)는 인터커넥션 회로(140), 값 메모리 회로(152), 및 평가 회로들(154)을 제어하기 위해 대응하는 제어 신호들(132, 134, 및 136)을 생성한다. 일 예에서, 연산(430)은 연산들(412 및 422) 후에 하나 이상의 사이클에서 발생하는 것으로 결정된다. 명령어 메모리 회로(130)는 연산(432)이 연산(430) 후에 그리고 제4 레벨의 일부로서 다수의 사이클에서 발생하는 것으로 결정되는 것을 결정한다. 따라서, 명령어 메모리 회로(130)는 인터커넥션 회로(140), 값 메모리 회로(152), 및 평가 회로들(154)을 제어하기 위해 대응하는 제어 신호들(132, 134, 및 136)을 생성한다. 예를 들어, 연산(432)은 연산(430) 후에 하나 이상의 사이클에서 발생하는 것으로 결정된다.
명령어 메모리 회로(130)는 제1 사이클 동안 연산되는 값들이 입력 신호들 in0 및 in1인 것을 추가로 결정한다. 일 예에서, 사이클들은 시뮬레이션 벡터 프로세서 시스템(100)의 클록 사이클들에 대응한다. 명령어 메모리 회로(130)는 도 4의 회로 그래프(400)의 각각의 레벨에 대해 추가 명령어들을 생성한다.
명령어 메모리 회로(130)는 각각의 사이클(예를 들어, 각각의 레벨)에 대응하는 것으로 결정되는 식별된 연산들, 활성 사이클들, 및 변수들에 기초하여 제어 신호들(132, 134, 136, 및/또는 138)을 생성한다. 예를 들어, 명령어 메모리 회로(130)는 제1 인터커넥트 제어 신호(132)를 출력하여 인터커넥트 회로(140)에게 제1 사이클 동안 입력 신호들 in0, in1, in2, 및 in3을 값 메모리 회로들()에게 라우팅하도록 지시한다. 명령어 메모리 회로(130)는 어느 어드레스에 값들을 기입할지 그리고 어느 어드레스로부터 값들을 판독할지를 값 메모리 회로들()에 표시하는 판독 제어 신호들() 및 기입 제어 신호들()을 생성한다. 예를 들어, 기입 제어 신호()는 데이터를 기입하기 위한 어드레스 로케이션을 값 메모리 저장 회로()에 표시하기 위해 생성되고, 판독 제어 신호들()은 그로부터 데이터를 판독하기 위한 어드레스 로케이션을 값 메모리 회로들()에 표시하기 위해 생성된다.
일 예에서, 명령어 메모리 회로(130)는 제1 사이클 동안 연산을 수행하도록 평가 회로들()을 구성할 연산자 제어 신호들(136)을 생성한다. 예를 들어, 도 4의 회로 그래프(400)의 레벨 1을 참조하면, 평가 회로들()을 보다 큰 연산자들로서 구성하도록 제어 신호들(136)이 생성된다.
명령어 메모리 회로(130)는 시뮬레이션 명령어들로부터 회로 그래프(400)의 제2 레벨에 대응하는 제어 신호들을 추가로 생성한다. 제2 레벨은 제2 사이클에 대응한다. 제2 사이클 동안, 명령어 메모리 회로(130)는 입력 신호들 in0, in1, in2, in3, 및 신호들 c0 및 c1을 라우팅할 곳을 인터커넥트 회로(140)에 표시하는 인터커넥트 제어 신호(132)를 생성한다. 예를 들어, 명령어 메모리 회로(130)는 인터커넥트 제어 신호(132)를 생성하여 인터커넥트 회로(140)에게 입력 신호 in0, in1, in2, in3, 및 신호들 c0 및 c1을 대응하는 연산들을 수행하는 평가 회로들(154)에 결합된 값 메모리 회로들(152)에 라우팅하도록 지시한다. 명령어 메모리 회로(130)는 어느 어드레스들을 판독할지 및 어느 어드레스에 데이터를 기입할지를 값 메모리 회로들(152)에 지시하기 위해 판독 제어 신호들() 및 기입 제어 신호들()을 추가로 생성한다. 명령어 메모리 회로(130)는 평가 회로들(154)에게 식별된 연산들을 수행할 것을 지시하는 연산자 제어 신호들(136)을 추가로 생성한다.
명령어 메모리 회로(130)는 시뮬레이션 명령어들로부터 회로 그래프(400)의 제3 레벨에 대응하는 제어 신호들을 추가로 생성한다. 제3 레벨은 제3 사이클에 대응한다. 제3 사이클 동안, 명령어 메모리 회로(130)는 신호들 out0 및 out1을 라우팅할 곳을 인터커넥트 회로(140)에 표시하는 인터커넥트 제어 신호(132)를 생성한다. 예를 들어, 명령어 메모리 회로(130)는 인터커넥트 제어 신호(132)를 생성하여 인터커넥트 회로(140)에게 신호들 out0 및 out1을 대응하는 연산들을 수행하는 평가 회로들(154)에 결합된 값 메모리 회로들(152)에 라우팅하도록 지시한다. 명령어 메모리 회로(130)는 판독 제어 신호들() 및 기입 제어 신호들()을 추가로 생성하여, 어느 어드레스들를 판독할지 및 어느 어드레스들에 데이터를 기입할지를 값 메모리 회로들(152)에 지시한다. 명령어 메모리 회로(130)는 평가 회로들(154)에게 제3 사이클의 식별된 연산들을 수행할 것을 지시하는 연산자 제어 신호(136)를 추가로 생성한다.
명령어 메모리 회로(130)는 시뮬레이션 명령어들로부터 회로 그래프(400)의 제4 레벨에 대응하는 제어 신호들을 추가로 생성한다. 제4 레벨은 제4 사이클에 대응한다. 제4 사이클 동안, 명령어 메모리 회로(130)는 신호들 out0 및 out1, 및 신호 c2를 라우팅할 곳을 인터커넥트 회로(140)에 표시하는 인터커넥트 제어 신호(132)를 생성한다. 예를 들어, 명령어 메모리 회로(130)는 인터커넥트 제어 신호(132)를 생성하여 인터커넥트 회로(140)에게 신호들 out0 및 out1, 및 신호 c2를 대응하는 연산들을 수행하는 평가 회로들(154)에 결합되는 값 메모리 회로들(152)에 라우팅하도록 지시한다. 명령어 메모리 회로(130)는 판독 제어 신호들() 및 기입 제어 신호들()을 추가로 생성하여, 어느 어드레스들를 판독할지 및 어느 어드레스들에 데이터를 기입할지를 값 메모리 회로들(152)에 지시한다. 명령어 메모리 회로(130)는 평가 회로들(154)에게 제4 사이클의 식별된 연산들을 수행할 것을 지시하는 연산자 제어 신호들(136)을 추가로 생성한다.
방법(500)의 (540)에서, DUV의 기능성을 검증하기 위한 연산들이 수행된다. 도 1을 참조하면, 평가 회로들(154)이 연산자 제어 신호들(136)에 기초하여 연산들을 수행한다. 평가 회로들(154)은 그 동안 연산자 제어 신호들(136)이 수신되는 사이클들에 기초하여 연산들을 수행한다. 평가 회로들(154)은 대응하는 값 메모리 회로들(152)로부터 값들을 수신하고, 제어 신호(136)에 기초하여 연산들을 수행하고, 연산(예를 들어, 출력) 값들을 생성한다. 연산 값들은 통신 경로(174)에 출력된다.
도 1 및 도 4를 참조하면, 평가 회로들()은, 제1 사이클 동안, 명령어 메모리 회로(130)로부터 대응하는 연산자 제어 신호들(136)을 수신한다. 평가 회로들()은 수신된 연산자 제어 신호들(136)에 기초하여 연산들을 수행한다. 예를 들어, 평가 회로들()은 보다 큰 연산들을 수행한다. 평가 회로()는 값 메모리 회로()로부터 입력 신호 in0 및 입력 신호 in1을 수신하고, "보다 큰" 연산을 수행하며, 출력 신호 c0을 출력한다. 평가 회로()는 값 메모리 회로()로부터 입력 신호들 in2 및 입력 신호 in3을 수신하고, 보다 큰 연산을 수행하고 출력 신호 c1을 출력한다. 출력 신호들 c0 및 c1은 통신 경로(174)에 출력되고, 통신 경로(174)는 값들 c0 및 c1을 데이터 회로(170)에 전달한다. 데이터 회로(170)는 인터커넥트 제어 신호(132)에 기초하여 인터커넥트 회로(140)를 통해 값들 c0 및 c1을 값 메모리 회로(152)에 전달한다. 예를 들어, 인터커넥트 회로(140)는 인터커넥트 제어 신호(132)를 통해 신호 out0을 값 메모리 회로()에 라우팅하고 신호 out1을 값 메모리 회로()에 라우팅한다.
제2 사이클(예를 들어, 제2 기간) 동안, 평가 회로들()은 명령어 메모리 회로(130)로부터 대응하는 연산자 제어 신호들(136)을 수신한다. 평가 회로들()은 수신된 연산자 제어 신호들(136)에 기초하여 연산들을 수행한다. 예를 들어, 평가 회로들()은 if-else 연산들을 수행한다. 평가 회로()는 값 메모리 회로()로부터 입력 신호 in0, 입력 신호 in1, 및 신호 c0을 수신하고, if-else 연산을 수행하고 신호 out0을 출력한다. 평가 회로()는, 값 메모리 회로()로부터 입력 신호 in2, 입력 신호 in3, 및 신호 c1을 수신하고, if-else 연산을 수행하고 신호 out1을 출력한다. 신호들 out0 및 out1은 통신 경로(174)에 출력되고, 통신 경로(174)는 신호들 out0 및 out1을 데이터 회로(170)에 전달한다. 데이터 회로(170)는 인터커넥트 제어 신호(132)에 기초하여 인터커넥트 회로(140)를 통해 값 메모리 회로(152)에 신호들 out0 및 out1을 전달한다. 예를 들어, 인터커넥트 회로(140)는 인터커넥트 제어 신호(132)를 통해 신호 out0을 값 메모리 회로()에 라우팅하고 신호 out1을 값 메모리 회로()에 라우팅한다.
제3 사이클 동안, 평가 회로()는 명령어 메모리 회로(130)로부터 대응하는 연산자 제어 신호(136)를 수신한다. 평가 회로()는 수신된 제어 신호(136)에 기초하여 연산을 수행한다. 예를 들어, 평가 회로()는 보다 큰 연산을 수행한다. 평가 회로()는 값 메모리 회로()로부터 신호들 out0 및 out1을 수신하고, 보다 큰 연산을 수행하며, 신호 c2를 출력한다. 신호 c2는 통신 경로(174)에 출력되고, 통신 경로(174)는 신호 c2를 데이터 회로(170)에 전달한다. 데이터 회로(170)는 인터커넥트 제어 신호(132)에 기초하여 인터커넥트 회로(140)를 통해 신호 c2를 값 메모리 회로(152)에 전달한다. 예를 들어, 인터커넥트 회로(140)는 인터커넥트 제어 신호(132)를 통해 신호 c2를 값 메모리 회로()에 라우팅한다.
제4 사이클 동안, 평가 회로()는 명령어 메모리 회로(130)로부터 대응하는 연산자 제어 신호(136)를 수신한다. 평가 회로()는 수신된 제어 신호(136)에 기초하여 연산을 수행한다. 예를 들어, 평가 회로()는 if-else 연산을 수행한다. 평가 회로()는 값 메모리 회로()로부터 신호들 out0, out1, 및 c2를 수신하고, if-else 연산을 수행하고, 신호 out2를 출력한다. 신호 out2는 통신 경로(174)에 출력되고, 통신 경로(174)는 신호 out2를 데이터 회로(170)에 전달한다. 신호 out2는 DUV의 검증을 위해 트레이스 회로(172)에 전달된다.
방법(500)의 (550)에서, DUV의 기능성이 검증된다. 예를 들어, 트레이스 회로(172)는 신호 out2를 수신하고 대응하는 값을 업데이트한다. 하나 이상의 예에서, 트레이스 회로(172)는 값들 c0, c1, out0, out1, 및 c2를 추가로 수신하고, 대응하는 값들을 업데이트한다. 업데이트된 값들은 DUV의 검증을 위해 사용되도록 테스트 디바이스(180)에 출력된다.
하나 이상의 예에서, 시뮬레이션 벡터 프로세서 시스템(100)은 하드웨어 조화 시뮬레이션(hardware congruency simulation)을 수행한다. 하드웨어 조화(hardware congruency)는 설계를 구현하는 하드웨어의 거동과 매칭되는 RTL 디스크립션들에 대한 시뮬레이션 모델이다. 하드웨어 조화 모델에서, 실제 하드웨어는 레이턴시를 드러내며, 모델링 및 검증 동안 발생하는 순간 전이들을 겪지 않는다. 임의의 0-지연 전이들 또는 글리치들은 시뮬레이션의 아티팩트로서 간주되고, 과도 효과들이 억제된다. 동기식 시스템의 최종(또는 정상 상태) 배치는 대응하는 회로 설계의 평가 동안 결정되고 사용된다. 또한, 에지 트리거된 상태 요소들 사이의 관성 지연은 레지스터들이 중첩하는 시간 기간 동안 계산되는 데이터를 저장하는 것을 방지하는 극소 지연(infinitesimal delay)으로서 모델링된다.
도 6은 본 개시내용의 실시예에 따른 연산자 레벨에서의 조화에 대한 상태 메모리(600)의 예시적인 도면이다. 2가지 유형의 상태 연산자, 즉 플롭(예를 들어, 플립플롭) 및 래치에 대해 조화가 구현된다. 플롭들은 클록 신호의 에지들에 의해 제어된다. 래치들은 클록 신호의 레벨들에 의해 제어된다.
상태 메모리(600)는 도 1의 시뮬레이션 벡터 프로세서 시스템(100)의 일부로서 실행될 수 있다. 상태 메모리(600)는 메모리(610) 및 메모리(630)를 포함한다. 메모리(610 및 630)는 값 메모리 회로들(152) 내에 구현될 수 있다. 후술하는 바와 같이, 버퍼(620)는 저장될 값을 메모리(630)에 제공한다. 일 예에서, 상태 메모리(600)는 플롭 연산과 연계하여 사용된다. 플롭 연산은 2개의 MUX 연산, 예를 들어, MXU(640) 및 MUX(650)이 되도록 쪼개질 수 있다. 버퍼(620), MUX(640), 및 MUX(650)에 대응하는 연산들은 평가 회로들(154)에 의해 구현될 수 있다.
메모리(610)는 값들 d, 값들 q0을 저장하고, 값들 d, 값들 q0, 제어 신호 c, 및 제어 신호 r을 출력한다. 버퍼(620)는 값들 d를 수신하고 버퍼링된 값 d를 메모리(630)에 출력한다.
입력 값 d의 저장된 값은 샘플링된 값 d'(sample(d))라고 지칭된다. MUX(640)는 메모리(630)로부터 샘플링된 값 d', 출력 값 q0, 및 메모리(610)로부터 제어 신호 c를 수신한다. MUX(650)는 MUX(640)의 출력(예를 들어, 출력 신호 0), 신호 1'b, 및 제어 신호 r을 수신한다. MUX(650)는 값 q를 상태 메모리(600)의 출력 신호로서 출력한다.
하나 이상의 예에서, 플롭 연산에서의 조화는 always_ff@(posedge clock)q=data로서 정의된다. 플롭 연산에서, 에지 트리거된 플롭 연산자(flop operator)들 사이의 초기 지연의 조화를 이루기 위해, 플롭의 데이터 입력의 값은 제1 사이클의 시작에서 저장된다. 저장된 값은 포지티브 에지를 갖는 대응하는 클록 신호에 기초하여 플롭 연산의 출력을 업데이트하기 위해 사용된다.
평가 프로세스 동안, 제1 사이클(예를 들어, 기간)의 시작(예를 들어, 시작)은 TA(time advance)로서 정의될 수 있다. 각각의 TA에서, 플롭 연산은 TA 모드에서 시뮬레이션 벡터 프로세서 시스템(100)에 의해 실행된다. TA 모드에서, 플롭 연산의 데이터 입력의 값이 저장된다. 데이터 입력의 값은 상태 메모리(600)에 저장된다. 예를 들어, 데이터 입력의 값은 입력 값 d로서 메모리(630)에 저장된다. 값 d를 저장하는 것은 입력 값 d를 값 메모리 회로(152)에 저장하는 것을 포함할 수 있다. 평가 회로(152)는 값 d의 버퍼 연산을 수행하고 버퍼링된 값 d는 포스 메모리 회로(160), 통신 경로(174), 데이터 회로(170), 및 인터커넥트 회로(140)를 통해 값 메모리 회로(152)에 전달된다. 일 예에서, 시뮬레이션 벡터 프로세서 시스템(100)에 의한 대응하는 DUV의 평가 동안, 샘플링된 데이터 값 d'이 클록 신호의 포지티브 에지에 기초하여 출력된다.
오류 거부 조화(error rejection congruency)는 각각의 TA에서 메모리(630)에 샘플(클록)로서 클록 신호의 값을 저장함으로써 구현된다. 게다가, 출력 신호 q의 값은 각각의 TA에서 메모리(630)에 sample(q)로서 저장된다. 출력 신호의 값은 TA에서의 sample(q) 값이다. 네거티브 에지(예를 들어, 하이 전압 값으로부터 로우 전압 값으로의 전이)가 뒤따라오는 포지티브 에지(예를 들어, 로우 전압 값으로부터 하이 전압 값으로의 전이)를 갖는 DUV의 평가에 사용되는 평가 클록 신호에 기초하여, 클록 신호의 0 값이 샘플(클록)의 값과 동일하므로 클록 오류가 검출된다. 검출된 오류에 기초하여, 플롭 연산자의 출력은 메모리(610) 내에 저장된 sample(q)이다.
도 7은 본 개시내용의 실시예에 따른, 플롭 연산자 내에서 조화를 수행하기 위한 방법(700)의 흐름도를 도시한다. 방법(700)은 시뮬레이션 벡터 프로세서 시스템(100)에 의해 수행된다. 방법(700)의 (710)에서, 새로운 시뮬레이션 시간(예를 들어, TA)의 시작에서, 인터커넥션 회로들(140), 및 하나 이상의 평가 회로(154)는 제어 신호들(132 및 136)에 기초하여 하나 이상의 값 메모리 회로(152)에 데이터 입력(sample(d)) 및 데이터 출력(sample(qout))을 저장하도록 지시받는다. 예를 들어, 평가 회로들(154) 중 하나 이상은 제어 신호(136)에 기초하여 플롭 연산자로서 구성되고 또한 값 sample(d) 및 sample(qout)을 생성하는데, 이 값들은 통신 경로(174), 데이터 회로(170), 및 인터커넥션 회로(140)를 통해 값 메모리 회로들(152)에 저장된다.
방법(700)의 (720)에서, 플롭 연산자의 출력을 데이터 입력 값 또는 데이터 출력 값에 설정할지에 대한 결정이 이루어진다. 플롭 연산자의 출력을 데이터 입력 값에 설정하기 위한 결정은 클록 신호의 포지티브 에지를 검출한 것에 기초하여 이루어진다. 일 예에서, 플롭 연산자의 출력은 활성 클록 신호에 기초하여 값 sample(d)의 값에 설정된다. 일 예에서, 활성 클록 신호는 클록 신호의 포지티브 에지를 검출하는 것에 대응한다. 다른 예들에서, 활성 클록 신호는 클록 신호의 네거티브 에지에 대응한다. 방법(740)의 (730)에서, 플롭 연산자의 출력은 (720)에서 이루어진 결정에 기초하여 데이터 입력 값에 설정된다. 예를 들어, 플롭 연산자의 출력은 클록 신호의 포지티브 에지의 검출에 기초하여 데이터 입력 값에 설정된다. 활성 클록 신호에 기초하여 플롭 연산자의 출력을 sample(data)에 설정하는 것은 플롭 연산자의 출력이 정확하고 안정된 값을 갖는 것을 보장한다. 일 예에서, 명령어 메모리 회로(130)는 포지티브 에지의 검출에 기초하여 인터커넥트 제어 신호들(132), 판독 제어 신호들(), 기입 제어 신호들(), 및 연산 제어 신호들(136)을 생성한다. 인터커넥트 제어 신호(132), 판독 제어 신호들(), 기입 제어 신호들(), 및 연산 제어 신호들(136)은 플롭 연산을 수행하는 인터커넥트 회로(140), 값 메모리 회로들(152), 및 평가 회로들(154)에게 값 sample(data)를 출력하도록 지시한다.
도 7의 (720)을 더 참조하면, 글리치(glitch) 신호의 검출에 기초하여 플롭 연산자의 출력 값을 데이터 출력 값에 설정하기 위한 결정이 이루어진다. 예를 들어, 플롭 연산자의 출력을 sample(qout)에 설정하기 위한 결정은 클록 신호에서 글리치를 검출한 것에 기초하여 이루어진다. 클록 글리치는 미리 결정된 시간 기간 내에 클록 신호의 네거티브 에지가 뒤따라오는 포지티브 에지의 검출에 대응한다. 이 시간 기간은 클록 신호의 듀티 사이클보다 작다. 방법(700)의 (740)에서, 클록 신호에서 글리치를 검출한 것에 기초하여, 플롭 연산자의 출력은 데이터 출력 값(예를 들어, sample(qout))에 설정된다. 따라서, 클록 신호의 글리치의 검출에 기초하여, 플롭 연산자의 출력은 변화되지 않는다. 일 예에서, 명령어 메모리 회로(130)는 글리치의 검출에 기초하여 인터커넥트 제어 신호(132), 판독 제어 신호들(), 기입 제어 신호들(), 및 연산 제어 신호들(136)을 생성한다. 인터커넥트 제어 신호(132), 판독 제어 신호들(), 기입 제어 신호들(), 및 연산 제어 신호들(136)은 플롭 연산을 수행하는 인터커넥트 회로(140), 값 메모리 회로들(152), 및 평가 회로들(154)에게 값 sample(qout)를 출력하도록 지시한다.
하나 이상의 예에서, 시뮬레이션 벡터 프로세서 시스템(100)은 TA에서 sample(q)를 저장함으로써 래치 연산자에 대한 조화(congruency)를 수행한다. 낮은 전압 레벨(예를 들어, 0 값)로 전이하는 인에이블 신호(예를 들어, 신호 en)에 기초하여, 출력 값 q는 값 sample(q)로서 어써트된다. 이러한 프로세스는 데이터 신호의 변화에 대한 관성 지연을 모델링한다. 래치는 문: alway_latch if(en) q=data에 기초하여 구현된다. 명령어 메모리 회로(130)는 인에이블 신호가 로우 값으로 전이된 것을 검출한 것에 기초하여 인터커넥트 제어 신호(132), 판독 제어 신호들(), 기입 제어 신호들(), 및 연산 제어 신호들(136)을 생성한다. 인터커넥트 제어 신호(132), 판독 제어 신호들(), 기입 제어 신호들() 및 연산 제어 신호들(136)은 래치 연산을 수행하는 인터커넥트 회로(140), 값 메모리 회로들(152), 및 평가 회로들(154)에게 값 sample(q)를 출력하도록 지시한다.
하나 이상의 예에서, 시뮬레이션 벡터 프로세서 시스템(100)은 리셋 제어 신호, 세트 제어 신호, 및/또는 클록 신호에 기초하여 비동기 제어 조화를 구현한다. 예를 들어, 리셋 제어는 리셋 제어 신호의 값이 1일 때, 대응하는 연산자의 출력 값이 0에 설정되는 것에 기초하여 구현된다. 리셋 제어 신호의 값이 알려지지 않은 값(예를 들어, X 값)일 때, 대응하는 연산을 수행하는 평가 회로들(154)의 출력 값은 0의 값을 샘플링된 출력 값 sample(q)와 병합하는 것에 기초한다. 일 예에서, 제어 신호에 기초하여, 세트가 대응하는 연산을 수행하는 평가 회로들(154)의 출력 값을 1에 설정하는데 이용될 수 있다.
하나 이상의 예에서, 듀얼 클록 플롭 연산이 2개의 클록 신호 및 2개의 데이터 신호를 사용한다. 조화는 전술한 바와 같은 단일 클록 플롭 연산자에 적용되는 조화 방법을 듀얼 클록 플롭 연산으로 확장함으로써 구현될 수 있다.
하나 이상의 예에서, 클록 신호 에지들의 검출은 DUV를 평가할 때 조화 연산을 위해 사용된다. 클록 신호 에지들이 TA에서 검출된다. 시뮬레이션 벡터 프로세서 시스템(100)은 클록 신호들의 에지들을 검출한다. 예를 들어, 평가 회로들(154) 중 하나 이상은 클록 신호들의 에지들을 검출한다. 검출된 에지들은 통신 경로(174)를 통해 값 메모리 회로들(152)에 저장된다. 하나 이상의 예에서, 검출된 에지들은 평가 회로들(154)로부터 통신 경로(174)를 통해 데이터 회로(170) 및/또는 트레이스 회로(172)에 출력된다.
클록 신호 에지들은 클록 신호의 포지티브 에지들 및 네거티브 에지들에 대응한다. 클린 포지티브 에지(clean positive edge)는 로우 전압 값으로부터 하이 전압 값으로의 전이에 대응한다. 클린 네거티브 에지는 하이 전압 값으로부터 네거티브 전압 값으로의 전이에 대응한다. 모호한 포지티브 에지(ambiguous positive edge)는 알려지지 않은 값(예를 들어, X 값)으로부터 하이 전압 값으로의 전이 또는 로우 전압 값으로부터 알려지지 않은 값으로의 전이에 대응한다. 모호한 네거티브 에지는 하이 전압 값으로부터 알려지지 않은 값으로의 그리고 알려지지 않은 값으로부터 로우 전압 값으로의 전이에 대응한다.
일 예에서, 클록 신호에서의 글리치는 저장된 클록 신호 값이 0(예를 들어, 낮은 전압 값)일 때 네거티브 에지의 검출에 기초하여 그리고 저장된 클록 신호 값이 1(예를 들어, 높은 전압 값)일 때 포지티브 에지의 검출에 기초하여 결정된다. 평가 회로들(154)은 클록 신호들의 에지들을 검출하고 클록 신호들의 검출된 에지들에 기초하여 글리치를 검출한다.
일 예에서, 클록 신호에서의 글리치는 저장된 클록 신호 값이 0(예를 들어, 낮은 전압 값)일 때 네거티브 에지의 검출에 기초하여 그리고 저장된 클록 신호 값이 1(예를 들어, 높은 전압 값)일 때 포지티브 에지의 검출에 기초하여 결정된다.
하나 이상의 예에서, 알려지지 않은 값(예를 들어, X 값) 전파 모드에서, 모호한 클록 에지들에 기초하여, 출력 값(예를 들어, 하나 이상의 평가 회로(154)로부터의 출력 신호)은 병합된 sample(q) 값 및 sample(d) 값에 기초한다(q = merge(sample(q), sample(d)). 오류 제거 모드에서, 모호한 클록 에지들에 기초하여, 평가 회로들(154) 중 하나 이상은 sample(q)의 값을 갖는 출력 값 q를 출력한다. 낙관적 에지 모드(optimistic edge mode)에서, 클린 클록 에지들 및 모호한 클록 에지들의 검출에 기초하여, 평가 회로들(154) 중 하나 이상은 클록 신호의 에지에 기초하여 트리거된 플롭 연산자에 대한 sample(d)의 값을 갖는 출력 값 q를 출력한다.
도 8은 본 개시내용의 실시예에 따른 조화 시뮬레이션(800)을 도시한다. 일 예에서, 조화 시뮬레이션(800)은 도 1의 시뮬레이션 벡터 프로세서 시스템(100)에 의해 실행된다. 조화 시뮬레이션(800)은 TA에서 클록 신호의 상태(예를 들어, 클록 신호 값)를 저장하는 단계(810)를 포함한다. 예를 들어, 클록 신호(802)의 상태는 시뮬레이션 벡터 프로세서 시스템(100)에 의해 (810)에서 저장된다. 일 예에서, 클록 신호(802)의 상태는 값 메모리 회로들(152) 중 하나 이상 내에 시뮬레이션 벡터 프로세서 시스템(100)에 의해 저장된다.
(800)의 (820)에서, 조합 클록 신호가 생성된다. 조합 클록 신호는 (810)에서 저장된 클록 상태 및 값 메모리 회로들(152) 중 하나 이상 내에 저장된 클록 신호(802)에 기초하여 평가 회로들(154) 중 하나 이상에 의해 생성된다. 평가 회로들(154) 중 하나 이상은 저장된 클록 스테이지 및 클록 신호(802)에 기초하여 OR 함수를 수행함으로써 조합 클록 신호를 생성한다. 또 다른 예에서, 평가 회로들(154) 중 하나 이상은 저장된 클록 스테이지 및 클록 신호(802)에 기초하여 AND 함수를 수행함으로써 조합 클록 신호를 생성한다. 조합 클록 신호(822)는 (810)에 피드백되고, 클록 신호(802)의 상태를 생성하고 저장하기 위해 사용된다. 예를 들어, 조합 클록 신호(822)는 통신 경로(174) 및 인터커넥션 회로(140)를 통해 값 메모리 회로들(152)에 통신된다. 조합 클록 신호(822)는 평가 회로들(154) 중 하나 이상에 의해 수신되는데, 평가 회로들(154) 중 하나 이상은 통신 경로(174) 및 인터커넥션 회로(140)를 통해 값 메모리 회로들(152) 중 하나 이상에 저장되는 클록 신호(802)의 상태를 생성한다.
(830)에서, 조합 클록 신호(822)의 에지가 검출된다. 예를 들어, 하나 이상의 평가 회로(154)는 조합 클록 신호(822)의 포지티브 및/또는 네거티브 에지들을 검출한다. (840)에서, 클록 생성 로직(도메인) 외부에 있는 연산자(예를 들어, 특히, 플롭 연산자 또는 래치 연산자)의 상태가 설정된다. 예를 들어, 평가 회로(154)들 중 하나 이상은 클록 생성 로직 외부에 있는 로직에 대응하는 연산을 수행하도록 설정된다. (850)에서, (840)의 출력(842) 및 클록 신호(802)에 기초하여 클록 생성 로직 외부에 있는 회로 요소들에 대해 조합이 수행된다. 예를 들어, 평가 회로들(154)은 클록 생성 로직 외부에 있는 로직에 기초하여 OR 연산 또는 AND 연산을 수행한다. 출력(850)은 (840)에 피드백된다. 예를 들어, 평가 회로들(154)의 출력들은 값 메모리 회로들에 제공되고 추가 연산들에서 사용된다.
도 9는 집적 회로를 나타내는 설계 데이터 및 명령어들을 변환하고 검증하기 위해 집적 회로와 같은 제조 물품의 설계, 검증, 및 제조 동안 사용되는 프로세스들의 예시적인 세트(900)를 도시한다. 이러한 프로세스들 각각은 다중의 모듈 또는 연산으로서 구조화되고 가능해질 수 있다. 용어 'EDA'는 용어 'Electronic Design Automation'을 나타낸다. 이러한 프로세스들은 설계자에 의해 공급되는 정보, 즉 EDA 프로세스들(912)의 세트를 사용하는 제조 물품을 생성하도록 변환되는 정보를 갖는 제품 아이디어(910)의 생성으로 시작한다. 설계가 완료될 때, 설계는 테이핑 아웃(tape-out)되고(934), 이것은 집적 회로에 대한 조형물(예를 들어, 기하학적 패턴들)이 마스크 세트를 제조하기 위해 제조 설비에 전송되고, 마스크 세트는 이후 집적 회로를 제조하기 위해 사용된다. 테이핑 아웃 후에, 반도체 다이가 제조되고(936), 패키징 및 조립 프로세스들(938)이 수행되어 완성된 집적 회로(940)를 산출한다.
회로 또는 전자 구조체에 대한 사양들은 로우 레벨 트랜지스터 재료 레이아웃들로부터 하이 레벨 기술 언어들까지의 범위일 수 있다. VHDL, Verilog, SystemVerilog, SystemC, MyHDL 또는 OpenVera와 같은 HDL(hardware description language)을 이용하여 회로들 및 시스템들을 설계하기 위해 하이 레벨의 표현이 이용될 수 있다. HDL 기술은 논리 레벨 RTL(register transfer level) 기술, 게이트 레벨 기술, 레이아웃 레벨 기술, 또는 마스크 레벨 기술로 변환될 수 있다. 더 상세한 기술인 각각의 더 낮은 표현 레벨은 설계 기술 내에 더 유용한 상세사항, 예를 들어, 기술을 포함하는 모듈들에 대한 더 많은 상세사항을 추가한다. 더 상세한 기술들인 더 낮은 표현 레벨들은 컴퓨터에 의해 생성되거나, 설계 라이브러리로부터 도출되거나, 또는 또 다른 설계 자동화 프로세스에 의해 생성될 수 있다. 더 상세한 기술들을 특정하기 위한 표현 언어의 더 낮은 레벨에서의 사양 언어의 예는 SPICE이며, 이것은 많은 아날로그 컴포넌트들을 갖는 회로들의 상세한 기술들을 위해 사용된다. 표현의 각각의 레벨에서의 기술들은 그 계층의 대응하는 도구들(예컨대, 공식 검증 도구)에 의한 사용을 위해 인에이블된다. 설계 프로세스는 도 9에 묘사된 시퀀스를 이용할 수 있다. 기술된 프로세스들은 EDA 제품들(또는 도구들)에 의해 가능해진다.
시스템 설계(914) 동안, 제조될 집적 회로의 기능성이 특정된다. 설계는 전력 소비, 성능, 면적(물리적 및/또는 코드 라인들), 및 비용의 감소 등과 같은 원하는 특성들을 위해 최적화될 수 있다. 설계를 상이한 타입들의 모듈들 또는 컴포넌트들로 파티셔닝하는 것은 이 스테이지에서 발생할 수 있다.
로직 설계 및 기능 검증(916) 동안, 회로 내의 모듈들 또는 컴포넌트들은 하나 이상의 기술 언어로 특정되고, 사양은 기능 정확도에 대해 체크된다. 예를 들어, 회로의 컴포넌트들은 설계되는 회로 또는 시스템의 사양의 요건들과 매칭되는 출력들을 생성하도록 검증될 수 있다. 기능적 검증은 시뮬레이터들 및 다른 프로그램들 예컨대 테스트벤치 생성기들, 정적 HDL 체커들, 및 공식 검증기들을 사용할 수 있다. 일부 실시예들에서, '에뮬레이터들' 또는 '프로토타이핑 시스템들'이라고 지칭되는 컴포넌트들의 특수 시스템들은 기능적 검증의 속도를 높이기 위해 사용된다.
테스트를 위한 합성 및 설계(918) 동안, HDL 코드는 네트리스트(netlist)로 변환된다. 일부 실시예들에서, 네트리스트는 그래프 구조일 수 있는데, 그래프 구조의 에지들은 회로의 컴포넌트들을 나타내고, 그래프 구조의 노드들은 컴포넌트들이 어떻게 상호접속되는지를 나타낸다. HDL 코드 및 네트리스트 둘 다는, 제조될 때, 집적 회로가 특정된 설계에 따라 수행하는 것을 검증하기 위해 EDA 제품에 의해 사용될 수 있는 계층적 제조 물품들이다. 네트리스트는 타깃 반도체 제조 기술에 대해 최적화될 수 있다. 덧붙여, 완성된 집적 회로는 집적 회로가 사양의 요건들을 만족시키는 것을 검증하기 위해 테스트될 수 있다.
네트리스트 검증(920) 동안, 네트리스트는 타이밍 제약의 준수에 대해 및 HDL 코드와의 대응관계에 대해 체크된다. 설계 계획(922) 동안, 집적 회로에 대한 전체 층별 평면도(floor plan)가 구축되고 타이밍 및 최상위 레벨 라우팅을 위해 분석된다.
레이아웃 또는 물리적 구현(924) 동안, 물리적 배치(트랜지스터들 또는 커패시터들과 같은 회로 컴포넌트들의 포지셔닝) 및 라우팅(다중의 전도체에 의한 회로 컴포넌트들의 연결)이 발생하고, 특정 로직 기능들을 가능하게 하기 위한 라이브러리로부터의 셀들의 선택이 수행될 수 있다. 본 명세서에서 사용될 때, 용어 '셀'은 부울 로직 기능(예로서, AND, OR, NOT, XOR) 또는 (플립플롭 또는 래치와 같은) 저장 기능을 제공하는 트랜지스터들의 세트, 다른 컴포넌트들, 및 인터커넥션들을 특정할 수 있다. 본 명세서에서 사용될 때, 회로 '블록'은 두 개 이상의 셀을 지칭할 수 있다. 셀 및 회로 블록 둘 다는 모듈 또는 컴포넌트라고 지칭될 수 있고, 물리적 구조들로서 및 시뮬레이션들로 둘 다로 인에이블된다. 크기와 같은 파라미터들은 ('표준 셀들'에 기초하여) 선택된 셀들에 대해 특정되고, EDA 제품들에 의한 사용을 위해 데이터베이스에서 액세스 가능하게 된다.
분석 및 추출(926) 동안, 회로 기능은 레이아웃 레벨에서 검증되고, 이는 레이아웃 설계의 정교화(refinement)를 허용한다. 물리적 검증(928) 동안, DRC 제약조건, 전기적 제약조건, 리소그래피 제약조건과 같은 제조 제약조건이 올바르고 또한 회로 기능이 HDL 설계 규격과 매칭되는 것을 보장하기 위해 레이아웃 설계가 체크된다. 해상도 향상(930) 동안, 레이아웃의 기하 구조가 회로 설계가 어떻게 제조되는지를 개선하도록 변환된다.
테이핑 아웃 동안, 데이터는 리소그래피 마스크들의 산출을 위해 (적절한 경우에 리소그래피 향상들이 적용된 후에) 사용되도록 생성된다. 마스크 데이터 준비(932) 동안, '테이핑 아웃' 데이터는 완성된 집적 회로들을 산출하기 위해 사용되는 리소그래피 마스크들을 산출하기 위해 사용된다.
(도 11의 컴퓨터 시스템(1000)과 같은) 컴퓨터 시스템의 저장 서브시스템은 본 명세서에서 설명되는 EDA 제품들의 일부 또는 전부에 의해 사용되는 프로그램들 및 데이터 구조들, 및 라이브러리에 대한 셀들의 개발을 위해 그리고 라이브러리를 사용하는 물리적 및 논리적 설계를 위해 사용되는 제품들을 저장하기 위해 사용될 수 있다.
도 10은 머신으로 하여금 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하게 야기하기 위한 명령어들의 세트가 그 내에서 실행될 수 있는 컴퓨터 시스템(1000)의 예시적인 머신을 도시한다. 대안적인 구현들에서, 머신은 LAN, 인트라넷, 엑스트라넷, 및/또는 인터넷으로 다른 머신들에 접속(예를 들어, 네트워킹)될 수 있다. 머신은 클라이언트-서버 네트워크 환경에서 서버 또는 클라이언트 머신의 자격으로, 피어-투-피어(또는 분산형) 네트워크 환경에서 피어 머신으로서, 또는 클라우드 컴퓨팅 인프라구조 또는 환경에서 서버 또는 클라이언트 머신으로서 동작할 수 있다.
머신은 PC(personal computer), 태블릿 PC, STB(set-top box), PDA(Personal Digital Assistant), 셀룰러 전화, 웹 기기, 서버, 네트워크 라우터, 스위치 또는 브리지, 또는 해당 머신에 의해 취해질 액션들을 특정하는 명령어들의 세트(순차적 또는 다른 방식)를 실행할 수 있는 임의의 머신일 수 있다. 또한, 단일 머신이 예시되어 있지만, "머신"이라는 용어는 또한 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하기 위해 명령어들의 세트(또는 다중의 세트)를 개별적으로 또는 공동으로 실행하는 머신들의 임의의 컬렉션을 포함하는 것으로 간주되어야 할 것이다.
예시적인 컴퓨터 시스템(1000)은, 버스(1030)를 통해 서로 통신하는, 처리 디바이스(1002), 메인 메모리(1004)(예를 들어, ROM(read-only memory), 플래시 메모리, SDRAM(synchronous DRAM)과 같은 DRAM(dynamic random access memory), 정적 메모리(1006)(예를 들어, 플래시 메모리, SRAM(static random access memory) 등), 및 데이터 저장 디바이스(1018)를 포함한다.
처리 디바이스(1002)는 마이크로프로세서, 중앙 처리 유닛, 또는 그와 유사한 것과 같은 하나 이상의 프로세서를 나타낸다. 보다 구체적으로, 처리 디바이스는 CISC(complex instruction set computing) 마이크로프로세서, RISC(reduced instruction set computing) 마이크로프로세서, VLIW(very long instruction word) 마이크로프로세서, 또는 다른 명령어 세트들을 구현하는 프로세서, 또는 명령어 세트들의 조합을 구현하는 프로세서들일 수 있다. 처리 디바이스(1002)는 또한 ASIC(application specific integrated circuit), FPGA(field programmable gate array), DSP(digital signal processor), 네트워크 프로세서, 또는 그와 유사한 것과 같은 하나 이상의 특수 목적 처리 디바이스일 수 있다. 처리 디바이스(1002)는 본 명세서에 설명된 동작들 및 단계들을 수행하기 위한 명령어들(1026)을 실행하도록 구성될 수 있다.
컴퓨터 시스템(1000)은 네트워크(1020)를 통해 통신하기 위해 네트워크 인터페이스 디바이스(1008)를 추가로 포함할 수 있다. 컴퓨터 시스템(1000)은 또한, 비디오 디스플레이 유닛(1010)(예를 들어, LCD(iquid crystal display) 또는 CRT(cathode ray tube)), 알파뉴메릭 입력 디바이스(1012)(예를 들어, 키보드), 커서 제어 디바이스(1014)(예를 들어, 마우스), 그래픽 처리 유닛(1022), 신호 생성 디바이스(1016)(예를 들어, 스피커), 그래픽 처리 유닛(1022), 비디오 처리 유닛(1028), 및 오디오 처리 유닛(1032)을 포함할 수 있다.
데이터 저장 디바이스(1018)는, 본 명세서에 설명된 방법론들 또는 기능들 중 임의의 하나 이상을 구체화하는 하나 이상의 세트의 명령어(1026) 또는 소프트웨어가 저장되어 있는 (비일시적 컴퓨터 판독가능 매체라고도 알려진) 머신 판독가능 저장 매체(1024)를 포함할 수 있다. 명령어들(1026)은 또한, 컴퓨터 시스템(1000)에 의한 그 실행 동안에, 완전히 또는 적어도 부분적으로, 메인 메모리(1004) 내에 및/또는 처리 디바이스(1002) 내에 존재할 수 있고, 메인 메모리(1004)와 처리 디바이스(1002)는 또한 머신 판독가능 저장 매체를 구성한다.
일부 구현들에서, 명령어들(1026)은 본 개시내용에 대응하는 기능성을 구현하기 위한 명령어들을 포함한다. 머신 판독가능 저장 매체(1024)가 예시적인 구현에서 단일 매체인 것으로 도시되어 있지만, "머신 판독가능 저장 매체"라는 용어는 하나 이상의 명령어 세트를 저장하는 단일 매체 또는 다중의 매체(예를 들어, 중앙집중형 또는 분산형 데이터베이스, 및/또는 연관된 캐시들 및 서버들)를 포함하는 것으로 간주되어야 한다. 용어 "머신 판독가능 저장 매체"는 또한, 머신에 의한 실행을 위한 한 세트의 명령어를 저장 또는 인코딩할 수 있고 및 머신 및 처리 디바이스(1002)로 하여금 본 개시내용의 방법론들 중 임의의 하나 이상을 수행하게 야기하는 임의의 매체를 포함하는 것으로 간주되어야 한다. 따라서, "머신 판독가능 저장 매체"라는 용어는 고체 상태 메모리들, 광학 매체, 및 자기 매체를 포함하지만 이에 제한되지는 않는 것으로 간주되어야 한다.
이전의 상세한 설명들의 일부 부분들이 컴퓨터 메모리 내의 데이터 비트들에 대한 연산들의 알고리즘들 및 심벌 표현들의 관점에서 제시되었다. 이러한 알고리즘 설명들 및 표현들은 데이터 처리 분야의 통상의 기술자가 그들의 작업의 본질을 본 기술분야의 다른 통상의 기술자에게 가장 효과적으로 전달하기 위해 사용되는 방식들이다. 알고리즘은 원하는 결과로 이끄는 연산들의 시퀀스일 수 있다. 연산들은 물리적 양들의 물리적 조작들을 요구하는 것들이다. 이러한 양들은 저장, 조합, 비교, 및 다른 방식으로 조작될 수 있는 전기 또는 자기 신호들의 형태를 취할 수 있다. 이러한 신호는 비트, 값, 요소, 심벌, 문자, 용어, 숫자, 또는 그와 유사한 것으로 지칭될 수 있다.
그러나, 이들 및 유사한 용어들 모두는 적절한 물리적 양들과 연관되는 것이고 이들 양들에 적용되는 편리한 라벨들일 뿐이라는 점을 명심해야 한다. 본 개시내용으로부터 명백한 바와 같이 구체적으로 달리 언급되지 않는 한, 설명 전반에 걸쳐, 특정 용어들이 컴퓨터 시스템의 레지스터들 및 메모리들 내의 물리적 (전자적) 양들로서 표현되는 데이터를, 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 이러한 정보 저장 디바이스들 내의 물리적 양들로서 유사하게 표현되는 다른 데이터가 되도록 조작하고 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 디바이스의 연산 및 프로세스들을 지칭한다는 것이 이해된다.
본 개시내용은 또한 본 명세서에서의 연산들을 수행하기 위한 장치에 관한 것이다. 이 장치는 의도된 목적을 위해 특별히 구성될 수 있거나, 또는 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은, 각각이 컴퓨터 시스템 버스에 결합되는, 플로피 디스크들, 광학 디스크들, CD-ROM들, 및 자기-광학 디스크들을 포함하는 임의의 타입의 디스크, ROM(read-only memory)들, RAM(random access memory)들, EPROM들, EEPROM들, 자기 또는 광학 카드들, 또는 전자 명령어들을 저장하기에 적합한 임의의 타입의 매체와 같은, 그러나 이에 제한되지는 않는, 컴퓨터 판독가능 저장 매체에 저장될 수 있다.
본 명세서에 제시된 알고리즘들 및 디스플레이들은 임의의 특정 컴퓨터 또는 다른 장치에 본질적으로 관련되지는 않는다. 다양한 다른 시스템들이 본 명세서의 교시들에 따라 프로그램들과 함께 사용될 수 있거나, 또는 방법을 수행하기 위해 더 특수화된 장치를 구성하는 것이 편리한 것으로 판명될 수 있다. 또한, 본 개시내용은 임의의 특정 프로그래밍 언어를 참조하여 설명되지 않는다. 다양한 프로그래밍 언어들이 본 명세서에 설명된 바와 같은 개시내용의 교시들을 구현하기 위해 사용될 수 있다는 것이 이해될 것이다.
본 개시내용은 본 개시내용에 따른 프로세스를 수행하도록 컴퓨터 시스템(또는 다른 전자 디바이스들)을 프로그래밍하기 위해 사용될 수 있는, 명령어들이 저장되어 있는 머신 판독가능 매체를 포함할 수 있는 컴퓨터 프로그램 제품 또는 소프트웨어로서 제공될 수 있다. 머신 판독가능 매체는 머신(예를 들어, 컴퓨터)에 의해 판독가능한 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함한다. 예를 들어, 머신 판독가능(예를 들어, 컴퓨터 판독가능) 매체는 판독 전용 메모리("ROM"), 랜덤 액세스 메모리("RAM"), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 디바이스들 등과 같은 머신(예를 들어, 컴퓨터) 판독가능 저장 매체를 포함한다.
전술한 개시내용에서, 개시내용의 구현들이 그 특정 예시적인 구현들을 참조하여 설명되었다. 다음의 청구항들에 제시된 바와 같은 본 개시내용의 구현들의 더 넓은 사상 및 범위를 벗어나지 않고서 다양한 수정들이 그에 대해 이루어질 수 있다는 것이 명백할 것이다. 본 개시내용이 단수 시상(singular tense)으로 일부 요소들을 지칭하는 경우, 하나 초과의 요소가 도면들에 묘사될 수 있고 유사한 요소들은 유사한 번호들로 라벨링된다. 따라서, 본 개시내용 및 도면들은 제한적인 의미가 아니라 예시적인 의미로 간주되어야 한다.

Claims (20)

  1. 처리 시스템으로서:
    회로 설계와 연관된 입력 신호에 기초하여 명령어들을 생성하도록 구성된 플로우 프로세서; 및
    상기 플로우 프로세서와 전기적으로 결합된 평가 시스템을 포함하고, 상기 평가 시스템은 상기 명령어들을 수신하고 및 상기 명령어들에 기초하여 상기 회로 설계의 연산들을 수행하도록 구성되고, 상기 평가 시스템은:
    상기 플로우 프로세서로부터 상기 명령어들을 수신하고 및 제어 신호들을 생성하도록 구성된 명령어 메모리 회로;
    상기 명령어 메모리 회로에 전기적으로 결합된 인터커넥트 회로 - 상기 인터커넥트 회로는 상기 제어 신호들 및 복수의 값을 수신하고, 및 상기 제어 신호들에 기초하여 상기 복수의 값을 라우팅하도록 구성되고, 상기 복수의 값 각각은 4개의 상태 중 하나를 가짐 -; 및
    상기 인터커넥트 회로 및 상기 명령어 메모리 회로에 전기적으로 결합된 연산 회로를 포함하고, 상기 연산 회로는:
    상기 복수의 값 및 상기 제어 신호들을 수신하고;
    상기 제어 신호들에 기초하여 상기 복수의 값으로 상기 회로 설계의 하나 이상의 연산을 수행하고; 및
    상기 하나 이상의 연산을 수행한 것에 기초하여 연산 값들을 출력하도록 - 상기 연산 값들은 상기 회로 설계 내의 오류를 나타냄 - 구성된 처리 시스템.
  2. 제1항에 있어서, 상기 4개의 상태는 논리값 0의 상태, 논리값 1의 상태, 알려지지 않은 상태, 및 3상태(tristate)를 포함하는 처리 시스템.
  3. 제1항에 있어서, 상기 복수의 값 각각의 상태는 제1 신호 및 제2 신호에 의해 제각기 표현되는 처리 시스템.
  4. 제1항에 있어서, 상기 플로우 프로세서는 클록 신호의 에지를 검출하고 및 상기 클록 신호의 에지를 검출한 것에 기초하여 상기 명령어들을 생성하도록 추가로 구성된 처리 시스템.
  5. 제1항에 있어서, 상기 연산 회로는:
    상기 복수의 값 중 제1 값을 수신하고, 및 상기 제1 값을 출력하도록 구성된 제1 값 메모리 회로를 포함하는 복수의 값 메모리 회로; 및
    상기 복수의 값 메모리 회로에 전기적으로 결합된 복수의 평가 회로를 포함하고, 상기 복수의 평가 회로는:
    상기 제1 값 메모리 회로로부터 상기 제1 값을 수신하고 및 상기 제어 신호들에 기초하여 상기 제1 값으로 상기 하나 이상의 연산 중 제1 연산을 수행하도록 구성된 제1 평가 회로를 포함하는 처리 시스템.
  6. 제5항에 있어서,
    상기 복수의 값 메모리 회로들은 상기 제1 값을 수신하고, 및 상기 제어 신호들에 기초하여 상기 복수의 평가 회로 중 제2 평가 회로에 상기 제1 값을 출력하도록 구성된 제2 값 메모리 회로를 추가로 포함하고; 및
    상기 제2 평가 회로는 상기 제2 값 메모리 회로로부터 상기 제1 값을 수신하고 및 상기 제어 신호들에 기초하여 상기 제1 값으로 상기 제1 연산을 수행하도록 구성된 처리 시스템.
  7. 제5항에 있어서, 상기 인터커넥트 회로는 상기 제어 신호들에 기초하여 상기 제1 값을 상기 제1 값 메모리 회로에 라우팅하도록 구성된 처리 시스템.
  8. 제5항에 있어서, 상기 제1 평가 회로는 상기 제1 값으로 상기 제1 연산을 수행한 것에 기초하여 제3 값을 출력하도록 구성되고,
    상기 인터커넥트 회로는 상기 제3 값을 수신하고 및 상기 제3 값을 상기 복수의 값 메모리 회로들 중 상기 제2 값 메모리 회로에 출력하도록 구성된 처리 시스템.
  9. 제5항에 있어서, 상기 제1 평가 회로는 상기 제1 값으로 상기 제1 연산을 수행한 것에 기초하여 제2 값을 출력하도록 구성되고, 상기 제2 값은 알려지지 않은 상태를 갖는 상기 제1 값의 비트에 기초하여 알려지지 않은 상태를 갖는 처리 시스템.
  10. 제1항에 있어서, 상기 연산 회로는 상기 명령어 메모리 회로로부터 상기 제어 신호들을 수신하고, 및 상기 제어 신호들에 기초하여 상기 연산 값들의 값을 변경하도록 구성된 포스 메모리 회로(force memory circuitry)를 추가로 포함하는 처리 시스템.
  11. 방법으로서:
    회로 설계와 연관된 입력 신호에 기초하여 명령어들을 생성하는 단계;
    명령어 메모리 회로를 통해, 상기 명령어들로부터 제어 신호들을 생성하는 단계;
    인터커넥트 회로를 통해, 상기 제어 신호들에 기초하여 복수의 값을 라우팅하는 단계 - 상기 복수의 값 각각은 4개의 상태를 가짐 -;
    연산 회로를 통해, 상기 제어 신호들에 기초하여 상기 복수의 값으로 상기 회로 설계의 하나 이상의 연산을 수행하는 단계; 및
    상기 하나 이상의 연산을 수행한 것에 기초하여 연산 값들을 출력하는 단계 - 상기 연산 값들은 상기 회로 설계 내의 오류를 나타냄 - 를 포함하는 방법.
  12. 제11항에 있어서, 상기 4개의 상태는 논리값 0의 상태, 논리값 1의 상태, 알려지지 않은 상태, 및 3상태를 포함하는 방법.
  13. 제11항에 있어서, 상기 회로 설계의 클록 신호의 에지를 검출하고 및 상기 클록 신호의 에지를 검출한 것에 기초하여 상기 명령어들을 생성하는 단계를 추가로 포함하는 방법.
  14. 제11항에 있어서,
    상기 연산 회로의 제1 값 메모리 회로를 통해, 상기 복수의 값 중 제1 값을 수신하는 단계;
    상기 연산 회로의 제1 평가 회로를 통해, 상기 제어 신호들에 기초하여 상기 제1 값으로 상기 하나 이상의 연산 중 제1 연산을 수행하는 단계를 추가로 포함하는 방법.
  15. 방법으로서:
    제1 기간에 회로 디바이스와 연관된 제1 값을 저장하는 단계;
    상기 회로 디바이스와 연관된 제1 클록 신호의 에지를 검출하는 단계; 및
    상기 회로 디바이스로부터, 상기 제1 클록 신호의 에지를 검출한 것에 기초하여 상기 저장된 제1 값을 출력하는 단계를 포함하는 방법.
  16. 제15항에 있어서, 상기 제1 기간에 상기 회로 디바이스와 연관된 제1 클록 값을 저장하는 단계를 추가로 포함하고, 상기 제1 클록 신호의 에지를 검출한 것에 기초하여 상기 저장된 제1 값을 출력하는 단계는 상기 제1 클록 값 및 상기 저장된 제1 클록 값이 동일한 것에 기초하여 상기 저장된 제1 값을 출력하는 단계를 추가로 포함하는 방법.
  17. 제15항에 있어서, 상기 회로 디바이스로부터, 리셋 제어 신호에 기초하여 0의 값을 출력하는 단계를 추가로 포함하는 방법.
  18. 제15항에 있어서, 알려지지 않은 값을 갖는 리셋 제어 신호에 기초하여 상기 저장된 제1 값을 0의 값과 병합하는 단계를 추가로 포함하는 방법.
  19. 제15항에 있어서, 상기 검출된 에지 이전의 또는 상기 검출된 에지 이후의 상기 제1 클록 신호의 값이 알려지지 않은 값을 갖는 것을 결정한 것에 기초하여 상기 검출된 에지가 모호한 에지인 것을 결정하는 단계를 추가로 포함하는 방법.
  20. 제19항에 있어서, 상기 저장된 제1 값을 출력하는 단계는 상기 검출된 에지가 모호한 에지인 것을 결정한 것에 기초하여 상기 저장된 제1 값을 저장된 제2 값과 병합하는 단계를 포함하는 방법.
KR1020237020356A 2020-12-18 2021-12-17 클록 인식 시뮬레이션 벡터 프로세서 KR20230117364A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202063127581P 2020-12-18 2020-12-18
US63/127,581 2020-12-18
PCT/US2021/064205 WO2022133310A1 (en) 2020-12-18 2021-12-17 Clock aware simulation vector processor

Publications (1)

Publication Number Publication Date
KR20230117364A true KR20230117364A (ko) 2023-08-08

Family

ID=79686739

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237020356A KR20230117364A (ko) 2020-12-18 2021-12-17 클록 인식 시뮬레이션 벡터 프로세서

Country Status (5)

Country Link
US (1) US20220198120A1 (ko)
EP (1) EP4232935A1 (ko)
KR (1) KR20230117364A (ko)
CN (1) CN116670677A (ko)
WO (1) WO2022133310A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115859906B (zh) * 2023-03-01 2023-04-28 上海合见工业软件集团有限公司 一种芯片互连系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6321366B1 (en) * 1997-05-02 2001-11-20 Axis Systems, Inc. Timing-insensitive glitch-free logic system and method
US20070074000A1 (en) * 2005-09-28 2007-03-29 Liga Systems, Inc. VLIW Acceleration System Using Multi-state Logic

Also Published As

Publication number Publication date
CN116670677A (zh) 2023-08-29
WO2022133310A1 (en) 2022-06-23
US20220198120A1 (en) 2022-06-23
EP4232935A1 (en) 2023-08-30

Similar Documents

Publication Publication Date Title
Krishnaswamy et al. Signature-based SER analysis and design of logic circuits
US11922106B2 (en) Memory efficient scalable distributed static timing analysis using structure based self-aligned parallel partitioning
US11347917B2 (en) Determining and verifying metastability in clock domain crossings
US20220385280A1 (en) Testable time-to-digital converter
US11526641B2 (en) Formal gated clock conversion for field programmable gate array (FPGA) synthesis
Kaja et al. Towards fault simulation at mixed register-transfer/gate-level models
US11022634B1 (en) Rail block context generation for block-level rail voltage drop analysis
US20220198120A1 (en) Clock aware simulation vector processor
US20230260591A1 (en) Transforming local wire thru resistances into global distributed resistances
US11836433B2 (en) Memory instance reconfiguration using super leaf cells
US11556676B2 (en) Scalable formal security verification of circuit designs
US11222155B1 (en) Method and apparatus for reducing pessimism of graph based static timing analysis
KR20220161377A (ko) 안전 요건들로부터 생성된 안전 사양에 기초한 시스템 설계에서의 안전 대책들의 구현 및 검증
US20230177244A1 (en) Creation of reduced formal model for scalable system-on-chip (soc) level connectivity verification
US20220335187A1 (en) Multi-cycle test generation and source-based simulation
US20240028812A1 (en) Waveform capture using multicycle path properties
US20240086602A1 (en) Clock relationship based re-convergence analysis
US20240104278A1 (en) Graph representation of a circuit simulation waveform
US20230071521A1 (en) Detecting simulation, emulation and prototyping issues using static analysis tools
US11868694B1 (en) System and method for optimizing emulation throughput by selective application of a clock pattern
US20230252208A1 (en) Transforming a logical netlist into a hierarchical parasitic netlist
US11868696B2 (en) Lightweight unified power format implementation for emulation and prototyping
US20240104279A1 (en) Multicycle path prediction of reset signals
US20220391568A1 (en) Deterministic netlist transformations in a multi-processor parallel computing system
US20240111660A1 (en) Managing high performance simulation representation of an emulation system