KR101205325B1 - 시뮬레이션 시스템 및 그 방법 - Google Patents

시뮬레이션 시스템 및 그 방법 Download PDF

Info

Publication number
KR101205325B1
KR101205325B1 KR1020060043082A KR20060043082A KR101205325B1 KR 101205325 B1 KR101205325 B1 KR 101205325B1 KR 1020060043082 A KR1020060043082 A KR 1020060043082A KR 20060043082 A KR20060043082 A KR 20060043082A KR 101205325 B1 KR101205325 B1 KR 101205325B1
Authority
KR
South Korea
Prior art keywords
simulation
circuit
segments
design circuit
clock
Prior art date
Application number
KR1020060043082A
Other languages
English (en)
Other versions
KR20070110168A (ko
Inventor
차치호
진훈상
정현욱
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020060043082A priority Critical patent/KR101205325B1/ko
Priority to US11/747,664 priority patent/US7949510B2/en
Priority to JP2007128355A priority patent/JP2007305137A/ja
Publication of KR20070110168A publication Critical patent/KR20070110168A/ko
Application granted granted Critical
Publication of KR101205325B1 publication Critical patent/KR101205325B1/ko

Links

Images

Classifications

    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing

Abstract

여기에 개시된 시뮬레이션(Simulation) 시스템은 시뮬레이션 시스템 외부로부터 입력된 검증 프로그램을 이용하여 설계 회로에 대한 시뮬레이션을 수행하는 프로세서; 그리고 상기 시뮬레이션이 수행되는 동안 상기 프로세서에 의해 처리된 상기 설계회로의 복수의 스토리지들의 상태값과 상기 설계회로에 대응되는 분할된 세그멘트를 저장하는 메모리를 포함하며, 상기 프로세서는 상기 분할된 세그멘트를 상기 복수의 스토리지들에 대응되는 가상 입출력 인터페이스로 갖는 분할된 세그멘트들을 재구성하여 상기 메모리에 저장하고, 상기 메모리에 저장된 상기 복수의 스토리지들의 상태값을 상기 메모리에 저장된 상기 분할된 세그멘트들의 입력값 또는 출력값으로 대체하고, 상기 대체된 입력값 또는 출력값을 이용하여 상기 설계회로에 대한 디버깅을 수행한다.

Description

시뮬레이션 시스템 및 그 방법{Simulation System And Method thereof}
도 1은 일반적인 회로설계의 순서를 보여주는 흐름도이다.
도 2는 본 발명에 따른 시뮬레이션 시스템을 보여주는 블럭도이다.
도 3은 본 발명의 시공간적으로 분할을 통한 시뮬레이션을 이용한 회로설계의 순서를 보여주는 도면이다.
도 4는 도 3에 도시된 게이트수준의 설계회로를 시공간적으로 분할하는 방법에 대한 상세 흐름도이다.
도 5는 도 2에 도시된 설계회로의 상세 구성을 보여주는 도면이다.
도 6은 도 5에 도시된 설계회로를 가상 입출력 인터페이스를 갖는 조합회로로 대체한 도면이다.
도 7은 도 5에 도시된 설계회로를 확장하여 도시한 회로도이다.
도 8은 도 7에 도시된 설계회로에 가상의 플립플럽을 추가한 회로도이다.
도 9는 시공간 분할을 통한 시뮬레이션의 단위 개념 그래프이다.
도 10은 도 5에 도시된 설계회로의 다른 실시예를 보여주는 회로도이다.
도 11은 도 10에 도시된 게이티드 클락에 가상의 플립플럽을 추가한 구성을 보여주는 회로도이다.
도 12 및 도 13은 도 11에 도시된 설계회로에 삽입된 가상의 플립플럽 들(PFF)을 이용한 게이티드 클락의 시뮬레이션 방법을 보여주는 도면이다.
도 14는 도 5에 도시된 설계회로의 다른 실시예를 보여주는 회로도이다.
도 15는 도 14에 도시된 먹스드 클락에 가상의 플립플럽을 추가한 회로도이다.
도 16는 도 15에 도시된 먹스드 클락에서 먹스의 선택신호가 0인 경우를 도시한 회로도이다.
도 17은 도 15에 도시된 먹스드 클락에서 먹스의 선택신호가 1인 경우를 도시한 회로도이다.
도 18 및 도 19는 도 5에 도시된 설계회로의 또 다른 실시예를 보여주는 회로도이다.
도 20은 도 19에 도시한 설계회로의 논리 게이트와 넷 딜레이를 고려한 논리 조합회로의 시뮬레이션의 예를 도시한 회로도이다.
도 21은 본 발명에 따른 시뮬레이션 시스템에서 클락이 변경된 시점을 기준으로 하는 시간 분산을 도시한 그래프이다.
도 22는 도 9에 도시된 시공간 분할을 통한 시뮬레이션 단위 개념 그래프에 클락이 변경된 시점을 추가한 그래프이다.
도 23은 가상의 플립플럽을 추가하지 않은 종래의 매크로 셀(16)의 구성을 보여주는 도면이다.
도 24는 매크로 셀에 가상의 플립플럽을 추가한 본 발명에 따른 설계회로의 구성을 보여주는 도면이다.
도 25는 도 2에 도시된 설계회로(900)의 프라이머리 입력(Primary Input)과 프라이머리 출력(Primary Output)에 가상의 플립플럽을 추가한 설계회로의 구성을 보여주는 도면이다.
*도면의 주요 부분에 대한 부호의 설명*
30 : 프로세서 50 : 메모리
900 : 설계회로 100 : 시뮬레이션 시스템
본 발명은 디지탈 회로의 구현기술에 관한 것으로, 구체적으로는 디지탈 회로의 기능을 시뮬레이션하는 시스템 및 방법에 관한 것이다.
도 1은 일반적인 회로설계의 순서를 보여주는 흐름도이다. 도 1을 참조하면, 설계사양(Design SPEC) 단계(S110)에서는 설계회로의 사양(Specification)을 결정한다. 레지스터수준(RTL : Register Transfer Level)설계 단계(S120)에서는 하드웨어 기술언어(HDL : Hardware Description Language)을 이용하여 설계회로의 기능을 기술한다. 배치배선전 시뮬레이션(Pre-layout Simulation) 단계(S130)에서는 레지스터수준설계(S120)의 기능(Function)을 검증하는 RTL 시뮬레이션을 수행한다. 통과 또는 실패(S140) 단계에서는 레지스터수준설계(S120)가 옳게 기술되었는가를 판단하다. 만약 레지스터수준설계(S120)의 기능이 옳게 기술되었다면, 수순은 합성(Synthesis) 단계(S150)로 진행하고, 그렇지 않으면 레지스터수준설계 단 계(S120)로 되돌아 간다. 레지스터수준설계 단계(S120)에서는 레지스터수준설계의 기능적 오류를 수정한다. 레지스터수준설계 단계(S120)에서 레지스터수준설계의 기능적 오류가 수정되고 나면, 배치배선전 시뮬레이션 단계(S130)가 수행된다. 오류(Bug)를 수정하는 과정을 디버깅(Debugging)이라고 하며, 여기서는 레지스터수준설계 수정 단계(S120)에서 배치배선전 시뮬레이션 단계(S130)로 가는 과정을 의미한다.
합성 단계(S150)에서 레지스터수준설계(S120)를 게이트수준설계(Gate-Level Netlist)로 변환하고 나면, 수순은 게이트수준 타이밍 시뮬레이션(Gate-level Timing Simulation) 단계(S160)로 진행한다. 게이트수준 타이밍 시뮬레이션 단계(S160)에서는 SDF(Standard Delay Format) 파일을 이용하여 게이트수준설계(Gate-level Netlist)의 타이밍(Timing)을 검증한다. 통과 또는 실패(S170) 단계에서는 게이트수준설계의 타이밍이 설계사양에 적합한가를 판단하다. 만약 게이트수준설계의 타이밍이 설계사양에 적합하다면, 수순은 배치배선설계(Layout) 단계(S180)로 진행하고, 그렇지 않으면 합성 단계(S150)를 다시 진행한다.
배치배선설계(Layout) 단계(S180)에서는 게이트수준설계의 논리 게이트들을 배선하고 배치한다. 배치배선설계가 완료되면 배치배선후 시뮬레이션(Post-layout Simulation) 단계(S190)를 시작한다. 배치배선후 시뮬레이션 단계(S190)에서는 배치배선설계에 의한 각 게이트와 모든 넷에 대한 딜레이(Delay) 정보를 이용하여 게이트수준설계의 타이밍(Timing)을 검증한다. 통과 또는 실패 단계(S200)에서는 배치배선후 시뮬레이션 단계(S190)에서 수행된 게이트수준설계의 타이밍 검증 결과가 올바른지 여부를 판단한다. 만약 게이트수준설계의 타이밍에 문제가 없다면 회로설계단계는 종료된다. 그렇지 않다면 수순은 배치배선설계 단계(S180)로 되돌아 간다. 배치배선설계 단계(S180)는 배치배선설계를 수정하여 타이밍 문제를 해결한다. 배치배선설계 단계(S180)에서 타이밍 문제를 해결하면, 배치배선후 시뮬레이션 단계(S190)를 수행한다.
앞에서 설명한 일반적인 회로설계의 순서에 따르면, 합성 또는 배치배선설계를 재수행할 때마다 게이트수준 타이밍 시뮬레이션 또는 배치배선후 시뮬레이션이 매번 처음부터 다시 수행된다. 따라서, 설계회로를 검증 및 디버깅하는데 많은 시간이 소요되는 문제점이 있다.
특히 전력 시뮬레이션 시간은 오랜 시간이 걸리기 때문에, 모든 시뮬레이션 시간 동안 평균전력소비를 측정하기 위한 전력 시뮬레이션(Power Simulation)은 사실상 거의 불가능하다. 그래서, 전력 시뮬레이션은 시뮬레이션의 일부 구간에서만 국부적으로 수행되는 한계가 있다.
따라서 본 발명의 목적은 설계회로의 배치배선전 및 배치배선후 시뮬레이션 및 디버깅 시간을 줄일 수 있는 시뮬레이션 시스템 및 그 방법을 제공하는 데 있다.
본 발명의 다른 목적은 설계회로의 전력소비를 예측하기 위한 전력시뮬레이션에 적용할 수 있는 분산 시뮬레이션 시스템 및 그 방법을 제공하는 데 있다.
상기의 과제를 이루기 위하여 본 발명에 의한 시뮬레이션 시스템은, 시뮬레이션 시스템 외부로부터 입력된 검증 프로그램을 이용하여 설계 회로에 대한 시뮬레이션을 수행하는 프로세서; 그리고 상기 시뮬레이션이 수행되는 동안 상기 프로세서에 의해 처리된 상기 설계회로의 복수의 스토리지들의 상태값과 상기 설계회로에 대응되는 분할된 세그멘트를 저장하는 메모리를 포함하며, 상기 프로세서는 상기 분할된 세그멘트를 상기 복수의 스토리지들에 대응되는 가상 입출력 인터페이스로 갖는 분할된 세그멘트들을 재구성하여 상기 메모리에 저장하고, 상기 메모리에 저장된 상기 복수의 스토리지들의 상태값을 상기 메모리에 저장된 상기 분할된 세그멘트들의 입력값 또는 출력값으로 대체하고, 상기 대체된 입력값 또는 출력값을 이용하여 상기 설계회로에 대한 디버깅을 수행하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 프로세서와 상기 메모리를 상호 연결하는 시스템 버스를 더 포함하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 프로세서는 상기 분할된 세그멘트들 각각에 대해 독립적으로 시뮬레이션할 수 있는 것을 특징으로 한다.
이 실시예에 있어서, 상기 프로세서는 상기 분할된 세그멘트들 각각에 대해 임의의 시간부터 시뮬레이션하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 프로세서는 상기 설계회로의 전력시뮬레이션을 수행하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 설계회로는 분할된 세그멘트로 구성된 것을 특징 으로 한다.
이 실시예에 있어서, 상기 복수의 세그멘트는 세그멘트간의 연결이 없는 하드 세그멘트와 세그멘트간의 연결이 있는 소프트 세그멘트로 구성된 것을 특징으로 한다.
이 실시예에 있어서, 상기 소프트 세그멘트는 상기 복수의 세그멘트간의 연결에 가상의 플립플럽을 추가하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 설계회로는 서로 다른 기능의 게이트 구성을 갖는 제 1 조합회로 및 제 2 조합회로, 그리고 상기 제 1 조합회로의 출력과 상기 제 2 조합회로의 출력 그리고 클락에 대한 논리 곱을 수행하는 논리게이트를 포함하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 제 1 조합회로의 출력에는 가상의 플립플럽이 연결되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 제 1 조합회로의 입력에는 가상의 플립플럽이 연결되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 제 1 조합회로의 입력에는 프라이머리 입력이 연결되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 클락은 외부 클락 및 내부 클락 중 어느 하나인 것을 특징으로 한다.
이 실시예에 있어서, 상기 설계회로는 적어도 하나의 조합회로, 그리고 상기 조합회로의 출력을 선택신호로 받아들여 제 1 클락과 제 2 클락을 선택하는 멀티플 렉서를 포함하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 조합회로의 출력에는 가상의 플립플럽이 연결되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 조합회로의 입력에는 가상의 플립플럽이 연결되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 조합회로의 입력에는 프라이머리 입력이 연결되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 제 1 클락과 상기 제 2 클락은, 내부 클락과 외부 클락 중 어느 하나인 것을 특징으로 한다.
상기의 과제를 이루기 위하여 본 발명에 의한 시뮬레이션 방법은, 레지스터수준 설계회로를 가상 입출력 인터페이스를 갖는 분할된 세그멘트로 변경하여 분할된 세그멘트를 상기 메모리에 저장하는 단계; 레지스터수준 설계회로의 배치배선전 시뮬레이션 동안 처리된 상기 설계회로의 복수의 스토리지들의 상태값을 메모리에 저장하는 단계; 상기 레지스터수준 설계회로는 게이트수준 설계회로로 합성되는 단계; 상기 게이트수준 설계회로의 복수의 스토리지들의 상태 값을 가상 입출력 인터페이스로 대체하는 단계; 상기 메모리에 저장된 상기 복수의 스토리지들의 상태값을 상기 메모리에 저장된 상기 분할된 세그멘트들의 입력값 또는 출력값으로 대체하는 단계; 그리고 상기 대체된 입력값과 출력값을 이용하여 상기 분할된 세그멘트들에 대하여 타이밍 시뮬레이션을 수행하는 단계를 포함하는 것을 특징으로 한다.
이 실시예에 있어서, 상기 분할된 세그멘트들은 독립적으로 시뮬레이션되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 분할된 세그멘트들은 임의의 시간부터 시뮬레이션되는 것을 특징으로 한다.
이 실시예에 있어서, 상기 시뮬레이션은 상기 게이트수준 설계회로에 대하여 딜레이를 고려한 게이트수준 타이밍 시뮬레이션인 것을 특징으로 한다.
이 실시예에 있어서, 상기 시뮬레이션은 상기 게이트수준 설계회로에 대하여 딜레이를 고려한 배치배선후 시뮬레이션인 것을 특징으로 한다.
이 실시예에 있어서, 상기 시뮬레이션은 상기 설계회로의 전력 시뮬레이션인 것을 특징으로 한다.
(실시예)
이하 본 발명에 따른 실시예를 첨부된 도면들을 참조하여 상세히 설명한다.
본 발명의 시뮬레이션 시스템은 설계 회로를 시간 및 공간적으로 분할 가능한 세그멘트(Segment)형태로 재구성하여 분할된 각 세그멘트에 대하여 배치배선전 및 배치배선후 시뮬레이션 및 에뮬레이션을 수행한다. 보통 빠른 수행을 위하여 RTL(Register Transfer Level) 시뮬레이션 혹은 고속 에뮬레이션을 통하여 설계회로를 시간 및 공간적으로 분리된 세그멘트로 분할하고, 분할된 세그멘트를 기반으로 설계회로의 상태값을 추출한다. 그리고 나서, 분할된 세그멘트를 시간 공간적으로 분할하고, 분할된 각 부분에 대한 타이밍 시뮬레이션 혹은 에뮬레이션을 수행한다. 그리고, 상기 타이밍 시뮬레이션 혹은 에뮬레이션 결과에 따라서 시간 공간적으로 분할된 각 부분에 대한 디버깅을 수행한다. 세그멘트에 관해서는 도 7, 도 8 에서 상세히 설명한다. 이상과 같은 본 발명의 시뮬레이션 시스템의 상세 구성 및 그 방법을 살펴보면 다음과 같다.
도 2는 본 발명의 실시예에 따른 시뮬레이션 시스템(100)의 전체 구성을 보여주는 블럭도이다. 도 2를 참조하면, 시뮬레이션 시스템(100)은 프로세서(30), 메모리(50) 그리고 시스템 버스(70)를 포함한다.
프로세서(30)는 시스템 버스(70)를 이용하여 검증 프로그램(20)을 로딩(Loading)한다. 검증 프로그램은 설계회로와 실제회로(Chip)의 기능적 등가(Equivalence)와 시간적(Timing) 등가를 확인한다. 프로세서(30)는 설계회로(900)에 대해 시뮬레이션을 진행한다. 설계회로(900)에 대한 시뮬레이션이 진행되는 도중, 프로세서(30)는 시스템 버스(70)를 이용하여 설계회로의 스토리지들의 상태값을 메모리(50)에 저장한다. 프로세서(30)는 설계회로(900)를 가상 입출력 인터페이스를 갖는 분할된 세그멘트로 재구성한다. 프로세서(30)는 가상 입출력 인터페이스를 갖는 분할된 세그멘트를 시스템 버스(70)를 이용하여 메모리(50)에 저장한다. 프로세서(30)는 메모리(50)에 저장된 설계회로(900)의 모든 스토리지들(91)의 상태값을 가상 입출력 인터페이스를 갖는 분할된 세그멘트에 대한 입력값 및 출력값으로 대체한다. 프로세서(30)는 가상 입출력 인터페이스를 갖는 분할된 세그멘트에 대해 메모리(50)에 저장된 입력값과 출력값을 이용하여 시뮬레이션을 진행한다. 시스템 버스(70)는 각 구성들(30,50)을 상호 연결하는 기능을 한다.
설계회로(900)는 복수 개의 스토리지들(91)과 복수 개의 조합회로들(95)로 구성된 순차회로(Sequential Circuit)을 의미한다. 스토리지(91)란 하드웨 어(Hardware)적인 스토리지 엘레멘트(storage element)인 래치(Latch), 플립플럽(Flip-Flop) 그리고 메모리뿐만 아니라, 매크로 셀(Macro Cell) 및 탑 모듈(Top module)의 프라이머리 입출력(primary Input, Output) 값을 포함한다. 조합회로(95)란 상기 스토리지들(91)을 포함하지 않고 순수하게 논리 게이트들로만 구성된 회로를 의미한다.
즉, 임의의 시점에 DUT(Device Under Test)내의 모든 시그널에 대한 값을 계산하기 위해서는 시간에 종속적인 외부의 테스트벤치(Testbench)에 대한 인가가 필요없어야 한다. 따라서, 탑 모듈(Top Module)의 프라이머리 입력(primary Input)은 테스트벤치를 대신하게 되며, 프라이머리 출력(Primary Output)은 결과값을 비교하는 수단이 된다.
설계회로는 최상위 모듈(Top Module)과 그 내부에 수많은 서브 모듈(Sub Module)로 구성된다. 프라이머리 입력이란 최상위 모듈의 입력단을 의미하고, 프라이머리 출력이란 최상위 모듈의 출력단을 의미한다. 테스트벤치란 설계회로를 검증하기 위한 입력값/입력 조건과 기대출력값(Expected Output)을 의미한다.
도 3은 본 발명의 시공간적으로 분할을 통한 시뮬레이션을 이용한 회로설계의 순서를 보여주는 도면이다. 도 3을 참조하면, 먼저 S2100 단계에서는 설계회로의 사양(Specification)이 결정된다. S2200 단계에서는 하드웨어 기술언어을 이용하여 설계회로의 기능이 기술된다. S2250 단계에서는 레지스터수준의 설계회로를 시간적 공간적으로 분할가능한 세그멘트로 재구성한다. S2300 단계에서는 시뮬레이션 시스템에 의해 배치배선전 시뮬레이션 또는 에뮬레이션이 수행되고, 이와 동시 에 분할된 세그멘트를 기반으로 레지스터수준설계의 스토리지의 상태값이 메모리(50)에 저장된다. 이어서 S2400 단계에서는 레지스터수준설계가 옳게 기술되었는지 여부가 판별된다. S2400 단계에서의 판별 결과 만약 레지스터수준설계의 기능이 옳게 기술되었다면, 수순은 S2500 단계로 진행하고, 그렇지 않으면 S2200 단계로 진행한다.
S2500 단계에서는 레지스터수준설계가 게이트수준설계로 변환된다. S2600 단계에서는 레지스터수준의 설계회로에서 추출한 상태값을 분할된 세그멘트에 대한 입력값 또는 출력값으로 대체하여 메모리에 저장한다.
도 4는 도 3에 도시된 게이트수준의 설계회로를 시공간적으로 분할하는 방법(즉, S2600 단계)에 대한 상세 흐름도이다. 도 4를 참조하면, S2610 단계에서 프로세서(30)는 설계회로(900) 내의 복수의 스토리지들(91)을 가상 입출력 인터페이스로 대체한다. S2630 단계에서 프로세서(30)는 메모리(50)에 저장된 모든 스토리지들의 상태값을 메모리(50)에 저장되어 있는 분할된 세그멘트에 대한 입력값 또는 출력값으로 대체하여 메모리(50)에 저장한다.
다시 도 3을 참조하면, S2700 단계에서는 가상의 입력 및 출력으로 분할된 세그멘트에 대하여 SDF파일이나 SPF(Standard Parasitic Format)파일에 저장된 딜레이정보를 설계회로에 적용한 게이트수준 타이밍 시뮬레이션이 수행된다. 게이트수준 타이밍 시뮬레이션은, 가상의 입력 및 출력으로 분할된 세그멘트에 메모리(50)에 저장된 입력값을 입력함으로써 수행된다. S2700 단계에서 수행된 게이트수준 타이밍 시뮬레이션의 결과, 즉 상기 분할된 세그멘트의 출력값 및 그 출력값 발생 타이밍은 S2800 단계에서 메모리(50)에 저장된 출력값과 해당 출력의 타이밍 마진(Margin)과 비교되어, 그 결과가 적합한지 여부가 판별된다. S2800 단계에서는 게이트수준설계의 타이밍이 설계사양에 적합한지 여부가 판별된다. S2800 단계에서의 판별 결과, 게이트수준설계의 타이밍이 설계사양에 적합하다면 수순은 S2900 단계로 진행하고, 그렇지 않으면 수순은 S2500 단계로 되돌아 간다.
S2900 단계에서는 게이트수준설계의 논리 게이트들이 배선 및 배치된다. 배치배선설계가 완료되면 배치배선후 시공간적으로 분할된 각 부분에 대한 타이밍 시뮬레이션이 시작된다. S3000 단계에서는 가상의 입력 및 출력으로 분할된 세그멘트에 대하여 배치배선설계에 의한 각 게이트와 모든 넷에 대한 딜레이(Delay) 정보를 이용한 게이트수준 타이밍 시뮬레이션이 수행된다. S3000 단계에서 수행되는 동작은 딜레이 정보를 제외하면 사실상 S2700 단계와 동일하다. S3100 단계에서는 S3000 단계에서 수행된 각 분할된 세그멘트에 대한 게이트수준설계의 타이밍 검증 결과가 올바른지 여부가 판별된다. S3100 단계에서의 판별 결과 게이트수준설계의 타이밍에 문제가 없다면 회로설계단계는 종료되고, 그렇지 않다면 수순은 S2900 단계로 되돌아 간다.
도 5는 도 2에 도시된 설계회로(900)의 상세 구성을 보여주는 도면이고, 도 6은 도 5에 도시된 설계회로를 가상 입출력 인터페이스(92)를 갖는 조합회로로 대체한 도면이다.
먼저 도 5를 참조하면, 설계회로(900)는 스토리지부(91)와 조합회로(95)로 구성된다. 스토리지(91)는 제 1 스토리지(911), 제 2 스토리지(912), 제 3 스토리 지(913) 그리고, 제 4 스토리지(914)로 구성된다. 조합회로(95)는 논리 게이트들로 구성된다. 제 1 스토리지(911), 제 2 스토리지(912) 그리고 제 3 스토리지(913)는 조합회로(95)에 대하여 입력으로 동작하고, 제 4 스토리지(914)는 조합회로(95)에 대하여 출력으로 동작한다. 만약 시뮬레이션 동안 스토리지들(911-914)에 대한 모든 상태값을 알고 있다면, 제 1 스토리지(911), 제 2 스토리지(912) 그리고 제 3 스토리지(913)의 상태값은 조합회로(95)에 대한 입력값으로 사용될 수 있고, 제 4 스토리지(914)의 상태값은 조합회로(95)의 출력과 비교할 수 있다.
이와 같은 특성으로 인해, 도 5에 도시된 스토리지(91)는 도 6에 도시된 가상 입출력 인터페이스(92)를 가진 회로로 대체할 수 있게 된다.
도 5 및 도 6을 참조하면, 제 1 스토리지(911)는 입력단자 IN1(921)으로 대체하고, 제 2 스토리지(912)는 입력단자 IN2(922)로 대체하고, 제 3 스토리지(913)는 입력단자 IN3(923)로 대체하고, 제 4 스토리지(914)는 출력단자 OUT(924)으로 대체한다. 도 6의 조합회로(95)는 도 5에 도시된 조합회로(95)와 동일하다. 즉, 설계회로(900)의 복수의 스토리지들(91)과 복수의 조합회로(95)는 도 6의 가상 입출력 인터페이스(92)를 갖는 분할된 세그멘트(900')로 재구성된다. 이와 같은 방법으로 하나의 설계회로는 분할된 세그멘트로 재구성할 수 있게 된다.
도 7은 도 5에 도시된 설계회로를 확장하여 도시한 회로도이다. 도 7의 설계회로(901)는 도 5에 도시된 설계회로(900)의 다른 실시예이다. 도 7을 참조하면, 설계회로를 4개의 공간으로 분할하여 각각을 제 1 세그멘트(Seg_1), 제 2 세그멘트(Seg_2), 제 3 세그멘트(Seg_3), 제 4 세그멘트(Seg_4)로 구분지었다. 여기서 제 3 세그멘트(Seg_3)의 경우는 외부의 연결이 없는 경우이며, 이를 하드 세그멘트(Hard Segment)라고 정의한다. 반면, 제 1 세그멘트(Seg_1), 제 2 세그멘트(Seg_2), 제 4 세그멘트(Seg_4)의 경우는 세그멘트의 경계를 넘는 신호선이 존재하므로 이 경우를 소프트 세그멘트(Soft Segment)라고 정의한다. 기본적으로 공간적인 분할을 위해서는 하드 세그멘트단위로 이루어져야 한다. 그러나 설계회로가 하드 세그멘트와 소프트 세그멘트로 구성된 경우에 본 발명은 적용가능하다.
도 8은 도 7에 도시된 설계회로에 가상의 플립플럽을 추가한 회로도이다. 도 8을 참조하면, 설계회로(901')는 소프트 세그멘트와 하드 세그멘트로 구성된다. 공간적으로 독립한 시뮬레이션을 하기 위해서는 설계회로(901')를 하드 세그멘트로 구성하여야 한다. 그러므로, 설계회로(901')는 소프트 세그멘트에 가상 입출력을 갖는 플립플럽(이하, 가상의 플립플럽(PFF)이라 칭함)을 추가하여 하드 세그멘트만으로 구성한다. 가상의 플립플럽은 먹스드 플립플럽(Muxed Flip-Flop)을 사용한다. 가상의 플립플럽은 정상동작과 디버깅동작을 구분하는 경로를 먹스를 이용하여 형성한다. 가상의 플립플럽은 디버깅동작시에는 가상의 플립플럽의 체인을 형성하여 정상동작시에 입력된 값을 추출하는 역할을 수행한다.
만약 소프트 세그멘트에 가상의 플립플럽을 추가하여 하드 세그멘트로 구성한 설계회로(901')에 대하여 타이밍을 고려한 분산 시뮬레이션(게이트수준 타이밍 시뮬레이션 또는 배치배선후 시뮬레이션)을 수행한다면 타이밍 문제가 발생할 수도 있다.
즉, 딜레이를 고려하지 않는 제로딜레이(zero delay) 시뮬레이션에는 가상의 플립플럽을 추가한 경로에 대하여 문제가 되지 않으나, 딜레이를 적용한 딜레이 시뮬레이션에서는 가상의 플립플럽을 추가한 경로에 대한 딜레이 정보를 어떻게 설정해 주어야 하는가의 문제가 발생한다. 이 경우에는 가상의 플립플럽을 추가한 경로의 딜레이 정보는 원래의 경로(path)가 가지고 있는 워스트 조건(Worst Condition) 이나 티피컬 조건(Typical Condition)의 딜레이 정보를 적용한 후 타이밍 마진을 확인하여 해결하는 방법이 있다.
도 9는 시공간 분할을 통한 시뮬레이션의 단위 개념 그래프이다. 도 9를 참조하면, 본 발명은 동일한 시간에 서로 다른 영역을 시뮬레이션할 수도 있고, 동일한 영역에서 서로 다른 시간에 시뮬레이션할 수도 있음을 알 수 있다. 즉, 본 발명에 따른 시뮬레이션 방식은 시간적 공간적 독립성이 확보되어, 시뮬레이션의 시간적 공간적 분리가 가능해 진다. 따라서, 본 발명에서는 시간적 공간적 분리를 통한 분산 시뮬레이션이 가능해 진다. 이러한 시뮬레이션 방식은 도 5 내지 도 8에 도시된 설계회로들(900, 900', 901, 901') 모두에 대해 적용된다.
한편, 이와 같은 시간적 공간적 분리를 통한 분산 시뮬레이션 방식은 클락 네트워크(Clock network)에도 적용될 수 있다. 클락 네트워크의 주기와 온/오프를 결정짓는 부분을 클락 컨트롤 포인트(Clock Control Point)라고 정의한다. 본 발명에서는 클락 컨트롤 포인트에 대한 상태값이 모두 저장되어 있으므로, 각 사례별로 클락 네트워크를 결정지을 수 있게 된다. 따라서, 배치배선설계를 통해 셀(cell)과 넷 딜레이(Net Delay)값을 알 수가 있으므로, 각 클락 네트워크별로 정확한 클락 딜레이를 계산할 수 있다. 여기서 계산된 각 스토리지까지의 클락 핀(Clock pin)에 대한 딜레이값을 결정하게 된다. 즉, 클락 콘트롤 포인트에 의해 클락 네트워크가 변화되지 않으면 클락 네트워크상의 딜레이는 항상 일정하게 된다. 이로 인해 각 스토리지까지 도달되는 딜레이값을 미리 계산해 둘 수가 있다.
본 발명에서는 특정 시간 정보와 함께 클락 네트워크 딜레이에 영향을 주는 논리조합회로의 클락 경로 딜레이(clock path delay) 계산에 영향을 주는 넷들의 상태값 변동을 확인한다. 확인 결과, 클락 네트워크에 변화가 있으면 해당 시각 이후의 시뮬레이션 시각에서 클락 네트워크 딜레이를 새롭게 계산하여 경로 딜레이(path delay)에 반영한다. 여기서, 클락 네트워크 딜레이에 영향을 주는 논리조합회로의 예는 게이티드 클락(gated clock), 먹스드 클락(muxed clock), 제너레이티드 클락(generated clock) 등이 있다.
아래에서는 설계회로의 클락 네크워크에 본 발명에 따른 시간적 공간적 분리를 통한 분산 시뮬레이션 방식이 적용되는 예가 설명된다.
도 10은 도 5에 도시된 설계회로의 다른 실시예를 보여주는 회로도이다. 도 10에는 본 발명에 따른 시간적 공간적 분리를 통한 분산 시뮬레이션 방식이 적용되는 예로서, 게이티드 클락(Gated Clock)을 발생하는 회로를 구비한 설계회로(902)의 구성이 도시되어 있다. 도 10를 참조하면, 클락(Clock_Gated)이 게이티드(Gated)되는 경우 설계회로(902)의 클락(Clock_Gated)은 제 1 조합회로와 제 2 조합회로의 출력값에 의해 조절되는 구성을 갖는다. 본 발명에서는 바로 이와 같이 클락의 주기 또는 온/오프 시점을 결정짓는 부분에 가상 플립플럽을 삽입하여 클락 발생의 특성을 검증한다.
도 11은 도 10에 도시된 게이티드 클락에 가상의 플립플럽(PFF)을 추가한 설계회로(902')의 회로도이다. 도 11를 참조하면, 외부에서 클락(Clock_Gated)이 변경된 시간과 클락의 구성 형태를 파악하기 위하여 제 1 조합회로와 제 2 조합회로에서 클락의 특성을 결정하는 부분들에 대해 가상의 플립플럽(PFF)을 추가하였다. 도 11에서 추가된 플립플럽(PFF)의 구성은 도 5 내지 도 8에 도시된 스토리지와, 상기 스토리지를 대체하는 가상 입출력과 사실상 동일한 기능을 수행한다. 그러므로, 본 발명에서는 추가된 가상의 플립플럽들(PFF)을 이용하여 시뮬레이션을 수행함으로써, 클락(Clock_Muxed)이 변경되는 시간을 알 수 있게 된다.
도 12 및 도 13은 도 11에 도시된 설계회로(902')에 삽입된 가상의 플립플럽들(PFF)을 이용하여 게이트 딜레이를 고려한 시뮬레이션 방법을 보여주는 도면이다.
도 12는 도 11에 도시된 설계회로(902')에서 게이티드 클락이 온(on)된 경우에 대한 시뮬레이션 방법을 보여주는 도면이고, 도 13은 도 11에 도시된 설계회로(902')에서 게이티드 클락이 오프(off)된 경우에 대한 시뮬레이션 방법을 보여주는 도면이다. 먼저 도 12를 참조하면, 제 1 조합회로의 출력이 1이고, 제 2 조합회로의 출력이 1인 경우, 제 1 조합회로, 제 2 조합회로 그리고 클락(Clock_A)에 대해 논리곱을 하면, 게이티드 클락으로서 클락(Clock_A)가 출력됨을 검증할 수 있다. 계속해서 도 13을 참조하면, 제 1 조합회로의 출력이 1이고, 제 2 조합회로의 출력이 0인 경우, 제 1 조합회로, 제 2 조합회로 그리고 클락(Clock_A)에 대해 논리곱을 하면 게이티드 클락은 출력되지 않음을 검증할 수 있다.
도 11 내지 도 13을 참조하면, 본 발명에서는 외부에서 클락(Clock_Gated)이 변경된 시간과 그 구성 형태를 파악하기 위하여 제 1 조합회로와 제 2 조합회로에서 클락의 특성을 결정하는 부분들에 대해 가상의 플립플럽(PFF)을 추가하였다. 가상의 플립플럽(PFF)으로 대체된 부분에 대한 상태 값들은 메모리(50)에 저장된다. 그러므로, 본 발명에서는 메모리(50)에 저장되어 있는 가상의 플립플럽(PFF)의 상태 값들을 가상의 플립플럽(PFF)의 입출력 값으로 대체함으로써, 다양한 케이스에 대한 게이티드 클락의 발생 상태를 검증할 수 있게 된다. 이와 같은 시뮬레이션 방식에 따르면, 조합회로 1과 클락(Clock_A)의 지연 관계와 조합회로 2와 클락(Clock_B)의 지연 관계를 각각 알아낼 수 있기 때문에, 각 클락 네트워크별로 정확한 클락 지연(clock delay) 값을 검증할 수 있고, 이를 이용하여 게이티드 클락의 디버깅을 수행할 수 있게 된다. 이상과 같은 클락 네트워크(Clock network)의 시뮬레이션 역시 시간적 공간적으로 분리되도록 구현된다.
이상에서는, 본 발명이 적용되는 예로서 게이티드 클락(Gated Clock) 방식을 따르는 설계회로의 검증에 대해 설명되었다. 그러나, 본 발명에 따른 시뮬레이션 방식은 게이티드 클락 방식을 따르는 설계회로 뿐만 아니라 먹스드 클락(Muxed Clock) 방식을 따르는 설계회로에도 적용될 수 있다.
도 14는 도 5에 도시된 설계회로의 다른 실시예를 보여주는 회로도이다. 도 14에는 본 발명에 따른 시간적 공간적 분리를 통한 분산 시뮬레이션 방식이 적용되는 예로서, 먹스드 클락(Muxed Clock)을 발생하는 회로를 구비한 설계회로(903)의 구성이 도시되어 있다. 도 14를 참조하면, 먹스드 클락(Muxed Clock) 방식을 따르 는 설계회로(903)의 경우, 먹스(MUX:Multiplexer)의 선택단자에 연결된 조합회로의 출력에 의해 제 1 클락(Clock_A)과 제 2클락(Clock_B) 중 어느 하나가 선택되어 클락(Clock_Muxed)으로 발생된다.
도 15는 도 14에 도시된 먹스드 클락에 가상의 플립플럽(PFF)을 추가한 설계회로(903')의 회로도이다. 도 15을 참조하면, 외부에서 클락(Clock_Muxed)이 변경된 시간과 그 구성 형태를 파악하기 위하여 조합회로를 결정하는 부분들에 대해 가상의 플립플럽(PFF)을 추가하였다. 추가된 가상의 플립플럽을 이용하여 클락(Clock_Muxed)이 변경되는 시간을 알 수 있다. 도 15에서 추가된 플립플럽(PFF)의 구성은 도 11 내지 도 13에 도시된 가상의 플립플럽들(PFF)과 사실상 동일한 기능을 수행한다. 그러므로, 본 발명에서는 추가된 가상의 플립플럽들(PFF)을 이용하여 시뮬레이션을 수행함으로써, 클락(Clock_Muxed)이 변경되는 시간과 그 구성 형태를 알 수 있게 된다.
도 16 및 도 17은 도 11에 도시된 설계회로(903')에 삽입된 가상의 플립플럽들(PFF)을 이용한 클락(Clock_Muxed)의 시뮬레이션 방법을 보여주는 도면이다. 도 16은 도 15에 도시된 설계회로(903')에서 먹스의 선택신호가 0인 경우의 클락(Clock_Muxed)의 발생을 보여주는 도면이고, 도 17은 도 15에 도시된 설계회로(903')에서 먹스의 선택신호가 1인 경우의 클락(Clock_Muxed)의 발생을 보여주는 도면이다. 먼저 도 16를 참조하면, 조합회로의 출력이 0인 경우 먹스드 클락은 제 1 클락(Clock_A)이 출력됨을 알 수 있다. 그리고 도 17을 참조하면 조합회로의 출력이 1인 경우 먹스드 클락은 제 2 클락(Clock_B)을 출력됨을 알 수 있다.
도 15 내지 도 17을 참조하면, 본 발명에서는 외부에서 클락(Clock_Muxed)이 변경된 시간과 그 구성 형태를 파악하기 위하여 조합회로를 결정하는 부분들에 대해 가상의 플립플럽(PFF)을 추가하였다. 가상의 플립플럽(PFF)으로 대체된 부분에 대한 상태 값들은 메모리(50)에 저장된다. 그러므로, 본 발명에서는 메모리(50)에 저장되어 있는 가상의 플립플럽(PFF)의 상태 값들을 가상의 플립플럽(PFF)의 입출력 값으로 대체함으로써, 다양한 케이스에 대한 클락(Clock_Muxed)의 발생 상태를 검증할 수 있게 된다. 이와 같은 시뮬레이션 방식에 따르면, 조합회로의 출력이 0인 경우와 1인 경우 각각에 대해 클락(Clock_A)와 플립플럽(ff_1) 까지의 지연 시간을 검증할 수 있고, 이를 이용하여 클락(Clock_Muxed)의 디버깅을 수행할 수 있게 된다. 이상과 같은 클락 네트워크(Clock network)의 시뮬레이션 역시 시간적 공간적으로 분리되도록 구현된다.
도 18 및 도 19는 도 5에 도시된 설계회로의 또 다른 실시예를 보여주는 회로도이다. 도 18에는 내부에서 발생된 클락(Generated Clock)에 대한 클락 딜레이(Delay)를 계산하는 구성을 가진 설계회로(904)의 예가 도시되어 있다. 그리고, 도 19에는 설계회로의 논리 게이트와 넷 딜레이를 고려하여 논리 조합회로의 기능을 검증하는 설계회로(905)의 구성 예가 도시되어 있다.
도 18을 참조하면, 본 발명에 따른 시뮬레이션 방식은 설계회로(904)에서 발생된 클락(Generated Clock)에 대한 클락 딜레이(Delay)를 계산하는데 적용될 수 있다. 이 경우, 외부 클락(Clock_1)에서 플립플럽까지, 플럽플럽에서 다음 플립플럽까지 딜레이가 계산된다. 이 계산에 사용되는 지연 상태 값 등은 메모리(50)에 저장된 것을 이용한다. 본 발명에 따른 시뮬레이션 시스템 및 방법에서는 단순히 설계회로(904)의 시작단의 상태 값만을 이용하여 시뮬레이션을 수행하는 것이 아니라, 각 조합회로와 출력단 사이의 딜레이(즉, 설계회로의 논리 게이트와 넷 딜레이)까지도 함께 고려될 수 있다.
도 19에는 설계회로의 논리 게이트와 넷 딜레이를 고려하여 논리 조합회로의 기능을 검증하는 설계회로(905)의 구성 예가 도시되어 있다. 도 18 및 도 19를 참조하면, 도 18에서 계산된 딜레이는 논리 조합회로의 기능을 검증하는데 사용될 수 있다. 도 19를 참조하면, 임의의 시간(t1)에서 각 플립플럽의 상태값이 표시되어 있다. 각 플립플럽의 상태값과 각 논리 게이트와 넷의 딜레이를 이용하여 다음 플립플럽의 상태값을 구한다. 이때 사용되는 각 상태 값 역시 메모리(50)에 저장된 것을 이용한다. 도 18 및 도 19에서 설명된 딜레이 계산과, 각 플립플럽의 상태값과 각 논리 게이트와 넷의 딜레이를 고려한 논리 조합회로의 기능 검증 역시 시간적 공간적으로 분리된 본 발명의 시뮬레이션 방법을 적용하여 구현될 수 있다.
도 20은 도 19에 도시한 설계회로의 논리 게이트와 넷 딜레이를 고려한 논리 조합회로의 시뮬레이션의 예를 도시한 회로도이다. 도 19와 도 20을 참조하면, 도 20은 도 19의 회로도에서 임의의 시간(t1)에서 한 클락(t2)만큼 수행한 후의 결과를 나타낸다. 도 19 및 도 20에 도시된 바와 같이, 본 발명에 따른 시뮬레이션 방식에 따르면, 플립플럽의 상태 값이 달라지는지의 여부에 따라 논리 조합회로의 오류 여부를 쉽게 알 수 있게 된다. 이 경우, 상태 값이 달라진 특정 위치를 검출해 내기가 용이하기 때문에, 검출된 특정 위치에 대한 디버깅 또한 용이한 장점을 가 지게 된다.
도 21은 본 발명에 따른 시뮬레이션 시스템에서 클락이 변경된 시점을 기준으로 하는 시간 분산을 도시한 그래프이다.
도 21을 참조하면, 본 발명에 따른 시뮬레이션 시스템은 전체 시뮬레이션 시간에서 ccp_t1과 ccp_t2에서 두 번 클락이 변하게 된다. 시뮬레이션 시스템은 Simulation_A(0 ~ t1)에서 제 1 클락을 사용한다. 시뮬레이션 시스템은 Simulation_B(t1 ~ ccp_t1)에서 제 1 클락을 사용하고, Simulation_B(ccp_t1 ~ t2)에서 제 2 클락을 사용한다. 시뮬레이션 시스템은 Simulation_C(t2 ~ ccp_t2)에서 제 2 클락을 사용하고, Simulation_C(ccp_t2 ~ t3)에서 제 3 클락을 사용한다. 시뮬레이션 시스템은 Simulation_D(t3 ~ t4)에서 제 3 클락을 사용한다. 시공간을 분할한 시뮬레이션을 사용하기 위해서는 시뮬레이션 시스템은 클락이 변경되는 정보를 저장하고 있어야 한다.
도 22는 도 9에 도시된 시공간 분할을 통한 시뮬레이션 단위 개념 그래프에 클락이 변경된 시점을 추가한 그래프이다. 도 22를 참조하면, 동일한 시간에 서로 다른 영역을 시뮬레이션할 수 있지만, 클락이 변경되는 제 1 시간(ccp_t1)과 제 2 시간(ccp_t2)에서 시뮬레이션 시스템은 클락이 변경된다는 것을 참조하여 시공간을 분할하는 시뮬레이션을 수행할 수 있다.
예를 들면, Simulation_1은 공간적으로는 region_A 에서 region_B 사이에 할당되어 있으며, 시간적으로는 t1에서 t2 사이에 할당되어 있다. Simulation_2은 공간적으로는 region_A 에서 region_B 사이에 할당되어 있으며, 시간적으로는 t2에서 t3 사이에 할당되어 있다. Simulation_1의 경우, 클락이 변경되는 제 1 시간(ccp_t1) 이후의 시뮬레이션에서는 클락 경로 딜레이가 달라지게 된다. 여기서, 제 1 시간(ccp_t1)과 제 2 시간(ccp_t2)과 같은 시각의 상태값 정보에 대응되는 클락 네트워크 딜레이는 그 시간에 도달해서 비로로 알 수 있는 것이 아니라, 시뮬레이션 초기 단계에서 미리 구할 수 있다.
도 23은 가상의 플립플럽을 추가하지 않은 종래의 매크로 셀(Macro Cell)의 구성을 보여주는 도면이고, 도 24는 매크로 셀(93)에 가상의 플립플럽을 추가한 본 발명에 따른 설계회로(95)의 구성을 보여주는 도면이다.
먼저 도 23를 참조하면, 종래의 매크로 셀(93)의 입력과 출력은 각각 조합회로(95-1, 95-2)에 연결된다. 여기서, 조합회로들(95-1, 95-2)은 서로 다른 논리 조합 회로들로 구성될 수 있다. 도 23에 도시된 종래의 매크로 셀(93)의 입력과 출력의 상태값을 추출하기 위해서는 메크로 셀(95)을 구비하고 있는 설계회로의 외부에 별도의 회로가 구성되어야만 한다. 이와 달리, 본 발명에서는 별도의 회로를 구비하지 않고도 복수 개의 플립플럽들의 상태값을 실시간으로 추출 및 저장하기 위해, 매크로 셀의 입력과 출력에 각각 가상의 플립플럽을 추가한다.
도 23 내지 도 24를 참조하면, 본 발명에 따른 설계회로(906')는 도 23에 도시된 매크로 셀(93)의 입력단의 앞에 가상의 플립플럽(72-1 내지 72-3)을 추가하고, 매크로 셀(16)의 출력단의 뒤에 가상의 플립플럽(72-4 내지 72-6)을 추가한다.
여기서, 매크로 셀이란, 설계자가 회로설계를 용이하게 하기 위하여 RAM, ROM, ALU(Arithmetic Logic Unit) 등과 같이 기본적으로 사용되는 기능을 미리 만 들어 놓은 라이브러리(Library)를 의미한다. 일반적으로 메모리와 같이 셀 내부에 2개 이상의 상태값을 저장하고 있는 매크로 셀은 상태값을 추출하기 위해서 많은 가상의 플립플럽을 사용해야 한다는 문제가 있다. 그러나 본 발명에서는 매크로 셀의 내부를 고려하지 않고 매크로 셀의 입력값과 출력값만을 파악한다.
도 25는 도 2에 도시된 설계회로(900)의 프라이머리 입력(Primary Input)과 프라이머리 출력(Primary Output)에 가상의 플립플럽을 추가한 설계회로의 구성을 보여주는 도면이다. 도 2 및 도 25을 참조하면, 설계회로(907') 내에 구비되어 있는 복수 개의 조합회로들(95-1 내지 95-6) 중에서 제 1 조합회로(95-1), 제 2 조합회로(95-2) 그리고, 제 3 조합회로(95-3)를 디버깅하기 위해서는, 프라이머리 입력값을 알아야 한다. 그리고, 제 4 조합회로(95-4), 제 5 조합회로(95-5) 그리고 제 6 조합회로(95-6)를 디버깅하기 위해서는, 프라이머리 출력값을 알아야 한다.
본 발명에서는 프라이머리 입력값과 출력값을 알기 위하여 가상의 플립플럽을 추가하여 상태값을 저장한다. 즉, 설계회로(907')의 제 1 프라이머리 입력(InA_ck1)에 제 1 가상의 플립플럽(72-1)이 추가되고, 제 2 프라이머리 입력(InB_ck1)에 제 2 가상의 플립플럽(72-2)이 추가되고, 제 3 프라이머리 입력(InC_ck1)에 제 3 가상의 플립플럽(72-3)이 각각 추가된다. 그리고, 설계회로(907')의 제 1 프라이머리 출력(OutA_ck1)에 제 4 가상의 플립플럽(72-4)이 추가되고, 제 2 프라이머리 출력(OutB_ck1)에 제 5 가상의 플립플럽(72-5)이 추가되고, 제 3 프라이머리 출력(OutC_ck1)에 제 6 가상의 플립플럽(72-6)이 각각 추가된다.
설계회로는 최상위 모듈(Top Module)과 그 내부에 수많은 서브 모듈(Sub Module)로 구성된다. 프라이머리 입력이란 최상위 모듈의 입력단을 의미하고, 프라이머리 출력이란 최상위 모듈의 출력단을 의미한다. 그리고, 테스트벤치란 설계회로를 검증하기 위한 입력값/입력 조건과 입력값/입력 조건을 설계회로에 인가하여 얻은 출력값과 비교하기 위한 기대출력값(Expected Output)을 의미한다. 임의의 시점에 DUT(Device Under Test)내의 모든 시그널에 대한 값을 계산하기 위해서는 시간에 종속적인 테스트벤치(Testbench)의 인가가 없어야 한다. 따라서, 탑 모듈(Top Module)의 프라이머리 입력(primary Input)은 테스트벤치를 대신하게 되며, 프라이머리 출력(Primary Output)은 결과값을 비교하는 수단이 된다.
앞에서 설명한 바와 같이 본 발명에 따른 시뮬레이션 시스템은 설계회로의 모든 스토리지에 대한 상태값을 메모리에 저장하고, 하나의 설계회로를 분할된 세그멘트로 재구성한다. 재구성된 설계회로의 모든 입력값과 출력값은 메모리에 저장된 정보를 이용하여 미리 알 수 있기 때문에, 디버깅을 진행하기 위해서 시뮬레이션을 처음부터 다시 진행시킬 필요가 없다. 즉, 디버깅을 위한 시뮬레이션을 임의의 시점부터 시작할 수 있다. 뿐만 아니라, 본 발명에서 하나의 설계회로는 가상 입출력 인터페이스를 갖는 분할된 세그멘트로 재구성되기 때문에, 설계회로의 일부분을 디버깅하기 위해 전체회로에 대한 시뮬레이션을 진행할 필요가 없고, 디버깅이 필요한 조합회로만 선택적으로 시뮬레이션을 진행할 수 있다.
또한 본 발명에 따른 시뮬레이션 시스템은 설계회로의 모든 스토리지에 대한 상태값을 메모리에 저장하고 있으므로, 시뮬레이션의 결과 특정 회로에서 페일(Fail)이 발생한다면 페일이 발생한 가상의 플립플럽을 바로 확인할 수 있으므로 디버깅을 수행함에 있어 용이하다.
또한, 본 발명에서는 순차회로(Sequencial Circuit)및 조합회로를 세그멘트로 분할하여 시간 및 공간적으로 분산된 게이트수준 타이밍 시뮬레이션을 분산하여 수행할 수 있기 때문에 시뮬레이션 수행시간을 단축할 수 있다. 그리고 설계회로의 모든 스토리지에 대한 상태값을 저장하고 있고, 설계회로가 하나 이상의 세그멘트로 재구성되므로 에러(Error)의 전달(Propagation)이 이루어지지 않기 때문에 여러 개의 타이밍 에러에 대한 검출 및 디버깅이 가능하다. 이와 달리 종래의 기술에서는 게이트 딜레이로 인하여 플리플럽의 셋업 타임 바이얼레이션(setup time violation) 또는 홀드 타임 바리얼레이션(hold time violation)이 발생할 경우, 그 뒷단 플립플럽과 그 이후 시간에 대한 시뮬레이션 값이 알 수 없는 값(unknown)으로 처리되어 더 이상의 디버깅이 불가능한 문제점이 있다.
또한, 본 발명에서는 레지스터수준의 설계회로의 스토리지 상태값에 대하여 연속되는 두 시각(t1, t2)에 대한 상태값을 이용하여 레지스터수준의 설계회로와 게이트수준의 설계회로간의 기능적 등가(Functional Equivalence)임을 확인할 수 있다. 예를 들면, t1일때의 스토리지의 상태값에는 제로 딜레이(zero delay) 혹은 레이아웃 결과(post-layout)를 이용한 딜레이가 적용된다. t1일때의 스토리지의 상태값은 분할된 세그멘트의 입력단으로 입력된다. 이때 조합회로로부터 발생된 결과는 t2일때의 스토리지의 상태값과 비교된다. 만약 비교결과가 같으면 레지스터수준의 설계회로와 게이트수준의 설계회로간의 기능적 등가(Functional Equivalence)가 성립된다. 만약 그렇지 않다면 레지스터수준의 설계회로와 게이트수준의 설계회로 간의 기능적 등가(Functional Equivalence)가 성립되지 않는다.
이 외에도 본 발명에서는 임의의 시점에서 클락 네트워크 딜레이(Clock Network Delay) 계산을 수행할 수 있는 구성을 갖는다. 따라서, 시간적으로 독립된 시뮬레이션을 수행할 수 있게 된다. 그리고, 본 발명에서는 설계회로 전체에 대한 클락 네트워크만을 따로 계산하여 모든 스토리지의 클락 핀까지의 도달 시간을 구한 정보를 공간적 분할된 시뮬레이션을 수행하는데 이용할 수 있다. 뿐만 아니라, 클락 네트워크 딜레이에 변화로 인하여 설계회로의 스토리지의 상태값이 변하는 경우 클락 도메인의 클락 네트워크 딜레이를 고려하여 설계회로의 스토리지의 클락 핀까지 도달 시간을 구한 정보를 공간적 분할된 시뮬레이션을 수행하는데 이용할 수 있다. 그리고, 클락 네트워크 딜레이에 변화로 인하여 설계회로의 스토리지의 상태값이 변하는 경우 클락 도메인의 클락 네트워크 딜레이를 고려하여 임의의 시각에 적용하여 시간적으로 독립된 시뮬레이션을 수행할 수 있다.
한편, 본 발명은 전력시뮬레이션에 적용할 수 있다. 일반적인 전력시뮬레이션은 특정 구간에서 설계회로의 일부 넷(net) 또는 셀(cell)의 출력의 변화를 측정하여 평균전력소비를 예측한다. 전력시뮬레이션은 배치배선후 시뮬레이션에 비하여 수 배이상 느리기 때문에 전력시뮬레이션의 모든 구간에 대하여 설계회로의 모든 넷 또는 모든 셀의 출력의 변화를 측정한다는 것은 실질적으로 불가능하다. 하지만 본 발명에서는 전 시뮬레이션 시간동안 시공간 분할 시뮬레이션을 통한 빠른 시간 내에 모든 넷 또는 셀의 출력의 변화를 측정하는 것이 가능하여 설계회로의 실제값에 가장 가까운 전력소비값을 구할 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 것을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
본 발명에 의하면, 설계회로의 게이트수준 타이밍 및 배치배선후 시뮬레이션 및 디버깅 시간을 감소시킬 수 있고, 설계회로의 전력소비를 예측하기 위한 전력시뮬레이션에 적용할 수 있다.

Claims (37)

  1. 시뮬레이션 시스템 외부로부터 입력된 검증 프로그램을 이용하여 설계 회로에 대한 시뮬레이션을 수행하는 프로세서; 그리고
    상기 시뮬레이션이 수행되는 동안 상기 프로세서에 의해 처리된 상기 설계회로의 복수의 스토리지들의 상태값과 상기 설계회로에 대응되는 분할된 세그멘트를 저장하는 메모리를 포함하며,
    상기 프로세서는 상기 분할된 세그멘트를 상기 복수의 스토리지들에 대응되는 가상 입출력 인터페이스를 갖는 분할된 세그멘트들로 재구성하여 상기 메모리에 저장하고, 상기 메모리에 저장된 상기 복수의 스토리지들의 상태값을 상기 메모리에 저장된 상기 분할된 세그멘트들의 입력값 또는 출력값으로 대체하고, 상기 대체된 입력값 또는 출력값을 이용하여 상기 설계회로에 대한 디버깅을 수행하는 것을 특징으로 하는 시뮬레이션 시스템.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 프로세서는 상기 분할된 세그멘트들 각각에 대해 독립적으로 시뮬레이 션할 수 있는 것을 특징으로 하는 시뮬레이션 시스템.
  4. 삭제
  5. 삭제
  6. 제 1 항에 있어서,
    상기 설계회로는 복수의 세그멘트들로 구성된 것을 특징으로 하는 시뮬레이션 시스템.
  7. 제 6 항에 있어서,
    상기 복수의 세그멘트는 세그멘트간의 연결이 없는 하드 세그멘트와 세그멘트간의 연결이 있는 소프트 세그멘트로 구성된 것을 특징으로 하는 시뮬레이션 시스템.
  8. 제 7 항에 있어서,
    상기 소프트 세그멘트는 상기 복수의 세그멘트간의 연결에 가상의 플립플럽을 추가하는 것을 특징으로 하는 시뮬레이션 시스템.
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 레지스터수준 설계회로를 가상 입출력 인터페이스를 갖는 분할된 세그멘트들로 변경하여 상기 분할된 세그멘트들을 메모리에 저장하는 단계;
    레지스터수준 설계회로의 배치배선전 시뮬레이션 동안 처리된 상기 설계회로의 복수의 스토리지들의 상태값을 메모리에 저장하는 단계;
    상기 레지스터수준 설계회로는 게이트수준 설계회로로 합성되는 단계;
    상기 게이트수준 설계회로의 복수의 스토리지들의 상태 값을 가상 입출력 인터페이스로 대체하는 단계;
    상기 메모리에 저장된 상기 복수의 스토리지들의 상태값을 상기 메모리에 저장된 상기 분할된 세그멘트들의 입력값 또는 출력값으로 대체하는 단계; 그리고
    상기 대체된 입력값과 출력값을 이용하여 상기 분할된 세그멘트들에 대하여 타이밍 시뮬레이션을 수행하는 단계를 포함하는 것을 특징으로 하는 시뮬레이션 방법.
  20. 제 19 항에 있어서,
    상기 분할된 세그멘트들은 독립적으로 시뮬레이션되는 것을 특징으로 하는 시뮬레이션 방법.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 제 19 항에 있어서,
    상기 타이밍 시뮬레이션은 상기 게이트수준 설계회로에 대하여 딜레이를 고려한 배치배선후 시뮬레이션인 것을 특징으로 하는 시뮬레이션 방법.
  25. 삭제
  26. 제 19 항에 있어서,
    상기 타이밍 시뮬레이션 결과를 근거로 하여 상기 레지스터수준의 설계회로와 상기 게이트수준의 설계회로가 기능적으로 등가임을 확인하는 단계를 더 포함하는 것을 특징으로 하는 시뮬레이션 방법.
  27. 삭제
  28. 제 19 항에 있어서,
    상기 타이밍 시뮬레이션을 수행하여 페일이 발생한다면 페일이 발생한 가상의 플립플럽을 확인하는 단계를 더 포함하는 것을 특징으로 하는 시뮬레이션 방법.
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
KR1020060043082A 2006-05-12 2006-05-12 시뮬레이션 시스템 및 그 방법 KR101205325B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020060043082A KR101205325B1 (ko) 2006-05-12 2006-05-12 시뮬레이션 시스템 및 그 방법
US11/747,664 US7949510B2 (en) 2006-05-12 2007-05-11 Distributed simultaneous simulation
JP2007128355A JP2007305137A (ja) 2006-05-12 2007-05-14 分配された同時的シミュレーション

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060043082A KR101205325B1 (ko) 2006-05-12 2006-05-12 시뮬레이션 시스템 및 그 방법

Publications (2)

Publication Number Publication Date
KR20070110168A KR20070110168A (ko) 2007-11-16
KR101205325B1 true KR101205325B1 (ko) 2012-11-29

Family

ID=38686535

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060043082A KR101205325B1 (ko) 2006-05-12 2006-05-12 시뮬레이션 시스템 및 그 방법

Country Status (2)

Country Link
US (1) US7949510B2 (ko)
KR (1) KR101205325B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102350941B1 (ko) 2021-05-25 2022-01-14 주식회사 바움디자인시스템즈 집적 회로 설계 방법 및 이를 수행하는 집적 회로 설계 시스템

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8024683B2 (en) * 2008-05-23 2011-09-20 International Business Machines Corporation Replicating timing data in static timing analysis operation
US7962871B2 (en) * 2008-05-23 2011-06-14 International Business Machines Corporation Concurrently modeling delays between points in static timing analysis operation
KR101894752B1 (ko) 2011-10-27 2018-09-05 삼성전자주식회사 가상 아키텍쳐 생성 장치, 런타임 시스템, 멀티 코어 시스템 및 그 동작 방법
US8464195B1 (en) * 2012-07-03 2013-06-11 Oracle International Corporation Integrated circuit clock analysis with macro models
US9817795B2 (en) * 2014-10-30 2017-11-14 Konica Minolta Laboratory U.S.A., Inc. Document layout for electronic displays

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001508202A (ja) 1996-06-12 2001-06-19 ゾーリ、イフタック ディジタル論理シミュレーション/エミュレーションシステム
US20040249623A1 (en) 2003-06-05 2004-12-09 Charley Selvidge Compression of emulation trace data
JP2005086215A (ja) 2003-09-04 2005-03-31 Sony Corp 半導体集積回路、回路設計装置および方法、記録媒体、並びにプログラム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4945479A (en) * 1985-07-31 1990-07-31 Unisys Corporation Tightly coupled scientific processing system
US4873630A (en) * 1985-07-31 1989-10-10 Unisys Corporation Scientific processor to support a host processor referencing common memory
JPH06282600A (ja) 1993-03-29 1994-10-07 Mitsubishi Electric Corp 論理シミュレーション装置
US5812823A (en) * 1996-01-02 1998-09-22 International Business Machines Corporation Method and system for performing an emulation context save and restore that is transparent to the operating system
JP2904172B2 (ja) 1996-12-19 1999-06-14 日本電気株式会社 論理回路シミュレータ
US7113902B2 (en) * 2000-03-02 2006-09-26 Texas Instruments Incorporated Data processing condition detector with table lookup
KR100824503B1 (ko) 2000-06-20 2008-04-22 양세양 신속한 입출력탐침 장치 및 이를 이용한 입출력탐침방법과 이를 기반으로 하는 혼합 에뮬레이션/시뮬레이션방법
US7171593B1 (en) * 2003-12-19 2007-01-30 Unisys Corporation Displaying abnormal and error conditions in system state analysis
KR101282963B1 (ko) * 2006-05-12 2013-07-08 삼성전자주식회사 에뮬레이션 시스템 및 그 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001508202A (ja) 1996-06-12 2001-06-19 ゾーリ、イフタック ディジタル論理シミュレーション/エミュレーションシステム
US20040249623A1 (en) 2003-06-05 2004-12-09 Charley Selvidge Compression of emulation trace data
JP2005086215A (ja) 2003-09-04 2005-03-31 Sony Corp 半導体集積回路、回路設計装置および方法、記録媒体、並びにプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102350941B1 (ko) 2021-05-25 2022-01-14 주식회사 바움디자인시스템즈 집적 회로 설계 방법 및 이를 수행하는 집적 회로 설계 시스템
US11475190B1 (en) 2021-05-25 2022-10-18 Baum Design Systems Co., Ltd. Method for designing an integrated circuit and an integrated circuit designing system performing the same

Also Published As

Publication number Publication date
US7949510B2 (en) 2011-05-24
US20070266355A1 (en) 2007-11-15
KR20070110168A (ko) 2007-11-16

Similar Documents

Publication Publication Date Title
US10295594B2 (en) Integrated circuit verification using parameterized configuration
US5974247A (en) Apparatus and method of LSI timing degradation simulation
US7055118B1 (en) Scan chain verification using symbolic simulation
KR100483876B1 (ko) 반도체 집적 회로 설계 및 검증 시스템
US20070226664A1 (en) Method and system for verifying the equivalence of digital circuits
KR101205325B1 (ko) 시뮬레이션 시스템 및 그 방법
US5946475A (en) Method for performing transistor-level static timing analysis of a logic circuit
US7437701B1 (en) Simulation of a programming language specification of a circuit design
US7228262B2 (en) Semiconductor integrated circuit verification system
US11216607B2 (en) Double glitch capture mode power integrity analysis
KR100767957B1 (ko) 에뮬레이션과 시뮬레이션 정식검증을 혼용한 설계 검증 방법
Ruan et al. A Built-In Self-Test (BIST) system with non-intrusive TPG and ORA for FPGA test and diagnosis
CN117461259A (zh) 可测试的时间到数字转换器
Abdelatty et al. Fault: Open-source EDA’s missing DFT toolchain
Ubar et al. Diagnostic modeling of digital systems with multi-level decision diagrams
Shetty ASIC Design Flow And Methodology–An Overview
KR20060066634A (ko) 검증 성능과 검증 효율성을 높이는 동적검증 기법 방식의검증 장치 및 이를 이용한 검증 방법론
Siripokarpirom et al. Hardware-assisted simulation and evaluation of IP cores using FPGA-based rapid prototyping boards
JP5043500B2 (ja) 状態回復を有する回路エミュレーション
Jinling et al. A fault simulation method based on mutated truth table of logic gates
Ferrandi et al. Testability alternatives exploration through functional testing
Strauch An RTL ATPG Flow Using the Gate Inherent Fault (GIF) Model Applied on Non-, Standard-and Random-Access-Scan (RAS)
Biasoli et al. Behavioral test generation for the selection of BIST logic
Alluri et al. Hybrid emulation approach in ISO 26262 compliant unit test process
Deniziak et al. Fast high-level fault simulator

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee