KR101054706B1 - 넷리스트의 순차적 공통인자 기반의 분석을 위한 방법, 시스템 및 애플리케이션 - Google Patents

넷리스트의 순차적 공통인자 기반의 분석을 위한 방법, 시스템 및 애플리케이션 Download PDF

Info

Publication number
KR101054706B1
KR101054706B1 KR1020100014767A KR20100014767A KR101054706B1 KR 101054706 B1 KR101054706 B1 KR 101054706B1 KR 1020100014767 A KR1020100014767 A KR 1020100014767A KR 20100014767 A KR20100014767 A KR 20100014767A KR 101054706 B1 KR101054706 B1 KR 101054706B1
Authority
KR
South Korea
Prior art keywords
sequential
multiplexer
circuit
output
gate
Prior art date
Application number
KR1020100014767A
Other languages
English (en)
Other versions
KR20100107386A (ko
Inventor
제이슨 레이몬드 바움가트너
해리 모니
바이레쉬 패루시
로버트 로웰 칸젤맨
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20100107386A publication Critical patent/KR20100107386A/ko
Application granted granted Critical
Publication of KR101054706B1 publication Critical patent/KR101054706B1/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
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/543User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

검증 결과에 대하여 설계의 거동을 보존하면서 집적 회로의 설계 크기를 감소시키기 위한 방법, 시스템 및 컴퓨터 제품이 제공된다. 분석될 게이트에 멀티플렉서가 삽입되고, 분석될 지점에서 하나의 프레임에 대하여 미리 결정된 출력을 제공하도록 멀티플렉서 선택기가 제어된다. 그 다음, 분석될 게이트가 교체용 후보인지 결정하기 위하여 미리 결정된 출력의 인가 동안 회로가 계속 동등하게 유지되는지 여부가 판정된다.

Description

넷리스트의 순차적 공통인자 기반의 분석을 위한 방법, 시스템 및 애플리케이션{METHOD, SYSTEM AND APPLICATION FOR SEQUENTIAL COFACTOR-BASED ANALYSIS OF NETLISTS}
본 발명은 상태 머신(state machine)의 디지털 회로 설계에 관한 것으로, 보다 상세하게는 디지털 회로 설계에서의 효율성 개선을 위한 시스템, 방법 및 컴퓨터 제품에 관한 것이다.
메모리 소자를 구비한 전기 회로는 시스템의 거동 및 상태를 기술하도록 상태 방정식과 상태 변수를 사용하여 모델링될 수 있다. 상태들 간의 전이를 정의하는 논리와 결합된, 시스템에 대한 상태 변수들의 전체 집합은, 통상적으로 시스템의 향후 거동의 연산이 가능할 만큼 시스템의 이력에 대한 충분한 정보를 포함한다. 상태 변수들의 수를 감소시키도록 모델을 단순화하거나, 상태 전이들을 정의하는 논리를 단순화하면, 예를 들어 소정의 규격에 맞음을 검증(verify)하기 위해, 모델을 분석하는 것의 연산 비용을 줄인다.
상태 변수 모델들의 합성(synthesis) 및 검증은 엄청난 양의 연산 리소스를 필요로 할 수 있다. 설계 크기를 감소시키는 프로세스는 연산 요건을 감소시키는데 있어서 유용할 것이며, 따라서 논리 합성 및 검증을 향상시킬 것이다. 필요한 것은, 검증 결과에 대하여 설계의 거동을 보존하면서 설계 크기를 감소시키는 자동화된 방법이다.
본 발명은 디지털 회로 설계에서의 효율성 개선을 위한 시스템, 방법 및 컴퓨터 제품을 제공하고자 한다.
본 명세서에서 개시하는 실시예는 특정 게이트가 순차적 설계의 거동에 미치는 영향을 평가할 프레임워크를 제공함으로써 상기 서술한 필요성에 대처한다. 이 프레임워크는 순차적 공통인자화(cofactoring) 방법, 즉 특정 시간 간격으로 게이트의 평가(valuation)를 토글링하는 회로의 삽입을 포함한다. 이 프레임워크는 ODC(observability don't care) 조건, 즉 합성 또는 검증을 향상시키도록 게이트가 제거될 수 있는 조건을 평가하는 것과 같은 애플리케이션에 사용되는 조합(combinational) 토글 분석을 일반화한다. 이 일반화는 조합 분석보다 더 강력한 순차 분석 기반의 감소를 수행할 수 있는 효율적인 프레임워크를 가능하게 한다. 또한, 모든 시간프레임들에 걸쳐 공통인자화하는 순차적 일반화의 방법들에 비해 이 특정 모델링으로부터 이점을 얻는 여러 가지 개별 응용들이 개시된다. 상기 방법은 설계에의 회로의 추가 및 조작을 통하여 구현되며, 따라서 논리 시뮬레이터 또는 형식적 검증 알고리즘과 같은 논리 평가 프레임워크를 사용한 분석 뿐만 아니라, 논리 에뮬레이터/가속기와 같은 하드웨어 기반의 프레임워크 그리고 심지어는 제조된 칩을 사용한 분석에 적용 가능하다.
본 명세서에서 개시하는 다양한 실시예들은 순차 회로 넷리스트(netlist)에 대한 순차적 공통인자 기반의 회로 설계를 위한 시스템, 컴퓨터 제품 및 방법을 제공한다. 분석을 위해 순차 회로의 임의의 게이트가 선택된 다음, 그 임의의 게이트를 멀티플렉서에 접속시키도록 순차 회로 넷리스트가 구성된다. 순차 회로 넷리스트는 또한 그 임의의 게이트의 선택기 입력에 선택기 제어 회로를 접속시키도록 구성된다. 선택기 입력에 인가된 ctime 신호를 검출하는 것에 응답하여, 멀티플렉서 출력은 임의의 게이트 출력을 변경하도록 설정되며, 멀티플렉서 출력이 임의의 게이트 출력을 변경하도록 설정되어 있는 시간 동안 순차 회로 거동이 계속 동등하게 유지되는지 여부에 대한 판정이 이루어진다.
본 발명에 따르면, 넷리스트의 순차적 공통인자 기반의 분석을 위한 방법, 시스템 및 애플리케이션을 제공할 수 있다.
본 명세서에 포함되어 본 명세서의 일부를 구성하는 첨부 도면은 본 발명의 다양한 실시예들을 도시한다. 일반적인 설명과 함께, 도면은 본 발명의 원리를 설명하는 것을 돕는다.
도 1a는 포지티브 및 네가티브 공통인자화를 위한 입력 및 출력을 도시한다.
도 1b는 ODC 기반의 넷리스트 분석을 위한 입력 및 출력을 도시한다.
도 2a 및 도 2b는 순차적 포지티브 및 네가티브 공통인자화를 위한 회로를 도시한다.
도 3은 본 발명의 다양한 실시예에 따른 순차적 포지티브 및 네가티브 공통인자화의 방법을 도시하는 흐름도이다.
도 4a 및 도 4b는 순차적 ODC 넷리스트 분석을 위한 회로를 도시한다.
도 5는 본 발명의 다양한 실시예에 따른 순차적 반전 기반의 ODC 넷리스트 분석의 방법을 도시하는 흐름도이다.
도 6은 다양한 예시적인 실시예를 구현하고 실시하기에 적합한 컴퓨터 시스템(600)을 도시한다.
회로 설계 상의 감축을 수행하기 위한 하나의 기술은 ODC 기반의 분석이다. 이 유형의 분석은 게이트의 값이 회로의 전체 거동에 영향을 미치지 않는 조건을 식별함으로써 설계가 간소화될 수 있는 유연성을 이끌어낸다. 이러한 기술은 특정 게이트의 값을 반전시키고 원래 게이트와 수정된 게이트가 동일한 것으로 평가될 조건을 열거함으로써 운용된다. 대안의 검증 패러다임은 공통인자화, 즉 검증 복잡도를 감소시키도록 또는 그 게이트가 나머지 회로에 미치는 영향을 열거하도록 설계의 게이트를 상수 0과 1로 교체하는 것에 따른다. 이들 분석 유형의 양자 모두 종래에는 조합 회로 상에서 운용되는 것에 한정되어 왔다. 본 개시는 상태 머신의 디지털 회로 설계에서의 사용을 위해 순차적 공통인자화를 통한 검증 및 합성에 조합 공통인자화를 적응시키고, 추가적으로 이들 신규 기술의 이점을 이용할 여러 가지 응용들을 열거한다. 또한, 이 순차적 공통인자화 해결책은 순전히 논리 회로에 관련하여 달성될 수 있으며, 논리 시뮬레이터, FPGA 및 하드웨어 가속기와 같은 다양한 회로 기반의 분석 프레임워크, 형식적 추론 알고리즘, 그리고 심지어는 반도체 디바이스에 사용될 수 있게 해준다.
도 1a는 포지티브(positive) 및 네가티브(negative) 공통인자화를 위한 입력 및 출력을 도시한다. 이 예는 4개의 입력 i1..i4 및 4개의 출력 o1..o4을 갖는 임의의 설계를 도시한다. 일반적으로, 분석될 설계는 임의의 수의 입력 및 출력을 가질 수 있다(도 1b, 도 2a와 도 2b, 및 도 4a와 도 4b의 설계에서도 똑같다고 할 수 있음). 공통인자 기반의 분석은 검증에 있어서 다양한 종래의 애플리케이션을 갖는다. 예를 들어, 조합 넷리스트를 고려해 볼 때, 공통인자 기반의 분석은, 임의의 게이트가 포지티브 공통인자화된 다음 네가티브 공통인자화되는 경우, 먼저 넷리스트의 거동을 분석함으로써 케이스 분할(case splitting) 절차로서 사용될 수 있다. 공통인자화된 회로에 대해 수행될 수 있는 분석 유형의 예로는, 넷리스트에서의 특정 게이트가 소정의 값, 예를 들어 1로 평가될 수 있는지 여부를 가늠하기를 원할 수 있는 경우 만족성(satisfiability) 체크가 있다. 공통인자화는 넷리스트 표현을 단순화하며, 그리하여 만족성 체크가 일반적으로 넷리스트 크기에 대하여 지수적 실행시간을 필요로 하므로 공통인자화된 넷리스트에 대해 수행된 분석은 연산 리소스가 실질적으로 더 적어질 수 있다. 도 1a는 넷리스트 공통인자화에 수반되는 입력 및 출력을 도시한다. 도면은 4개 입력 i1..i4을 갖는 원래 넷리스트 N을 도시하며, 그 다음에 입력 i1이 포지티브 그리고 네가티브 공통인자화된다.
도 1b는 공통인자 유형 분석과 유사한 또 다른 종래의 응용인 ODC 기반의 넷리스트 분석을 위한 입력 및 출력을 도시한다. ODC는 특정 게이트의 값이 다른 게이트의 다른 값에 의해 가려짐으로써 전체 넷리스트의 거동에 영향을 미치지 않는 조건을 칭한다. 예를 들어, 입력 gate1 및 gate2를 갖는 AND 게이트로 구성되는 작은 넷리스트를 고려해볼 때, gate1에 대한 ODC 조건은 gate2가 0으로 평가되는 것이다. 이러한 상황 하에서, AND 게이트는 gate1의 값에 관계없이 0으로 평가될 것이다. ODC는 향상된 합성 또는 검증을 위해 회로를 최적화하는데 사용될 수 있으며, 예를 들어 회로가 gate2=0인 상태를 제외하고는 gate1과 동일한 gate3을 갖는 경우, gate1과 gate3은 전체 넷리스트 거동을 변경하는 일 없이 넷리스트 크기를 감소시키도록 병합될 수 있다. ODC 분석을 수행하는 것은 종종 넷리스트의 2개 복사본을 분석하는 것을 수반하는데, 하나는 원래 넷리스트이고 다른 하나는 ODC 조건이 평가되고 있는 게이트가 도 1b에 도시된 바와 같이 자신의 출력에 삽입된 인버터를 갖는 넷리스트이다. 넷리스트의 출력이 동일한 임의의 게이트 조건들은 분석대상 게이트에 대한 ODC 공간을 나타낸다. 도 1b는 게이트 g1에 대하여 넷리스트 N에 대한 ODC 형성을 도시한다.
도 2a 및 도 2b는 본 개시의 하나의 양상인 임의의 게이트 i1에 대한 순차적 포지티브 및 네가티브 공통인자화를 위한 회로를 도시한다. 조합 공통인자에 관해 순차적 공통인자화가 일반화된다. 그러나, 단지 임의의 게이트 i1을 상수로 교체하는 대신에, 순차적 공통인자는 그 임의의 게이트를 멀티플렉서(201) 및 하나의 시간 프레임에 대하여 멀티플렉서를 제어하도록 설계된 회로(205)로 교체한다. 도 2a 및 도 2b에서의 점선은 단지 ctime=1의 첫 번째 발생(incidence)을 검출하면 단 하나의 시간 프레임에 대해서만 1로 평가되도록 설계된 회로(205)에 대한 하나의 구현을 나타낸다. 도 2a 및 도 2b(그리고 도 4a 및 도 4b)에 도시된 회로는, 단일 칩 상에 전체적으로 위치되어 있는 회로 설계 내에 위치될 수 있거나, 또는 어떤 표현이든 분석될 회로가 원하는 애플리케이션에 적용 가능하게 되는 것과 함께 - 예를 들어, FPGA(field programmable gate array) 또는 하드웨어 가속에 사용되는 기타 재구성가능한 하드웨어 모듈 내에 - 동등하게 위치될 수 있다는 것을 유의하여야 한다. 일부 구현에서, 입력 i1-i4과 출력 o1-o4의 일부가 반드시 칩 입력 또는 출력인 것은 아닐 수 있다. 이들 입력 및 출력은 단순히 넷리스트에서의 다른 회로에 접속될 수 있다. 다른 구현에서, 입력 및 출력 중 하나 이상이 일부 경우에 칩 입력/출력일 수 있다. 또한, 일부 구현에서 넷리스트 입력 또는 출력의 수는 상당히 더 클 수 있다.
도 2a 및 도 2b에 도시된 실시예에서, 멀티플렉서의 선택기 s는 단 하나의 임의의 시간 프레임에 대하여 1로 평가될 수 있는 게이트(회로(205))에 의해 선택된다. 선택기 s가 1로 평가되면, 멀티플렉서의 출력에서 상수가 구동된다. 상수는 도 3a에서는 1이고, 도 3b에서는 0이다. ctime=1의 첫 번째 확정(assertion) 외의 다른 시간프레임에서는, 멀티플렉서(201)의 출력에서 임의의 게이트가 구동된다. 적어도 하나의 실시예에서 입력 변수 "ctime"은 값 1로의 그의 첫 번째 확정 동안 공통인자 값이 i1 상에 구동될 경우 시간 프레임을 제어하도록 도입된 새로운 임의의 게이트이다. 대안의 실시예에서, "ctime"은 임의의 회로에 - 예를 들어, 회로(205)를 내장한 애플리케이션이 가능하면 상기 애플리케이션과 상호작용하는 사람의 제어 하에 또는 회로에서의 다른 작동에 응답하여, 이 첫 번째 확정 시간을 제어할 수 있게 하도록 - 접속될 수 있다. ctime 확정을 트리거할 수 있는 회로 작동의 예로는, 회로 내의 특정 인터페이스에서의 특정 유형의 명령의 검출, 데이터 버퍼 충전(filling) 또는 비움(emptying)의 검출, 회로의 임의의 유닛에서 특정 요청 또는 승인 조건의 검출, 분석 동안 시간이 경과하였거나 회로의 특정 횟수 "클록"한 표시를 포함한다. 공통인자화는 그의 선택기 s가 1로 평가되는 경우 공통인자 상수를 구동하고 그렇지 않으면 i1을 구동하는 멀티플렉서(201)를 통하여 달성된다. 선택기는 정확하게 "ctime"의 첫 번째 확정시 1로 평가되는 논리에 의해 구동된다. 지난 확정들은 레지스터 r1에 의해 보고되며, 레지스터 r1은 0으로 초기화된 다음, "ctime"의 첫 번째 확정 후에 1을 유지한다.
도 3은 본 발명의 다양한 실시예에 따른 순차적 포지티브 및 네가티브 공통인자화의 방법을 도시하는 흐름도(300)이다. 본 방법은 301에서 시작되고, 303으로 진행하여 초기 회로 설계를 지정하는 회로 넷리스트를 정의한다. 이는 규약(convention) 및 조건(terms)을 정의하고, 시스템 모델의 초기 조건을 설정하는 것을 포함하며, 순차적 공통인자화를 통하여 조작될 설계에 대한 넷리스트를 준비하도록 데이터를 불러오는(import) 것을 수반할 수 있다. 예시적인 넷리스트는 게이트를 나타내는 정점과 이들 게이트들 간의 상호접속을 나타내는 에지를 갖는 방향 그래프(directed graph)를 포함한다. 게이트는 상수, 일차 입력(임의의 게이트로 또는 가끔은 RANDOM 게이트로 칭할 수 있음), AND 게이트와 같은 조합 논리, 및 순차적 상태 보유 소자와 같은 연관된 기능들을 갖는다. 순차적 상태 보유 소자는 하나 이상의 입력과 적어도 하나의 출력을 가지며, 이들 각각은 별개의 상태들(예를 들어, 논리적 1 또는 논리적 0)을 특징으로 할 수 있다. 때때로 메모리 소자로 불리는 상태 보유 소자(예를 들어, 레지스터, 래치, RAM 회로 등)를 포함하는 임의의 종류의 상태 머신과 더불어 다양한 실시예들이 실시될 수 있다. 출력의 상태(또는 하나보다 많은 경우에는 각 출력의 상태)는 입력 채널의 이전의 상태에 의해 결정된다. 레지스터의 초기화 시간 또는 리셋 시간은 여기에서 시간 제로(t=0)로 나타낸다. 레지스터는 통상적으로 2개의 연관된 컴포넌트, 다음 상태 기능과 초기 값 기능을 갖는다. 이들 연관된 컴포넌트는 둘 다 그래프에서 다른 게이트로서 표현될 수 있다. 의미상으로, 소정의 레지스터에 대하여, 시간 논리 0에서 그의 초기값 게이트에서 나타나는 값이 레지스터 자체의 값으로서 인가될 것이다(시간 "0" = "초기화" 또는 "리셋" 시간). 시간 "i"에서 그의 다음 상태 기능 게이트에서 나타나는 값은 시간 "i+1"에서 레지스터 자체에 인가될 것이다. 모델의 특정 게이트는 타겟으로 라벨링될 수 있다. 타겟은 검증하려고 하는 특성들과 상관된다. 검증 프로세스의 하나의 목적은, 타겟 노드에 "1"을 구동시킬 방식을 찾고, 찾으면 이 시나리오를 예시하는(또는 보고하는) "트레이스"를 발생시키는 것이다. 검증의 또 다른 목적은, 타겟의 이러한 확정이 가능하지 않음, 즉 타겟 노드에 "1"을 구동시킬 방식이 없다는 것을 증명하는 것이다.
회로 넷리스트를 정의하는 303을 완료하면, 방법은 305로 진행하여 멀티플렉서로 교체할 임의의 게이트를 선택한다. 임의의 게이트란, 단순히 분석을 위해 선택된 게이트(또는 게이트 집합)를 의미한다. 예를 들어, 도 2a 및 도 2b에서, 입력 i1은 회로(205)의 제어 하에 i1을 멀티플렉서(201)로 교체함으로써 분석될 게이트로서 선택된다. 307에서 멀티플렉서 입력 및 출력이 구성된다. 하나의 멀티플렉서 입력은 선택된 임의의 게이트와 연관된 입력 i에 연결된다(tied). 다른 멀티플렉서 입력은 상수, 도 2a에서와 같은 1이나 도 2b에서와 같은 1에 연결된다. 도 2a 및 도 2b에 도시된 바와 같이, 멀티플렉서(201)의 출력은 입력 i1에 예전에 접속되었던 회로의 지점에 연결된다. 그 다음, 방법은 309로 진행하여 초기 조건으로 회로를 설정한다.
블록 311에서, 분석될 임의의 게이트에 대하여 동등성(equivalence)에 대한 평가가 시작된다. 이는, 분석되고 있는 회로의 복잡도 및 구현의 독특함에 따라, 단순히 나중의 분석을 위해 입력 및 출력을 기록하는 것을 수반할 수 있거나, 또는 각각의 클록 주기 후에 행해질 수 있다. 대안으로서, 이는 넷리스트의 이차 복사본을 생성하고 상기 멀티플렉서 회로에서 대안의 상수 값을 계속 구동시키며 도 3의 흐름도에 따라 조작하는 것을 수반할 수 있으며, 그리하여 2개 복사본의 거동이 동등성 또는 비동등성(inequivalence)(각각 도 2a 및 도 2b의 2개의 넷리스트를 칭함)에 대하여 직접 비교될 수 있다. 또 다른 대안으로서, 어떠한 직접적인 동등성 비교도 필요하지 않을 수 있다. 대신에, 이 순차적 공통인자 회로는 일부 거동의 수정을 트리거할 수 있는지 알아보도록 분석대상 설계를 조작하는데 사용될 수 있고(예를 들어, "자가 체크" 회로의 고장 또는 임의의 기타 형태의 거동 정확성 체크 규격), 동등성의 평가는 오로지 예상 거동을 나타내는 수정된 설계와만 관련된다. 방법은 313으로 진행하여 동기식 회로의 동작을 시작한다. 입력(예를 들어, 도 2a 및 도 2b의 i1 내지 i4; 설계의 입력의 특정 수는 일반적으로 다양할 것이며, 도 2a 및 도 2b는 단지 하나의 특정 설계를 나타낸 것임을 다시 유의하자)에 대한 값이 그들 적절한 시퀀스로 회로에 인가된다. 313을 완료하면, 방법은 315로 진행하여 ctime 입력에 처음으로 1이 인가되었는지 여부를 판정한다.
처음으로 ctime=1을 인가하면, 회로(205)로 하여금 상수 출력, 즉 도 2a에 따라 상수 1이나 도 2b에 따라 상수 0을 선택하도록 멀티플렉서(201)의 선택기를 제어하도록 한다. 처음으로 1 입력이 ctime에 인가된 후에, 회로(205)는 더 이상 상수 전압(1 또는 0)을 인가하지 않을 것이다. 대신에, 멀티플렉서(201) 선택기는 ctime=1의 처음의 인가가 처리된 후에 항상 멀티플렉서(201)의 출력에서 임의의 게이트 입력 i1을 제공하도록 제어된다. 즉, 멀티플렉서 제어 회로(205)는 ctime=1이 이미 발생하였음을 "기억하고", 그에 따라 멀티플렉서(201) 출력에서 입력 i1을 인가하도록 멀티플렉서(201)를 제어한다. ctime=1의 처음의 인가를 검출하면, 방법은 315로부터 YES 경로를 따라 317로 진행하여, 하나의 시간 프레임에 대하여 상수 값으로 멀티플렉서(201) 출력을 설정한다. 그 다음, 방법은 319로 진행하여 회로의 동등성을 평가한 다음, 321로 진행하여 분석이 완료되었는지 여부를 판정한다. 315로 돌아가서, ctime 입력이 처음으로 1인 것은 아니라고 판정되는 경우, 방법은 315로부터 NO 경로를 따라 319로 진행하여 회로의 동등성을 평가한다. 319를 완료하면, 방법은 321로 진행한다.
블록 321에서, 평가가 아직 완료되지 않은 것으로 판정되는 경우, 방법은 321로부터 NO 경로를 따라 313으로 다시 진행하여, 동기식 회로를 반복함으로써, 또 다른 입력 집합(예를 들어, 도 2a 및 도 2b로부터의 i1-i4)을 회로에 인가시킨다. 그러나, 분석이 완료된 것으로 321에서 판정되는 경우, 방법은 321로부터 YES 경로를 따라 323으로 진행하여, 순차적 공통인자가 분석을 진행한 특정 시간에서의 i1 입력과 동등한지 여부, 즉 i1 대신에 입력에 인가된 ctime=1의 인가에 의한 결과를 판정한다. 블록 323을 완료하면, 방법은 325로 진행하여 종료된다.
도 4a 및 도 4b는 순차적 ODC 넷리스트 분석을 위한 회로를 도시한다. 주목할 점은, 이 회로는 4개의 입력 i1-i4 및 4개의 출력 o1-o4을 갖는 단일 임의의 설계에 대한 것이라는 점이다. 일반적으로, 분석될 설계는 임의 갯수의 입력 및 출력을 가질 수 있다. ODC 분석은, 여기에서 개시한 바와 같이, 반전(inversion) 기반의 ODC 분석 절차의 순차적 일반화이다. 순차적 공통인자와 마찬가지로, 하나의 특정 시간 프레임에 대하여, 특히 새로 도입된 입력 ctime이 1로 평가되는 첫 번째 시간 프레임에 대하여, 1로 평가되는 신호를 생성할 논리가 도입된다. 이 신호는 또한 멀티플렉서 m1을 선택하는데 사용된다. 선택기가 0인 경우, 게이트 g1의 원래 거동이 멀티플렉서를 통하여 구동된다. 1이 선택기에 인가되는 것에 응답하여, 게이트 g1의 반전된 거동이 멀티플렉서를 통하여 구동된다.
도 5는 본 발명의 다양한 실시예에 따른 순차적 반전 기반의 ODC 넷리스트 분석의 방법을 도시하는 흐름도(500)이다. 방법은 501에서 시작되고, 503으로 진행하여 초기 회로 설계를 지정하는 회로 넷리스트를 정의한다. 도 3과 함께 전술된 바와 같이, 넷리스트를 정의하는 것은, 규약 및 조건을 정의하고 시스템 모델의 초기 조건을 설정하는 것을 포함하며, 순차적 ODC 도입을 통하여 조작될 설계에 대한 넷리스트를 준비하도록 데이터를 불러오는 것을 수반할 수 있다. 503에서 회로 넷리스트가 정의되면, 방법은 505로 진행하여 멀티플렉서로 교체할 임의의 게이트를 선택한다. 이 실시예에서, 선택된 게이트가 반드시 분석될 회로의 입력 또는 출력에 직접 접속되는 게이트인 것은 아닐 수 있다. 오히려, 선택된 게이트는 회로 내의 임의의 게이트일 수 있다. 505에서 게이트가 선택되면, 방법은 507로 진행한다. 507에서, 도 4a 및 도 4b에서 볼 수 있는 바와 같이, 선택된 게이트의 출력은 멀티플렉서에 연결된다. 게이트 g1의 출력(407)은 멀티플렉서(401)의 입력에 공급된다. 게이트 g1의 반전된 출력(407)도 또한 멀티플렉서(401) 입력에 공급된다. 도 2a 및 도 2b의 유사한 회로에 대하여 전술된 바와 같이, 회로(405)는, ctime=1의 첫 번째 발생이 인가되는 것을 검출하면 단 하나의 시간 프레임에 대해서만 1로 평가되도록 설계된다. 블록 507로 돌아가서, 게이트가 멀티플렉서에 연결되면, 방법은 509로 진행하여 멀티플렉서 선택 회로를 초기 조건으로 설정한다. 그 다음, 방법은 511로 진행한다.
블록 511에서, 분석될 게이트에 대하여 동등성에 대한 평가가 시작된다. 도 3에서의 블록 311의 설명과 마찬가지로, 일부 구현에서, 동등성 분석은 데이터가 수집된 후에 수행되거나, 블록 505 내지 509에 따라 원래 넷리스트를 수정된 넷리스트의 거동과 직접 비교하는 것을 통하여 수행되거나, 또는 단순히 이용 가능한 설계 규격에 관하여 거동을 평가하는 것을 통하여 보다 묵시적으로 수행될 수 있다. 특정 구성의 경우, 블록 511은 나중의 분석을 위해 동기식 회로 입력 및 출력의 기록을 시작하는 것을 수반할 수 있다. 다른 구현에서, 동등성 분석은 데이터가 동기식 회로를 통하여 이동되고 있을 때 즉석에서 일어날 수 있다. 방법은 513으로 진행하여 동기식 회로를 반복하며, 평가를 위한 그의 동작을 시작한다. 입력에 대한 값들(예를 들어, 도 4a 및 도 4b의 i1 내지 i4)이 그들 적절한 시퀀스로 회로에 인가되며, 출력 o1 내지 o3의 값과 멀티플렉서의 출력(도 4b의 409)이 평가를 위해 관찰된다. 그 다음, 방법은 515로 진행하여 ctime 입력에 처음으로 1이 인가되었는지 여부를 판정한다. 모든 회로 반복에서 처음의 ctime=1 전에 멀티플렉서(도 4b의 401)는 d0 입력이 멀티플렉서 출력에 대하여 선택되도록 제어된다. 처음으로 ctime=1을 인가하면, 회로(405)로 하여금 반전된 게이트 출력 d1을 선택하도록 멀티플렉서(도 4b의 401) 선택기가 제어된다. 처음으로 1 입력이 ctime에 인가된 후에, 회로(도 4b의 405)는 더 이상 반전된 게이트 출력, 즉 멀티플렉서(도 4b의 401)의 d1 입력을 인가하지 않을 것이다. 대신에, 멀티플렉서(401) 선택기는 ctime=1의 처음의 인가가 처리된 후에 항상 멀티플렉서(도 4b의 401)의 출력에서 게이트 출력(멀티플렉서 d0 입력)을 전달하도록 제어된다.
도 5로 돌아가서, 블록 515에서, ctime=1의 처음의 인가가 검출되는 경우, 방법은 515로부터 YES 경로를 따라 517로 진행하여, 멀티플렉서(401) 출력을 멀티플렉서 입력 d1에 제공된 반전된 임의의 게이트 출력으로 설정한다. 그 다음, 방법은 519로 진행하여 회로의 동등성을 평가한 다음, 521로 진행하여 분석이 완료되었는지 여부를 판정한다. 블록 515로 돌아가서, ctime 입력이 처음으로 1인 것은 아니라로 판정되는 경우, 방법은 515로부터 NO 경로를 따라 519로 진행하여, 회로의 동등성을 평가한 다음, 521로 진행한다.
블록 521에서, 평가가 아직 완료되지 않은 것으로 판정되는 경우, 방법은 521로부터 NO 경로를 따라 다시 513으로 진행하여, 동기식 회로를 다시 반복함으로써, 또 다른 입력 집합 i1-i4를 도 4b의 회로에 인가시킨다. 그러나, 521에서 분석이 완료된 것으로 판정되는 경우, 방법은 521로부터 YES 경로를 따라 523으로 진행하여, 순차적 ODC 분석의 결과를 판정하며, 즉 회로가 멀티플렉서(401)를 통하여 제공되고 있는 임의의 게이트 g1의 반전된 출력과 동등한지 여부를 판정한다. 블록 523을 완료하면, 방법은 525로 진행하여 종료된다.
순차적 공통인자화 구성, 즉 도 3에 관련하여 기재한 순차적 포지티브 및 네가티브 공통인자화 그리고 도 5에 관련하여 기재한 순차적 반전 기반의 ODC 넷리스트 분석의 방법에 대하여 다수의 이점 및 응용이 있다. 먼저, 순차적 넷리스트를 분석할 때, 임의의 게이트를 상수로 교체하는 조합 유형의 공통인자화는 타겟 게이트가 언제든 1로 평가될 수 있는지 여부를 체크하는 검증 작업을 유지하지 않을 수 있다는 것을 주목한다. 예를 들어, 특정 타겟은 소정의 임의의 게이트가 0으로부터 1로 토글한 경우에만 확정할 수 있다. 그 임의의 게이트를 0에 연결하고 타겟이 확정될 수 있는지 체크하면, 그럴 수 없다. 그 임의의 게이트를 1에 연결하고 타겟이 확정될 수 있는지 체크하면, 그럴 수 없다. 그러나, 공통인자화가 없으면, 타겟은 실제로 확정할 수 있다. 따라서, 케이스 분할 전략으로서의 공통인자화는 조합 넷리스트에 대해서는 적절하게 작용하는 반면, 순차적 넷리스트에 대해서는 적절하게 작용하지 않는다. 본 발명의 다양한 실시예는 이러한 단점을 극복한다. ODC 유형의 분석에 대하여 마찬가지의 단점이 관찰되며, 본 발명의 순차적 반전 기반의 ODC 양상에 의해 극복된다.
순차적 공통인자화의 유용성을 설명하기 위한 여러 가지 응용이 있음을 주목하여야 하는데, 조합 공통인자화와는 달리, 이는 더 이상 반드시 공통인자가 더 단순한 부수적인 문제점을 일으키는 경우가 아닐 것이기 때문이다. ODC 유형 분석의 경우, 순차적 공통인자화 분석의 이점이 명확하다. 이는 전체 회로에 대하여 시간이 흐름에 따라 돈 케어(don't care) 조건의 식별을 가능하게 하는 반면에, 전체 순차적 넷리스트의 조합 부분(예를 들어, 레지스터와 그들 다음 상태 기능 사이) 상의 조합 ODC 구성의 사용이 차선인데, 레지스터를 통하여 전파하는 돈 케어는 고려하지 않기 때문이다.
순차적 공통인자가 유용한 또 다른 응용은, 아마도 특정 시간 프레임 하에, 특정 게이트의 거동에 민감한 넷리스트의 부분집합을 식별하는 경우이다. 예를 들어, 향상된 검증을 위해 케이스 분할 전략을 전개시키도록, 특정 연산코드(opcode)를 처리하는데 사용될 수 있는 논리의 부분집합을 식별하는데 유용하다. 대안으로서, 특정 게이트에 의해 영향 받는 논리의 작은 "컷(cut)"(부분집합)을 분석하기를 원할 수 있다. "컷"은 영향받을 수 있는 논리에서부터 영향받는 것으로 아직 식별되지 않은 논리까지 팬아웃(fan out)되는 넷의 수를 칭한다. 이 컷은 향상된 합성 또는 검증을 위해 컷의 팬인(fanin)에서 넷리스트 표현을 단순화하는 알고리즘을 지시하는데 사용될 수 있다. 게이트의 거동에 민감할 수 있는 논리의 평가는, 입력 자극의 시퀀스에 대하여 둘 다의 공통인자의 거동을 분석하고, 공통인자에 걸쳐 거동이 상이한 이들 게이트를 열거함으로써 수행될 수 있다.
이러한 열거에 대한 본 발명의 순차적 공통인자의 이점은 이중적(twofold)이며, 첫 번째로, (둘 다의 공통인자에 대하여) 넷리스트의 둘 다의 복사본 내의 각각의 레지스터가 동일한 값으로 랜덤화된 다음, ctime을 1에 연결하여 강제로 공통인자 값을 귀납적 사례의 시간 0에서 민감하게 하는 귀납식 분석을 사용할 수 있다. 이는 공통인자화의 논리를 더욱 단순화한다. 두 번째로, 공통인자화의 시간 프레임동안 순차적 공통인자화된 넷리스트의 분석을 특별히 조작하기를 원할 수 있다. 예를 들어, 기호적 시뮬레이션을 수행할 때에 따라 케이스 분할하는데 ctime 변수를 사용하기를 원할 수 있다. 이는 순차적 공통인자화를 분석하는 것의 복잡도를 상당히 감소시킬 수 있으며, 특히 기호적 시뮬레이션과 한정된 모델 체크와 같은 한정된 형식적 분석을 사용할 때 그러하다.
도 6은 다양한 예시적인 실시예를 구현하고 실시하기에 적합한 예시적인 컴퓨터 시스템(600)을 도시한다. 컴퓨터 시스템(600)은 데스크톱 컴퓨터, 랩톱 컴퓨터, 메인프레임 컴퓨터, 또는 명령을 수행하도록 프로그래밍되거나 구성될 수 있는 임의의 기타 구성의 형태로 구성될 수 있다. 컴퓨터 시스템(600)은 하나의 장소에 위치되어 상호접속될 수 있거나, 또는 다양한 장소에 분산되어 로컬 또는 광역 네트워크(LAN 또는 WAN)를 통하여, 인터넷을 통하여, PSTN(public switched telephone network), 또는 기타 이러한 통신 링크를 통하여 상호접속될 수 있다. 다른 디바이스도 또한 실시예 또는 실시예의 일부를 구현하거나 실시하기에 적합할 수 있다. 이러한 디바이스는 PDA, 무선 핸즈셋(예를 들어, 셀룰러 전화 또는 페이저), 및 명령이나 루틴을 수행하도록 바람직하게 프로그래밍될 수 있는 기타 이러한 소비자 전자 디바이스를 포함한다.
통상적으로, 컴퓨터 시스템(600)은 마이크로프로세서 또는 중앙 프로세싱 유닛(CPU)으로서 구현될 수 있는 프로세서(601)를 포함한다. 프로세서(601)는 통상적으로 시스템 버스(621)와 같은 버스를 통하여 내부 메모리(603)에 액세스하도록 구성된다. 내부 메모리(603)는 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 캐시 메모리, 또는 검색 가능한 포맷의 정보를 저장하도록 구성되는 이들 및 기타 유형의 회로의 조합 중 하나 이상을 포함할 수 있다. 일부 구현에서, 내부 메모리(603)는 프로세서(601)의 일부로서 구성될 수 있거나, 또는 대안으로서, 프로세서(601)와는 별도이지만 동일한 패키징 내에 구성될 수 있다. 프로세서(601)는 컴퓨터 시스템(600)의 다른 컴포넌트에 액세스하는데 사용되는 것과 상이한 버스 또는 제어 라인(예를 들어, 로컬 버스(605))을 통하여 내부 메모리(603)에 액세스할 수 있다.
컴퓨터 시스템(600)은 또한 통상적으로, 하나 이상의 스토리지 드라이브(607)(또는 기타 유형의 스토리지 메모리) 및 플로피 디스크 드라이브(609)를 포함하거나, 또는 이들에 대한 액세스를 갖는다. 스토리지 드라이브(607) 및 플로피 디스크 드라이브(609)를 위한 플로피 디스크는 다양한 실시예의 최종 또는 중간 결과를 저장하기에 적합한 기계 판독가능한 매체의 예이다. 스토리지 드라이브(607)는 종종 데이터, 컴퓨터 프로그램 또는 기타 정보의 저장 및 검색을 위해 구성되는 하드 디스크 드라이브이다. 스토리지 드라이브(607)가 컴퓨터 시스템(600) 내에 포함되어야 할 필요는 없다. 예를 들어, 일부 실시예에서, 스토리지 드라이브(607)는 데이터, 컴퓨터 프로그램 또는 기타 정보의 저장 및 검색을 위해 컴퓨터 시스템(600)이 액세스할 수 있는 네트워크 또는 인터넷 내의 서버 스토리지 공간일 수 있다. 예를 들어, 컴퓨터 시스템(600)은 인터넷(650) 또는 기타 통신 라인에 의해 액세스 가능한 서버 스토리지 팜에서의 스토리지 공간을 사용할 수 있다. 플로피 디스크 드라이브(609)는 탈착가능한 스토리지 매체에 대하여 판독 및/또는 기록할 수 있는 다양한 포맷의 여러 디스크 드라이브의 조합을 포함할 수 있다(예를 들어, CD-R, CD-RW, DVD, DVD-R, 플로피 디스크 등). 컴퓨터 시스템(600)은 접속된 주변장치로서 그의 아키텍처의 일부로서(예를 들어, 동일한 캐비넷 또는 인클로저 내에 그리고/또는 동일한 전원을 사용하여) 스토리지 드라이브(607) 및 플로피 디스크 드라이브(609)를 포함할 수 있거나, 또는 네트워크를 통해 스토리지 드라이브(607) 및 플로피 디스크 드라이브(609)에 액세스할 수 있거나, 이들 조합일 수 있다. 스토리지 드라이브(607)는 종종 예를 들어, 프로젝트 관리 작업 우선순위화를 위한 컴퓨터 애플리케이션 프로그램의 전부 또는 일부를 포함하는, 컴퓨터 시스템(600)에 의해 실행되는 소프트웨어, 명령 및 프로그램을 저장하는데 사용된다.
컴퓨터 시스템(600)은 인터넷, 로컬 영역 네트워크(LAN), 광역 네트워크(WAN)에 통신 가능하게 접속되도록 구성되는 통신 인터페이스(611)를 포함할 수 있거나, 또는 범용 시리얼 버스(USB), 고성능 시리얼 버스 IEEE-1394 및/또는 고속 시리얼 포트(RS-232)와 같은 프로토콜을 사용하여 다른 디바이스와 접속할 수 있다. 컴퓨터 시스템(600)은 인터넷에 직접 접속되는 것이 아니라 무선 라우터(601)(또는 유선 라우터 또는 기타 노드-도시되지 않음)를 통하여 인터넷에 접속될 수 있다. 컴퓨터 시스템(600)의 컴포넌트는 버스(621)에 의해 상호접속될 수 있고, 그리고/또는 PCI(Peripheral Component Interconnect), ISA(Industry Standard Architecture) 또는 EISA(enhanced ISA)와 같은 임의의 다양한 산업 표준에 일치하는 확장 슬롯을 포함할 수 있다.
통상적으로, 컴퓨터 시스템(600)은 키보드 및/또는 마우스(613)와 같은 하나 이상의 사용자 입력/출력 디바이스, 또는 사용자 입력 디바이스(615)에 의해 나타나는 커서를 제어하는 기타 수단(예를 들어, 터치스크린, 터치패드, 조이스틱, 트랙볼 등)을 포함한다. 통신 인터페이스(611), 키보드와 마우스(613) 및 사용자 입력 디바이스(615)는 다양한 조합으로 또는 개별적으로 다양한 프로그램 및 계산을 수행하는데 사용될 정보 및 기타 입력을 수신하기 위한 수단으로서 사용될 수 있다. 디스플레이(617) 또한 일반적으로 컴퓨터 시스템(600)의 일부로서 포함된다. 디스플레이는 액정 디스플레이(LCD), CRT 모니터, 박막 트랜지스터(TFT) 어레이, 또는 사용자에게 정보를 디스플레이하기에 적합한 기타 유형의 디스플레이를 포함하는 임의의 여러 유형의 디스플레이일 수 있다. 디스플레이(617)는 하나 이상의 발광 다이오드(LED) 표시자 조명, 또는 기타 이러한 디스플레이 디바이스를 포함할 수 있다. 또한, 대부분의 컴퓨터 시스템(600)은 오디오 출력 및 입력을 위해 하나 이상의 스피커 및 마이크로폰(619)을 포함하거나, 이에 접속된다. 사용자 음성 명령을 수신하고 해석하도록 음성 인식 소프트웨어가 마이크로폰(619)과 함께 사용될 수 있다.
본 발명은 서술한 기능 및 작동을 수행할 수 있는 임의의 종류의 프로세싱 유닛, 프로세서 및 컨트롤러로 구현될 수 있다. 예를 들어, 프로세서(601)(또는 실시예를 구현하는데 사용되는 기타 프로세서)는 마이크로프로세서, 마이크로컨트롤러, DSP, RISC 프로세서, 또는 통상의 지식을 가진 자가 여기에 기재한 기능 또는 작동을 수행할 수 있는 것으로 인식할 임의의 기타 유형의 프로세서일 수 있다. 적어도 하나의 예시적인 실시예에 따른 프로세싱 유닛은 내부 메모리(603), 스토리지 드라이브(607), 또는 예를 들어 플로피 디스크, 광학 디스크, 하드 디스크, CD, 플래시 메모리, RAM, 또는 당해 기술 분야에서의 통상의 지식을 가진 자가 인식하는 기타 유형의 기계 판독가능한 매체를 포함하는 기타 유형의 기계 판독가능한 매체와 같은 컴퓨터 판독가능한 매체 상에 저장된(구현된) 컴퓨터 소프트웨어 프로그램을 동작시킬 수 있다.
상태 보유 소자, 또는 상태 소자는 레지스터 또는 게이트로서 구현되는 것에 관련하여 상기에 설명되어 있다. 그러나, 일부 실시예에서, 예를 들어 레지스터, 래치, 상태 머신 등을 포함하는 임의의 종류의 상태 보유 소자 또는 메모리 소자가 다양한 실시예를 구현하는데 사용될 수 있다. 본 발명을 예시하고 설명하기 위한 목적으로, 용어 변수, 게이트 및 레지스터는 본 개시 전반에 걸쳐 상호교환적으로 사용되었다.
적어도 하나의 예시적인 실시예의 범위 내에 그대로 유지되면서 다양한 작동들이 상기 기재한 바와 같이 포함되거나 또는 배제될 수 있으며, 상이한 순서대로 수행될 수 있다. 예를 들어, 블록 509가 생략됨으로써 회로는 어떤 랜덤 상태에서 또는 초기 조건 상태가 아닌 다른 상태에서 시작될 수 있다. 본 발명의 의도한 범위 내에 그대로 유지되면서 여기에 개시한 방법의 다른 단계들 또는 작동들이 생략되거나 또는 상이한 방식으로 수행될 수 있다. 본 방법은 설계에의 회로의 추가 및 조작을 통하여 구현될 수 있으며, 그에 따라 논리 시뮬레이터 또는 형식적 검증 알고리즘과 같은 논리 평가 프레임워크 뿐만 아니라, 하드웨어 에뮬레이터/가속기와 같은 하드웨어 기반의 프레임워크 그리고 심지어는 제조된 칩을 사용한 분석에 적용 가능하다. 상기 멀티플렉서 및 연관된 논리의 도입에 의해 설계 거동이 영향받지 않는 검출을 사용하여 향상된 합성 또는 검증을 위해 상기 설계를 단순화할 수 있거나 상기 설계의 기타 바람직한 특성, 예를 들어 고장 허용 범위(fault tolerance) 등을 표시할 수 있는 기회를 나타낼 수 있다.
본 발명은 서술한 기능 및 작동을 수행할 수 있는 임의의 종류의 프로세싱 유닛, 프로세서 및 컨트롤러(예를 들어, 도 6의 프로세서(601))로 구현될 수 있다. 예를 들어, 프로세서(601)는 마이크로프로세서, 마이크로컨트롤러, DSP, RISC 프로세서, 또는 통상의 지식을 가진 자가 여기에 기재한 기능을 수행할 수 있는 것으로 인식할 임의의 기타 유형의 프로세서로서 구현될 수 있다. 적어도 하나의 예시적인 실시예에 따른 프로세싱 유닛은 디스크 드라이브(609), 스토리지 드라이브(607), 또는 임의의 기타 유형의 하드 디스크 드라이브, CD, 플래시 메모리, RAM, 또는 당해 기술 분야에서의 숙련자가 인식할 기타 컴퓨터 판독가능한 매체와 같은 컴퓨터 판독가능한 매체 상에 저장된(구현된) 컴퓨터 소프트웨어 프로그램을 동작시킬 수 있다. 컴퓨터 소프트웨어 프로그램은 상기 기재한 단계들 및 작동들을 돕거나 수행할 수 있다. 예를 들어, 적어도 하나의 예시적인 실시예에 따른 컴퓨터 프로그램은, 분석을 위한 순차 회로의 임의의 게이트를 선택하기 위한 소스 코드, 임의의 게이트를 멀티플렉서에 접속시키도록 순차 회로 넷리스트를 구성하기 위한 소스 코드, 선택기 제어 회로를 임의의 게이트의 선택기 입력에 접속시키도록 순차 회로 넷리스트를 구성하기 위한 소스 코드, 인입 호를 검출하기 위한 소스 코드, 상기 선택기 입력에 인가된 ctime 신호를 검출하기 위한 소스 코드, ctime 신호에 응답하여 상기 명령의 실행에 의해 임의의 게이트 출력을 변경하도록 멀티플렉서 출력을 설정하기 위한 소스 코드, 및 상기 명령의 실행에 의해 멀티플렉서 출력이 임의의 게이트 출력을 변경하도록 설정되어 있는 시간 동안 순차 회로 거동이 동등하게 유지되는지 여부를 판정하기 위한 소스 코드를 포함할 수 있다. 상기 서술한 단계들 및 절차들을 수행하도록 쓰일 수 있는 많은 부가적인 소스 코드들이 있으며, 이들은 예시적인 실시예의 범위 내에 속하는 것으로 의도된다.
본 개시에서 단어 "예시적인"의 사용은 그리 기재된 실시예 또는 구성요소가 예, 사례, 또는 예시로서 작용하는 것을 의미하도록 의도되며, 반드시 다른 실시예 또는 구성요소 이상으로 바람직하거나 유리한 것으로서 해석되어서는 안 된다. 상기 제공된 다양한 예시적인 실시예의 설명은 속성상 예시적인 것이며, 본 발명, 본 발명의 응용, 또는 용도를 한정하고자 하는 것이 아니다. 따라서, 본 발명의 요지에서 벗어나지 않는 변형은 본 발명의 실시예의 범위 내에 속하는 것으로 의도된다. 이러한 변형이 본 발명의 정신 및 사상으로부터 벗어나는 것으로 간주되어서는 안 될 것이다.
601: 프로세서
603: 내부 메모리
607: 스토리지 드라이브
609: 디스크 드라이브
611: 통신 인터페이스
613: 키보드/마우스
615: 사용자 입력 디바이스
617: 디스플레이
619: 스피커/마이크로폰

Claims (10)

  1. 순차 회로 넷리스트에 대한 순차적 공통인자(cofactor) 기반의 회로 설계의 방법에 있어서,
    분석을 위한 순차 회로의 임의의 게이트를 선택하고;
    상기 임의의 게이트를 멀티플렉서에 접속시키도록 순차 회로 넷리스트를 구성하고;
    선택기 제어 회로를 상기 임의의 게이트의 선택기 입력에 접속시키도록 상기 순차 회로 넷리스트를 구성하고;
    상기 선택기 입력에 인가된 ctime 신호를 검출하고;
    상기 ctime 신호에 응답하여, 상기 임의의 게이트 출력을 변경하도록 상기 멀티플렉서 출력을 설정하고;
    상기 멀티플렉서 출력이 상기 임의의 게이트 출력을 변경하도록 설정되어 있는 시간 동안 상기 순차 회로 거동이 계속 동등하게 유지되는지 여부를 판정하는 것
    을 포함하는 순차적 공통인자 기반의 회로 설계 방법.
  2. 청구항 1에 있어서, 상기 멀티플렉서 출력이 상기 임의의 게이트 출력을 변경하도록 설정되어 있는 동안에도 상기 순차 회로 거동이 계속 동등하게 유지되는지 판정할 때 상기 임의의 게이트를 교체용 후보로서 표시하는 것을 더 포함하는 순차적 공통인자 기반의 회로 설계 방법.
  3. 청구항 1에 있어서, 상기 임의의 게이트를 멀티플렉서에 접속시키도록 순차 회로 넷리스트를 구성하는 것은,
    상기 멀티플렉서의 제1 입력에 상기 임의의 게이트 출력을 접속시키고;
    상기 멀티플렉서의 제2 입력에 상수 값을 접속시키고;
    상기 순차 회로에서 상기 임의의 게이트 출력이 전에 접속되었던 지점에 상기 멀티플렉서의 출력을 접속시키는 것
    을 더 포함하는 것인, 순차적 공통인자 기반의 회로 설계 방법.
  4. 청구항 1에 있어서, 상기 ctime 신호는 상기 ctime 신호를 제어하기 위한 사람의 입력을 검출하는 것에 응답하여 인가되는 것인, 순차적 공통인자 기반의 회로 설계 방법.
  5. 청구항 1에 있어서, 상기 ctime 신호는 상기 ctime 신호를 제어하기 위한 상기 회로 내의 특정 거동 또는 작동을 검출하는 것에 응답하여 인가되는 것인, 순차적 공통인자 기반의 회로 설계 방법.
  6. 청구항 5에 있어서, 상기 특정 거동 또는 작동은, 상기 회로 내의 미리 결정된 인터페이스에서 특정 유형의 명령을 검출하고, 미리 결정된 레벨로의 제1 데이터 버퍼 충전(filling)을 검출하고, 미리 결정된 레벨로의 제2 데이터 버퍼 비움(emptying)을 검출하고, 상기 회로의 중재 유닛에서 특정 요청 또는 승인 조건을 검출하고, 상기 순차 회로 넷리스트의 분석 동안 미리 결정된 양의 시간이 경과하였다는 표시를 검출하는 것으로 구성되는 그룹으로부터 선택되는 것인, 순차적 공통인자 기반의 회로 설계 방법.
  7. 청구항 1에 있어서, 상기 임의의 게이트를 멀티플렉서에 접속시키도록 순차 회로 넷리스트를 구성하는 것은,
    상기 멀티플렉서의 제1 입력에 상기 임의의 게이트 출력을 접속시키고;
    상기 멀티플렉서의 제2 입력에 상기 임의의 게이트 출력의 반전을 접속시키고;
    상기 순차 회로에서 상기 임의의 게이트 출력이 전에 접속되었던 지점에 상기 멀티플렉서의 출력을 접속시키는 것을 더 포함하는 것인, 순차적 공통인자 기반의 회로 설계 방법.
  8. 청구항 2에 있어서, 상기 임의의 게이트는 제1 랜덤 게이트이며, 상기 방법은,
    분석을 위한 상기 순차 회로의 제2 임의의 게이트를 선택하고;
    상기 멀티플렉서 출력이 상기 제2 임의의 게이트 출력을 변경하도록 설정되어 있는 동안에도 상기 순차 회로 거동이 계속 동등하게 유지되는지 판정할 때 상기 제2 임의의 게이트를 교체용 후보로서 표시하는 것을 더 포함하는 것인, 순차적 공통인자 기반의 회로 설계 방법.
  9. 청구항 1에 있어서, 상기 멀티플렉서 출력이 상기 임의의 게이트 출력을 변경하도록 설정되어 있는 상기 시간은 단일 클록 기간인 것인, 순차적 공통인자 기반의 회로 설계 방법.
  10. 순차 회로 넷리스트의 순차적 공통인자 기반의 회로 설계를 위해 저장된 명령들의 프로그램을 기록한 컴퓨터 판독가능한 기록매체에 있어서,
    상기 명령들의 프로그램은 컴퓨터 상에서 실행되면 상기 컴퓨터로 하여금 청구항 1 내지 청구항 9 중 어느 한 항에 따른 방법의 각각의 단계들을 포함하는 작동들을 수행하도록 하는 것인 컴퓨터 판독가능한 기록매체.
KR1020100014767A 2009-03-25 2010-02-18 넷리스트의 순차적 공통인자 기반의 분석을 위한 방법, 시스템 및 애플리케이션 KR101054706B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/410,962 US8042075B2 (en) 2009-03-25 2009-03-25 Method, system and application for sequential cofactor-based analysis of netlists
US12/410,962 2009-03-25

Publications (2)

Publication Number Publication Date
KR20100107386A KR20100107386A (ko) 2010-10-05
KR101054706B1 true KR101054706B1 (ko) 2011-08-05

Family

ID=42785896

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100014767A KR101054706B1 (ko) 2009-03-25 2010-02-18 넷리스트의 순차적 공통인자 기반의 분석을 위한 방법, 시스템 및 애플리케이션

Country Status (3)

Country Link
US (1) US8042075B2 (ko)
KR (1) KR101054706B1 (ko)
CN (1) CN101930485B (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8181134B2 (en) * 2009-10-16 2012-05-15 International Business Machines Corporation Techniques for performing conditional sequential equivalence checking of an integrated circuit logic design
US9922153B2 (en) * 2016-05-03 2018-03-20 International Business Machines Corporation Scalable logic verification by identifying unate primary inputs

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060050564A (ko) * 2004-08-24 2006-05-19 에이저 시스템즈 인크 디지털 회로를 구비한 집적 회로 및 이 회로를 설계하는방법, 컴퓨터 지원 설계 도구, 집적 회로를 설계하는 제품및 신호 스큐 조정 방법
KR100869087B1 (ko) 2004-11-05 2008-11-18 후지쯔 마이크로일렉트로닉스 가부시키가이샤 반도체 집적 회로 및 그 설계 방법
KR100881187B1 (ko) 2007-01-16 2009-02-05 삼성전자주식회사 하이브리드 하드 디스크 드라이브, 하이브리드 하드 디스크드라이브를 내장하는 컴퓨터 시스템, 그리고 하이브리드하드 디스크 드라이브의 플래시 메모리 dma 회로

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6223141B1 (en) 1998-07-14 2001-04-24 Nec Usa, Inc. Speeding up levelized compiled code simulation using netlist transformations
US7571403B2 (en) 2003-05-23 2009-08-04 Fujitsu Limited Circuit verification
US7120883B1 (en) * 2003-05-27 2006-10-10 Altera Corporation Register retiming technique
US7360185B2 (en) 2005-02-03 2008-04-15 International Business Machines Corporation Design verification using sequential and combinational transformations
US7370298B2 (en) * 2005-04-14 2008-05-06 International Business Machines Corporation Method for heuristic preservation of critical inputs during sequential reparameterization
US7231571B2 (en) 2005-04-28 2007-06-12 Yardstick Research, L.L.C. Single-pass methods for generating test patterns for sequential circuits
US7509611B2 (en) * 2006-02-07 2009-03-24 International Business Machines Corporation Heuristic clustering of circuit elements in a circuit design
US20070220461A1 (en) * 2006-03-14 2007-09-20 Baumgartner Jason R Method and system for sequential equivalence checking with multiple initial states
US7720667B2 (en) * 2006-09-08 2010-05-18 International Business Machines Corporation Method and system for estimating power consumption of integrated circuitry
JP4403187B2 (ja) * 2007-03-30 2010-01-20 富士通株式会社 設計データ変換プログラム、該プログラムを記録した記録媒体、設計データ変換装置、および設計データ変換方法
US7882473B2 (en) * 2007-11-27 2011-02-01 International Business Machines Corporation Sequential equivalence checking for asynchronous verification
JP5056511B2 (ja) * 2008-03-17 2012-10-24 富士通株式会社 検証支援プログラム、該プログラムを記録した記録媒体、検証支援装置、および検証支援方法
US8164345B2 (en) * 2008-05-16 2012-04-24 Rutgers, The State University Of New Jersey Spectral and information theoretic method of test point, partial-scan, and full-scan flip-flop insertion to improve integrated circuit testability
US7934180B2 (en) * 2008-05-27 2011-04-26 International Business Machines Corporation Incremental speculative merging
JP5024185B2 (ja) * 2008-05-29 2012-09-12 富士通株式会社 回路動作検証方法及び装置
US8015521B2 (en) * 2008-05-30 2011-09-06 Synopsys, Inc. Method and system for performing sequential equivalence checking on integrated circuit (IC) designs
US8104000B2 (en) * 2008-10-27 2012-01-24 Synopsys, Inc. Method and apparatus for memory abstraction and for word level net list reduction and verification using same
US7996803B2 (en) * 2009-01-30 2011-08-09 International Business Machines Corporation Automated use of uninterpreted functions in sequential equivalence
US8161434B2 (en) * 2009-03-06 2012-04-17 Synopsys, Inc. Statistical formal activity analysis with consideration of temporal and spatial correlations

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060050564A (ko) * 2004-08-24 2006-05-19 에이저 시스템즈 인크 디지털 회로를 구비한 집적 회로 및 이 회로를 설계하는방법, 컴퓨터 지원 설계 도구, 집적 회로를 설계하는 제품및 신호 스큐 조정 방법
KR100869087B1 (ko) 2004-11-05 2008-11-18 후지쯔 마이크로일렉트로닉스 가부시키가이샤 반도체 집적 회로 및 그 설계 방법
KR100881187B1 (ko) 2007-01-16 2009-02-05 삼성전자주식회사 하이브리드 하드 디스크 드라이브, 하이브리드 하드 디스크드라이브를 내장하는 컴퓨터 시스템, 그리고 하이브리드하드 디스크 드라이브의 플래시 메모리 dma 회로

Also Published As

Publication number Publication date
US8042075B2 (en) 2011-10-18
KR20100107386A (ko) 2010-10-05
US20100251197A1 (en) 2010-09-30
CN101930485B (zh) 2012-10-24
CN101930485A (zh) 2010-12-29

Similar Documents

Publication Publication Date Title
US8418093B2 (en) Method and system for design simplification through implication-based analysis
US7934180B2 (en) Incremental speculative merging
US8181134B2 (en) Techniques for performing conditional sequential equivalence checking of an integrated circuit logic design
JP4806529B2 (ja) 複製されたロジックを使用するデバッグの方法とシステム
US20090210841A1 (en) Static timing analysis of template-based asynchronous circuits
US10354028B2 (en) Formal verification driven power modeling and design verification
US11663385B2 (en) Verification of hardware design for data transformation pipeline
GB2519545A (en) Determining a quality parameter for a verification environment
TW201140357A (en) Techniques for analysis of logic designs with transient logic
US20190171539A1 (en) Parallel fault simulator with back propagation enhancement
TWI464679B (zh) 執行硬體描述語言程式碼之方法
KR20080055913A (ko) 집적회로 디자인 시뮬레이션을 위한 어써션의 개발 방법 및시스템과 장치
TW201822039A (zh) 加速閘層級模擬的方法與設備
KR101054706B1 (ko) 넷리스트의 순차적 공통인자 기반의 분석을 위한 방법, 시스템 및 애플리케이션
US10162917B1 (en) Method and system for implementing selective transformation for low power verification
JP2009140388A (ja) 性能評価モデル生成方法、システム性能評価方法、及び性能評価モデル生成装置
US8718998B2 (en) Identifying initial don't care memory elements for simulation
US8015523B2 (en) Method and system for sequential netlist reduction through trace-containment
US8122403B2 (en) Trace containment detection of combinational designs via constraint-based uncorrelated equivalence checking
US11023357B1 (en) Method and system for sequential equivalence checking
US20130054218A1 (en) Method and Software Tool for Automatically Testing a Circuit Design
GB2572633A (en) Verification of hardware design for data transformation pipeline
US10387595B1 (en) Systems and methods for modeling integrated clock gates activity for transient vectorless power analysis of an integrated circuit
GB2572632A (en) Verification of hardware design for data transformation pipeline
Ribon et al. BEHAVIORAL ASSERTION SUPPORT IN HLS DESIGN FLOW

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