KR100329896B1 - 응용 주문형 집적 회로 설계 방법 - Google Patents

응용 주문형 집적 회로 설계 방법 Download PDF

Info

Publication number
KR100329896B1
KR100329896B1 KR1019990032304A KR19990032304A KR100329896B1 KR 100329896 B1 KR100329896 B1 KR 100329896B1 KR 1019990032304 A KR1019990032304 A KR 1019990032304A KR 19990032304 A KR19990032304 A KR 19990032304A KR 100329896 B1 KR100329896 B1 KR 100329896B1
Authority
KR
South Korea
Prior art keywords
design
gate
asic
removable
core
Prior art date
Application number
KR1019990032304A
Other languages
English (en)
Other versions
KR20000017147A (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 KR20000017147A publication Critical patent/KR20000017147A/ko
Application granted granted Critical
Publication of KR100329896B1 publication Critical patent/KR100329896B1/ko

Links

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
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • 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

Landscapes

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

Abstract

본 발명은 SOC(system on a chip) 디자인의 요구에 맞도록 ASIC 코어(core)를 테일러링(tailoring)하는 자동화된 방법에 관한 것이다. 바람직한 방법은 코어 디자인을 기술 비의존적 하드웨어 기술 언어(hardware description language : HDL)로 표현함으로써 시작한다. 이 하이 레벨 디자인은 기능 혹은 블럭으로 세분화된다. 코어 디자인의 일체성에 영향을 미치지 않고는 제거될 수 없는 블럭은 필수 유지(must-keep) 지정자로 태그(tag)된다.
코어를 사용하게 될 모든 애플리케이션 코드의 실행은 하이 레벨 모델 상에서 시뮬레이션된다. 시뮬레이션 프로세스는 모델 내의 어느 블럭이 애플리케이션 코드에 의해 사용되고 어느 블럭이 사용되지 않는가에 관한 정보를 축적한다. 어떤 블럭이 사용되지 않는가에 관한 정보는 제거 불가능한 블럭이 무엇인지에 관한 정보와 결합된다. 그 후, 하이 레벨 코어 디자인은 미사용될 뿐만 아니라 제거 가능한 코어 디자인 내의 블럭을 제거함으로써 테일러링된다.
그 다음, 테일러링된 하이 레벨 디자인은 기술 의존적 코어 디자인으로 합성된다. 합성 프로세스는 블럭을 게이트로 대체하고, 필수 유지 지정자로 태그된 블럭을 대체하는 모든 게이트로 필수 유지 태그를 전파한다. 모든 애플리케이션 코드의 시뮬레이션은 로우 레벨 디자인에 대해 반복되어 애플리케이션 코드에 의해 미사용되는 게이트가 무엇인가에 관한 정보를 축적한다. 이어서, 로우 레벨 디자인은 미사용될 뿐만 아니라 제거 가능한 코어 내의 게이트를 제거함으로써 테일러링된다.

Description

응용 주문형 집적 회로 설계 방법{TOGGLE BASED APPLICATION SPECIFIC CORE METHODOLOGY}
본 발명은 전반적으로 집적 회로에 관한 것으로, 보다 상세하게는, 응용 주문형 집적 회로(application-specific integrated circuit : ASIC) 상에 내장된 마이크로프로세서 코어(microprocessor core) 영역에 관한 것이다.
작금의 전자 산업의 융성은 상당 부분 집적 회로의 발전에 기인한 것이다. ASIC은 고객의 애플리케이션 분야에 있어서의 요구를 충족시키기 위한 특정 과제를 수행하도록 설계된 로직 및 메모리 회로의 집합체이다. ASIC 디자인은 기설계되고 기검증된 로직 회로 세트에 로직 기능을 매핑시킴으로써 실리콘 다이(silicon die) 상에서 이루어진다. 이들 회로는 가장 단순한 기능에서부터 코어(core)라 불리는 매우 복잡한 회로를 망라한다. 코어는 전형적으로 디지털 신호 처리기(digital signal processor : DSP), 첨단 RISC 머신(advanced RISC machine : ARM) 마이크로프로세서, 이더넷(Ethernet) 기능부 혹은 주변 기기 상호 연결(peripheral component interconnect : PCI) 제어기와 같은 높은 레벨의 산업 표준 기능부이다. 구체적인 디자인이 결정되면, 고객은 코어를 조립 블럭으로 사용하여 ASIC 디자인을 빠르게 조립할 수 있다. 이러한 디자인은 일반적으로 시스템 레벨 집적(system level integration : SLI) 혹은 시스템-온-칩(system on a chip : SOC)이라 불린다.
일부 ASIC 디자인에서, 애플리케이션 코드(application code)는 이 애플리케이션 코드의 실행을 지원하는 회로와 더불어 실리콘 다이 상의 판독 전용 메모리(ROM)에 내장된다. 전형적으로, SOC에 내장된 애플리케이션 코드는 ASIC 상의 회로를 사용하게 될 유일한 애플리케이션 코드이고, 내장되어 있기 때문에, 그 코드는 결코 달라지지 않을 것이다. 이러한 유형의 ASIC 디자인은 칩을 사용하는 애플리케이션 코드가 내장되어 있지 않은 보다 전통적인 ASIC 디자인과 구별된다. 칩 내부에 내장되어 있지 않는 경우, 애플리케이션 코드는 ASIC 회로와는 무관하게달라질 수 있다.
전통적인 ASIC은 ASIC이 지원하게 될 애플리케이션 범위에 필요하도록 설계자가 고안한 만큼 범용적으로 동작하도록 설계된다. 그 결과, 전통적인 ASIC은 넓은 범위의 애플리케이션을 지원하도록 설계된 회로를 포함한다. 따라서, ASIC 내에 설계된 일부 회로는 그 칩을 사용하는 어떠한 애플리케이션에 의해서도 사용되지 않을 수도 있다. 그럼에도 불구하고, 예측되지 않은 애플리케이션 코드의 변경을 지원하기 위해서는 디자인 관점에서 그 미사용 회로가 필요하게 된다. 그러므로, 비내장형 애플리케이션 코드를 실행하게 될 ASIC의 효용성을 최대화하기 위하여, 미사용 회로는 제거되지 않고 애플리케이션 코드가 변경되거나 새로운 애플리케이션 코드가 사용되는 경우에도 ASIC이 동작하게 하는 역할을 한다. 예를 들어 코어의 경우, ASIC을 사용하는 독립적인 애플리케이션에 의해 범용 코어 회로 전체가 사용되지 않을 수도 있다. 그러나, 코어를 구성하는 업계 표준 회로 그룹의 유용성을 유지하기 위해, 미사용 코어 회로가 디자인에 포함된다.
반면에, 회로를 사용하게 될 모든 애플리케이션 코드가 칩 상에 내장되어 있는 ASIC 디자인을 위해서는, 범용 코어 내에 미사용 회로를 둘 이유가 없다. 이러한 디자인에 있어서는, 하나의 실리콘 다이 상에 설치될 수 있는 회로의 양을 극대화하기 위해 다른 방안이 사용될 수 있다. 칩 상에 내장될 어떠한 애플리케이션에 의해서도 범용 코어 내의 회로가 사용되지 않는다면, 그 미사용 회로는 제거될 수 있다. 그 결과는 테일러링(tailoring)된 코어로서, 이 코어는 ASIC 상에 내장된 애플리케이션 코드를 지원하는 데에 요구되는 회로만을 구비한다. 코어를 테일러링함으로써, 즉 미사용 회로를 제거함으로써 보다 적은 전력 소모와, 내장된 애플리케이션의 보다 빠른 실행과, 요구되는 실리콘 면적의 감소 등의 이점을 갖게 된다. 따라서, SOC에 있어서, 코어 회로를 테일러링할 필요, 즉 ASIC 디자인 중에 내장된 애플리케이션에 의해 미사용될 회로가 무엇인지를 식별하여 그것을 제거할 필요가 있다.
미사용 코어 회로의 예는 셀룰러 폰(cellular phone)에 사용되는 SOC의 설계 시에 발생한다. 셀룰러 폰 애플리케이션은 음질을 높이고 음을 필터링하기 위해 DSP 코어를 필요로 한다. 이동 원격 통신용 전역 시스템(global system for mobile telecommunications : GSM) 애플리케이션에서는 DSP 코어 내의 특정 회로는 크게 사용되는 반면, 코어의 다른 부분은 전혀 필요하지 않다. 이러한 애플리케이션을 위한 코어 회로를 테일러링함으로써 DSP의 미사용 부분이 제거되게 된다. 배터리 동작형 셀룰러 폰에 있어서, 미사용 코어 회로를 제거함으로써 얻게 되는 전력 소모의 감소 및 실리콘 면적의 감소라는 장점은 상당한 것이다. 따라서, 셀룰러 폰에 사용될 SOC 내의 범용 DSP 코어를 테일러링할 필요가 있다.
코어 테일러링 개념과 관련된 문제는 노력이 요구된다는 점이다. 칩 디자인 내의 모든 시스템에서 코어 회로를 감소시키는 이점을 얻기 위해서는, 디자인에 사용된 각각의 범용 코어가 ASIC에 내장된 각각의 애플리케이션에 맞게 테일러링되어야만 할 것이다. 각각의 ASIC 디자인에 전형적으로 두 개 이상의 코어가 사용되고, 오늘날의 전자 산업에서 ASIC 사용이 급속히 증대되고 있는 것을 감안하면 ASIC 코어를 테일러링하는 데에 상당한 노력이 요구될 수 있다. 따라서, 각각의ASIC 디자인에 맞게 매우 복잡한 코어 회로를 테일러링하는 데 있어서, 자동화된 회로 감축 방법이 비자동화된 방법에 비해 확실히 유리하다.
범용 코어 회로를 테일러링하는 것과 관련된 두 번째 문제는 가능한 한 원래 코어 디자인의 일체성(integrity)을 유지시킬 필요가 있다는 것이다. 코어는 기설계되고 기검증된 기능적 회로의 그룹이기 때문에, 모든 회로는 어떤 목적을 위해 존재한다. 코어를 테일러링하는 프로세스는 그 목적이 특정한 세트의 애플리케이션을 위한 것이 아닌 회로를 식별하여 제거하는 것을 필요로 한다. 범용 코어 디자인 내의 회로가 통상적인 동작 중에는 사용되지 않지만, 제조 테스트 공정 시 어떤 용도를 갖거나 에러 복구 동작을 수행할 수 있다. 이러한 유형의 미사용 회로를 제거하면 원 디자인의 일체성을 손상시킬 수 있다. 따라서, 코어 테일러링 시에, 특정한 세트의 애플리케이션 코드의 실행에 직접적으로 관여하지 않을 수도 있지만 코어 디자인의 일체성을 손상시키지 않고는 제거될 수 없는 코어 회로를 식별할 필요가 있다.
어떤 면에서, 코어 테일러링의 개념은 오늘날 회로 설계 시에 사용되는 다른 로직 감축 도구(logic reduction tool)와 유사하다. 그러나, 그러한 도구는 칩 내의 시스템에서 사용하기 위한 코어를 테일러링하는 것과 관련된 특정한 요구에 부응하지 못한다. 예를 들어, (1990년 10월 2일에 와타나베(Watanabe) 등에게 특허 허여되고 히타치(Hitachi)사에 양도된) 'Method For Deleting Unused Gates And Method For Manufacturing Master-Slice Semiconductor Integrated Circuit Device Using The Deleting Method'라는 명칭의 미국 특허 제 4,960,724 호는 전체 회로도에 걸쳐 신호 경로를 추적하여 접속되지 않은 게이트를 제거하는 방법을 개시하고 있다. 그러나, 와타나베 등의 방법은 비록 미사용되더라도 제거하지 말아야 하는 회로가 무엇인지를 알아내는 어떠한 수단도 구비하고 있지 않다. 와타나베 등의 방법은 또한 자동화되어 있지도 않다.
일단의 다른 특허들에서는, 회로 활용도를 조사하여 미사용 회로를 제거함으로써 로직 감축이 이루어진다. (1994년 9월 13일에 페레리(Ferreri) 등에게 허여되고 IBM사에 양도된) 'Method Of Integrated Circuit Chips Design'이라는 명칭의 미국 특허 제 5,347,465 호와 (1986년 7월 22일에 아이하라(Aihara) 등에게 허여되고 후지쯔(Fujitsu)사에 양도된) 'Method Of Manufacturing Master-Slice Integrated Circuit Device'라는 명칭의 미국 특허 제 4,602,339 호는 접속되지 않은 회로를 제거하는 방법을 개시하고 있다. 그러나, 이들 방법 어느 것도 어떤 애플리케이션 코드가 회로를 사용할 것인가를 고려하고 있지 않은데, 이것은 코어를 정확하게 테일러링하는 데 있어서 중요한 사항이다.
다른 특허는 중복성 연결(redundant connection)을 찾아서 회로를 감축하였다. (1989년 3월 28일에 버만(Berman) 등에게 허여되고 IBM사에 양도된) 'Method Of Detecting Constants And Removing Redundant Connections In A Logic Network'라는 명칭의 미국 특허 제 4,816,999 호와 (1996년 5월 7일에 오쿠노(Okuno)에게 허여되고 미쯔비시(Mitsubishi)사에 양도된) 'Apparatus For Detecting Redundant Circuit Included In Logic Circuit And Method Therefor'라는 명칭의 미국 특허 제 5,515,526 호는 중복성 회로를 제거하는 방법을 개시하고 있다. 범용 코어 디자인에 있어서, 코어는 기설계되고 기검증되기 때문에 중복성 회로는 이미 제거되어 있을 가능성이 크다. 따라서, 이런 부류의 특허는 ASIC 코어를 테일러링하는 데 있어서의 요구에 적절히 부응하고 있지 않다.
각각의 개별 SOC의 필요에 맞게 코어 로직을 효율적으로 테일러링하기 위해서는, 필요한 노력을 줄이기 위해 자동화된 수단이 요구된다. 코어 로직을 정확하게 테일러링하기 위해서는, 어떤 애플리케이션 코드가 코어 회로를 사용하는 유일한 코드가 될 것인가, 즉 ASIC 상에 내장될 애플리케이션 코드를 고려하는 방법이 필요하다. 또한, 코어 로직을 정확하게 테일러링하기 위한 방법은, 통상적인 애플리케이션 코드 실행 시에는 사용되지 않을 지도 모르지만 테스트 및 에러 복구와 같은 부가적 목적에 필요한 기능을 위해 코어 일체성이 유지되어야 함을 요구한다. 종래의 방법 중 어느 것도 이들 요구를 만족시키지 못한다.
SLI 또는 SOC ASIC 디자인의 사용이 증가함에 따라, 내장된 애플리케이션 코드와 함께 사용하기 위한 코어 회로를 테일러링할 수 있는 능력이 필요해진다. 개개의 디자인에 맞게 코어 회로를 테일러링함으로써, 필요 전력이 감소되고, 실행 속도가 빨라지고, 하나의 실리콘 다이 상에 내장될 수 있는 애플리케이션의 수가 극대화된다. 테일러링된 코어 회로는 전원, 크기, 무게의 한계를 갖는 배터리 동작형 휴대형 전자 디바이스에 특히 유용할 것이다. 이러한 전자 디바이스의 사용이 증가함에 따라, 특정 SOC 디자인에 맞게 코어를 테일러링하는 정확하고 효율적인 방법에 대한 필요가 더욱 긴요하게 될 것이다.
본 발명은 개별 SOC 디자인의 필요에 맞게 ASIC 코어를 테일러링하는 자동화된 방법을 개시한다. 바람직한 방법은 우선 코어 디자인을 기술(technology) 비의존적 하드웨어 기술 언어(hardware description language : HDL)로 나타낸다. 이러한 하이 레벨 디자인은 기능 혹은 블럭들로 세분화된다. 코어 디자인의 일체성에 영향을 미치지 않고는 제거될 수 없는 블럭에는 필수 유지 지정자(must-keep indicator)가 태그(tag)된다.
코어를 사용할 모든 애플리케이션 코드의 실행은 하이 레벨 모델 상에서 시뮬레이션된다. 시뮬레이션 프로세스에서 모델 내의 어떤 블럭이 애플리케이션 코드에 의해 사용되고 어떤 블럭이 미사용되는지에 관한 정보가 축적된다. 어떤 블럭이 미사용되는지에 관한 정보는 제거될 수 없는 블럭이 무엇인지에 관한 정보와 결합된다. 이어서, 코어 디자인 내의 사용되지 않을 뿐만 아니라 제거될 수 있는 블럭을 제거함으로써 하이 레벨 코어 디자인이 테일러링된다.
테일러링된 하이 레벨 디자인은 기술 의존적 코어 디자인이 되게 합성된다. 합성 프로세스에서 블럭은 게이트로 대체되고, 필수 유지 지정자로 태그된 블럭을 대체하는 모든 게이트에 필수 유지 태그(tag)를 첨부한다. 모든 애플리케이션 코드의 시뮬레이션은 로우 레벨 디자인 상에서 반복되어 애플리케이션 코드에 의해 미사용되는 게이트가 어떤 것인지에 대한 정보를 축적한다. 이어서, 코어 내의 미사용될 뿐만 아니라 제거될 수 있는 게이트를 제거함으로써 로우 레벨 디자인이 테일러링된다.
본 발명의 전술한 특징 및 장점과 다른 특징 및 장점들은 첨부된 도면에 도시한 바와 같은, 후속하는 본 발명의 바람직한 실시예의 보다 구체적인 기술을 통해 자명해질 것이다.
도 1은 칩 ASIC 디자인에서 시스템에 대한 코어 로직을 테일러링하는 자동화된 방법의 바람직한 실시예의 흐름도,
도 2는 제로 토글 블럭 식별 프로세스의 흐름도,
도 3은 하이 레벨 합성 프로세스의 흐름도,
도 4는 게이트 레벨 합성 프로세스의 흐름도,
도 5는 게이트 레벨 합성 중에 게이트 모델이 어떻게 변화되는지를 도시한 도면.
이하에서, 본 발명의 바람직한 실시예는 첨부된 도면과 관련하여 기술될 것이며, 동일한 구성 요소는 동일하게 표시된다.
본 발명은 내장된 애플리케이션을 위한 ASIC 코어 개발에 관한 것이다. ASIC 디자인에 전반적으로 익숙하지 못한 비당업자를 위해, 이하의 개요 부분에서 본 발명을 이해하는 데에 도움이 될 기본 개념 및 용어를 제공한다. ASIC 디자인 분야의 당업자들은 개요는 생략하고 바로 본 발명의 상세한 설명을 참조해도 무방하다.
개요
작금의 전자 산업의 융성은 상당 부분 집적 회로의 발전에 기인한 것이다. ASIC은 특정 애플리케이션의 요구를 충족시키도록 설계된 로직 및 메모리 회로의 집합체이다. 디자인은 가장 단순한 기능에서부터 코어라 불리는 매우 복잡한 회로를 망라하는 기설계되고 기검증된 로직 회로의 세트에 로직 기능을 매핑시킴으로써 전형적으로 단일 실리콘 다이 내에 구현된다. 코어 디자인은 전형적으로 DSP(digital signal processor), ARM(advanced RISC machine) 마이크로프로세서, 이더넷(Ethernet) 기능부 혹은 PCI(peripheral component interconnect) 제어기와같은 많은 높은 레벨의 산업계 표준 기능부를 포함한다.
SOC(system on a chip) 디자인이라 불리는 일부 ASIC 디자인에서, 애플리케이션 코드는 실리콘 다이 상의 회로와 함께 ROM(read only memory)에 내장된다. 내장된 애플리케이션 코드는 전형적으로 이러한 ASIC 상의 회로를 사용하게 될 유일한 애플리케이션 코드이다. SOC 디자인의 예로 셀룰러 폰에 내장된 ASIC을 들 수 있다. 셀룰러 폰은 모든 컴퓨터화된 애플리케이션이 그 애플리케이션을 지원하는 데에 필요한 회로와 함께 ASIC에 내장되도록 설계된다. 예를 들어, 셀룰러 폰 애플리케이션은 음을 필터링하고 음질을 개선하기 위해 전형적으로 DSP 코어를 필요로 한다. 소정의 DSP 코어는 파형을 분석하고 변환하도록 특성화되어 있어 영상, 음, 레이더 펄스의 질을 개선시키고, 그것들을 필터링하고 변조하는 데에 사용될 수 있다. 따라서, 셀룰러 폰용 SOC 디자인은 전형적으로 DSP 코어를 그 회로의 일부분으로 포함할 것이다.
ASIC 디바이스의 디자인은 ① 디자인 입력, ② 로직 시뮬레이션을 통한 디자인 분석, ③ 로직 합성, ④ 디자인 검증의 네 가지 기본 단계를 사용한다. 디자인 입력 단계에서, ASIC에 대한 애플리케이션 기능이 하드웨어 기술 언어(HDL)로 기술된다. 두 가지 주요한 HDL은 Verilog와 VHDL이다. 이들 두 HDL은 프로그래밍 언어와 상당히 유사하며 하드웨어 행태를 기술하기 위한 목적으로 디자인된 언어이다. 프로그래머가 실행 가능한 오브젝트 코드(object code)를 생성할 특정 컴파일러를 몰라도 프로그램의 동작을 기술할 수 있는 것과 마찬가지로, HDL은 대부분의 경우 실리콘 내에서의 최종적인 구현과는 관계없이 설계자로 하여금 높은 레벨에서그들의 ASIC 디자인의 동작을 기술할 수 있도록 한다.
전형적인 범용 코어는 기설계되고, 기합성되고, 기검증된 게이트 기능부이다. 게이트는 로직 기능을 수행하는 회로를 형성하는 트랜지스터의 조합이다. 코어 디자인은 HDL로 표현될 수 있으며, 이 경우에 이들 코어 디자인은 소프트 코어(soft core)라 불린다. 소프트 코어는 HDL을 사용하여 높은 레벨 혹은 낮은 레벨 네트리스트(netlist)로서 기술될 수 있다. 네트리스트는 구성 요소 및 그 상호 연결에 관한 파일이다. 높은 레벨의 네트리스트는 기술 비의존적이고 블럭으로 이루어지며, 그들 블럭은 기능적으로 그룹화된 회로의 섹션(section)을 포함한다. 예를 들어, 마이크로프로세서 코어에서, 하나의 블럭은 메모리 유닛일 수 있고, 다른 블럭은 실행 유닛일 수 있고, 또다른 블럭은 디코더 유닛일 수 있다. 낮은 레벨의 네트리스트는 기술 의존적이며 게이트로 이루어진다.
HDL로 디자인을 입력한 후, 설계자는 디자인 분석 프로세스를 시작하여 HDL 모델이 의도된 동작을 올바르게 구현하는지를 결정한다. 종래의 방법은 로직 시뮬레이션을 통해 디자인이 어떻게 동작하는지를 평가한다. 표준 로직 시뮬레이터 도구는 Verilog X-L, Cadence사의 Leapfrog, Synopsys사의 VSS, Model Technology, Inc.사의 MTI를 포함한다. 시뮬레이션 프로세스 동안에, HDL은 설계자가 생성한 한 세트의 입력 벡터와 함께 시뮬레이터 도구로 판독된다. 시뮬레이터 도구는 획득되어 한 세트의 기대값에 대해 평가되는 출력 벡터를 생성한다. 출력값이 기대값과 같으면, 시뮬레이션은 통과되고 디자인은 올바른 것으로 간주된다. 출력값이 기대값과 상이하면, 시뮬레이션은 실패한 것이고 디자인은 수정될 필요가 있다.
로직 시뮬레이션 다음 단계에서, 로직 합성에 의해 HDL 표현이 기술 특정(technology-specific) 로직 회로로 변환된다. 디자인 단계에서, 타이밍, 전력 및 실리콘 면적 제한 요건이 합성 장치에 구체적으로 주어진다. 합성 프로세스의 출력은 디자인의 로직 동작을 구현하도록 상호 연결된 회로 인스턴스(instance)의 네트리스트이다. 이 네트리스트는 VHDL, Verilog 및 EDIF(Electronic Design Interchange Format)를 포함하는 여러 포맷 혹은 언어로 기록될 수 있다. 상호 연결된 회로는 도식적으로 표시된 배선도일 수도 있다. Synopsys사의 Design Compiler와 IBM사의 BooleDozer 같은 많은 표준 합성 도구가 활용 가능하다.
HDL을 네트리스트로 합성한 후, 디자인은 이러한 디자인이 올바르게 동작하며, 성능, 검사 가능성(testability), 전력, 실리콘 면적 및 기술 특정 전기적 검사의 면에서의 물리적 제한 요건을 만족시키는 것을 보장하도록 검증된다. 디자인이 합성 전에 시뮬레이션을 통해 동작적으로 검증되었다 하더라도, 합성 후에, 디자인은 그 동작이 합성 프로세스에 의해 손상되지 않았다는 것을 보장하기 위해 다시 시뮬레이션된다.
상세한 설명
본 발명은 개별 SOC 디자인의 요구를 만족시키도록 코어 로직을 테일러링하는 자동화된 방법에 관한 것이다. 본래는 범용의 하이 레벨 코어 디자인이었던 코어 디자인이 ASIC 상에 코어와 함께 내장되도록 설계된 애플리케이션의 특정한 요구를 만족시키는 주문형 로우 레벨 코어 디자인으로 변환된다. 테일러링 프로세스를 통해 코어 디자인의 어떤 부분이 제거될 수 있고 제거될 수 없는지를 식별함으로써, 본 발명의 방법은 기검증되고 기테스트된 코어 기능의 일체성을 보장한다. ASIC 상의 코어를 사용하게 될 모든 내장된 애플리케이션의 실행을 시뮬레이션함으로써, 본 발명의 방법은 코어 디자인 중의 어떤 부분이 미사용되는지를 식별한다. 코어 중에서 어느 부분이 미사용되고 제거 가능한가에 관한 정보를 조합함으로써, 범용 코어 디자인이 특정 SOC 디자인의 요구를 수용하도록 주문 제작된다. 이러한 방법을 통해 설계된 ASIC은 테일러링된 코어가 없이 설계된 ASIC에 비해 낮은 전력 요구, 증가된 속도 및 감소된 실리콘 면적의 이점을 갖는다.
이제 도 1을 참조하면, 코어 회로를 테일러링하는 바람직한 방법(100)의 흐름도를 도시하고 있다. 하이 레벨 시스템 모델(102)은 Verilog 혹은 VHDL과 같은 기술 비의존적 HDL로 작성된 테일러링되지 않은 범용 코어 디자인의 하이 레벨 표현이다. 하이 레벨 코어 디자인은 동일 유닛 혹은 서브루틴을 동작시키는 HDL 그룹인 블럭 혹은 기능으로 세분화된다. 예를 들면 마이크로프로세서 코어에서, 하나의 블럭은 메모리 유닛일 수 있고, 다른 블럭은 실행 유닛일 수 있고, 세 번째 블럭은 로직 디코더 블럭일 수 있다. 일부 블럭은 코어를 사용하게 될 애플리케이션 코드가 이를 필요로 하지 않을 수 있는 특별한 기능을 갖는다. 예를 들어, DSP 코어에서, 고객은 직렬 혹은 병렬 포트 블럭 모두를 필요로 하지 않을 수 있다. 이와 달리, 어떤 고객이 고정 소수점 연산 블럭(fixed point arithmetic block)만을 필요로 하여 부동 소수점(floating point) 연산 블럭은 제거할 수 있을 것이다.
본 발명의 바람직한 방법에 따르면, 태그 삽입 프로세스(110)는 하이 레벨 시스템 모델(102)에 태그를 부가하여 태그된 하이 레벨 시스템 모델(112)을 생성한다. 제거될 수 없는 경우, 즉 코어 디자인에 필수적인 것인 경우 블럭은 필수 유지로 태그된다. 태그는 블럭에 부착되는 식별자로서, 코어 디자인의 어떠한 제거 불가능 부분도 제거되는 것을 방지하기 위해, 방법(100)의 후속 단계에서 질의(querying)된다. 일부 블럭은 제조 테스트 혹은 에러 복원의 목적으로 필요할 수 있다는 점에서 제거 가능하지 않을 수도 있다. 다른 블럭들은 코어 일체성에 영향을 미치지 않고도 코어 디자인으로부터 제거될 수 있다. 그러나, 제거될 수 있는 모든 블럭들이 방법(100)의 후속 단계에 의해 제거되지는 않을 것이다. 블럭들은 제거 가능할 뿐만 아니라 코어 디자인을 사용하게 될 어떠한 애플리케이션 코드에 의해서도 사용되지 않는 경우에만 제거된다.
비록 애플리케이션 코드에 의해 사용되지 않더라도 제거하면 안되는 태그된 블럭의 예로는 제조 테스트를 지원하는 블럭이 있다. 예를 들어, 내장형 자체 테스트(built in self test : BIST) 블럭은 제거 불가능한 것으로 태그될 것인데, 이는 제조 테스트 중에 RAM(random access memory) 혹은 ROM(read only memory) 어레이를 테스트하는 데에 사용되기 때문이다. 다른 예로는, 진단의 목적 혹은 카드 어셈블리 테스트 목적으로만 사용되기 때문에 제거 불가능한 것으로 태그되는 결합 동작 테스트 그룹(joint action test group : JTAG) 포트 블럭이 있다. 따라서, 이들 예에서의 블럭들이 애플리케이션 코드의 통상적인 동작 시에는 결코 사용되지 않는다 하더라도 그들은 코어 디자인의 일체성을 유지하기 위해 보전되어야만 한다.
태그 삽입 프로세스(110)는 방법(100)에서 첫 번째 단계로서 도시되어 있다.그러나, 일단 특정한 하이 레벨 시스템 모델(102)에 대한 태그 삽입 프로세스(110)가 완료되고 대응하는 태그된 하이 레벨 시스템 모델(112)이 생성되고 나면, 동일한 범용 코어 디자인을 다른 ASIC에 맞도록 테일러링할 때마다 태그 삽입 프로세스(110)가 반복될 필요는 없다. 대신, 태그 삽입 프로세스(110)는 하이 레벨 시스템 모델(102) 혹은 필수 유지 태그(104)가 변하는 경우에만 실행될 필요가 있다. 달리 말하면, 태그 삽입 프로세스(110)는 범용 코어 디자인의 하이 레벨 HDL 표현에서의 변화가 있을 때 혹은 하이 레벨 디자인에서 무슨 블럭이 필수 유지로 태그되어야만 하는지에 대한 식별에 변화가 생길 경우에만 실행될 필요가 있다. 그렇지 않은 경우, 일단 태그된 하이 레벨 시스템 모델(112)이 생성되면, 이는 하이 레벨 시스템 모델(112)에 의해 표현되는 코어가 테일러링될 필요가 있는 경우마다 재 사용될 수 있다.
일단 필수 유지 태그가 코어 디자인에 삽입되면, 단계(120)는 태그된 하이 레벨 시스템 모델(112) 상의 애플리케이션 코드의 실행을 행태적으로 시뮬레이션한다. 단계(120)는 내장된 애플리케이션 테스트 스위트(suite)(114)를 입력으로 사용한다. 내장된 애플리케이션 테스트 스위트(114)는 ASIC 상에 내장될 모든 애플리케이션 뿐만 아니라, 애플리케이션 코드를 테스트하기 위한 샘플 입력 데이터 혹은 테스트 벡터를 포함한다. 코어를 구비하는 ASIC 상에 내장되고, 그 코어의 유일한 사용자가 될 모든 애플리케이션은 단계(120)에서 시뮬레이션되어야 한다. 이러한 방식으로, 본 발명의 방법은 코어 디자인 내의 어떤 기능부가 이러한 특정 ASIC 디자인 상에서 미사용되는지를 충분히 결정할 수 있다.
단계(120)는 시뮬레이션 도구를 사용하여 내장된 애플리케이션 테스트 스위트(114)의 행태적 시뮬레이션(behavioral simulation)을 실행한다. 행태적 레벨에서의 시뮬레이션은 코어 모델이 어떠한 행태를 하게 될지에 관한 정보를 제공한다. 즉, 테스트 입력 벡터가 주어지면, 애플리케이션 코드의 시뮬레이션에 의해 출력 벡터가 생성된다. 표준 시뮬레이션 도구에 의한 행태적 시뮬레이션은 제로 지연, 단위(unit) 지연 혹은 명목 지연(nominal delay) 동작을 이용할 수 있다. 제로 지연에서, 모든 블럭은 입력 신호와 출력 트랜지션(transition) 사이에 0의 지연을 갖는다. 단위 지연에서, 모든 블럭은 1의 지연을 가지며, 명목 지연 시뮬레이션에서, 각각의 블럭은 회로로의 기술 특정 전파 지연(technology specific propagation delay)에 대응하는 지연에 대해 실수(real number)를 갖는다.
행태적 시뮬레이션 프로세스는 블럭 혹은 서브 블럭(예를 들어, 레지스터 전송) 레벨에서의 네트 토글 카운트 히스토리(net toggle count history)를 수집한다. 하이 레벨 디자인 내에서, 블럭과 서브 블럭은 네트에 의해 함께 연결되어 있다. 블럭을 함께 연결해 주는 네트는 입력 및 출력 네트라 불린다. 한 블럭 내에서 서브 블럭을 연결하는 네트는 내부 네트라 불린다. 행태적 시뮬레이션은 각 애플리케이션의 실행 중에 태그된 하이 레벨 시스템 모델(112)에서의 모든 유형의 네트의 사용을 추적한다. 내장된 애플리케이션 테스트 스위트(114) 내의 모든 애플리케이션을 실행함으로써 축적된 히스토리 정보는 행태적 네트 토글 정보 파일(122)에 기록된다. 이러한 방식으로, 본 발명의 방법은 코어와 함께 ASIC 상에 내장될 애플리케이션에 의해 어떤 블럭이 사용되는 지에 관한 포괄적인 정보를수집한다.
일단 모든 애플리케이션 프로그램이 시뮬레이션된 후, 단계(130)는 제로 토글 블럭을 식별한다. 이 프로세스는 어떤 블럭이 제거될 수 없는가에 관한 정보를 내장된 애플리케이션을 지원하는 데에 어떤 블럭이 필요한가에 관한 정보와 결합한다. 이제 도 2를 참조하면, 제로 토글 블럭을 식별하기 위한 바람직한 방법(130)의 흐름도를 도시하고 있다. 도 2는 방법(100)에서의 단계(130)를 보다 상세히 설명한다.
단계(210)는 태그된 하이 레벨 시스템 모델(112)로부터 블럭 이름과 필수 유지 태그를 판독한다. 이 정보는 애플리케이션에 의해 사용되는지의 여부와는 상관없이 하이 레벨 코어 디자인으로부터 어떤 블럭이 제거될 수 없는지를 나타낸다. 단계(220)는 시뮬레이션 프로세스를 통해 수집된 행태적 네트 토글 정보(122)를 판독한다. 이들 두 개의 정보 소스는 단계(230) 내지 단계(250)에 의해 사용되어, 제거할 수 있을 뿐만 아니라 시뮬레이션 중에 사용되지 않는 블럭에 대한 제로 토글 블럭 태그(132)를 생성한다. 제로 토글 태그는 어떤 블럭이 하이 레벨 시스템 모델(102)로부터 제거될 수 있는지를 방법(100) 내의 후속하는 단계에 알려주는 지정자이다.
단계(232)에서 질의되는 블럭이 관련된 필수 유지 태그를 가지고 있다면, 그 블럭에 대해서는 제로 토글 태그가 생성되지 않는다. 이러한 방식으로, 본 발명에 따른 방법은 코어 디자인의 일체성을 유지하는 데 요구되는 미사용 블럭이 제거되는 것을 방지한다. 따라서, 코어는 기검증되고 기테스트된 디자인의 일체성을 유지하면서도 특정 SOC 디자인에 맞게 주문 제작될 수 있다.
이와 달리, 단계(232)에서 질의된 블럭이 관련된 필수 유지 태그를 갖고 있지 않다면, 단계(234)는 행태적 네트 토글 정보(122)를 조사한다. 보다 구체적으로, 단계(234)는 블럭의 출력 네트가 행태적 시뮬레이션 중에 토글되었는지를 조사한다. 출력 네트는 기본적으로 코어 내의 블럭 간의 연결부, 즉 다른 블럭의 입력 네트로부터 파생되어 하나의 블럭으로부터 나오는 연결부이다. 출력 네트가 하나라도 행태적 시뮬레이션에 의해 토글되었다면, 이 블럭은 애플리케이션 코드를 지원하는 데에 필요하기 때문에 이 블럭에 대해서는 제로 토글 태그가 생성되지 않는다.
이와 달리, 단계(234)가 이 블럭에 대해 어떠한 출력 네트도 토글되지 않았다고 결정하면, 단계(236)는 행태적 네트 토글 정보(122)를 조사한다. 단계(236)는 특히 블럭의 내부 네트가 행태적 시뮬레이션 중에 토글되었는지에 관심을 갖는다. 내부 네트는 기본적으로 하이 레벨 디자인 내의 서브 블럭 간의 연결부이다. 블럭은 같은 유닛 혹은 서브루틴을 동작시키는 HDL 그룹이기 때문에, 소정의 블럭은 그 블럭에 대한 내부 네트 중 어느 하나라도 시뮬레이션 프로세스 중에 토글되었다면 블럭은 사용된 것으로 표시될 것이다. 몇몇 예에서, 토글된 내부 네트는 갖지만 토글된 출력 네트는 전혀 갖지 않는 블럭은 중복 블럭일 수도 있지만, 이러한 조합이 결과적인 코어 디자인에 바람직한 경우가 있다. 예를 들어, 내부 네트가 토글링하여 에러 진단에 사용될 수 있는 정보를 포착할 수 있다. 따라서, 내부 네트에 관한 정보에 의해 표시되는 바와 같이 블럭의 어떠한 일부분이라도 토글되면, 전체 블럭이 애플리케이션에 의해 사용되는 것으로 간주된다.
이와 달리, 단계(236)가 블럭이 그의 모든 내부 네트에서 제로 토글을 갖는다고 결정하면, 단계(240)는 그 블럭에 대해 제로 토글 태그를 생성하고 제로 토글 블럭 태그 파일(132)에 그 정보를 기록한다. 이러한 방식으로, 본 발명에 따른 방법은 코어 디자인의 일체성을 손상시키지 않고도 제거될 수 있고 코어를 사용하게 될 애플리케이션 코드에 의해 필요로 되지 않는 하이 레벨 코어 디자인 내의 모든 로직 블럭을 식별한다. 방법(120)은 태그된 하이 레벨 시스템 모델(112) 내의 모든 블럭이 단계(230) 내지 단계(250)에 의해 처리된 경우에 완료된다.
도 1을 다시 참조하면, 일단 방법(130)이 하이 레벨 코어 디자인으로부터 제거될 수 있는 로직 블럭이 어떤 것인지를 식별하면, 방법(140)은 합성 도구를 사용하여 제로 토글 블럭을 제거하고, 하이 레벨 코어 디자인을 게이트 레벨 디자인으로도 불리는 기술 의존적 로우 레벨 코어 디자인으로 합성한다. 프로세스(140)에 사용될 수 있는 합성 도구의 예로는 Synopsys사의 Design Compiler 혹은 IBM사의 BooleDozer가 있다. 표준 하이 레벨 합성은 블럭들을 회로의 인스턴스로 대체될 수 있는 부분으로 분해하는 프로세스이다. 합성 프로세스는 하이 레벨 디자인에서 블럭의 기능성을 복제하는 방식으로 인스턴스화된 회로를 상호 연결시킨다.
이제 도 3을 참조하면, 하이 레벨 코어 디자인을 로우 레벨 코어 디자인으로 합성하는 바람직한 방법의 흐름도를 도시하고 있다. 도 3은 방법(100)의 단계(140)를 보다 상세히 설명하고 있다. 태그된 하이 레벨 시스템 모델(112)과 제로 토글 블럭 태그(132)가 단계(310)에서 판독되어, 각각의 블럭은 단계(320) 내지 단계(350)를 통해 개별적으로 처리될 수 있다. 비록 하이 레벨 시스템 모델을 판독하는 것이 표준 합성 단계이지만, 본 발명의 방법은 단계(310)에 대해 확장 언어(extension language)를 채택하여 제로 토글 블럭 태그(132)를 판독한다. 확장 언어는 합성 도구 동작이 사용자 작성 루틴으로 인해 개선될 수 있도록 한다.
본 발명의 방법에서, 하이 레벨 코어 디자인으로부터 로직 블럭을 제거하는 데에 확장 언어가 사용된다. 제거 가능할 뿐만 아니라 애플리케이션에 의해 미사용되는 블럭만이 하이 레벨 코어 디자인으로부터 제거된다. 이러한 방식으로, 하이 레벨 디자인은 코어를 구비하는 ASIC 상에 내장된 애플리케이션 코드의 특정 요구를 만족시키도록 주문 제작된다. 보다 상세하게는, 블럭은 다음과 같이 제거된다. 단계(322)는 블럭이 필수 유지 태그를 갖는지를 조사한다. 필수 유지 태그를 갖지 않는다면, 블럭은 제거 가능하고, 단계(324)는 블럭이 제로 토글 태그를 갖는지를 조사한다. 제로 토글 태그를 갖는다면, 블럭은 제거 가능할 뿐만 아니라 미사용되며, 단계(330)는 하이 레벨 디자인으로부터 그 블럭을 제거한다.
한편, 블럭이 제거 불가능하거나 애플리케이션 코드에 의해 사용된다면, 블럭은 단계(340)에서 게이트 레벨로 합성된다. 즉, 블럭은 회로의 인스턴스로 대체될 수 있는 부분들로 분해된다. 인스턴스화된 회로는 하이 레벨 디자인에서의 블럭의 기능성을 복제하는 방식으로 상호 연결된다. 단계(322)는 블럭이 제거 가능하지 않은지를 결정한다. 이와 달리, 단계(322)가 블럭이 제거 가능하다고 결정을 하는 경우에, 단계(324)는 내장된 애플리케이션 코드의 시뮬레이션 중에 블럭이 사용되는지를 결정한다.
단계(340)는 블럭의 기술 비의존적 하이 레벨 HDL 표현을 기술 특정 게이트 레벨 표현으로 변환한다. 전형적으로, 각각의 판매자는 기술 의존적 게이트 레벨 기능의 라이브러리(library)를 갖고 있다. 게이트는 로직 기능을 수행하는 회로를 형성하는 트랜지스터의 조합이다. 합성 도구는 하이 레벨 HDL 스테이트먼트(statement)를 보다 원시 기능(primitive function)으로 분해하고, 라이브러리를 검색하여 요구된 기능과 라이브러리 내의 기능 간에 일치하는 것을 찾는다. 일치하는 것이 발견되는 경우, 합성 도구는 그 회로를 디자인 내에 인스턴스화하고, 그 회로에 셀(cell) 인스턴스 이름을 부여한다. 이러한 프로세스가 전체 블럭이 로직 회로로 매핑될 때까지 계속된다.
일단 블럭이 게이트 레벨 표현으로 변환되면, 단계(350)는 블럭이 제거 불가능한지를 조사한다. 그렇다면, 단계(350)는 필수 유지 태그를 블럭의 기능을 복제하도록 인스턴스화된 게이트에 전파한다. 전파는 적절한 게이트에 제거 금지 태그를 표시하는 것에 의해 이루어지며, 제거 금지 태그는 게이트 로직을 변경시키지 말 것을 합성 도구에게 알려준다. 이러한 방식으로, 본 발명의 방법은 게이트가 제거 불가능한 블럭의 기능을 복제하도록 인스턴스화된 경우에 게이트가 제거되는 것을 방지한다.
단계(320) 내지 단계(352)를 통해 모든 블럭이 처리된 후, 단계(360)는 게이트 레벨 코어 디자인으로부터 싱크가 없고(sinkless) 소스가 없는(sourceless) 로직을 제거한다. 싱크가 없는 로직은 어떠한 다른 게이트로도 연결되어 있지 않은 게이트로부터의 출력이다. 소스가 없는 로직은 어떠한 다른 게이트로도 연결되어있지 않은 게이트의 입력이다. 게이트가 소스가 없는 핀을 구비하거나, 게이트가 싱크가 없는 핀에 신호를 공급하면, 단계(360)는 그 게이트가 제거 금지 태그를 갖지 않는 한 그 게이트를 제거한다. 싱크가 없고 소스가 없는 로직을 제거하는 것은 합성 도구에 의해 수행되는 표준 작업이다. 합성 도구는 제거 금지 태그를 인식하여 태그된 게이트에 대한 게이트 로직을 변경시키지 않는다. 이러한 방식으로, 본 발명의 방법은 표준 합성 도구가 코어 블럭의 일체성을 변화시키는 것을 방지하며, 비효율적인 게이트 회로가 코어 디자인의 일체성에 영향을 미치지 않고 제거될 수 있다면 비효율적인 게이트 회로가 제거될 수 있게 한다. 단계(360) 이후에 남아 있는 게이트는 게이트 레벨 네트 모델(142)로 출력된다.
다시 도 1을 참조하면, 다음 단계인 단계(150)는 내장된 애플리케이션 코드의 실행을 재 시뮬레이션한다. 재 시뮬레이션은 로우 레벨 디자인이 하이 레벨 디자인과 동일한 결과를 갖는다는 것, 즉 합성 프로세스 혹은 하이 레벨 디자인으로부터 블럭을 제거함으로써 코어 디자인이 손상되지 않았다는 것을 보장한다. 내장된 애플리케이션 테스트 스위트(114)는 코어와 함께 ASIC 상에 내장될 모든 애플리케이션과 함께 테스트 입력 벡터를 다시 제공한다. 재 시뮬레이션 중에, 애플리케이션에 의해 어떤 게이트가 사용되고 어떤 게이트가 미사용되는가에 관한 정보가 수집된다. 이 정보는 제로 토글 태그(152)에 기록된다.
게이트 레벨 시뮬레이션 후, 다음 단계인 단계(160)는 코어 디자인을 더 테일러링하기 위한 게이트 레벨 네트 모델(142)의 로우 레벨 합성이다. 이제 도 4를 참조하면, 게이트 레벨 네트 모델(142)을 합성하는 바람직한 방법의 흐름도를 도시하고 있다. 도 4는 방법(100)의 합성 단계(160) 중에 이루어지는 단계들을 보다 상세히 설명한다. 단계(410)에서, 게이트 레벨 네트 모델(142)이 합성 도구에 의해 자동적으로 판독되고, 확장 언어가 제로 토글 게이트 태그 파일(152)을 판독하도록 사용된다. 단계(420)는 확장 언어를 사용하여 게이트가 필수 유지 태그와 제로 토글 태그 모두를 갖고 있는지를 조사한다. 모두 갖고 있는 경우, 단계(420)는 게이트가 후속 단계에서 제거되지 않도록 제로 토글로 재 지정한다.
필수 유지 태그는 하이 레벨 합성 중에 제거 불가능한 블럭을 대체한 게이트로 전파되었다. 제로 토글 정보는 내장된 애플리케이션 코드의 재 시뮬레이션 중에 수집되었다. 게이트가 필수 유지 태그와 제로 토글을 모두 가지고 있다면, 단계(420)는 1의 값을 갖는 토글을 그 게이트에 대한 모든 출력 네트에 할당한다. 이러한 방식으로, 본 발명의 방법은 게이트 로직이 제거 불가능하도록 태그된 경우에 그 게이트 로직이 후속하는 합성 단계에서 변경되는 것을 방지한다.
제거 불가능한 게이트에 대해 일단 제로 토글이 비 제로 토글로 변경되면, 단계(430)는 확장 언어를 사용하여 제로 토글 네트의 모든 소스 및 싱크 핀을 분리시킨다. 단계(420) 후, 제로 토글 태그를 갖는 게이트만이 제거 가능한 블럭을 대체한 게이트이다. 게이트의 입력(소스 핀)과 출력(싱크 핀)을 디자인 내의 그들의 상호 연결부로부터 분리함으로써, 단계(430)는 방법(160)의 후속하는 합성 처리 단계(440, 450)에게 이 게이트가 제거될 수 있다는 것을 알게 한다. 단계(440)는 연결되지 않은 출력(싱크가 없는 핀)을 갖는 모든 로직 게이트를 제거한다. 단계(450)는 연결되지 않은 입력(소스가 없는 핀)을 갖는 모든 로직 게이트를 감축시킨다. 이러한 방식으로, 제거 가능할 뿐만 아니라 코어 디자인에서 미사용되는 모든 게이트는 제거되거나 적어도 감축된다. 이러한 로직 감축 이후에 남아 있는 게이트는 애플리케이션 특정 게이트 레벨 모델(162)로도 불리는 테일러링된 로우 레벨 코어 디자인을 나타낸다.
이제 도 5를 참조하면, 게이트 로직을 감축시키기 위해 게이트의 소스 및 싱크 핀을 분리시키는 예를 도시하고 있다. 도면(510)은 내장된 애플리케이션 코드의 재 시뮬레이션 중에 확인된 제로 토글 네트(512)를 포함하는 게이트 그룹을 도시하고 있다. 방법(160)의 단계(430)에서 사용된 확장 언어는 게이트(g3, g4)로부터 제로 네트 토글(512)을 분리시켜 도면(520)에 도시한 중간 단계를 생성한다. 도면(520)은 싱크가 없는 핀(522)에 신호를 공급하는 게이트(g2, g3)를 도시하고 있다. 도면(520)은 또한 소스가 없는 핀을 갖는 게이트(g4)를 도시하고 있다. 이러한 방식으로, 본 발명의 방법은 후속하는 합성 단계로 하여금 어떤 게이트가 게이트 레벨 디자인으로부터 제거될 수 있는가를 식별케 한다.
방법(160)의 단계(440)는 싱크가 없는 핀을 갖는 모든 게이트, 즉 연결되지 않은 출력을 갖는 모든 게이트를 제거한다. 도면(520)으로부터 단계(440)는 게이트(g2, g3)를 제거하는데, 이는 g3이 싱크가 없는 핀(522)을 갖고 있기 때문이다. 방법(160)의 단계(450)는 소스가 없는 핀을 갖는 모든 게이트, 즉 연결되지 않은 입력을 갖는 모든 게이트를 감축시킨다. 소스가 없는 핀을 갖는 게이트를 감축시키는 것은 회로를 간소화함을 의미한다. 예를 들어, 3개의 입력(그 중 하나의 입력은 소스가 없음)을 갖는 AND 게이트는 2개의 입력을 갖는 AND 게이트가 되도록감축될 수 있다. 또다른 예도, 2개의 입력(그 중 하나는 소스가 없음)을 갖는 NOR 게이트는 인버터가 되도록 감축될 수 있다. 최선의 경우, 소스가 없는 핀을 갖는 게이트는 제거되어 단순한 와이어로 대체될 수 있다. 도면(520)으로부터, 단계(450)는 소스가 없는 핀(524)을 인식하여, 게이트(g4)가 단순한 와이어로 대체될 수 있는 것으로 결정한다. 감축 후에, 입력 포트(E)는 게이트(g5)에 직접 연결된다.
도면(530)은 싱크가 없는 핀을 제거하고 소스가 없는 핀을 감축시킨 후의 결과를 나타낸다. 게이트(g2, g3, g4)는 게이트 레벨 디자인으로부터 제거되었다. 그 결과, 포트(B)에 대한 부하는 반으로 줄어들어, 포트(B)를 구동하는 회로의 속도를 증가시키고 포트(B) 상의 줄어든 용량성 부하로 인해 전력을 절약할 것이다. 비록 게이트(g2)가 토글되었을지라도, 게이트(g2)의 모든 출력이 제로 토글 게이트(g3)로 입력되기 때문에, 게이트(g2)는 필요없으므로 제거된다는 것을 알 수 있다. 이러한 방식으로, 본 발명의 방법은 스위칭 게이트(g2)에서 소모되는 전력을 절약하며, 이로 인해 동작에는 아무런 영향도 미치지 않는다.
도 1을 다시 참조하면, 특정 게이트 레벨 모델(162)이 합성 단계(160)에 의해 생성되면, 단계(170)는 내장된 애플리케이션 테스트 스위트(114)를 입력으로 재차 사용하여 단계(150)에서와 같이 재 시뮬레이션을 수행한다. 재 시뮬레이션은 단계(160)에서의 로직 감축 이후의 로우 레벨 디자인이 단계(160) 전의 로우 레벨 디자인과 동일한 결과를 생성시키는 것을 보장한다. 즉, 단계(170)는 애플리케이션 특정 게이트 레벨 모델(162)의 게이트 레벨 검증단계이다. 단계(170)에 의해방법(100)이 완료된다. 범용 코어 디자인으로부터 시작하여, 본 발명에 따른 방법은 어떤 코어 로직을 제거할 것인가를 결정하고, 그 로직을 제거하여, ASIC 상에 함께 내장될 애플리케이션 코드에 대해 테일러링된 코어 디자인을 생성하였다. 미사용 블럭 및 게이트를 제거함으로써, 테일러링된 코어는 보다 낮은 전력 소모, 감소된 실리콘 면적, 보다 빨라진 실행 시간이라는 이점을 얻는다.
보다 상세하게, SOC 상에 내장된 애플리케이션 코드와 함께 사용하기 위해 범용 코어 디자인을 주문 제작하는 프로세스는 다음과 같이 요약될 수 있다. 코어 디자인의 하이 레벨 HDL로 표현된 블럭은 제거 가능 혹은 제거 불가능한 것으로 식별되어야 한다. 하이 레벨 코어 디자인은 코어를 사용할 애플리케이션 프로그램 모두를 포함하는 내장된 애플리케이션 테스트 스위트를 사용하여 행태적 시뮬레이션을 통해 실행된다. 행태적 시뮬레이션 중에 어떤 블럭이 토글되지 않는지에 관한 정보가 축적된다. 제거 가능할 뿐만 아니라 행태적 시뮬레이션 중에 미사용된 블럭은 하이 레벨 디자인으로부터 제거된다.
그 후, 테일러링된 하이 레벨 디자인은 로우 레벨 디자인으로 합성되어, 제거 가능 및 제거 불가능 정보가 게이트 레벨로 전파된다. 로우 레벨 코어 디자인은 내장된 애플리케이션 테스트 스위트를 사용하여 재 시뮬레이션된다. 재 시뮬레이션 중에 어떤 게이트가 토글되지 않는가에 관한 정보가 축적된다. 제거 가능할 뿐만 아니라 재 시뮬레이션 동안에 미사용된 게이트는 로우 레벨 디자인으로부터 제거된다. 마지막으로, 그에 따른 애플리케이션 특정 로우 레벨 디자인은 내장된 애플리케이션 테스트 스위트를 다시 한 번 사용하여 게이트 레벨 검증 프로세스를통해 실행된다. 이와 같이, 본 발명의 방법은 칩 디자인 내의 시스템 상에 내장된 애플리케이션 코드와 함께 사용하기 위해 범용 코어 디자인을 주문 제작하는 자동화된 수단을 제공한다.
본 발명을 바람직한 방법을 참조하여 특정하게 도시하고 기술하였지만, 본 발명의 사상 및 범주를 벗어남이 없이 형태 및 상세한 부분에서 다양한 변경이 이루어질 수 있음이 당업자에게는 자명할 것이다. 예를 들어, 다양한 도전체(연결부)를 도면에서는 단일 라인으로 도시하고 있으나, 그들 도전체가 제한적인 의미로 그렇게 도시된 것이 아니라, 본 기술 분야에서 알 수 있는 바와 같이 다수의 도전체(연결부)를 포함할 수 있다.
본 발명은 SOC(system on a chip)에 적응적으로 ASIC 코어를 테일러링하는 자동화된 방법을 제공함으로써 전력 소모를 줄이고 설계 시 차지하는 실리콘 면적을 감소시키고 실행 시간을 단축시키는 장점이 있다.

Claims (19)

  1. 응용 주문형 집적 회로(application-specific integrated circuit : ASIC)를 설계하는 방법에 있어서,
    ① ASIC의 시뮬레이션 모델 상에서 상기 ASIC에 의해 수행될 애플리케이션을 실행하는 단계 ― 상기 모델은 상기 ASIC에 의해 수행 가능하며 제거 불가능한 기능과 제거 가능한 기능을 포함함 ― 와,
    ② 상기 애플리케이션 실행 단계 중에 상기 모델의 동작을 모니터링하는 단계 ― 상기 ASIC에 의해 수행 가능하며 상기 애플리케이션에 의해 사용되지 않는 기능을 식별하는 단계를 포함함 ― 와,
    ③ 제거 가능한 기능이기도한 사용되지 않는 기능을 상기 시뮬레이션 모델로부터 제거하는 단계를 포함하는
    응용 주문형 집적 회로 설계 방법.
  2. 제 1 항에 있어서,
    상기 애플리케이션 실행 단계 ①은 상기 ASIC에 의해 수행될 것으로 예상되는 각각의 애플리케이션을 실행하는 단계를 포함하고, 상기 모니터링 단계 ②는 상기 각각의 애플리케이션 중의 어느 것에 의해서도 사용되지 않는 상기 제거 가능한 기능을 식별하는 단계를 포함하는
    응용 주문형 집적 회로 설계 방법.
  3. 제 1 항에 있어서,
    상기 모니터링 단계 ②가 제거 가능할 뿐만 아니라 각각의 애플리케이션 중의 어느 것에 의해서도 사용되지 않는 기능에 대해 제로 토글 태그(zero toggle tag)를 생성하는 단계를 포함하는
    응용 주문형 집적 회로 설계 방법.
  4. 제 3 항에 있어서,
    사용되지 않는 기능을 상기 시뮬레이션 모델로부터 제거하는 상기 단계 ③이, 제로 토글 태그를 갖지 않는 기능만을 상기 ASIC의 게이트 레벨 시뮬레이션 모델로 합성하는 단계 ― 상기 게이트 레벨 시뮬레이션 모델이 제거 가능 및 제거 불가능한 게이트를 포함함 ― 를 포함하는
    응용 주문형 집적 회로 설계 방법.
  5. 제 4 항에 있어서,
    ④ 상기 ASIC의 상기 게이트 레벨 시뮬레이션 모델 상에서 상기 ASIC에 의해수행될 상기 애플리케이션을 재 실행하는 단계와,
    ⑤ 상기 애플리케이션 재 실행 단계 중에 상기 게이트 레벨 시뮬레이션 모델의 동작을 모니터링하는 단계 ― 상기 모니터링 단계가 상기 게이트 레벨 시뮬레이션 모델 내에서 상기 애플리케이션에 의해 사용되지 않는 게이트를 식별하는 단계를 포함함 ― 와,
    ⑥ 제거 가능한 게이트이기도한 사용되지 않는 게이트를 상기 게이트 레벨 시뮬레이션 모델로부터 제거하는 단계를 더 포함하는
    응용 주문형 집적 회로 설계 방법.
  6. 제 5 항에 있어서,
    ⑦ 사용되지 않는 게이트를 상기 게이트 레벨 시뮬레이션 모델로부터 제거하는 상기 단계가 상기 ASIC의 상기 게이트 레벨 시뮬레이션 모델의 기능성을 변경시키거나 손상시키지 않았다는 것을 검증하는 단계를 더 포함하는
    응용 주문형 집적 회로 설계 방법.
  7. 응용 주문형 집적 회로를 설계하는 방법에 있어서,
    ① 하이 레벨 ASIC 디자인을 표현하는 단계 ― 상기 하이 레벨 ASIC 디자인은 다수의 제거 가능 및 제거 불가능한 블럭으로 세분화됨 ― 와,
    ② 상기 하이 레벨 ASIC 디자인 상에서 상기 ASIC 상에서 실행될 적어도 하나의 애플리케이션의 실행을 행태적으로 시뮬레이션하는 단계와,
    ③ 상기 행태적 시뮬레이션 중에 상기 하이 레벨 ASIC 디자인의 동작을 모니터링하는 단계 ― 상기 모니터링은 상기 다수의 블럭 중 어떤 블럭이 상기 행태적 시뮬레이션 중에 비활성 상태에 있는지를 식별함 ― 와,
    ④ 상기 비활성 블럭이 또한 제거 가능하면, 상기 하이 레벨 ASIC 디자인으로부터 상기 비활성 블럭을 제거하는 단계와,
    ⑤ 상기 하이 레벨 ASIC 디자인을 게이트 레벨 ASIC 디자인으로 합성하는 단계 ― 상기 게이트 레벨 ASIC 디자인은 다수의 제거 가능 및 제거 불가능한 게이트로 세분화됨 ― 와,
    ⑥ 상기 ASIC 디자인 상에서 실행될 상기 적어도 하나의 애플리케이션의 실행을 상기 게이트 레벨 ASIC 디자인 상에서 재 시뮬레이션하는 단계와,
    ⑦ 상기 재 시뮬레이션 단계 중에 상기 게이트 레벨 ASIC 디자인의 동작을 모니터링하는 단계 ― 상기 모니터링은 상기 다수의 제거 가능 및 제거 불가능한 게이트 중 어떤 게이트가 상기 재 시뮬레이션 중에 비활성 상태에 있는지를 식별함 ― 와,
    ⑧ 상기 비활성 게이트가 또한 제거 가능한 게이트라면, 상기 게이트 레벨 ASIC 디자인으로부터 상기 비활성 게이트를 제거하는 단계를 포함하는
    응용 주문형 집적 회로 설계 방법.
  8. 제 7 항에 있어서,
    ⑨ 상기 게이트 레벨 ASIC 디자인으로부터 상기 비활성 게이트를 제거하는 단계가 상기 게이트 레벨 ASIC 디자인의 기능성을 변경시키거나 손상시키지 않았다는 것을 검증하는 단계를 더 포함하는
    응용 주문형 집적 회로 설계 방법.
  9. 제 7 항에 있어서,
    상기 적어도 하나의 애플리케이션의 실행을 행태적으로 시뮬레이션하는 상기 단계 ②가 상기 ASIC 상에서 실행될 것으로 예상되는 각각의 애플리케이션을 행태적으로 시뮬레이션하는 단계를 포함하는
    응용 주문형 집적 회로 설계 방법.
  10. 제 7 항에 있어서,
    상기 게이트 레벨 ASIC 디자인으로부터 상기 비활성 게이트를 제거하는 상기 단계 ⑧이,
    ㉠ 상기 비활성 게이트가 또한 제거 가능하면, 상기 비활성 게이트의 소스 및 싱크 핀을 분리시키는 단계와,
    ㉡ 싱크가 없는 출력을 갖는 적어도 하나의 게이트를 제거하는 단계와,
    ㉢ 소스가 없는 입력을 갖는 적어도 하나의 게이트를 감축시키는 단계를 포함하는
    응용 주문형 집적 회로 설계 방법.
  11. 제 7 항에 있어서,
    하이 레벨 ASIC 디자인을 표현하는 상기 단계 ①이, 다수의 블럭으로 세분화된 하이 레벨 ASIC 디자인 내의 적어도 하나의 제거 불가능한 블럭을 식별하는 단계를 포함하는
    응용 주문형 집적 회로 설계 방법.
  12. 제 11 항에 있어서,
    상기 하이 레벨 ASIC 디자인을 게이트 레벨 ASIC 디자인으로 합성하는 상기 단계 ⑤가, 제거 불가능한 블럭에 관한 정보를 각각의 제거 불가능한 블럭으로부터 합성된 적어도 하나의 게이트 각각으로 전파하는 단계를 포함하는
    응용 주문형 집적 회로 설계 방법.
  13. 제 11 항에 있어서,
    상기 하이 레벨 ASIC 디자인 내의 적어도 하나의 제거 불가능한 블럭을 식별하는 상기 단계가, 상기 하이 레벨 ASIC 디자인 내의 제거 불가능한 블럭에 필수 유지 태그(must-keep tag)를 삽입하는 단계를 포함하는
    응용 주문형 집적 회로 설계 방법.
  14. 제 13 항에 있어서,
    상기 하이 레벨 ASIC 디자인을 게이트 레벨 ASIC 디자인으로 합성하는 상기 단계 ⑤가, 상기 필수 유지 태그를 각각의 제거 불가능한 블럭으로부터 합성된 적어도 하나의 게이트 각각에 전파하는 단계를 포함하는
    응용 주문형 집적 회로 설계 방법.
  15. 제 7 항에 있어서,
    상기 행태적 시뮬레이션 중에 상기 하이 레벨 ASIC 디자인의 동작을 모니터링하는 상기 단계 ③이,
    ㉠ 행태적 시뮬레이션 중에 비활성 상태에 있는 상기 하이 레벨 ASIC 디자인 내의 각각의 제거 가능한 블럭에 대해 제로 토글 태그를 생성하는 단계를 더 포함하는
    응용 주문형 집적 회로 설계 방법.
  16. 제 15 항에 있어서,
    상기 비활성 블럭이 또한 제거 가능하면, 상기 하이 레벨 ASIC 디자인으로부터 상기 비활성 블럭을 제거하는 상기 단계 ④가, 상기 하이 레벨 ASIC 디자인으로부터 관련된 제로 토글 태그를 갖는 각각의 블럭을 제거하는 단계를 포함하는
    응용 주문형 집적 회로 설계 방법.
  17. 응용 주문형 집적 회로를 설계하는 방법에 있어서,
    ① 상기 ASIC 상에서 실행될 것으로 예상되는 각각의 애플리케이션과 상기 각각의 애플리케이션을 테스트하기 위한 다수의 입력 테스트 벡터를 포함하는 애플리케이션 테스트 스위트(application test suite)를 생성하는 단계와,
    ② 상기 ASIC 상에서 실행될 것으로 예상되는 상기 각각의 애플리케이션 중의 적어도 하나의 애플리케이션의 실행을 지원하는 데에 요구되는 범용 코어 디자인을 선택하는 단계 ― 상기 범용 코어 디자인은 다수의 하이 레벨 하드웨어 기술 언어 스테이트먼트(high level hardware description language statement)를 포함하며, 다수의 블럭으로 세분화됨 ― 와,
    ③ 상기 범용 코어 디자인으로부터 제거될 수 있는 상기 범용 코어 디자인 내의 적어도 하나의 블럭을 식별하는 단계와,
    ④ 상기 범용 코어 디자인을 사용하여 상기 애플리케이션 테스트 스위트의 실행을 시뮬레이션하는 단계 ― 상기 시뮬레이션 단계는 상기 애플리케이션 테스트 스위트의 상기 실행 중에 사용되지 않는 상기 범용 코어 디자인 내의 적어도 하나의 블럭을 식별함 ― 와,
    ⑤ 상기 적어도 하나의 사용되지 않는 블럭이 또한 상기 범용 코어 디자인으로부터 제거될 수 있는 블럭인 경우, 상기 범용 코어 디자인으로부터 상기 적어도 하나의 사용되지 않는 블럭을 제거함으로써 하이 레벨 테일러링(tailoring)된 코어 디자인을 생성하는 단계와,
    ⑥ 상기 하이 레벨 테일러링된 코어 디자인을 게이트 레벨 코어 디자인으로 합성하는 단계 ― 상기 게이트 레벨 코어 디자인은 회로 인스턴스(instance)의 네트리스트(netlist)를 포함하고 다수의 게이트로 세분화됨 ― 와,
    ⑦ 제거될 수 있는 블럭의 상기 식별을 제거될 수 있는 상기 블럭 각각으로부터 합성된 적어도 하나의 게이트로 전파하는 단계와,
    ⑧ 상기 게이트 레벨 코어 디자인을 사용하여 상기 애플리케이션 테스트 스위트의 실행을 시뮬레이션하는 단계 ― 상기 시뮬레이션 단계는 상기 애플리케이션 테스트 스위트의 상기 실행 중에 사용되지 않는 상기 게이트 레벨 코어 디자인 내의 적어도 하나의 게이트를 식별함 ― 와,
    ⑨ 상기 적어도 하나의 사용되지 않는 게이트가 또한 상기 게이트 레벨 코어디자인으로부터 제거될 수 있는 게이트인 경우, 상기 게이트 레벨 코어 디자인으로부터 상기 적어도 하나의 사용되지 않는 게이트를 제거함으로써 테일러링된 게이트 레벨 코어 디자인을 생성하는 단계를 포함하는
    응용 주문형 집적 회로 설계 방법.
  18. 제 17 항에 있어서,
    ⑩ 상기 적어도 하나의 게이트를 제거함으로써 테일러링된 게이트 레벨 코어 디자인을 생성하는 상기 단계 ⑨가 상기 게이트 레벨 코어 디자인의 기능성을 변경시키거나 손상시키지 않았다는 것을 검증하는 단계를 더 포함하는
    응용 주문형 집적 회로 설계 방법.
  19. 제 17 항에 있어서,
    상기 적어도 하나의 사용되지 않는 게이트를 제거함으로써 테일러링된 게이트 레벨 코어 디자인을 생성하는 상기 단계 ⑨가,
    ㉠ 사용되지 않을 뿐만 아니라 제거될 수 있는 게이트의 소스 및 싱크 핀을 분리하는 단계와,
    ㉡ 상기 게이트 레벨 코어 디자인으로부터 싱크가 없는 출력을 갖는 적어도 하나의 게이트를 제거하는 단계와,
    ㉢ 상기 게이트 레벨 코어 디자인으로부터 소스가 없는 적어도 하나의 게이트를 감축시키는 단계를 포함하는
    응용 주문형 집적 회로 설계 방법.
KR1019990032304A 1998-08-18 1999-08-06 응용 주문형 집적 회로 설계 방법 KR100329896B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/136,126 1998-08-18
US09/136,126 US6237132B1 (en) 1998-08-18 1998-08-18 Toggle based application specific core methodology
US9/136,126 1998-08-18

Publications (2)

Publication Number Publication Date
KR20000017147A KR20000017147A (ko) 2000-03-25
KR100329896B1 true KR100329896B1 (ko) 2002-03-22

Family

ID=22471418

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990032304A KR100329896B1 (ko) 1998-08-18 1999-08-06 응용 주문형 집적 회로 설계 방법

Country Status (2)

Country Link
US (1) US6237132B1 (ko)
KR (1) KR100329896B1 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6311317B1 (en) * 1999-03-31 2001-10-30 Synopsys, Inc. Pre-synthesis test point insertion
US6523157B1 (en) * 1999-04-30 2003-02-18 Matsushita Electric Industrial Co., Ltd. Method for designing integrated circuit device and database for design of integrated circuit device
KR100627712B1 (ko) * 1999-12-27 2006-09-27 한국전자통신연구원 브이에이치디엘에서 중복 기술된 신호선 할당 구문 제거 방법
US6425116B1 (en) * 2000-03-30 2002-07-23 Koninklijke Philips Electronics N.V. Automated design of digital signal processing integrated circuit
US6711719B2 (en) * 2001-08-13 2004-03-23 International Business Machines Corporation Method and apparatus for reducing power consumption in VLSI circuit designs
KR100495529B1 (ko) * 2001-11-30 2005-06-16 최성원 외장교체식 단말기의 외장모듈에 대한 드라이버 다운로드 방법
KR100430074B1 (ko) * 2002-01-08 2004-05-03 학교법인 한양학원 시스템칩 테스트 접근을 위한 랩드 코아 연결 모듈
WO2003088095A1 (fr) * 2002-04-17 2003-10-23 Fujitsu Limited Procede de mise au point de circuits integres, support de stockage de programmes contenant un procede de mise au point de circuits integres, systeme de mise au point simultanee d'asic et de circuit logique programmable, et programme et procede de mise au point
US7080333B1 (en) * 2002-10-31 2006-07-18 Altera Corporation Verifying logic synthesizers
JP3974048B2 (ja) * 2003-02-06 2007-09-12 株式会社東芝 設計検証システム、設計検証方法及び設計検証プログラム
US7401302B2 (en) * 2004-04-29 2008-07-15 Taiwan Semiconductor Manufacturing Company Ltd. System on chip development with reconfigurable multi-project wafer technology
JP4365274B2 (ja) * 2004-06-18 2009-11-18 富士通株式会社 集積回路設計システム、方法及びプログラム
US7684968B1 (en) * 2004-12-09 2010-03-23 Xilinx, Inc. Generation of a high-level simulation model of an electronic system by combining an HDL control function translated to a high-level language and a separate high-level data path function
CN100405336C (zh) * 2004-12-25 2008-07-23 鸿富锦精密工业(深圳)有限公司 高速印刷电路板中传输线的布线架构
JP2006190149A (ja) * 2005-01-07 2006-07-20 Matsushita Electric Ind Co Ltd 半導体集積回路の低消費電力設計方法
TWI315610B (en) * 2005-04-29 2009-10-01 Taiwan Semiconductor Mfg Configurable logic and memory block, and programmable pass gate based configurable logic device
US7346862B2 (en) * 2005-08-19 2008-03-18 Synopsys, Inc. Method and apparatus for optimizing a logic network in a digital circuit
US8166427B1 (en) * 2007-03-09 2012-04-24 Altera Corporation Tracing and reporting registers removed during synthesis
US9600613B1 (en) * 2015-02-27 2017-03-21 Xilinx, Inc. Block-level code coverage in simulation of circuit designs
US10671774B2 (en) * 2017-06-12 2020-06-02 Regents Of The University Of Minnesota Application-specific processor generation from general purpose processors
US11048843B1 (en) * 2018-12-12 2021-06-29 Cadence Design Systems, Inc. Dynamic netlist modification of compacted data arrays in an emulation system

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5961944A (ja) 1982-09-30 1984-04-09 Fujitsu Ltd マスタスライス集積回路の製造方法
US4816999A (en) 1987-05-20 1989-03-28 International Business Machines Corporation Method of detecting constants and removing redundant connections in a logic network
JPH0232619A (ja) 1988-07-21 1990-02-02 Hitachi Ltd 不要ゲート削除方式
JP2802140B2 (ja) 1990-04-06 1998-09-24 三菱電機株式会社 論理回路の設計方法
US5347465A (en) 1992-05-12 1994-09-13 International Business Machines Corporation Method of integrated circuit chips design
US5502645A (en) * 1993-11-05 1996-03-26 Nec Usa, Inc. Behavioral synthesis for reconfigurable datapath structures
US5535370A (en) 1993-12-22 1996-07-09 Intel Corporation Method and apparatus for realistic current and power calculation using simulation with realistic test vectors
US5991523A (en) * 1997-03-18 1999-11-23 Xilinx, Inc. Method and system for HDL global signal simulation and verification

Also Published As

Publication number Publication date
KR20000017147A (ko) 2000-03-25
US6237132B1 (en) 2001-05-22

Similar Documents

Publication Publication Date Title
KR100329896B1 (ko) 응용 주문형 집적 회로 설계 방법
US6292931B1 (en) RTL analysis tool
Kurup et al. Logic synthesis using Synopsys®
US5801958A (en) Method and system for creating and validating low level description of electronic design from higher level, behavior-oriented description, including interactive system for hierarchical display of control and dataflow information
US5870308A (en) Method and system for creating and validating low-level description of electronic design
US6728939B2 (en) Method of circuit verification in digital design
US7472361B2 (en) System and method for generating a plurality of models at different levels of abstraction from a single master model
US7730435B2 (en) Automatic test component generation and inclusion into simulation testbench
US7437698B2 (en) Method and program product for protecting information in EDA tool design views
Kranitis et al. Hybrid-SBST methodology for efficient testing of processor cores
WO2007066321A1 (en) Transaction-based power model in circuit designs
US7882483B2 (en) Method for checking constraints equivalence of an integrated circuit design
US7292970B1 (en) Finding unexercised logic for use in code coverage testing
US6845489B1 (en) Database for design of integrated circuit device and method for designing integrated circuit device
US7194715B2 (en) Method and system for performing static timing analysis on digital electronic circuits
Bombieri et al. Incremental ABV for functional validation of TL-to-RTL design refinement
US6725187B1 (en) Latch inference using dataflow analysis
US7979262B1 (en) Method for verifying connectivity of electrical circuit components
US7409650B2 (en) Low power consumption designing method of semiconductor integrated circuit
US7103859B2 (en) System and method for improving testability independent of architecture
US8959467B2 (en) Structural rule analysis with TCL scripts in synthesis or STA tools and integrated circuit design tools
US7117458B1 (en) Identifying specific netlist gates for use in code coverage testing
Lee et al. Impact of high level functional constraints on testability
Safinia et al. Taking advantage of high level functional information to refine timing analysis and timing information
Shaikh Implementation of verification methodologies

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20070302

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee