KR100928181B1 - 디지털 시스템 설계 방법 - Google Patents

디지털 시스템 설계 방법 Download PDF

Info

Publication number
KR100928181B1
KR100928181B1 KR1020070061775A KR20070061775A KR100928181B1 KR 100928181 B1 KR100928181 B1 KR 100928181B1 KR 1020070061775 A KR1020070061775 A KR 1020070061775A KR 20070061775 A KR20070061775 A KR 20070061775A KR 100928181 B1 KR100928181 B1 KR 100928181B1
Authority
KR
South Korea
Prior art keywords
software
hardware
level
code
application function
Prior art date
Application number
KR1020070061775A
Other languages
English (en)
Other versions
KR20080112833A (ko
Inventor
채수익
박상규
Original Assignee
재단법인서울대학교산학협력재단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 재단법인서울대학교산학협력재단 filed Critical 재단법인서울대학교산학협력재단
Priority to KR1020070061775A priority Critical patent/KR100928181B1/ko
Publication of KR20080112833A publication Critical patent/KR20080112833A/ko
Application granted granted Critical
Publication of KR100928181B1 publication Critical patent/KR100928181B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명의 특징적인 구성은 시스템의 알고리즘을 분석한 후 라이브러리를 설정하는 제 1 단계; 상기 제 1 단계에서 설정된 라이브러리의 내부 동작을 SystemC 언어를 이용해 설정하는 제 2 단계; 상기 제 2 단계에서 설정된 SystemC 코드를 이용하여 시스템 수준 SystemC 코드를 생성하여 라이브러리를 설정하는 제 3 단계; 상기 제 3 단계에서 생성된 SystemC 코드의 성능을 다-수준 통합 시뮬레이터를 이용하여 평가하는 제 4 단계; 상기 제 4 단계에서 소프트웨어 성능 평가 완료된 라이브러리의 구현 방법을 결정하는 제 5 단계; 상기 제 5단계에서 결정된 방법에 의해서 소프트웨어 코드 및 하드웨어 모델을 구현하는 제 6 단계; 상기 제 6 단계에서 설정한 하드웨어 모델 및 소프트웨어 코드를 연결하는 각 채널들에 대하여 적절한 CAT을 선택하는 제 7 단계; 상기 제 7단계에서 선택된 CAT를 하드웨어 또는 소프트웨어 모델들을 라이브러리로부터 가져와 시스템의 RT 수준 코드를 생성하는 제 8 단계; 상기 제 8 단계에서 설정된 시스템의 RT 수준 코드를 이용하여 다-수준 통합 시뮬레이터로 평가하는 제 9 단계; 및 상기 제 9 단계에서 평가된 시스템이 설계 제약을 만족하도록 변경하는 제 10 단계를 포함하여서 된 것이다.
통신, 메모리, 라이브러리, 시뮬레이터, 시스템

Description

디지털 시스템 설계 방법{Digital system design method}
도 1은 본 발명에 따른 통신 및 메모리 라이브러리의 구조를 나타낸 개략도
도 2는 본 발명에 따른 디지털 시스템 설계방법을 설명하기 위한 흐름도.
도 3은 본 발명에 따른 디지털 시스템 설계용 아키텍처 템플릿을 나타낸 개략도.
도 4는 본 발명에 따른 디지털 시스템의 기능 블록을 나타낸 개략도.
도 5는 본 발명에 포함된 다-수준 통합 시뮬레이터를 이용해 시뮬레이션 가능한 디지털 시스템의 예.
본 발명은 디지털 시스템 설계 방법에 관한 것으로서, 더욱 상세하게는 영상 복호기, 휴대형 멀티미디어 단말기 등의 디지털 시스템을 미리 구축되어 제공되는 템플릿 라이브러리를 재사용하여 효율적으로 설계할 수 있는 디지털 시스템 설계 방법에 관한 것이다.
일반적으로 하나의 시스템은 다수의 기능 블록들로 구성되는데, 전체 시스템을 몇 개의 기능 블록으로 나누어 설정하는지, 각 기능 블록들간 통신 구조와 메모 리 구조는 무엇인지, 마지막으로 각 기능 블록 내부의 마이크로 아키텍처는 무엇인지에 따라 소요되는 설계 기간과 설계의 질 (Quality of Result, QoR)이 매우 달라진다. 특히 디지털 시스템 설계에서는 각 기능 블록들이 하드웨어, 소프트웨어 또는 하드웨어와 소프트웨어를 모두 포함하는 복잡한 구조로 구현되고, 시스템의 기능과 성능뿐 아니라 면적, 전력, 그리고 물리적인 제약등도 함께 고려해야 하므로 훨씬 어려운 문제이다.
현재, 디지털 시스템을 설계하는 일반적인 방법은, 전체 시스템을 다수의 기능 블록들로 나누어 설정하는 제 1 단계; 각 기능 블록들을 하드웨어로 구현할 것인지 소프트웨어로 구현할 것인지를 결정하는 제 2 단계; 소프트웨어로 구현될 기능 블록들을 C/C++언어를 이용해 기술하고, 컴파일러를 통해 내장형 프로세서가 수행할 프로그램 바이너리를 생성한 후, 명령어 수준 시뮬레이터를 이용하여 검증하는 제 3 단계; 하드웨어로 구현될 기능 블록을 하드웨어 기술 언어 (Hardware Description Language, HDL)를 이용해 레지스터 전달 수준 (Register Transfer Level, RTL)으로 기술한 후, 로직 시뮬레이터를 이용하여 검증한 후, 로직 합성기를 이용하여 게이트 수준 네트리스트로 합성하는 제 4 단계; 하드웨어 기능 블록들과 소프트웨어 기능 블록들을 통합하고 검증하는 제 5 단계로 구성된다.
각 단계별 문제점들을 간략히 살펴보면, 제 1 단계에서는 디지털 시스템의 내부 기능 블록들은 아직 하드웨어로 구현될 것인지 아니면 소프트웨어로 구현될 것인지가 결정되기 이전이므로, 향후 하드웨어 또는 소프트웨어 모두에 적용 가능한 프로그래밍 인터페이스를 이용하여 높은 추상 수준에서 모델링 되어야 하는데, 현재 이를 위하여 보편적으로 이용되는 C/C++언어는 순차 수행되는 소프트웨어 작성에는 용이하지만 시스템의 병렬성을 모델링하기 어렵고 소프트웨어와는 전혀 다른 통신 구조와 메모리 구조를 가진 하드웨어 설계에는 적용하기가 어려우므로, 디지털 시스템의 기능 명세에 부적절하다. 제 2 단계에서 각 기능 블록들을 하드웨어로 구현할 것인지 또는 소프트웨어로 구현할 것인지를 판단하기 위해서는 성능 또는 면적에 관한 예측이 필요한데, 아직 하드웨어 또는 소프트웨어를 구현하기 이전인 설계 초기에는 이를 정량적으로 평가하기 어려우므로 설계자의 직관과 경험에 의존하여 결정해야 하며, 이것이 빈번한 수정 및 재-설계의 가장 큰 원인이다. 제 3 단계에서는 내장형 소프트웨어의 코드를 작성하는데, 내장형 소프트웨어는 다수의 내장형 프로세서에서 분산 수행될 수도 있고, 내장형 프로세서 또는 하드웨어의 제약과 특징을 반영하여 코드를 작성해야 하므로, 비록 같은 C/C++언어로 기술되었더라도 제 1 단계에서 설정한 시스템 기능 모델을 재사용할 수 없고, 설계자가 내장형 소프트웨어 코드를 새로 기술해야 한다. 제 4 단계에서는 각 기능 블록의 하드웨어를 HDL을 이용해 기술하기 위해서는 이 기능 블록과 통신하는 다른 기능 블록들이 하드웨어인지 또는 소프트웨어인지를 결정하고, 이 기능 블록이 사용하는 온 칩 또는 오프 칩 메모리의 구조가 어떠한 지를 미리 예측하여 이 기능 블록의 하드웨어 인터페이스를 확정한 후에야 내부 마이크로 아키텍처를 기술할 수 있다. 하지만 영상 복호기와 같이 연산량 뿐만 아니라 통신량과 메모리 접근이 매우 많은 응용에서는 통신 및 메모리 구조가 설계의 질을 결정하는 매우 큰 요소인데, 현재는 제 1 단계에서 C/C++ 언어로 기술한 기능 모델로는 정확한 평가가 불가능하므 로, 설계자의 직관과 경험을 바탕으로 시스템의 아키텍처를 일단 결정하고, 하드웨어와 내장형 소프트웨어를 구현한 다음 이를 평가하여 문제점을 파악한 후 수정하는 비효율적인 설계 방법으로 구현되고 있다. 만일, 제 2단계에서 결정된 하드웨어-소프트웨어 분할이나 제 4 단계에서 직관적으로 결정한 통신 및 메모리 구조가 잘못된 것으로 판명되는 경우, 설계자는 잘못된 결정을 바로잡기 위하여 하드웨어 기능 블록의 인터페이스를 수정해야 하고, 결과적으로 내부 마이크로 아키텍처 역시 수정해야 하므로 많은 시간과 비용을 소비해야 한다. 제 5 단계에서는 개별적으로 구현된 하드웨어 기능 블록과 소프트웨어 기능 블록을 통합한 후 이를 검증해야 하는데, 이를 위해서는 통합 설계자가 하드웨어와 소프트웨어에 관한 모든 정보와 지식을 갖춘 전문가가 필요하고, 하드웨어와 소프트웨어를 연결하기 위한 디바이스 드라이버를 작성해야 하며, 속도가 매우 느린 시스템 수준 시뮬레이션을 통해 검증해야 하고, 기능상의 오류가 발생한 경우 병렬 수행하는 하드웨어 소프트웨어 기능 블록들을 일일이 분석하여 원인을 찾아야 한다.
이와 같이, 종래의 시스템 설계 방법은 복잡한 시스템을 단 시간에 설계 완료하기가 어렵고, 전문적인 설계 지식과 경험을 갖춘 설계자가 필요하다는 한계가 있다.
본 발명은 상기한 문제점을 해결하기 위하여 발명한 것으로서, 그 목적은 실제 설계에서 빈번하게 사용되는 기능을 수행할 수 있는 설계 패턴들을 재사용이 가능한 형태의 템플릿을 제공하여 기존 HDL기반 하드웨어 설계의 낮은 설계 생산성과 높은 전문성에 대한 요구를 완화하고, 하드웨어와 소프트웨어를 통합된 환경에서 설계하고 검증할 수 있는 디지털 시스템 설계 방법을 제공함에 있다.
상기 목적을 달성하기 위한 본 발명의 특징적인 구성을 설명하면 다음과 같다.
본 발명의 가장 큰 특징은 빈번하게 재사용되는 통신 및 메모리 관련 기능들을 위주로 표준적인 인터페이스를 가진 기-정의 기능 블록들을 정의하고, 이들 각각에 대하여 소프트웨어, 하드웨어 또는 소프트웨어와 하드웨어의 조합으로 구성된 아키텍처 템플릿들을 다수 구현하여 라이브러리로써 제공하는 것이다. 본 발명에서 통신 및 메모리 관련 기능에 초점을 맞춘 이유는 연산에 관한 기능들은 그 종류가 방대하여 기-정의된 라이브러리를 구축하는 것이 어려운 반면, 통신 및 메모리 관련 기능들은 비교적 적은 수의 기능 패턴들과 마이크로 아키텍처 패턴들이 반복 사용되므로 유의미한 라이브러리를 구축하는 것이 가능하고, 연산 관련 기능들은 컴파일러, C-to-RTL 합성기, 데이터패스 합성기 등 다양한 설계 도구들이 개별적인 솔루션으로 몇 가지 존재하지만, 통신 및 메모리 관련된 라이브러리만 잘 구축하면 이러한 연산 관련 설계 도구들을 통합적으로 이용할 수 있는 설계 환경을 갖추어 시스템을 효율적으로 설계할 수 있기 때문이다.
또한, 고성능 하드웨어의 경우 통신과 메모리의 구조는 서로 매우 연관되어 있으므로 재사용 가능한 기능 패턴을 정의할 때 통신과 메모리를 따로 분리하여 정의하지 않고, 통신과 메모리 관련 기능들이 융합되어 복잡한 기능 패턴들을 정의하 고, 동시에 각 기능 패턴마다 성능, 면적, 전력 특성이 매우 상이한 다양한 아키텍처 패턴을 제공한다는 것이 특징이다. 용이한 이해를 위하여 라이브러리를 통해 제공되는 통신 및 메모리 관련 기-정의 기능 블록을 채널(Channel)이라고 부르고, 이에 대한 아키텍처 템플릿을 채널 아키텍처 템플릿 (Channel Architecture Template, CAT)이라고 부른다.
본 발명이 제안하는 시스템 수준 설계방법에서 통신 및 메모리 관련 라이브러리를 이용하여 디지털 시스템을 설계하는 방법은, 설계하고자 하는 시스템의 알고리즘을 분석한 후 응용 기능 블록들과 이들을 연결하는 채널로 나누어 설정하는 제 1 단계; 상기 제 1 단계에서 설정된 각 기능 블록 중에서 응용 기능 블록들의 내부 동작을 SystemC 언어를 이용해 설정하는 제 2 단계; 상기 제 2 단계에서 설정된 응용 기능 블록의 SystemC 코드와 채널의 SystemC 코드를 자동으로 통합하여 시스템 수준 SystemC 코드를 생성하는 제 3 단계; 상기 제 3 단계에서 생성된 SystemC 코드를 내장형 프로세서에서 수행할 때의 성능을 다-수준 통합 시뮬레이터를 이용하여 평가하는 제 4 단계; 상기 제 4 단계에서 소프트웨어 성능 평가 완료 후 각 응용 기능 블록을 하드웨어로 구현할 것인지 소프트웨어로 구현할 것인지를 결정하는 제 5 단계; 상기 제 5단계에서 소프트웨어 구현으로 결정된 응용 기능 블록들의 내장형 소프트웨어 코드를 작성하고, 하드웨어 구현으로 결정된 응용 기능 블록들의 하드웨어 모델을 HDL을 이용하여 구현하는 제 6 단계; 상기 제 6 단계에서 설정한 하드웨어 또는 소프트웨어 응용 기능 블록들을 연결하는 각 채널들에 대하여 적절한 CAT을 선택하는 제 7 단계; 상기 제 7단계에서 선택된 CAT의 하드웨어 또는 소프트웨어 모델들을 라이브러리로부터 가져와 하드웨어 응용 기능 블록의 HDL 코드 또는 소프트웨어 응용 기능 블록의 내장형 소프트웨어 코드와 통합하여 시스템의 RT 수준 코드를 생성하는 제 8 단계; 상기 제 8 단계에서 설정된 시스템의 RT 수준 코드를 이용하여 구현된 시스템의 질에 관계되는 설계 지표들을 평가하는 제 9 단계; 및 상기 제 9 단계에서 평가된 시스템이 설계 제약을 만족하도록 변경하는 제 10 단계를 거쳐 수행되는 것이 특징이다.
이와 같은 특징을 갖는 본 발명을 상세하게 설명하면 다음과 같다.
도 1은 본 발명에 따른 통신 및 메모리 관련 라이브러리의 구조를 나타낸 개략도이고, 도 2는 CAT들의 마이크로 아키텍처 패턴들의 예를 나타낸 개략도이며, 도 3은 본 발명에 따른 시스템 수준 설계방법을 설명하기 위한 흐름도이고, 도 4는 본 발명에 따른 설계 방법을 이용해 디지털 시스템을 설계하는 과정을 나타낸 개략도이고, 도 5는 본 발명에 포함된 다-수준 통합 시뮬레이터를 이용해 시뮬레이션 할 수 있는 디지털 시스템의 예를 나타낸 개략도이다.
본 발명에 따른 시스템 수준 설계 방법은 크게 라이브러리 구축 단계와 응용 설계 단계로 구분된다.
먼저, 라이브러리 구축 단계에서는 시스템에서 빈번하게 사용되는 통신 및 메모리 관련 기능들을 발굴하여 표준화된 인터페이스를 가진 채널로 정의하고, 각 채널에 대하여 다양한 성능과 면적, 전력 특성을 제공하는 마이크로 아키텍처 패턴들을 재사용이 용이한 형태인 CAT으로 구현한다. 각 CAT은 데이터 타입, 내부 메모리의 크기, 세부 동작 등을 조정할 수 있는 파라메터들을 가지고 있다. 그리고 각 CAT 들은 SystemC로 기술된 상위 수준 모델, HDL로 기술된 RT 수준의 하드웨어 모델, 내장형 소프트웨어 모델 등 세 가지 추상 수준의 모델을 가지고 있다.
각 채널별로 CAT들을 구축할 때에는 다음 가이드라인을 따른다. 첫째, 각 채널마다 성능과 면적 특성이 상이한 물리적 메모리 소자들인 레지스터, 레지스터 파일, 온 칩 SRAM 메모리, 그리고 SDRAM 메모리 등을 CAT들을 제공한다. 둘째, 큰 용량의 온 칩 SRAM과 외부 SDRAM 메모리들은 서로 다른 하드웨어 기능 블록, 프로세서 코어들과 공유하는 컴포넌트이므로, 이들은 표준 온-칩 버스를 이용해 구현하는 CAT들을 제공한다. 이러한 CAT들은 버스 마스터 어댑터, 버스, 메모리 제어기, 그리고 물리적 메모리 소자로 구성되는데, 이때 버스 마스터 어댑터는 공유로 인한 성능 저하를 상쇄하기 위해 읽기 혹은 쓰기 버퍼를 구성할 수 있다. 버퍼는 레지스터, 레지스터 파일, 온 칩 SRAM 등의 물리적 메모리 소자를 이용해 구현될 수 있고 버스 마스터 어댑터가 레지스터 파일이나 온 칩 SRAM을 사용하는 경우, 두 개 이상의 메모리 소자를 사용하여 버퍼의 bandwidth를 높일 수도 있다. 셋째, 소프트웨어가 수행되는 프로세서들은 대부분 한/두 개의 온 칩 버스 마스터 인터페이스와 한 두 개의 인터럽트 입력만으로 외부 하드웨어 컴포넌트나 외부 프로세서와 통신할 수 있으므로, 하나 혹은 두 개의 버스 마스터 어댑터와 하나 혹은 두 개의 버스 슬레이브 어댑터가 버스로 연결되어 있는 CAT들을 제공한다. 버스 슬레이브 어댑터가 버스 마스터 어댑터에 자신의 상태를 통지하는 방식으로 a) 버스-대기 방식, b) polling 방식, c) 인터럽트 방식의 세 가지 방식이 있으며, 각각의 방식을 지원하는 CAT을 제공한다. 버스-대기 기법은 버스 마스터 어댑터가 요청한 통신 및 메모 리 기능이 처리 완료될 때까지 버스 슬레이브 어댑터가 버스에 대기 싸이클 (Wait-Cycle)을 삽입하는 방식이고, polling 방식은 버스 마스터 어댑터가 주기적으로 혹은 반복적으로 버스 슬레이브 어댑터의 상태를 관찰하여 통신 및 메모리 기능을 요청할 수 있는지를 확인하는 방법이고, 인터럽트 방식은 버스 슬레이브 어댑터가 별도의 인터럽트 요청 신호를 발생하여 대기 중인 버스 마스터 어댑터에 통보해주는 방식이다.
다음으로, 응용 설계 단계는 설계하고자 하는 시스템의 알고리즘을 분석하는 제 1 단계를 수행 한 후 제 1 단계에서 분석된 알고리즘을 기능 블록으로 설정하는 제 2 단계를 수행한다. 알고리즘을 분석하여 기능 블록으로 설정할 때에는 병렬성을 고려하여 다수의 응용 기능 블록들을 정의하고, 이들을 라이브러리에서 제공되는 채널을 이용하여 연결한다.
그리고 제 3단계에서 각 응용 기능 블록들의 SystemC 코드를 기술하고, 제 4 단계에서는 채널들의 SystemC 코드와 응용 기능 블록의 SystemC 코드를 통합하여 시스템 수준 SystemC 코드를 생성하여 시스템의 기능을 검증한다.
제 4 단계에서는 다-수준 통합 시뮬레이터를 이용해 각각의 응용 기능 블록을 소프트웨어로 수행하며 성능을 관찰하고, 이를 토대로 상기 제 5 단계에서는 각 응용 기능 블록 별로 하드웨어로 구현할 것인지 소프트웨어로 구현할 것인지를 결정한다. 본 발명에 포함된 운영체제의 도움으로 소프트웨어로 결정된 응용 기능 블록들의 경우에는 SystemC 코드를 그대로 소프트웨어 코드로 사용할 수 있으므로 별도의 코딩이 필요 없으나, 하드웨어로 결정된 응용 기능 블록들의 경우에는 HDL을 이용해 레지스터 전달 수준으로 설계자가 직접 기술해 주어야 한다. 본 발명에서는 통신과 메모리에 관련된 복잡한 기능들이 응용 기능 블록이 아니라 재사용되는 채널로 구현되므로, 상대적으로 응용 기능 블록 자체의 복잡도는 감소하고, 다-수준 통합 시뮬레이터에 포함된 트레이스 기반 검증 기법을 이용하여 응용 모델의 SystemC 모델과 신규 기술된 RTL 모델의 입출력을 1:1로 비교하여 발생한 오류를 용이하게 찾을 수 있으므로 기존의 설계 방법에 비하여 단 시간에 레지스터 전달 수준 모델을 개발 완료할 수 있다.
상기 제 5 단계에서 응용 기능 모델의 하드웨어 혹은 소프트웨어 구현이 완료되면, 이들을 연결하고 있는 채널들을 적절한 CAT을 선택하여 구현한다. 하드웨어 응용 기능 블록들을 연결하는 채널들은, 높은 성능이 중요한 경우에는 레지스터나 레지스터 파일을 기반으로 구현된 CAT을, 적은 면적이 중요한 경우에는 온 칩 SRAM이나 SDRAM을 기반으로 구현된 CAT을 선택하고, 추가적으로 면적과 성능을 세부 조정하기 위해 CAT의 파라메터 값을 결정한다. 소프트웨어 응용 기능 블록을 연결하는 채널들은 면적이 중요한 경우에는 프로세서의 지역 메모리를 기반으로 구현된 CAT을 선택하고, 성능이 중요한 경우에는 온-칩 메모리에 기반한 CAT을 선택한다. 하드웨어와 소프트웨어를 연결하는 채널들은 소프트웨어 측에서 요청한 작업을 하드웨어가 즉시 혹은 극히 짧은 시간 내에 완료할 수 있는 경우에는 버스-대기 방식을 지원하는 CAT을, 소프트웨어의 요청을 완료하기까지 하드웨어가 많은 시간을 필요로 하는 경우에는 인터럽트 방식을 지원하는 CAT을, 그 중간인 경우에는 polling 방식을 지원하는 CAT을 선택한다.
각 채널별로 CAT의 설정이 완료되면, 응용 기능 블록의 RTL 모델과 CAT의 소프트웨어 모델 또는 RTL 모델을 통합하여 시스템 수준 RTL 모델을 생성한다. 시스템 수준 RTL 모델은 소프트웨어 응용 기능 블록과 CAT의 소프트웨어 모델은 프로세서의 명령어 수준 시뮬레이터나 프로세서의 RTL 모델 상에서 수행되고, 하드웨어 응용 기능 블록과 CAT의 하드웨어 모델은 로직 시뮬레이터상에서 수행되는 것을 말한다.
시스템의 RTL 모델이 생성된 후, 시스템이 성능, 면적, 전력, 그리고 입출력 pin의 개수나 온 칩 메모리에 대한 제한 등의 설계 제약을 만족하는지를 평가한다. 시스템의 성능은 다-수준 통합 시뮬레이터를 이용하고, 시스템의 면적은 로직 합성기를 이용해 합성하여 얻은 하드웨어 응용 기능 블록의 면적과 라이브러리에 포함된 면적 모델을 통해 추정된 CAT의 면적을 합산하여 추정하고, 전력은 시스템의 RTL 모델을 로직 합성기와 물리 합성기 (Physical Synthesis Tool)를 이용하여 레이아웃을 생성해 본 후 물리 합성기가 자체적으로 제공하는 전력 추정 기능을 이용해 그 값을 예측해볼 수 있다.
이러한 평가 결과가 당초 부과된 설계 제약을 만족시키지 못하는 경우, 그 원인이 응용 모듈에 있는 경우 응용 모듈을 재-설계 혹은 재-합성하고, 원인이 아키텍처 템플릿에 있는 경우, 좀 더 높은 성능을 제공하거나 적은 면적을 차지하는 CAT을 선택하여 교체하면서 시스템을 구현하는 것이며, 이와 같이 구현된 시스템이 당초 부과된 설계 제약을 만족시킬 때까지 상술한 과정을 반복하여 설계 제약을 만족하는 시스템을 설계하는 것이다.
본 발명은 상기 설계 흐름을 통하여 디지털 시스템 설계를 완수하기 위해 필요한 SystemC 모델, 하드웨어 모델, 그리고 내장형 소프트웨어 모델들을 연동하여 수행할 수 있는 다-수준 통합 시뮬레이터를 포함하는 것이 특징이다. 도 5는 다-수준 통합 시뮬레이터를 통하여 시뮬레이션 할 수 있는 디지털 시스템의 예를 도시한 것으로, 각 응용 기능 블록은 물론 채널들도 주변의 다른 기능 블록과 독립적으로 SystemC 모델, 하드웨어 모델, 소프트웨어 모델 중 하나로 선택되어 수행할 수 있다는 것이 특징이다. 이 특징을 이용하면 하드웨어 기능 블록의 기능 검증 시 다른 기능 블록들은 이미 검증된 SystemC 모델 또는 소프트웨어 모델로 시뮬레이션 함으로서 시뮬레이션 시간을 단축할 수 있고, 버그의 범위를 좁혀 짧은 기간 내에 검증을 완수할 수 있다. 더욱이, 다-수준 통합 시뮬레이터는 서로 다른 추상 수준의 기능 블록들을 연결하기 위하여 추상 어댑터 (Abstraction Adapter)를 자동으로 시스템에 삽입하는데, 이 중에서 SystemC 모델과 하드웨어 모델을 연결하는 추상 어댑터는 임의의 시간 지연을 삽입하고, 프로토콜을 무작위적으로 선택함으로써 하드웨어 모델의 검증도를 향상시킬 수 있는 Interface Protocol Randomization 기법이 특징이다. 또한, 본 발명의 다-수준 통합 시뮬레이터는 각 기능 블록의 입출력 트레이스들을 압축된 형태로 저장한 후, 일부 기능 블록들의 내부 구조가 변경된 경우, 저장된 트레이스와 변경된 기능 블록의 입출력 트레이스를 비교함으로써 자동으로 correctness를 체크하고, 버그가 발생한 경우 그 시점과 위치를 바로 통보하여 버그를 용이하게 수정할 수 이도록 하는 트레이스 기반 검증 기법을 제공한다. 또한, 본 발명의 다-수준 통합 시뮬레이터는 본래의 하드웨어 또는 소프트웨어 모 델 대신 저장된 입출력 트레이스를 이용하여 입출력 동작을 그대로 모사해주는 트레이스 모델을 사용함으로써, 시뮬레이션 속도를 개선할 수 있는 트레이스 기반 시뮬레이션 기법을 제공한다.
이와 같이 본 발명은 아키텍처 템플릿에 의한 기능 블록을 이용하여 시스템을 구현하고 평가하여 그 시스템이 설계 제약을 만족할 수 있도록 평가하고 재 설계 할 수 있게 되므로 설계자의 수작업에 의한 설계와 검증을 줄임으로써 설계 기간을 단축할 수 있고, 설계시에 설계자가 선택할 수 있는 여러 가능성들을 명시적으로 제시해줌으로써 경험이 적은 설계자도 높은 질의 응용 설계가 가능해지며, 하드웨어와 소프트웨어 설계 시 설계자에 의한 디바이스 드라이버의 설계와 검증이 필요 없으므로 검증 비용을 최소화 할 수 있는 특유의 효과가 있다.

Claims (10)

  1. 설계하고자 하는 시스템의 알고리즘을 분석한 후 응용 기능 블록들과 이들을 연결하는 채널로 나누어진 라이브러리를 설정하는 제 1 단계;
    상기 제 1 단계에서 설정된 각 기능 블록 중에서 응용 기능 블록들의 내부 동작을 SystemC 언어를 이용해 설정하는 제 2 단계;
    상기 제 2 단계에서 설정된 응용 기능 블록의 SystemC 코드와 채널의 SystemC 코드를 자동으로 통합하여 시스템 수준 SystemC 코드를 생성하여 라이브러리를 설정하는 제 3 단계;
    상기 제 3 단계에서 생성된 SystemC 코드를 내장형 프로세서에서 수행할 때의 성능을 다-수준 통합 시뮬레이터를 이용하여 평가하는 제 4 단계;
    상기 제 4 단계에서 소프트웨어 성능 평가 완료 후 각 응용 기능 블록을 하드웨어로 구현할 것인지 소프트웨어로 구현할 것인지를 결정하는 제 5 단계;
    상기 제 5단계에서 소프트웨어 구현으로 결정된 응용 기능 블록들의 내장형 소프트웨어 코드를 작성하고, 하드웨어 구현으로 결정된 응용 기능 블록들의 하드웨어 모델을 HDL을 이용하여 구현하는 제 6 단계;
    상기 제 6 단계에서 설정한 하드웨어 또는 소프트웨어 응용 기능 블록들을 연결하는 각 채널들에 대하여 CAT을 선택하는 제 7 단계;
    상기 제 7단계에서 선택된 CAT의 하드웨어 또는 소프트웨어 모델들을 라이브러리로부터 가져와 하드웨어 응용 기능 블록의 HDL 코드 또는 소프트웨어 응용 기능 블록의 내장형 소프트웨어 코드와 통합하여 시스템의 RT 수준 코드를 생성하는 제 8 단계;
    상기 제 8 단계에서 설정된 시스템의 RT 수준 코드를 이용하여 구현된 시스템의 질에 관계되는 설계 지표들을 다-수준 통합 시뮬레이터를 이용하여 평가하는 제 9 단계;
    및 상기 제 9 단계에서 평가된 시스템이 설계 제약을 만족하도록 변경하는 제 10 단계를 포함함을 특징으로 하는 디지털 시스템 설계 방법.
  2. 제 1 항에 있어서,
    제 1 단계 및 제 3 단계의 라이브러리는 표준 인터페이스들을 가지는 통신 및 메모리 관련 기능 패턴인 채널들과, 각 채널을 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어로 구현하기 위하여 다양한 성능 및 면적 특성을 제공하는 마이크로 아키텍처 템플릿인 채널 아키텍처 템플릿(CAT)을 포함함을 특징으로 하는 디지털 시스템 설계 방법.
  3. 제 1 항에 있어서,
    제 4 단계 및 제 9 단계의 다-수준 통합 시뮬레이터는 응용 기능 블록과 채널 및 CAT들을 시뮬레이션 할 때 SystemC 모델, 명령어 수준 시뮬레이터에서 수행되는 소프트웨어 모델, 로직 시뮬레이터에서 수행되는 하드웨어 모델, 그리고 생성된 트레이스를 이용하여 기능을 수행하는 트레이스 모델들을 혼용하여 시스템의 동 작함을 특징으로 하는 디지털 시스템 설계 방법.
  4. 제 1 항에 있어서,
    제 6 단계에서 응용 기능 블록의 소프트웨어를 구현할 때, 별도의 내장형 소프트웨어 코딩 없이 SystemC 코드를 소프트웨어 코드로 수행할 수 있는 내장형 운영체제를 이용함을 특징으로 하는 디지털 시스템 설계 방법.
  5. 제 1 항에 있어서,
    제 1 단계 및 제 3 단계의 라이브러리는 각 표준 인터페이스가 세 가지 추상 수준, 즉 설계 초기의 기능 명세에 사용되는 SystemC 기반의 상위 수준 인터페이스, 다수의 입출력 신호들과 이들의 싸이클 수준 프로토콜을 정의하는 RT 수준 인터페이스, SystemC 인터페이스와 기본 골격은 동일하나 내장형 소프트웨어의 최적화 메서드를 추가로 정의한 소프트웨어 수준 인터페이스를 가지고 있고, 이러한 표준 인터페이스를 포함함을 특징으로 하는 디지털 시스템 설계 방법.
  6. 제 1 항에 있어서,
    제 1 단계 및 제 3 단계의 라이브러리는 각 채널마다 레지스터, 레지스터 파일, 온 칩 SRAM, 그리고 SDRAM 등 다양한 물리적 메모리 소자를 이용하여 다양한 성능 및 면적 특성을 가지는 아키텍처 템플릿들을 포함하고, 다른 응용과의 공유를 위하여 온 칩 SRAM과 SDRAM이 표준 버스에 연결된 구조에 기반한 아키텍처 템플릿 들을 포함하며, 하드웨어 응용 기능 블록과 소프트웨어 응용 기능 블록을 연결하는 채널의 구현을 위하여 디바이스 드라이버로 구현될 버스 마스터 어댑터와 버스 슬레이브 어댑터, 그리고 버스 채널과 인터럽트 신호로 구성된 아키텍처 템플릿을 포함하고, 각 아키텍처 템플릿마다 데이터 타입, 메모리의 크기, 세부 적인 구조 및 동작을 조정할 수 있는 파라메터를 포함함을 특징으로 하는 디지털 시스템 설계 방법.
  7. 제 1 항에 있어서,
    제 4 단계 및 제 9 단계의 다-수준 통합 시뮬레이터는 Interface Protocol Randomization을 통하여 하드웨어 기능 블록의 기능을 용이하게 검증함을 특징으로 하는 디지털 시스템 설계 방법.
  8. 제 1 항에 있어서,
    제 4 단계 및 제 9 단계의 다-수준 통합 시뮬레이터는 트레이스 기반 검증을 통하여 변경된 기능 블록의 correctness를 체크할 수 있고, 발생한 버그의 시점과 위치를 용이하게 발견함을 특징으로 하는 디지털 시스템 설계 방법.
  9. 제 1 항에 있어서,
    제 4 단계 및 제 9 단계의 다-수준 통합 시뮬레이터는 로직 시뮬레이터에서 수행되어 속도가 느린 하드웨어 모델 또는 프로세서의 명령어 수준 시뮬레이터에서 수행되어 속도가 느린 내장형 소프트웨어 모델 대신에 저장되었던 트레이스를 이용해 입출력 동작을 모사해주는 트레이스 모델을 대신 사용하여 시뮬레이션 속도를 개선함을 특징으로 하는 디지털 시스템 설계 방법.
  10. 제 1 항에 있어서,
    제 1 단계 및 제 3 단계의 라이브러리는 하드웨어 기능 블록과 소프트웨어 기능 블록을 연결하는 채널의 아키텍처 템플릿들로 버스 슬레이브 어댑터와 버스 마스터 어댑터 간 동기화에 버스-대기 방식, polling 방식, 인터럽트 방식을 지원하는 것들을 포함하여, 이 중에서 응용 기능 블록들의 특성과 시스템의 설계 제약을 고려하여 선택함을 특징으로 하는 디지털 시스템 설계 방법.
KR1020070061775A 2007-06-22 2007-06-22 디지털 시스템 설계 방법 KR100928181B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070061775A KR100928181B1 (ko) 2007-06-22 2007-06-22 디지털 시스템 설계 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070061775A KR100928181B1 (ko) 2007-06-22 2007-06-22 디지털 시스템 설계 방법

Publications (2)

Publication Number Publication Date
KR20080112833A KR20080112833A (ko) 2008-12-26
KR100928181B1 true KR100928181B1 (ko) 2009-11-25

Family

ID=40370502

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070061775A KR100928181B1 (ko) 2007-06-22 2007-06-22 디지털 시스템 설계 방법

Country Status (1)

Country Link
KR (1) KR100928181B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101118036B1 (ko) * 2010-03-31 2012-02-24 (주)솔빛시스템 Api 변환 래퍼를 이용하여 리얼 코드와 연동할 수 있는 시뮬레이터 및 시뮬레이션 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010022010A (ko) * 1997-07-29 2001-03-15 사토 요시하루 시스템설계 지원장치
KR20070049391A (ko) * 2005-11-08 2007-05-11 동부일렉트로닉스 주식회사 시스템씨를 기반으로 하는 하드웨어의 설계 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010022010A (ko) * 1997-07-29 2001-03-15 사토 요시하루 시스템설계 지원장치
KR20070049391A (ko) * 2005-11-08 2007-05-11 동부일렉트로닉스 주식회사 시스템씨를 기반으로 하는 하드웨어의 설계 방법

Also Published As

Publication number Publication date
KR20080112833A (ko) 2008-12-26

Similar Documents

Publication Publication Date Title
US7472361B2 (en) System and method for generating a plurality of models at different levels of abstraction from a single master model
CN1885295B (zh) 使用逻辑单元建置集成电路
US7483823B2 (en) Building integrated circuits using logical units
US8326592B2 (en) Method and system for verifying electronic designs having software components
US7584456B1 (en) Method and apparatus for debugging embedded systems having read only memory
US20110083114A1 (en) Method and system for re-using digital assertions in a mixed signal design
US11836641B2 (en) Machine learning-based prediction of metrics at early-stage circuit design
US10380283B2 (en) Functional verification with machine learning
Lavagno et al. Design of embedded systems
US10248746B1 (en) Method and apparatus for estimating ideal power of an integrated circuit design
Casaubieilh et al. Functional verification methodology of Chameleon processor
EP1376413A1 (en) Test bench generator for integrated circuits, particularly memories
US20070271080A1 (en) Model generation method for software/hardware collaboration design
US20180218092A1 (en) Power mode-based operational capability-aware code coverage
KR100928181B1 (ko) 디지털 시스템 설계 방법
Takach Design and verification using high-level synthesis
US20230048929A1 (en) Parallel simulation qualification with performance prediction
CN114416460A (zh) 分析基带性能的方法和仿真系统
US20040260531A1 (en) Emulation system and method
Holzer et al. Efficient design methods for embedded communication systems
Erickson TLM-Driven Design and Verification–Time For a Methodology Shift
TWI427496B (zh) 製造積體電路的模型的方法和系統
US8145466B1 (en) Clustering of electronic circuit design modules for hardware-based and software-based co-simulation platforms
Ferro et al. Runtime verification of typical requirements for a space critical SoC platform
Dalay Accelerating system performance using SOPC builder

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20121116

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20131106

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20141110

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20151028

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20171023

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20181101

Year of fee payment: 10