KR19980086572A - 디지털 컴퓨터 하드웨어 설계와 시뮬레이션을 위한 방법 및 시스템 - Google Patents

디지털 컴퓨터 하드웨어 설계와 시뮬레이션을 위한 방법 및 시스템 Download PDF

Info

Publication number
KR19980086572A
KR19980086572A KR1019980012353A KR19980012353A KR19980086572A KR 19980086572 A KR19980086572 A KR 19980086572A KR 1019980012353 A KR1019980012353 A KR 1019980012353A KR 19980012353 A KR19980012353 A KR 19980012353A KR 19980086572 A KR19980086572 A KR 19980086572A
Authority
KR
South Korea
Prior art keywords
design
computer
data flow
hardware
netlist
Prior art date
Application number
KR1019980012353A
Other languages
English (en)
Other versions
KR100305463B1 (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 KR19980086572A publication Critical patent/KR19980086572A/ko
Application granted granted Critical
Publication of KR100305463B1 publication Critical patent/KR100305463B1/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
    • 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
    • G06F11/26Functional testing
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Quality & Reliability (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

하드웨어 설계 개발 도구가 제공된다. 제1 단계에서, 원하는 하드웨어 설계의 데이타 흐름(30)이 명기되고(10, 40), 함수들로 구조화된다. 그 다음, 저변 하드웨어의 함수적 동작의 디스크립션(description)을 얻기 위해, 필요한 제어 논리(31, 32)가 이들 함수들에 도입된다. 데이타 흐름과 제어 논리간에, 예를 들어, 이들간의 호출(33)을 통해 다양한 접속과 관계가 제공된다.
제안된 방법론적 단계에 따라, 변수들에 의존하는 함수들에 의해 설계가 명기된다(10, 40). 여기서, 함수들은 데이타 흐름과 제어 흐름 정보를 포함한다. 또한, 데이타 흐름과 제어 흐름 정보를 구별하기 위해, 함수적 디스크립션이 구문해석된다(43). 특히, 각각의 엔트리가 데이타 흐름 정보를 포함하는 최소한 하나의 로컬 테이블(45)와 각각의 엔트리가 데이타 흐름 정보와 로컬 테이블(들)로의 참조를 포함하는 글로벌 테이블(46)이 제공된다.
제안된 하드웨어 또는 소프트웨어 개발 도구는 고수준 함수적 하드웨어 디스크립션으로부터 네트리스트(netlist)의 자동 생성을 허용한다. 따라서, 저수준 네트리스트 수준에서의 느린 시뮬레이션은 진부한 것이 되어, 함수적 디스크립션의 비교적 빠른 시뮬레이션이 설계된 하드웨어의 테스팅을 위해 충분하다.

Description

디지털 컴퓨터 하드웨어 설계와 시뮬레이션을 위한 방법 및 시스템
본 발명은 컴퓨터 하드웨어의 설계 개발, 및 전자 회로와 같은 디지털 하드웨어의 전기적 및 논리적 시뮬레이션(simulation)에 관한 것이다. 특히, 본 발명은 디지털 하드웨어의 함수적 디스크립션(functional description)을 완전한 네트리스트(netlist)로 변환하는 것을 허용하는 방법 및 장치를 제공한다.
컴퓨터 하드웨어의 설계 사양을 위한 접근법은 네트리스트 레지스터 전송 수준 (RTL, Register Transfer Level) 디스크립션 또는 함수적 하드웨어 디스크립션에 근거한다. 함수적 디스크립션은 모든 내부 결선 및 함수적 요소를 사용하여 상세한 하드웨어 레이아웃을 나타내는 것은 아니지만, 초기 개발 단계에서 실행 및 검사 또는 검증될 수 있는 하드웨어 사양을 신속히 제공하는데 사용된다. 여기서, 하드웨어에 대한 함수적 특성(property)들은 함수적 특징(feature)들로 변환된 다음 함께 링크된다.
함수적 사양(functional specification)은 'C' 또는 'C++'과 같은 임의의 프로그래밍 언어로 셋업될 수 있지만, 종종 'BEHAVIOUR'과 같은 특별히 수정된 언어들이 특정의 하드웨어 특성을 고려하기 위해 사용된다. 목적하는 컴퓨터 시스템용으로 컴파일된 후에, 함수적 사양은 'UNIX'(벨 레버러토리사에서 개발된 오프레이팅 시스템, 유닉스 시스템 레버러토리사의 등록된 상표)와 같은 오퍼레이팅 시스템을 사용하여 표준 컴퓨터 상에서 하드웨어 시뮬레이션을 위해 사용될 수 있다. 따라서, 함수적 디스크립션 접근법은, 설계 단계에서 가능한한 조기에 하드웨어 에러를 탐지하는 것을 가능하게 해주는 방식으로, 복잡한 하드웨어 구조를 나타내 준다.
상기의 함수적 접근법과는 대조적으로, 어쨌던, 설계에 대한 하드웨어 제품을 얻기 위해서는 네트리스트 디스크립션이 필요하다. 네트리스트는 (IBM 개발 연구소에서 개발된) 'DSL'과 같은 특정의 하드웨어 디스크립션 언어에 의해 기술될 수 있다. DSL은 단지 하나의 데이타 구조, 즉, 도체 뭉치(bundle of conductor)를 이용하는 것이 특징이다. 따라서, 'DSL'은 Input/Output 특징이나 클럭 신호에 대해 단지 애트리뷰트(attribute) 선언만을 요구한다. 레지스터나 어레이와 같은 저장 소자는 블럭으로 간주된다. 이 언어가 사용하는 용어에는 'compare', 'if-then', 및 'substract'와 같은 하드웨어적 복잡성이 낮은 연산자만이 포함되어 있다.
다른 네트리스트 접근법은 'ADA'와 같은 프로그래밍 언어인 'VHDL' 이며, 이것은 특정의 하드웨어 동작에 의해 확장된다. 따라서, 이 언어는 'loop' 문과 같은 프로그래밍 언어에서 공통적인 다수의 데이타 구조와 문장(statement)을 포함한다. 타이밍 및 시그널링을 위한 특정의 문장을 준비해 둠으로써, 'VHDL'은 실제적인 하드웨어 디스크립션 언어가 된다. 'VHDL'의 한 단점은, 필요한 신호 정의로 인해 시뮬레이션이 이벤트-구동형(event-driven)이라는 것이다.
앞서 언급한 디스크립션 언어들은 그 각각의 저변에 흐르는 방법론적인 관점에서 앞서 언급한 함수적 접근법과는 다소 다르다. 함수적 접근법에 기초한 시뮬레이션 절차는 전체 하드웨어를 함수별로 순차 실행한다. 그러나, 각각의 상태 전이에 대해, 모든 함수들이 실행되어야 하는 것은 아니다. 이것은 이들 대부분의 함수들이 서로들간에 배타적이기 때문이다.
이와는 대조적으로, 네트리스트 접근법에서 하드웨어는 병렬로 기술되며, 여기서, 함수적 관계는 명백하지 않게 된다. 따라서, 네트리스트를 시뮬레이트하기 위해, 네트리스트 디스크립션은 분석, 분류되어, 특정의 데이타 구조 내에 설계 모델로서 저장되어야 한다. 그 후에, 시뮬레이터 엔진은 설계 모델을 실행할 수 있다. 그러나, 시뮬레이트된 하드웨어의 함수적 특성은 완전히 소실된다. 따라서, 이 접근법은 다소 시간 소모적이다. 그러나, 하드웨어의 함수적 디스크립션으로부터 올바르고 완전한 네트리스트로의 간단한 또는 자동적인 변환을 가능케하는 어떠한 방법도 현재 존재하지 않는다. 따라서, 모든 설계에 대해, 값비싼 네트리스트 사양은 수동으로 생성 및 검증되어야 한다.
또한, 오늘날의 복잡한 디지털 신호 처리 시스템은 함수적 분석과 시뮬레이션에 있어서 정교한 설계 도구에 더욱 의존하고 있다. 최근의 연구는 주로 이러한 시뮬레이션 도구들의 통합에 관해 이루어지고 있다. 여기서, 데이타 흐름-지향형의 접근법이 대부분의 디지털 신호 처리 시스템의 특성으로 인해 함수적 분석과 시뮬레이션 모두에 적합한 것으로 드러나고 있다. 또한, 제어 흐름을 데이타 흐름-지향형의 시뮬레이션과 합성으로 통합시키는 것에 관한 것이 알려져 있다.
설계 시간을 단축시키고 시뮬레이션 결과의 정확성을 보장하기 위해, 고수준 설계 엔트리와 시뮬레이션용의 다양한 상태-머쉰 개발 도구들이 본 분야에 공지되어 있다. 전형적인 컴퓨터 설계의 분석을 위해, 주요한 설계상의 노력들 중 하나가 유한 상태 머쉰으로서 구현된 하드웨어 시스템의 순차 제어 논리이다.
예를 들어, 아이 트리플 이 컴퓨터 소사이어티 출판사(IEEE Computer Society Press)에 의해 출판된 에이 아지쯔(A. Aziz)등의 상호작용 유한 상태 머쉰의 최소화 : 언어 제한에 대한 구성 요소적 접근 (Minimizing Interacting Finite State Nachines: A Compositionsal Approach to Language Containment)라는 제목의 논문에 거론된 다른 주요 문제점은, 하드웨어 설계의 공식적인 검증 상황에서 발생하는 상호작용하는 유한 상태 머쉰 집합의 구성 요소적 최소화(compositional minimization)이다. 저자들은, 설계된 시스템의 상당 부분의 동작이 검증되고 있는 주어진 특성에 관해 불필요한 것이어서, 시스템은 더 간단한 표현으로 대체될 수 있다고 지적하고 있으며, 또한, 입력-출력에 어느 정도 타당하게 등가적인 상태들을 계산함으로써 이러한 불필요한 부분들이 포착될 있음을 보여주고 있다. 또한, 완전한 등가물을 계산한다는 것은 계산적 낭비이기 때문에, 효율적으로 계산할 수 있는 근사법도 역시 제안하고 있다. 예를 들어, 명시적인 표현에 관해 시스템을 계층적으로 최소화하는 절차들이 기술되어 있다.
따라서, 데이타 흐름 정보를 하드웨어 디스크립션 언어로 번역하는 분야에서, 다양한 접근법들이 공지되어 있다. 미국 로스 알라미토스에 있는 아이 트리플 이 컴퓨터 소사이어티 출판사(IEEE Computer Society Press Los Alamitos, U.S.A)사의 더블유.에이취.쵸 및 에스.와이.쿵(W.H. Chou 및 S.Y. Kung)의 제목 어레이 프로세서들을 위한 레지스터 트랜스퍼 모델링 및 시뮬레이션(Register Transfer modelling and Simulation for Array Processors)인 논문에서, 설계의 데이타 흐름 그래프가 하드웨어 디스크립션 모듈과 결합되는 레지스터 트랜스퍼 언어(register transfer language)로 번역되는 레지스터 트랜스퍼 모델링 기법이 기술되어 있다. 여기서, 이와 같은 시스템의 동작을 시뮬레이트하기 위해 대화형 시뮬레이터가 구현된다.
또한, 미국 로스 알라미토스에 있는 아이 트리플 이 컴퓨터 소사이어티 출판사(IEEE Computer Society Press, Los Alamitis, USA)에서 출판한 에이.디.고든(A.D. Gorden)의 제목 동기 하드웨어-디스크립션의 형식적 정의(The Formal Definition of a Synchronous Hardware-Description)인 논문에서, 회로를 설계하는데 실제로 사용되는 언어와 하드웨어 검증을 위해 사용되는 다른 언어간에 접속을 제공하는 하드웨어 검증 방법이 설명되어 있다. 여기서, 하드웨어 검증을 위해 고차 논리(higher-order logic)가 광범위하게 사용되는 디지털 신호 처리 회로를 명기하기 위해 간단한 데이타 흐름 언어가 사용된다. 특히, 언어 정의를 고차 논리 술어로 매핑함으로써 데이타 흐름 언어의 서브 세트를 형식적으로 정의하기 위해, 동작적 의미론과 예언적 의미론의 조합(a combination of operational and predictive semantics)이 사용되고 있다.
1992년 네델란드 암스테르담 엘세비에 출판사(Elsevier, Amsterdam, Netherlands, in 1992)에서 출판된 에프.로체토와 할브와치(F.Rocheteau와 Halbwachs)의 제목 폴룩스:러스터 기반의 하드웨어 설계된 환경(POLLUX: LUSTRE BASED HARDWARE DESIGNED ENVIRONMENT)인 논문에서, 다른 고수준 하드웨어 설계 환경이 공개되어 있다. 여기서, 설계 디스크립션(design description)은 데이타 흐름 언어로 씌어진 다음, 순차 머쉰 상에서 컴파일되어 실행될 수 있는 대응하는 동기 회로나 시뮬레이션 프로그램을 생성하기 위해 다른 툴에 의해 사용된다.
이러한 접근법 외에, 예를 들어, 미국 로스 알라미토스에 있는 아이 트리플 이 컴퓨터 소사이어티 출판사(IEEE Computer Society Press, Los Alamitos, USA)에서 출판된 에이.제이.반데르 호에븐(A.J. Van der Hoeven)등에 의한 제목 객체-지향형 원리에 기초한 하드웨어 설계된 시스템(A Hardware Designed System Based on Object-Oriented Principles)인 논문으로부터, 하드웨어 디스크립션 언어를 위한 객체 지향형 개념이 이미 공개되어 있다. 대부분의 하드웨어 디스크립션 언어와 그들의 시뮬레이션 환경은 명령적(imperative) 언어 개념이나 함수적 언어 개념에 기초한다. 이 논문에 설명되어 있는 하드웨어 명세와 시뮬레이션 환경은 클래스(class), 오브젝트(object), 인헤리턴스(inheritance), 및 앱스트랙션(abstraction)과 같은 객체 지향형 개념에 기초하고 있다. 저변의 하드웨어 설계 모델은 VLSI 네트워크의 기능과 데이타 흐름을 설명하기 위해 응용적 상태 전이(applicative state transition)를 역시 사용한다.
또 다른 객체 지형형 접근법은 제목이 상태 머쉰 검증 전문가 시스템(State Machine Verification Expert)인 아이비엠 티디비 제 12, 5/91, 페이지 435-436 (IBM TDB No. 12, 5/91, pages 435-436)에 공개되어 있다. 이 전문가 시스템은 상태 머쉰에 대한 모든 가능한 시나리오를 생성하기 위해 고안되었다. 상태 머쉰은 지식-베이스 실체(knowledge-based entity)의 형태로 설명되어 있으며, 상태 전이 규칙은 순방향-연결(forward-chaining) 규칙으로 표시되어 있다. 시스템은 특히 상태 머쉰을 자연스럽게 나타내며, 입력 및 상태의 써지 공간(surge space)을 제거하기 위해 휴리스틱(heuristic) 및 인과관계의(causal) 지식을 사용한다. 따라서, 전문가 시스템이 모든 조합의 입력 신호와 상태 머쉰의 모든 가능한 상태를 합당한 시간만에 효율적으로 테스트하는 것이 가능하다. 설명된 지식 베이스 개념은, 시간이 지남에 따라 머쉰의 동작에 대한 설명을 만들어 내며, 상위 레벨에서만 출력을 생성하기 위해 머쉰 동작의 하위 레벨에서의 세부 사항을 마스킹할 수 있다는 장점을 가진다. 객체 지향형 접근법은 상태 머쉰 내의 실체를 나타내는 유닛들의 계층 조직들로 데이타 구조를 분류해 준다. 전문가 시스템은, 시나리오를 필터 쓰루(filter through) 및 생성하기 위해, 제어 입력들의 모든 가능한 값들을 참조하여 모든 가능한 규칙의 조합을 시도한다.
이와 같은 접근법 외에, 미국 특허 제5,369,594호로부터, 개선된 회로 설계와 방법이 공지되어 있다. 수동과 능동 및 선형과 비선형 비선형 소자를 모두 포함할 수도 있는 시뮬레이션되고자 하는 회로는 서브 회로들로 분할되는데, 여기서, 일부의 서브 회로는 단지 선형 소자를 포함한다. 이러한 기법에 의해, 큰 면적의 수동 소자들을 포함하는 대규모 회로의 전체 시뮬레이션 시간이 상당히 감소된다.
데이타-흐름과 제어 논리 파티션을 기술하기 위해 성장가능한 논리 매크로함수 라이브러리(growable macrofunction library)를 사용하는 칩의 고수준 설계에서 데이타-흐름 파티션(dataflow partition)을 구현하기 위한 다른 설계 방법이 유럽 특허 출원 제91.480.167.5호에 공개되어 있다. 이 설계 방법은 데이타-흐름 제어 논리 파티션을 기술하기 위해 논리 매크로함수 라이브러리를 사용하여 고수준 언어로써 칩의 설계를 얻는 논리 엔트리 단계(logic entry step), 고수준 논리의 동작을 고수준에서 시뮬레이트하기 위해 매크로함수의 논리 동작을 나타내는 워드 모델 데이타(word model data)를 사용하는 고수준 논리 시뮬레이션 단계, 매크로함수들 내의 북(book)들의 물리적 배치와 북들의 논리 모델을 기술하는 워드맵을 사용하여, 고수준 논리로부터 적절한 물리적 데이타를 추출하는 구조 추출 단계(structure extraction step), 북 수준 논리가 고수준 논리와 일치하는지를 확인하는 북 수준의 논리 검증 단계(book level logic verification step), 및 북 수준 논리에 포함된 북의 올바른 전력 수준을 셋업하기 위해 북 수준 논리를 사용하는 전력 할당 단계(power assignment step)를 포함한다.
또한, 1995년 아이엠 기술 공개 보고(TDB) 38권 7번, 페이지 253-254[IBM Technical Disclosure Bulletin (TDB) Volume 38 No. 7, 1995, pages 253-254]에 출판된 제목 대규모 시뮬레이션 모델의 광역적 일시 현상을 분석하기 위한 방법(Method to analyze Global Transient Phenomena Induced by Changes in the State of Very Large Simulation Models)인 논문에서, 중앙 처리 장치(CPU)의 광역적 분석을 위해 이벤트 시뮬레이터(event simulator) 접근법이 기술되어 있다. 여기서 거론되는 특정의 문제는 긴 CPU 실행 시간, 및 전력, 국부적 가열, 전원 전류 변동, 전원 버스 상에서의 전압 이동, 잡음으로 인한 논리적 변동과 잡음으로 인한 아날로그 회로 에러와 같은 일시적 변수들의 분석이다. 이 접근법의 기본적인 개념은 각각의 상태 변화에서 설계가 하는 일을 요약하는 것이다.
기술 독립적인 논리(technology independent logic)를 검증하기 위한 향상된 함수적 시뮬레이터가 아이비엠 티디비 2번 7/91, 페이지 252-253(IBM TDB No. 2, 7/91, pages 252-253)의 제목 하드웨어 싸이클 시뮬레이션 커브리지 측정 도구(Hardware Cycle Simulation Coverage Measurement Tool)에 설명되어 있다. 이 논리의 분석은, 논리 대수 값이 어떻게 전파하는지를 점검하며 특정 시간에 래치와 버스들이 올바른 값을 가지는지를 검증하는 데이타 흐름 분석에 기초하고 있다. 또한, 제어 흐름 분석은 논리 상태 변화를 일으키는 스위치 및 판별 요소들의 시퀀스를 점검하며, 이들이 시뮬레이션 동안에 활성화되었는지의 여부를 검증한다. 특히, 시뮬레이션 단계 동안에 논리 제어 흐름 활성화를 정량화하여 테스트 케이스 커버리지(test case coverage)의 유효화를 허용하는 프로그램이 기술된다.
정적 흐름 분석 논리 설계가 아이비엠 티디비 8번 1/91, 페이지 437-441(IBM TDB No.8 1/91, pages 437-441)에 기술되어 있다. 논리적 합성을 통해, 함수적 수준의 하드웨어 사양을 논리적 게이트-수준의 구현으로 변환하는 것이 수행된다. 논리적 합성 시스템은 모델을 구조적 언어 표현을 위한 기본적인 설계 언어로 변환하는데 사용된다. 이러한 게이트-수준의 표현은 타이밍 분석이 함수상에서 수행되는 것을 허용한다. 칩을 생산하는데 사용되는 하드웨어 설계 싸이클은 고수준의 함수 사양(high level functional specification), 타이밍 요건, 및 데이타-흐름 다이어그램으로 시작한다. 일단, 이들이 완료되면, 기본적인 설계 언어를 사용하여 함수들의 소프트웨어 모델이 생성되며, 하드웨어 설계의 타이밍이 올바른지를 검증하기 위해 다양한 타이밍 분석 프로그램을 통해 실행된다. 이후의 단계에서, 칩의 물리적인 설계, 즉, 배치와 결선이 이루어진다. 마지막으로, 칩이 실제로 제조되고 테스트되어, 논리 설계자에게 되돌아온다.
시뮬레이션되고자 하는 논리가 병렬로 개발되는 몇 개의 함수 아일랜드(functional island)로 분할되는 하드웨어 설계 개발 시스템이 아이비엠 티디비 7번 12/90 페이지 247-251(IBM TDB No. 7, 12/90, pages 247-251)에 하드웨어 시뮬레이션 효율 개선을 위한 다중-클럭 속도 장치(Multi-Clock rate Device for Hardware Simulation Efficiency Improvement)라는 제목에 설명되어 있다. 시뮬레이션은 고립된 아일랜드 상에서 시작하여 향후의 머쉰의 서로 다른 카드들까지 통합하는 함수들에까지 이르는 더 큰 구조로까지 이른다. 모든 아일랜드는 동시에 접속될 준비가 되어 있지 않은데, 이는, 많은 문제점이 이들 아일랜드들간에 발생하기 때문이다. 따라서, 시뮬레이션 프로젝트의 시작시에, 인터페이스를 실제로 이용할 수 있기 이전에 설계자가 장치들의 논리를 시뮬레이트할 수 있도록 허용하기 위해, 서로 다른 인터페이스의 함수들의 서브세트들을 나타내는 시뮬레이션 장치들이 정의된다.
병렬 하드웨어 디스크립션을 논리 시뮬레이션을 위한 직렬 하드웨어 디스크립션으로 효율적으로 변환시키는 향상된 함수적 시뮬레이터가 아이비엠 티디비 11번 4/90, 페이지 354-361(IBM TDB No. 11, 4/90, pages 354-361)에 컴파일된 향상된 함수적 시뮬레이터를 위한 모델 오더링(Model Ordering for Compiled Enhanced Functional Simulator)란 제목에 공개되어 있다. 논리 시뮬레이터에 의해 시뮬레이트될 하드웨어 모델들은 신호 블럭 섹션과 래치 블럭 섹션으로 더 분할된다. 레지스터 트랜스퍼 언어문(register transfer language statement)은, 올바르게 동작할 수 있는 범위 내의 가장 낮은 클럭 섹션에 할당된다.
대규모의 상호결선된 회로 세트의 동적 성능을 시뮬레이트하는 시뮬레이션 프로그램이 아이비엠 티디비 2/73, 페이지 2973-2975(IBM TDB 2/73, pages 2973-2975)에 설명되어 있다. 시뮬레이션 데이타 베이스를 개발하기 위해 시뮬레이션 라이브러리 정보를 사용하는 블럭 내에 설계 디스크립션이 포함된다. 블럭은 시뮬레이트될 회로 논리를 기술하는 네트리스트와 등가 회로를 개발하기 위해, 공지된 소신호(small signal) 회로 분석 기법을 사용한다. 블럭의 출력은, 시뮬레이션 알고리즘에 의한 효율적 처리를 위해 포멧팅된 시뮬레이션 데이타를 제공한다. 시뮬레이션 알고리즘은 타임 스텝(time step) 동안에 개개의 논리 회로를 독립적으로 다루는데, 이는 타임 스텝이 회로 전이 시간에 비해 작기 때문이다. 임의의 한 타임 스텝 동안에, 상태 변수가 변할 수 있는 회로들만이 시뮬레이트된다. 명확히 정적인 회로들은 시뮬레이트되지 않는다. 개개의 논리 회로 모두에 대한 회로 응답의 계산은, 하나의 타임 스텝 동안에 회로별로 직렬로 수행된다. 모든 회로에 대한 입력은 바로 이 계산된 결과와 이 타임 스텝 동안의 임의의 외부 신호 변화를 이용한다. 모든 회로들이 분석된 후에, 이 결과들은 이벤트 파일(event file) 내에 배치되고, 타임이 인크리멘트된다.
본 발명의 목적은 디지털 하드웨어 설계의 함수 수준의 디스크립션을 올바르고 완전한 네트리스트로 변환하는 것을 허용하는 방법과 시스템을 제공하는 것이다. 특히, 이 방법은 자동으로 수행된다.
다른 목적은 저수준인 네트리스트 수준에서 설계의 필요한 시뮬레이션을 피할 수 있는 하드웨어 설계 방법 및 시스템을 제공하는 것이다.
또 다른 목적은 최소의 시간으로 하드웨어를 설계를 계산하고, 매우 복잡한 설계의 시뮬레이션을 위한 하드웨어 시뮬레이터를 제공하는 것이다.
본 발명에 따르면, 네트리스트를 생성하기 위한 첫 번째 단계로서, 나중에 보다 상세히 기술될 일정한 규칙에 기초하여 로컬 네트리스트가 제공된다. 또한, 변수들의 글로벌 테이블이 병렬로 셋업된다. 두 번째 단계에서, 각각의 변수에 대하여 함수적 하드웨어 디스크립션이 글로벌 테이블 내에 포함된 대응하는 정보에 따라 변환되고, 설계의 모든 함수적 요소들이 그들의 각각의 접속부를 통해 상호접속된다. 마지막 단계에서, 필요한 입력 및 출력 정보가 네트리스트에 추가된다. 강조하면, 함수적 사양에서의 국부적 변화 역시 네트리스트에서의 국부적 변화로서 표시된다.
본 발명은, 예를 들어, 집적 CMOS 칩 기술 분야에서 사용되는 보다 복잡한 설계의 빠른 시뮬레이션을 허용한다. 물론, 본 발명은 모든 종류의 기술 분야에서 특별한 목적의 칩이나 제어 칩과 같은 덜 복잡한 하드웨어의 설계에도 이용될 수 있다. 제어 논리와 데이타 흐름 논리에 기초한 하드웨어 설계의 임의의 추상적 디스크립션은 특별한 노력없이 자동으로 수행될 수 있는 하드웨어의 네트리스트 기술로 변환될 수 있다. 따라서, 네트리스트 사양의 수동적 생성과 이 사양의 느린 속도의 시뮬레이션이 더 이상 요구되지 않는다. 이 외에도, 시뮬레이션을 가속하기 위한 어떠한 특별한 하드웨어도 필요하지 않다.
특히, 저변 설계의 국부적 변화는 로컬 네트리스트에서의 국부적 변화에 대응한다. 그러나, 글로벌 네트리스트 자체는 변하지 않는데, 이는, 모든 글로벌 엔트리들이 로컬 네트리스트 내의 고정된 참조 지점에 의해 고정(anchored)되기 때문이다.
또한, 설계를 광범위하게 기술하면서도 설계의 모든 가능한 논리 상태의 일부만을 기술하는 것도 역시 필요하다. 이 외에도, 전체 칩을 시뮬레이트하는데 필요한 시뮬레이션 시간은 전체 칩 상의 동시 발생 공정들에만 의존하며, 함수들의 전체 개수에 의존하는 것은 아니다.
도 1은 종래 기술의 네트리스트 접근법과 본 발명을 비교하기 위한 블럭 챠트.
도 2는 종래 기술에 따른 공통된 응용 프로그램 구조를 도시하는 블럭도.
도 3은 본 발명의 양호한 실시예에 따른 각각의 정보 흐름과 네트리스트 변환 메카니즘을 기술하는 플로우 챠트.
도 4는 본 발명에 따른 하드웨어 설계의 함수적 디스크립션을 위해 사용되는 데이타 흐름 및 제어 논리 정보에 대한 양호한 입력 데이타 포멧.
도 5a는 본 발명에 따른 논리적 네트리스트의 전형적인 엔트리들과 글로벌 테이블에 대한 참조를 도시하는 도면.
도 5b는 본 발명에 따른 글로벌 테이블의 양호한 엔트리 포멧.
도 5c는 종래 기술에 따른 예시적 글로벌 네트리스트 문장.
도 6은 함수적 하드웨어 디스크립션의 순차적 문장을 본 발명에 따른 네트리스트 문장으로 변환하는 도면.
도 7은 도 5a-c를 참조하여, 멀티플렉서 수단에 의한 함수적 디스크립션의 변수들의 표기를 도시하는 도면.
도 8은 본 발명의 양호한 실시예에 따라 설계된 하드웨어의 전력 소비의 감소를 도시하는 도면.
* 도면의 주요부분에 대한 부호의 설명
30 : 데이타 흐름
31, 32 : 제어 논리
33 : 호출
도 1을 참조하여, 종래 기술에 따른 하드웨어 설계의 시뮬레이션과 고수준 함수적 하드웨어 디스크립션으로부터의 하드웨어 네트리스트의 생성이 본 발명의 각각의 저변 개념들과 비교되어 있다. 시뮬레이션과 네트리스트 생성 양쪽 모두의 시작점은 하드웨어 설계의 고수준 함수 디스크립션(10)이다. 여기서, 래치 또는 레지스터와 같은 하드웨어 요소, 및 싸이클 타임과 같은 함수적 특징들은 이후에 설명되는 기법을 사용하여 명시된다.
종래 기술에 따르면, 함수적 디스크립션(10)은 설계된 하드웨어의 고수준 시뮬레이션(11)을 위해 사용된다. 그러나, 시뮬레이션 결과는 설계된 하드웨어의 저변 기능과 성능의 이해를 위해서만 사용될 수 있다. 시뮬레이션은, 예를 들어, 사용된 마이크로 코드(μ-코드)의 검증, 설계된 하드웨어의 성능 측정, 또는 설계된 응용 프로그램의 검증에 관한 것이다.
따라서, 종래 기술에서는 시뮬레이션 단계외에, 하드웨어 개발을 위해서는 예를 들어, 네트리스트를 생성(13)하는 단계(12)가 더 필요하다. 두 번째 단계(12)는 첫 번째 단계(11)과는 독립되어 있으므로, 시뮬레이션 결과는 네트리스트 발생을 위해 직접 이용될 수 없고, 단지 하드웨어 설계자를 위한 배경 정보로서만 사용될 수 있다. 특히, 네트리스트 자체는 수동적인 최적화 단계에 의해 발생되어야 한다.
공지된 접근법들과 비교하여, 본 발명에 따른 네트리스트 변환 메카니즘은 자동으로, 즉, 사용자와의 어떠한 대화없이, 고수준 함수적 디스크립션(10)으로부터 네트리스트를 생성하는 것을 허용한다. 따라서, 저수준 네트리스트 단계 상에서의 느린 시뮬레이션은 진부한 것이며, 함수적 디스크립션의 비교적 빠른 시뮬레이션(14)이 설계된 하드웨어 테스팅에 충분하다.
동작를 설명하기 위해, 도 2에 도시된 블럭도에 메인 프로그램(20)과 메인 프로그램(20)에 의해 프로그램 실행 동안에 각각 호출되는 2개의 예시적 서브루틴(21, 22)를 포함하는 공통 프로그램 구조가 도시되어 있다. 서브루틴(21, 22) 자체는 다른 서브루틴(23, 24)등을 호출한다. 분기 명령어(25)는 메인 프로그램(20)의 실행 중에 현재 상태에 기초하여 서브루틴(21,22) 중 어느 것이 호출되어야 하는지를 판별한다. 서브루틴(21)의 호출과 병행하여, 변수(x, y)의 고정된 값이 메인 프로그램(20)으로부터 서브루틴(21)로 전송된다. 따라서, 제1 서브루틴(21) 내에 포함된 또 하나의 분기 명령어(26)은 제2의 어떤 조건이 만족되는 경우에 다른 서브루틴(23)을 호출한다. 따라서, 직렬로 된 서브루틴들 중 마지막 서브루틴이 호출된다.
설명된 프로그램에 따라, 서브루틴(22)에서 시작하는 제2 서브루틴 경로를 따라, 변수(X, Y)에 대한 값의 제2 세트가 전송된다. 그에 따른 특별한 결과로, 제3 서브루틴(29) 내에서, 조건 'A1'은 결코 수행되지 않는다. 즉, 이후에 수행되는 시뮬레이션 절차에서의 점핑률은 '0'이 될 것이다. 따라서, 이 상태의 시뮬레이션은 불필요한 것이며, 단지 시뮬레이션 시간만 소비하고 시뮬레이션 결과 그 자체에 대해서는 어떠한 긍정적인 영향도 주지 않는다.
도 3의 블럭도는 하드웨어 설계의 함수적 디스크립션의 데이타 흐름 및 제어 논리 정보에 대한 양호한 입력 포멧 구조를 도시한다. 제1 단계에서, 양호한 하드웨어 설계의 데이타 흐름(30)은 함수들로 명시되고 구조화된다. 그 다음, 저변 하드웨어의 함수적 동작의 디스크립션을 얻기 위해 필요한 제어 논리(31, 32)가 이들 함수들에 도입된다. 여기서, 강조하면, 데이타 흐름과 제어 논리간에는, 예를 들어, 이들간의 호출(33)을 통한 다양한 내부 결선과 관계가 있다. 제어 논리(31, 32)는 몇 개의 함수들로 배포될 수 있다. 또한, 예를 들어, 주요한 결정들만을 수행하는 메인 루틴과 같은 일부 함수들은 데이타 흐름을 전혀 포함하지 않는다.
제안된 개념의 저변에 놓인 개념은 데이타 흐름과 제어 흐름을 구별하는 하드웨어 디스크립션이다. 데이타 흐름은 예를 들어 변수에 값을 할당하는 것이고, 제어 흐름은, 예를 들어, 조건 프로그램문임을 주목해야 한다.
이후에, 본 발명의 양호한 실시예가 도 4에 도시된 개략적 흐름도를 사용하여 설명된다. 이 도면은 고수준 함수적 하드웨어 디스크립션(40)을 저수준 네트리스트(디스크립션)(41)로 전송하기 위한 변환하기 위한 장치를 도시한다. 여기서, 변환은 사용자와의 어떠한 상호작용으로부터 독립되어 자동으로 수행된다. 이 장치는 하드웨어로서 구현되거나, 디지털 컴퓨터 내에서 실행하기 위한 데이타 캐리어 상에 제공되는 컴퓨터 프로그램으로서 구현될 수 있다.
따라서, 제1 단계에서, 고수준 함수적 디스크립션(40)의 각각의 문장(42), 예를 들어, 변수 x, y에 의존하는 함수 F(x, y)는 제어 흐름문으로부터 데이타 흐름을 구별(44)하기 위해 구문 해석된다(43). 이 구문 해석(43)의 결과에 따라, 필요한 문장이, 예를 들어, 조건구나 입력 조건을 포함하는 로컬 네트리스트(45)로 전송되거나 할당 및 함수 호출을 포함하는 글로벌 테이블(46)으로 전송된다.
함수의 행동에 기초한 하드웨어 사양에서, 데이타 흐름은 미리 결정되지만, 이 데이타 흐름을 구현하기 위한 제어 논리는 설계 전반에 분포되며, 전체적으로 감시될 수 없음을 주목해야 한다.
도 4에 도시된 로컬 네트리스트(45)는 모든 디코더와 데이타 의존형 스위치들을 포함한 설계의 모든 조합 논리들을 포함하며, 또한, 글로벌 네트리스트의 생성을 돕기 위해 데이타 흐름 입력을 위한 표준화된 포멧을 제공한다. 이러한 종류들의 문장을 위한 예가 도 5a에 있다. 표준화된 포멧은 글로벌 네트리스트와 로컬 네트리스트를 링크시키기 위한 고리의 역할을 한다.
또한, 도 4는 본 발명의 양호한 실시예에 따른 예시적 글로벌 테이블(47)을 도시한다. 각각의 변수에 대한 글로벌 테이블의 엔트리들에는 각각의 로컬 네트리스트에 대한 참조와 더불어 각각의 함수가 있다. 마찬가지로, 저변의 함수적 하드웨어 디스크립션에 정의되어 있는 함수 자체에 대해 유사한 엔트리들이 제공되어 있다. 각각의 변수에 대해, 특별한 네트리스트 엔트리가 발생된다. 네트리스트 엔트리는 변수의 입력에 있는 멀티플렉서를 나타낸다. 이것은 전형적으로 'AND_OR' 회로를 나타낸다(도 7을 참조한다). 'AND'부는 로컬 네트리스트에서 표준화된 포멧에 의해 다루어지나, 'OR'부는 글로벌 네트리스트를 위해 발생된다(도 5C). 이 글로벌 네트리스트를 생성하기 위해, 이 테이블은 본 발명에 따라, 글로벌 테이블이 제공된다. 이 테이블은 엔트리들을 포함하는데, 각각의 엔트리는 다음과 같은 정보로 구성된다(예를 들어 도 5b를 참조).
a) 엔트리를 발생시킬 때 구문 해석된 함수, 및 이 함수 내의 상태를 참조하는 조건 번호(이것은 나중에 로컬 네트리스트를 참조하는데 필요하다).
b) 동일한 변수를 참조하는 모든 엔트리들을 결합할 기회를 가질 수 있도록 저장되는 변수의 명칭.
c) 엔트리들을 구별하기 위한 카운터 - 엔트리들은 카운터가 없으면 동일하게 보임-
따라서, 설명을 위해, 도 5a-c는, 명칭 정의, 글로벌 테이블 내의 변수 X를 위한 예시적 엔트리, 및 변수 X에 대한 대응하는 네트리스트 엔트리에 대해 사용되는 서로 다른 데이타 형식을 도시하고 있다.
도 6은 글로벌 테이블(61)을 사용하여 문장들을 재배열함으로써 함수적 하드웨어 디스크립션(60)을 네트리스트 문장들로 변환하는 것을 도시하고 있다. 글로벌 테이블(61)은 설계 전체에 걸쳐 하나의 변수에 대한 정보를 수집하기 위한 매개체의 역할을 한다. 그 다음, 수집된 정보는 변수에 대한 완전한 네트리스트 문장(62)를 생성하는데 사용될 수 있다.
강조하면, 함수적 디스크립션은 함수의 디스크립션 내의 어떠한 문장에서도 파악될 수 없는 하나 이상의 멀티플렉서를 묵시적으로 포함한다. 이것이 3개의 논리 입력(71, 72, 73)과 하나의 논리 출력(74)를 갖는 멀티플렉서(70)을 보여주고 있는 도 7에 도시되어 있다. 대응하는 입력들은 로컬 네트리스트(테이블)로부터 회수되어 일단 'AND'된다. 그 다음, 각각의 결과는 'OR'되고, 대응하는 결과는 글로벌 네트리스트로 포워딩(forward)된다.
도 8에 도시된 함수적 상황은 모든 함수들이 결코 동시에 계산되지 않음을 보여준다. 어떤 변수들은 'don't care'이고, 따라서, 보류된 계산에 대해서는 사용되지 않는다. 본 발명에 따르면, 이들 변수들은 홀드 레지스터(hold register)로 전송되어(예를 들어, 클럭 게이팅), 전력을 소모하지 않게 된다. 왜냐하면, 입력 변수들이 변화하지 않기 때문이다. 즉, 본 발명은 최소한의 전력 소산을 갖는 하드웨어 설계를 가능하게 한다.
이후에, 본 발명에 따른 변환 알고리즘의 함수적 특징이, 예시적 의사 코드 샘플을 통해 도시될 것이다. 여기서, 설계는 (함수나 서브루틴과 등가인) '블럭'이라 불리는 파티션을 사용하여 기술된다. 각각의 블럭은 블럭을 호출하거나 다른 블럭에 의해 호출됨으로써 다른 블럭들에 접속된다. 이후의 시퀀스들은 행동기술적 언어를 네트리스트로 변환하기 위한 수단을 설명하지는 않고, 단지 기본적인 개념만 설명함에 주목해야 한다. 또한, 이후에는 논리 대수 표현들을 변환하는 방법이 설명되지는 않는다. 왜냐하면, 이들 표현들은, 예를 들어, 'AND' 및 'OR'는 모든 컴퓨터 언어에서 동일한 구조이기 때문에, 번역하기 쉽기 때문이다.
Code for Block_A Line Number Active state
L0
if Bool_Expr_1 L1 C0
Var1 = Bool_Expr_2 L2 C1
else L3 C0
Var1 = Bool_Expr_3 L4 C3
call Block_B L5 C0
if Bool_Expr_4 L6 C0
call Block_C L7 C6
Var2 = Bool_Expr_5 L8 C6
네트리스트로의 번역을 위해, 우선, 각각의 블럭은 대응하는 입력 상태(M_블럭명)를 가진다고 가정한다. 이 상태는 추가 정보없이 전역 과정에 의해 발생된다. 이해를 더 쉽게하기 위해, 이 예에 대한 명칭들은 일정한 규칙, 즉, x_y_z 방법에 따라 간단하게 합성된다.
x = 항상 키워드나 키문자 (표현식에 대해서는 E
상태(조건)에 대해서는 C
데이타 입력에 대해서는 D
mux된 데이타에 대해서는 M)
y = E 및 C 명칭에 대해서는 라인번호
= D 명칭에 대해서는 글로벌 테이블 내의 상대적 위치
= M 명칭에 대해서는 생략됨
z = E 및 C 명칭에 대해서는 블럭명
= D 및 M 명칭에 대해서는 변수나 블럭명
예의 번역(라인별)
초기화 : (블럭 번역의 시작에 앞서) 네트리스트에 대해
C_L0_Block_A = 1을 생성
라인 1 : 논리 대수적 표현을 네트리스트로 번역(세부사항은 도시되지 않음)
E_L1_Block_A = Bool_Expr_1
'If' 문장에 대해 네트리스트에서의 상태를 생성. 스택으로부터
현재 액티브인 상태를 이용(C_L0_Block_A)
C_L1_Block_A = C_L0_Block_A and E_L1_Block_A
새로운 액티브 상태 = C_L1_Block_A
라인 2 : 논리 대수 표현
E_L2_Block_A = Bool_Expr_2
위치 P(X)에 있는 변수 VAR1에 대한 글로벌 테이블을 다음처럼 갱신
VAR1 P(X) : Blk = Block_A acrstate = C1
VAR1에 대한 데이타 입력을 생성
D_P(X)_VAR1 = E_L2_Block_A
라인 3 : 'else'는 현재의 액티브 조건을 C_L0_Block_A로 되돌려 놓으며,
반전된 것만 제외하고는 'if'와 동일한 표현을 사용.
E_L3_Block_A = not (Bool_Expr_2)
C_L3_Block_A = C_L0_Block_A and E_L3_Block_A
라인 4 : 라인 2처럼
테이블에 대한 입력 --
VAR1 P(X+1) : Blk = Block_A actState = C3
로컬 네트리스트에 대한 입력 --
E_L4_Block_A = Bool_Expr_3
D_P(X+1)_VAR1 = E_L4_Block_A
라인 5 : 함수 호출은 글로벌 테이블을 갱신만 하며, 어떠한 네트리스트 문장
도 생성하지 않는다. 'if then else' 구의 끝 이후의 액티브 상태
는 이제 C_L0_Block_A이다.
테이블 --
Block_B P(Y) : Blk Block_A actState = C0
라인 6 : 라인 1처럼
네트리스트 --
E_L6_Block_A = Bool_Expr_4
C_L6_Block_A = C_L0_Block_A and E_L6_Block_A
라인 7 : 라인 5처럼
입력 테이블 --
Block_C P(Z) : Blk = Block_A actState = C6
라인 8 : 라인 2처럼
테이블 --
VAR2 P(V) : Blk = Block_A actState = C6
네트리스트 --
E_L8_Block_A = Bool_Expr_5
D_P(V)_VAR2 = E_L8_Block_A =
대응하는 설계의 모든 블럭에 대한 알고리즘을 사용한 후에, 복수의 네트리스트 문장들이 생성되었다. 마지막 문장들은 글로벌 테이블로부터 생성된다. 상기예에 대한 Block_A의 변환에 의해 발생된 글로벌 테이블의 서브셋트은 다음과 같다.
Element el.position Block State
VAR1 X Block_A C1
X+1 Block_A C3
VAR2 V Block_A C6
BLOCK_B Y Block_A C0
Block_C Z Block_A C6
이 예에서 Block_A에 의해 사용된 각각의 요소에 대해, 네트리스트가 발생된다. 테이블 내의 각각의 엔트리는 하나의 요소에 대해 하나의 신호를 제공한다. 모든 신호들은 'OR'문에 의해 링크된다(도 7을 참조). 이것은 레지스터와 네트(nets)들의 전면에 있는 멀티플렉서를 나타낸다.
MVAR_1 = ( D_P(X)_VAR1 and M_Block_A and C_L1_Block_A )
or ( D_P(X+1)_VAR1 and M_Block_A and C_L3_Block_A )
MVAR2 = ( D_P(V)_VAR2 and M_Block_A and C_L6_Block_A )
M_Block_B = ( M_Block_A and C_L0_Block_A )
M_Block_C = ( M_Block_A and C_L6_Block_A )
마지막 3개의 방정식은 이들이 단지 하나의 입력을 가지기 때문에 어떠한 'no'도 포함하지 않는다.
디지털 하드웨어 설계의 함수 수준의 디스크립션을 올바르고 완전한 네트리스트로 자동으로 변환하는 하는 것을 허용하며, 저수준인 네트리스트 수준에서 설계의 필요한 시뮬레이션을 피할 수 있는 방법과 시스템이 제공되며, 최소의 시간으로 하드웨어를 설계를 계산하고, 매우 복잡한 설계의 시뮬레이션을 위한 하드웨어 시뮬레이터가 제공된다.

Claims (13)

  1. 디지털 하드웨어의 설계를 함수적으로 기술하는 방법에 있어서, 변수에 의존하는 함수들에 의해 상기 설계를 명기하는 단계(10, 40) - 여기서, 상기 함수들은 데이타 흐름 및 제어 흐름 정보를 포함함 -, 데이타 흐름과 제어 흐름 정보를 구분하기 위해 상기 함수적 디스크립션(functional description)을 구문 해석하는 단계(43), 최소한 하나의 로컬 테이블(local table)을 제공하는 단계(45) - 상기 로컬 테이블의 각각의 엔트리는 상기 제어 흐름 정보를 포함함- 및 글로벌 테이블(global table)을 제공하는 단계(46) - 상기 글로벌 테이블의 각각의 엔트리는 데이타 흐름 정보와 상기 로컬 테이블(들)로의 참조를 포함함-을 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서, 상기 설계를 명기하는 단계는, 제어 흐름 오브젝트(31, 32)와 데이타 흐름 오브젝트(30)을 명기하는 단계 및 상기 제어 흐름 오브젝트로부터 상기 데이타 흐름 오브젝트로의 통신을 제공하는 단계를 포함하는 것을 특징으로 하는 방법.
  3. 제1항 또는 2항에 있어서, 상기 로컬 네트리스트를 발생시키는 단계는 일정한 규칙에 근거하는 것을 특징으로 하는 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 글로벌 테이블의 엔트리들은 각각의 변수에 대해 로컬 네트리스트(45)로의 각각의 참조를 갖는 함수들인 것을 특징으로 하는 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 하드웨어 설계를 명기하는 단계는, 하드웨어 설계의 데이타 흐름 정보(30)를 명기하고 이를 함수들로 구조화하는 단계 및 이들 함수들을 필요한 제어 논리(31, 32) 내에 임베딩(embedding)하는 단계를 포함하는 것을 특징으로 하는 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서, 함수가 한 번 이상 호출되는 경우에 함수를 단지 한번만 실행하는 것을 특징으로 하는 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서, 설계의 도달될 수 없는 상태들은 상기 함수적 디스크립션 내에 명기되지 않는 것을 특징으로 하는 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서, 관련없는 변수들을 홀드 레지스터(hold register)로 보내는 것을 특징으로 하는 방법.
  9. 디지털 하드웨어 설계의 함수적 디스크립션을 네트리스트로 변환하기 위한 방법에 있어서, 제1항 내지 제8항 중 어느 한 항에 따라 설계를 함수적으로 기술하며, 로컬 네트리스트(45)와 글로벌 테이블(46)의 내용으로부터 네트리스트(41)을 생성하는 단계 - 상기 네트리스트의 각각의 엔트리는 상기 글로벌 테이블(46)에 포함된 변수에 대응함 -를 포함하는 것을 특징으로 하는 방법.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서, 상기 설계의 변동 사항만 계산하는 것을 특징으로 하는 방법.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서, 함수적 사양에서의 국부적 변동들을 네트리스트에서의 각각의 국부적 변동들로 변환하는 것을 특징으로 하는 방법.
  12. 디지털 하드웨어의 설계를 함수적으로 함수적으로 기술하기 위한, 컴퓨터가 이용할 수 있는 매체 상에 저장된 컴퓨터 프로그램 제품에 있어서, 컴퓨터가 변수들에 의존하는 함수들에 의해 상기 설계를 명기하도록 하기 위한 컴퓨터 판독가능한 프로그램 수단(10, 40) - 상기 함수들은 데이타 흐름과 제어 흐름 정보를 포함함-, 상기 데이타 흐름 정보와 제어 흐름 정보를 구별하기 위해, 상기 컴퓨터가 상기 함수적 디스크립션을 구문 해석하도록 하기 위한 컴퓨터 판독가능한 프로그램 수단(43), 상기 컴퓨터가 최소한 하나의 로컬 테이블을 생성하도록 하기 위한 컴퓨터 판독가능한 프로그램 수단(45) - 상기 로컬 테이블의 각각의 엔트리는 제어 흐름 정보를 포함함- 및 상기 컴퓨터가 글로벌 테이블을 생성하도록 하기 위한 컴퓨터 판독가능한 프로그램 수단(45) - 상기 글로벌 테이블의 각각의 엔트리는 데이타 흐름 정보와 로컬 테이블(들)로의 참조를 포함함-를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  13. 디지털 하드웨어 설계의 함수적 디스크립션을 네트리스트로 변환하기 위한, 컴퓨터가 이용할 수 있는 매체 상에 저장된 컴퓨터 프로그램 제품에 있어서, 컴퓨터가 변수들에 의존하는 함수들에 의해 상기 설계를 명기하도록 하기 위한 컴퓨터 판독가능한 프로그램 수단(10, 40) - 상기 함수들은 데이타 흐름과 제어 흐름 정보를 포함함-, 상기 데이타 흐름과 제어 흐름 정보를 구별하기 위해 컴퓨터가 상기 함수적 디스크립션을 구문해석하도록 하기 위한 컴퓨터 판독가능한 프로그램 수단(43), 컴퓨터가 최소한 하나의 로컬 테이블을 생성하도록 하기 위한 컴퓨터 판독가능한 프로그램 수단(45) - 상기 로컬 테이블의 각각의 엔트리는 제어 흐름 정보를 포함함-, 컴퓨터가 글로벌 테이블을 생성하도록 하기 위한 컴퓨터 판독가능한 프로그램 매체(46) - 상기 글보벌 테이블의 각각의 엔트리는 데이타 흐름 정보와 상기 로컬 테이블(들)로의 참조를 포함함- 및 컴퓨터가 상기 로컬 네트리스트와 상기 글로벌 테이블의 내용들로부터 네트리스트를 생성하도록 하기 위한 컴퓨터 판독가능한 프로그램 수단(41) - 상기 네트리스트의 각각의 엔트리는 상기 글로벌 테이블에 포함된 변수에 대응함-을 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
KR1019980012353A 1997-05-14 1998-04-08 디지털컴퓨터하드웨어설계와시뮬레이션을위한방법및시스템 KR100305463B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP97107844.9 1997-05-14
EP97107844 1997-05-14

Publications (2)

Publication Number Publication Date
KR19980086572A true KR19980086572A (ko) 1998-12-05
KR100305463B1 KR100305463B1 (ko) 2001-10-19

Family

ID=8226793

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980012353A KR100305463B1 (ko) 1997-05-14 1998-04-08 디지털컴퓨터하드웨어설계와시뮬레이션을위한방법및시스템

Country Status (3)

Country Link
US (1) US6192504B1 (ko)
KR (1) KR100305463B1 (ko)
DE (1) DE19815534A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030025031A (ko) * 2001-09-19 2003-03-28 한국전자통신연구원 1급 메소드를 이용한 소프트웨어 커넥터 구현 방법
KR20200061280A (ko) * 2018-11-23 2020-06-02 연세대학교 산학협력단 네트워크 스위치 병렬화를 위한 데이터 의존성 기반의 데이터 평면 정적 분석 방법 및 이를 이용한 병렬화 장치

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6145117A (en) * 1998-01-30 2000-11-07 Tera Systems Incorporated Creating optimized physical implementations from high-level descriptions of electronic design using placement based information
JP4085478B2 (ja) * 1998-07-28 2008-05-14 ソニー株式会社 記憶媒体及び電子機器システム
US6493841B1 (en) 1999-03-31 2002-12-10 Synopsys, Inc. Method and apparatus for determining expected values during circuit design verification
US6513144B1 (en) * 1999-04-22 2003-01-28 Synopsys, Inc. Method and apparatus for random stimulus generation
US6499127B1 (en) * 1999-04-22 2002-12-24 Synopsys, Inc. Method and apparatus for random stimulus generation
US6449745B1 (en) * 1999-04-22 2002-09-10 Synopsys, Inc. Method and apparatus for random stimulus generation
US6553531B1 (en) * 1999-04-22 2003-04-22 Synopsys, Inc. Method and apparatus for random stimulus generation
US6427223B1 (en) 1999-04-30 2002-07-30 Synopsys, Inc. Method and apparatus for adaptive verification of circuit designs
US6438735B1 (en) 1999-05-17 2002-08-20 Synplicity, Inc. Methods and apparatuses for designing integrated circuits
US6519754B1 (en) * 1999-05-17 2003-02-11 Synplicity, Inc. Methods and apparatuses for designing integrated circuits
US6523161B1 (en) * 2000-10-03 2003-02-18 Monterey Design Systems, Inc. Method to optimize net lists using simultaneous placement and logic optimization
JP2002123563A (ja) * 2000-10-13 2002-04-26 Nec Corp コンパイル方法および合成装置ならびに記録媒体
US6728945B1 (en) * 2001-02-26 2004-04-27 Cadence Design Systems, Inc. Behavioral level observability analysis and its applications
US6530073B2 (en) * 2001-04-30 2003-03-04 Lsi Logic Corporation RTL annotation tool for layout induced netlist changes
JP2003030269A (ja) * 2001-05-16 2003-01-31 Internatl Business Mach Corp <Ibm> メタモデルを用いた単一マイクロプロセッサ上の並列シミュレーションのための方法
EP1402401A4 (en) * 2001-06-15 2007-10-03 Cadence Design Systems Inc INCREASING DATA CIRCUIT MERGING CAPACITY AND REDUCING DATA CIRCUIT WIDTHS BY REBALANCING DATA CIRCULATION TOPOLOGY
AU2003271116A1 (en) * 2002-10-15 2004-05-04 Renesas Technology Corp. Compiler and logic circuit design method
US7222317B1 (en) * 2004-04-09 2007-05-22 Calypto Designs Systems Circuit comparison by information loss matching
US7774189B2 (en) * 2006-12-01 2010-08-10 International Business Machines Corporation System and method for simulating data flow using dataflow computing system
EP2186028A2 (en) * 2007-08-07 2010-05-19 Nxp B.V. A device for and a method of modelling a physical structure
US7941460B2 (en) * 2007-09-05 2011-05-10 International Business Machines Corporation Compilation model for processing hierarchical data in stream systems
US7860863B2 (en) * 2007-09-05 2010-12-28 International Business Machines Corporation Optimization model for processing hierarchical data in stream systems
US8161380B2 (en) * 2008-06-26 2012-04-17 International Business Machines Corporation Pipeline optimization based on polymorphic schema knowledge

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5555201A (en) * 1990-04-06 1996-09-10 Lsi Logic Corporation 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
US5490082A (en) * 1990-11-07 1996-02-06 Vlsi Technology, Inc. Method of graphically designing circuits
US5764532A (en) * 1995-07-05 1998-06-09 International Business Machines Corporation Automated method and system for designing an optimized integrated circuit
US5774370A (en) * 1995-09-18 1998-06-30 Vlsi Technology, Inc. Method of extracting implicit sequential behavior from hardware description languages

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030025031A (ko) * 2001-09-19 2003-03-28 한국전자통신연구원 1급 메소드를 이용한 소프트웨어 커넥터 구현 방법
KR20200061280A (ko) * 2018-11-23 2020-06-02 연세대학교 산학협력단 네트워크 스위치 병렬화를 위한 데이터 의존성 기반의 데이터 평면 정적 분석 방법 및 이를 이용한 병렬화 장치

Also Published As

Publication number Publication date
KR100305463B1 (ko) 2001-10-19
US6192504B1 (en) 2001-02-20
DE19815534A1 (de) 1999-01-21

Similar Documents

Publication Publication Date Title
KR100305463B1 (ko) 디지털컴퓨터하드웨어설계와시뮬레이션을위한방법및시스템
US5493508A (en) Specification and design of complex digital systems
US5880971A (en) Methodology for deriving executable low-level structural descriptions and valid physical implementations of circuits and systems from semantic specifications and descriptions thereof
US6292931B1 (en) RTL analysis tool
US6378123B1 (en) Method of handling macro components in circuit design synthesis
US5572437A (en) Method and system for creating and verifying structural logic model of electronic design from behavioral description, including generation of logic and timing models
US6421818B1 (en) Efficient top-down characterization method
US6263483B1 (en) Method of accessing the generic netlist created by synopsys design compilier
US6205572B1 (en) Buffering tree analysis in mapped design
US6289498B1 (en) VDHL/Verilog expertise and gate synthesis automation system
US6295636B1 (en) RTL analysis for improved logic synthesis
US5598344A (en) Method and system for creating, validating, and scaling structural description of electronic device
US6173435B1 (en) Internal clock handling in synthesis script
Bombieri et al. HIFSuite: Tools for HDL code conversion and manipulation
US6920418B2 (en) Detecting events within simulation models
Li et al. HML, a novel hardware description language and its translation to VHDL
US7769569B2 (en) Method and system for designing a structural level description of an electronic circuit
US5727187A (en) Method of using logical names in post-synthesis electronic design automation systems
US6289491B1 (en) Netlist analysis tool by degree of conformity
US20020128809A1 (en) Randomized simulation model instrumentation
US7493248B2 (en) Method, system and program product supporting phase events in a simulation model of a digital system
US7536288B2 (en) Method, system and program product supporting user tracing in a simulator
Wolf Yosys manual
CN114841103A (zh) 门级电路的并行仿真方法、***、存储介质及设备
Kam et al. Comparing layouts with HDL models: A formal verification technique

Legal Events

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