KR100857903B1 - 상위 프로그래밍 언어를 이용한 디지털 시스템 설계 방법 - Google Patents

상위 프로그래밍 언어를 이용한 디지털 시스템 설계 방법 Download PDF

Info

Publication number
KR100857903B1
KR100857903B1 KR1020060032587A KR20060032587A KR100857903B1 KR 100857903 B1 KR100857903 B1 KR 100857903B1 KR 1020060032587 A KR1020060032587 A KR 1020060032587A KR 20060032587 A KR20060032587 A KR 20060032587A KR 100857903 B1 KR100857903 B1 KR 100857903B1
Authority
KR
South Korea
Prior art keywords
programming language
digital system
clock
hardware
simulation
Prior art date
Application number
KR1020060032587A
Other languages
English (en)
Other versions
KR20070061733A (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 US11/636,506 priority Critical patent/US7783467B2/en
Publication of KR20070061733A publication Critical patent/KR20070061733A/ko
Application granted granted Critical
Publication of KR100857903B1 publication Critical patent/KR100857903B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • 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

Landscapes

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

Abstract

본 발명은 상위 프로그래밍 언어를 이용한 디지털 시스템 설계 방법에 관한 것이다.
디지털 시스템을 구현함에 있어 상위 프로그래밍 언어로 작성된 상위 소프트웨어 시뮬레이터를 토대로 알고리즘을 검증하고, 상위 프로그래밍 언어를 토대로 하위 프로그래밍 언어로 프로그램을 작성하기 전에, 상위 소프트웨어 시뮬레이터는 디지털 시스템의 하드웨어가 갖는 특성을 이용하여 시뮬레이션을 수행한다. 따라서, 하위 프로그래밍 언어로의 변환을 용이하게 수행할 수 있다.
디지털 시스템 설계, 하드웨어 설계, 검증, 상위 프로그래밍 시뮬레이션

Description

상위 프로그래밍 언어를 이용한 디지털 시스템 설계 방법{Method for digital system modeling by using high-level software simulator}
도 1은 본 발명의 실시예에 따른 검증 시간을 줄이기 위해 상위 프로그래밍 언어에 하드웨어 개념을 적용하여 시스템을 설계하는 흐름도이다.
도 2는 본 발명의 실시예에 따른 상위 프로그래밍 언어에 시간 개념을 적용한 경우, 구성된 프로그램이다.
도 3은 본 발명의 실시예에 따른 생성된 클럭 발생 위치에 대한 예시이다.
도 4는 본 발명의 실시예에 따른 발생 클럭에 맞추어 덧셈 연산이 일어나는 프로그램의 예시이다.
도 5는 본 발명의 실시예에 따른 갱신 클럭에 임시로 저장된 변수 값이 실제 값으로 치환되는 예시이다.
도 6은 본 발명의 실시예에 따른 상위 소프트웨어 시뮬레이터를 이용하여 하드웨어의 시간 개념을 적용하여 작성된 프로그램과 하위 단계 소프트웨어 시뮬레이터를 사용하여 작성된 프로그램을 비교한 예시이다.
본 발명은 디지털 시스템 설계 방법에 관한 것으로, 보다 자세하게는 상위 프로그래밍 언어를 이용하여 디지털 시스템을 설계하는 방법에 관한 것이다.
종래에는 디지털 시스템을 설계함에 있어서, 상위 프로그래밍 언어에 의한 시뮬레이션을 통해 알고리즘 및 변수를 설정하는 단계, 하드웨어 기술 언어인 HDL(Hardware Description Language, 이하 하위 프로그래밍 언어라 지칭)을 사용하여 상기 상위 프로그래밍 언어에 의해 시뮬레이션 된 알고리즘 및 변수를 토대로 시뮬레이션하는 단계, 상기 하위 프로그래밍 언어를 토대로 합성(Synthesis), 배치 및 배선(Place & Routing)을 수행하는 단계 및 디지털 시스템 구현 단계를 통해 디지털 시스템을 설계 및 제작하였다.
이때, 하드웨어 기술 언어인 하위 프로그래밍 언어나 시스템 기술 언어인 SDL(System Description Language)를 사용하거나 이를 복합적으로 사용하여 구현된 디지털 시스템을 검증하였다.
디지털 시스템의 설계 초기에는 소프트웨어적 접근법인 하위 프로그래밍 언어로 구현된 시뮬레이터들(예로, Verilog 시뮬레이터, VHDL 시뮬레이터 등)이 주로 사용된다. 이들 시뮬레이터는 실제 검증 대상회로와 테스트 벤치를 소프트웨어적으로 모델링한 순차적인 인스트럭션 시퀀스로 구성된 소프트웨어 코드를 컴퓨터 상에서 순차적으로 수행하여야 하기 때문에 검증을 위한 시뮬레이션 시간이 매우 오래 걸리게 된다.
즉, 일반적으로 상위 프로그래밍 언어로 구현된 시뮬레이터인 C/C++, MATLAB 등의 프로그래밍 언어를 사용하여, 설계하고자 하는 디지털 시스템의 동작에 대한 프로그램인 상위 소프트웨어 시뮬레이터를 작성하게 된다. 이렇게 작성된 상위 소프트웨어 시뮬레이터는 하드웨어적인 요소의 고려를 배제하여 작성되었기 때문에, 실제 구현하고자 하는 디지털 시스템의 동작에 대한 설계 및 구현 될 디지털 시스템이 가지게 될 성능 검증에 대한 조사가 중요한 역할로써 작용하게 된다.
이러한 상위 소프트웨어 시뮬레이터에 의해 설계하고자 하는 디지털 시스템의 검증 과정을 장시간 거친 후, 디지털 시스템을 만들기 위한 단계로 진행된다. 이 단계에서는 하위 프로그래밍 언어를 이용하여 프로그램을 작성하게 되며, 이러한 언어로 작성된 프로그램은 시뮬레이터인 ModelSim 등을 통하여 시뮬레이션을 수행하게 된다.
그러나, 이러한 시뮬레이터를 이용한 시뮬레이션은 하드웨어가 갖게 될 환경을 구성하여 동작하므로 검증에 많은 시간이 소요된다. 그리고, 이러한 하위 프로그래밍 언어를 토대로 한 하위 단계 소프트웨어 시뮬레이터에 의한 결과와 상위 언어에 의해 시뮬레이션 된 결과를 비교하는 것에도 많은 어려움이 존재한다. 이러한 문제점을 극복하기 위한 방법으로 에뮬레이션(emulation)을 가속화시키는 방법이 존재하지만, 이러한 방법은 환경을 구축하는데 많은 시간을 요구하며, 결과를 수정하여 반복적인 검증에 어려움이 존재한다.
따라서, 본 발명은 상기와 같은 종래 기술의 문제점을 해결하기 위한 것으로, 디지털 시스템을 설계하는데 있어서 하위 프로그래밍 언어에 의해 작성된 프로그램의 시뮬레이션에 걸리는 시간을 단축할 수 있는 방법을 제공한다.
또한, 본 발명은 상위 프로그래밍 언어로 구현하고자 하는 디지털 시스템의 하드웨어 환경을 구성하여, 시스템의 하드웨어 환경을 하위 프로그램으로 구성하는데 소요되는 시간을 감소시키는 방법을 제공한다.
상기 본 발명의 기술적 과제를 달성하기 위한 본 발명의 특징인 디지털 시스템 설계 방법은, 프로그래밍 언어를 이용하여 디지털 시스템을 설계하는 방법에 있어서,
(a) 상기 상위 프로그래밍 언어를 이용하여 구현하고자 하는 상기 디지털 시스템에 대한 알고리즘 및 제1 변수를 설정하는 단계; (b) 상기 설정된 알고리즘 및 제1 변수를 토대로, 상위 프로그래밍 언어를 이용하여 상기 구현하고자 하는 상기 디지털 시스템의 하드웨어와 유사한 환경을 구성하는 단계 및 (c) 상기 상위 프로그래밍 언어로 구성된 디지털 시스템 환경을 하위 프로그래밍 언어로 전환한 후, 하드웨어로 구현하는 단계를 포함한다.
여기서, 상기 (b) 단계는, 상기 상위 프로그래밍 언어를 이용하여 상기 디지털 시스템의 하드웨어 환경에 해당하는 시뮬레이터를 구성하고, (ⅰ) 상기 시뮬레이터에 대하여 상기 디지털 시스템의 시간에 따른 동작 변화를 고려한 시간 개념 시뮬레이션을 수행하는 단계 및 (ⅱ) 상기 시뮬레이터에 대하여 제2 변수를 생성하고, 상기 제2 변수의 비트수를 조절하여 비트 단위 시뮬레이션을 수행하는 단계를 포함한다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명 이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였다. 명세서 전체를 통하여 유사한 부분에 대해서는 동일한 도면 부호를 붙였다.
또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
일반적으로 하드웨어 시스템을 설계하는 절차는, 구현하고자 하는 시스템에 요구되는 변수들에 대한 정의를 위하여 상위 프로그래밍 언어에 의한 시뮬레이션을 통해 알고리즘 및 변수를 설정한다. 상위 프로그래밍 언어에 의한 시뮬레이션이 완료되면 하위 프로그래밍 언어를 사용하여 상기 알고리즘 및 변수를 토대로 디지털 시스템을 시뮬레이션하는 단계를 수행한다. 이와 같이 하위 프로그래밍 언어를 이용하여 시뮬레이션이 완료되면 합성, 배치 및 배선 과정을 수행하고, 디지털 시스템을 만들게 된다.
본 발명의 실시예에서는 이와 같은 과정 중 하위 프로그래밍 언어에 의한 시뮬레이션에 소요되는 시간을 감소시킬 수 있는 디지털 시스템 설계 방법을 제공한다.
도 1은 본 발명의 실시예에 따른 검증 시간을 줄이기 위해 상위 프로그래밍 언어에 하드웨어 개념을 적용하여 시스템을 설계하는 방법의 흐름도이다.
먼저, 구현하고자 하는 디지털 시스템이 수행하는 소정 동작에 요구되는 알고리즘 및 변수(제1 변수라고도 지칭함)들에 대한 정의를 위하여 상위 프로그래밍 언어에 의한 시뮬레이션을 통해 알고리즘 및 변수를 설정하는 단계 즉, 상위 단계 언어를 이용한 시뮬레이션을 수행(S100)한다.
알고리즘 및 변수 설정을 위한 시뮬레이션(S100)이 완료되면, 상기 상위 프로그래밍 언어를 이용하여 구현하고자 하는 상기 디지털 시스템의 환경을 구성한다. 여기서 디지털 시스템의 환경이라 함은 디지털 시스템의 동작시간에 대한 예측, 아키텍쳐 조정, 성능 평가 및 테스트 패턴의 생성등을 포함하며, 하드웨어로 최종 설계되어 생성된 디지털 시스템과 비슷한 환경을 소프트웨어로 구성하는 것을 의미한다. 디지털 시스템의 환경 구성은 크게 시간 개념 시뮬레이션 단계(S110)와 비트 단위 시뮬레이션 단계(S120)를 포함하며, 이에 대해서는 추후 상세히 설명하기로 한다.
상기 상위 프로그래밍 언어를 이용하여 구현하고자 하는 디지털 시스템의 환경을 구성하면, 하드웨어의 실질적 구현을 위하여 상기 상위 프로그래밍 언어를 하위 프로그래밍 언어로 전환하는 하위 프로그래밍 언어 시뮬레이션을 수행(S130)한다. 하위 프로그래밍 언어로의 전환을 하위 프로그래밍 언어를 이용한 시뮬레이션이라고도 한다. 이와 같이 하위 프로그래밍 언어를 이용하여 시뮬레이션의 수행이 완료되면 합성, 배치 및 배선 과정을 수행하고, 하드웨어로 디지털 시스템을 구현(S140)한다.
다음에는 위에 기술된 디지털 시스템의 설계 방법의 각 단계에 대하여 도 2 내지 도 6을 참조하여 상세히 설명한다.
디지털 시스템을 하드웨어로 실제적으로 구현하기 앞서, 단계 S100에서 먼저 상위 프로그래밍 언어를 사용하여 구성하고자 하는 하드웨어 시스템을 개략적으로 나타낸다. 즉, 상위 프로그래밍 언어를 이용하여 구현하고자 하는 디지털 시스템의 알고리즘 및 디지털 시스템을 시뮬레이션 하기 위해 요구되는 변수를 설정한다. 여기서, 상위 프로그래밍 언어는 MATLAB, C, C++ 등을 포함할 수 있다. 이때 사용된 상위 프로그래밍 언어를 이용하여 하드웨어 시스템에 대한 성능 검증에도 이용한다.
구현하고자 하는 하드웨어 시스템에 대한 알고리즘 및 변수를 설정하는 시뮬레이션 수행을 완료한 후, 단계 S110에서 상위 프로그래밍 언어를 사용하여 하드웨어와 비슷한 환경을 구성한다. 여기서, 상위 프로그래밍 언어로 디지털 시스템을 나타내기 위해서는 크게 두 가지 기능이 요구된다. 첫 번째는 시간에 따른 동작 변화를 기술할 수 있는 개념이 적용되어야 하며, 두 번째는 비트(bit)의 개수에 대한 개념이 상위 언어로써 표현되어야 한다.
S110 단계의 상위 언어를 이용한 시간 개념 시뮬레이션에 대해서는 다음 도 2 내지 도 5를 참조로 자세히 설명한다.
도 2는 본 발명의 실시예에 따른 상위 프로그래밍 언어에 시간 개념을 적용한 경우, 구성된 프로그램이다.
시간 개념 시뮬레이션이라 함은 하드웨어의 동작 시간에 대한 예측과 아키텍처를 조정하는 것으로서 이를 수행하기 위해 상위 프로그래밍 언어로 구현된 프로 그램에는 도 2에 도시된 바와 같이 세 개의 함수를 포함한다.
먼저, clock_generator(제1 함수라고도 지칭) 부분은 하나의 함수(function)로 정의된 부분으로써, 이후에 따라 오는 함수들이 적절한 클럭 발생(proper clock event)에 움직이도록 하는 클럭을 발생하는 부분이 된다. 즉, 디지털 시스템에서 사용되는 모든 클럭들이 이 함수에서 발생된다.
clocked_latch(제2 함수라고도 지칭)는 clock_generator 함수를 토대로 생성된 클럭에 의해 변화가 생긴 변수 값들의 갱신을 수행하는 클럭 갱신 함수이다. Phy_top(제3 함수라고도 지칭)은 실제 시뮬레이션 하게 되는 하드웨어의 동작을 정의하는 함수이다.
이와 같은 세 개의 함수를 토대로 시간 개념 시뮬레이션이 수행될 때, 함수에 의해 생성된 클럭의 발생에 따른 동작에 대하여 도 3을 참조하여 자세히 설명한다.
도 3은 본 발명의 실시예에 따른 생성된 클럭 발생 위치에 대한 예시이다.
도 3을 살펴보면, 상승시간 발생 동작(the positive edge trigger operation)에 의한 클럭 발생의 예를 도시한 것으로, 상기 도 2의 clock_generator 함수에 의해 첫 번째 루프(loop)에서 세 개의 클럭(pedgeclk32, pedgeclk40, pedgeclk66)이 동시에 발생된다고 가정하자. 세 개의 클럭이 발생된 후에 두 번째 루프에서는 66MHz에 해당하는 클럭만이 동작되며, 세 번째 루프에서는 40MHz 클럭만이, 네 번째 루프에서는 다시 66MHz 클럭만이 동작한다.
두 번째 루프에서 66MHz 클럭이 동작함과 동시에 이 전에 발생된 클럭 즉, 첫 번째 루프에서 발생된 세 개의 클럭에 대한 업데이트가 수행된다. 이때 업데이트 수행은 clocked_latch 함수에 의해 수행된다. 이와 마찬가지로 세 번째 루프에서는 두 번째 루프에서 발생한 60MHz 클럭에 해당하는 Pedgeclk66에 대한 업데이트가 수행된다.
이렇게 발생된 클럭은 다음에 따라오는 함수들에서 적당한 클럭의 변화가 있을 때, 변수의 치환이 이루어진다. 여기서 다음에 따라오는 함수는 본 발명의 실시예에 따르면 상기 도 2에 도시된 프로그램 중 "Phy_top" 즉, 시뮬레이션을 수행하게 되는 함수를 의미한다. 상기 변수 치환의 예에 대해서는 도 4를 참조로 설명한다.
도 4는 본 발명의 실시예에 따른 발생 클럭에 맞추어 덧셈 연산이 일어나는 프로그램의 예시이다.
도 4에 도시된 바와 같이, 두 개의 변수 A와 B의 값에 대한 합의 결과가 32MHz 클럭의 상승 변화(Positive edge)에서 레지스터 A로 저장된다. 이때의 덧셈 연산의 결과는 레지스터 이름에 "_D"가 붙은 변수에 임시로 저장되는데, 임시로 저장된 결과는 다음 번 갱신 시간 변화(Updated later clock edge)에서 clocked_latch 함수에 의해서 A 값으로 저장된다.
이와 같이 상기에서 설명한 임시 변수 값에서 변수 값으로의 치환에 대한 실시 예는 다음 도 5를 참조로 자세히 설명한다.
도 5는 본 발명의 실시예에 따른 갱신 시간에 임시로 저장된 변수 값이 실제 값으로 치환되는 예시이다.
도 5를 살펴보면, 갱신 클럭의 발생은 상기 도 2에서 설명된 동작 클럭과 마찬가지로 clocked_latch 함수에서 발생되며, 상기 도 3에서 클럭의 발생에 대해 설명하였다. 갱신 클럭의 발생(pedgeuclk)은 동작 클럭의 발생 이후 다음 번 동작 클럭이 발생할 때 즉 clock_generator 함수가 실행될 때, 직전의 동작 클럭에서 발생된 클럭이 갱신 클럭으로 되어 발생된다.
즉, 상기 도 3에서 설명된 바와 같이, 두 번째 루프에서 clocked_latch 함수에 의해 pedgeclk66이 발생됨과 동시에, 첫 번째 루프에서 생성된 pedgeclk32, pedgeclk40 및 pedgeclk66이 갱신 클럭 pedgeuclk32, pedgeuclk40 및 pedgeuclk66으로 되어 클럭 값을 갱신된다. 여기서, 실제 동작이 이루어지도록 프로그래밍한 do-loop에서의 한 사이클(cycle)동안 시뮬레이션이 수행되는 것은, 하나의 최소 시간(time)동안 동작한다고 할 수 있다.
그러므로 시뮬레이션 동안 루프가 동작할 수 있도록 시간의 크기를 정하는 부분이 필요하다. 이때 루프의 조건문이 이 동작 시간을 정의하게 되며, 원하는 시간동안 동작하도록 조정하여 시뮬레이션할 수 있다.
이와 같이 상기 도 1의 두 번째 단계인 시간 개념의 시뮬레이션이 수행된 후, 비트 단위 시뮬레이션을 위한 단계가 수행된다. S120 단계는 비트 단위 시뮬레이션이 수행되는 단계로써, 비트의 개수에 대한 개념을 시뮬레이션에 적용하기 위해서 수행되며, 간단한 형태로 구현될 수 있다.
즉, S100 단계를 통해 생성되었으며 상위 프로그래밍 언어를 이용한 시뮬레이션에서 사용되는 변수들은, 부동 소수점 값이나 비트의 크기가 획일적으로 정의 된 변수형들을 이용하여 프로그램이 작성되었다. 그러나, 비트 단위 시뮬레이션 단계에서는 상기 변수들에 대한 비트의 크기를 정의하는 다른 변수들(제2 변수라고도 지칭함)을 정의하되 고정된 비트만을 사용하도록 정의한다. 이는 이미 클럭의 개념이 적용된 프로그램을 수정함으로써 간단히 고정된 비트만을 사용할 수 있도록 수정할 수 있다.
결국 비트의 개수에 대한 시뮬레이션을 수행함으로써, 추후 S140 단계를 통해 디지털 시스템을 하드웨어로 실제 구현하였을 때 생기는 비트의 변화에 의한 성능 변화를 검증할 수 있다. 상기 S110 단계에서 수행된 시간 개념의 시뮬레이션 결과 및 S120 단계에서 수행된 비트 개념 시뮬레이션의 결과는 하위 프로그래밍 언어 시뮬레이션에서 얻을 수 있는 결과와 같으므로, 하위 프로그래밍 언어 시뮬레이션의 결과와 비교해 볼 수 있게 된다.
비트 단위 시뮬레이션에 대해 좀더 상세히 설명하면, 비트 단위 시뮬레이션을 크게 부동 소수점(floating point) 시뮬레이션과 고정 소수점(fixed point) 시뮬레이션으로 분류할 수 있다고 가정하자. 본 발명의 실시예에서의 비트 단위 시뮬레이션은 고정 소수점 시뮬레이션을 의미한다. 이것은 하드웨어 동작을 정의한 함수 안에서 사용되는 모든 변수들에 대해서 유효한 비트의 폭(width)을 정의해서 동작하도록 하는 것을 의미한다.
비트 단위 시뮬레이션 이전에 상기 S100 단계에서 수행되는 바와 같이 어떤 변수를 정의할 때, 정수(integer)형으로 정의하여 사용할 경우를 가정하여 설명하기로 한다. 정수형의 경우 보통 32bits의 정보를 담을 수 있다. 그러나 실제 만들 게 될 하드웨어에서는 5bits 정도만 사용하게 된다고 할 경우에는, 비트 단위 시뮬레이션으로 넘어오게 되면 강제로 LSB(Least Significant Bit, 최하위 비트) 5bits만을 끊어서 사용하도록 하는 부분들이 시뮬레이터에 추가되며, 이와 같은 과정을 비트 단위 시뮬레이션이라고 한다.
상위 언어를 이용하여 비트 단위의 시뮬레이션을 수행하면, S130 단계를 통해 레지스트 단계인 하위 프로그래밍 시뮬레이션을 수행한다. 즉, 하드웨어의 실질적 구현을 위하여 상기 S100 내지 S120 단계를 통해 작성된 상위 프로그래밍 언어를 하위 프로그래밍 언어로 전환하는 작업이 수행된다.
S130 단계에서는 이미 전 단계인 S120에서 만들어진 상위 프로그래밍 언어에 의한 프로그램에서 단순한 전환 작업만으로도 하드웨어 기술 언어로의 프로그램 작성이 이루어진다. 이에 대하여 도 6을 참조로 자세히 설명한다.
도 6은 본 발명의 실시예에 따른 상위 프로그래밍 언어를 이용하여 하드웨어의 시간 개념을 적용하여 작성된 프로그램과 하위 프로그래밍 언어를 사용하여 작성된 프로그램을 비교한 예시이다.
본 발명의 실시예에서는 상위 프로그래밍 언어로 C 언어를, 하위 프로그래밍 언어로 Verilog 언어를 사용하였으며, 반드시 이에 한정되는 것은 아니다. 도 6을 살펴보면, 상기 도 4에서 설명된 덧셈 연산을 C 언어에서 Verilog 언어로 변환한 것으로써, 문법적인 변화만이 이루어졌을 뿐 프로그램 상의 큰 변화는 없다.
즉, C 언어로 프로그램을 구현할 때 Verilog 언어로 변환될 것을 감안하여 Verilog 언어 형식과 유사하게 구현한다. 그러므로, 하드웨어 구현 시 사용자는 이 미 C 언어로 작성된 프로그램을 이용하여 Verilog 언어로 간단하게 전환할 수 있다.
그러므로 C 언어에서 하위 프로그래밍 언어로의 변환에는 큰 어려움이 없다. 또한, 이렇게 작성된 하위 프로그래밍 언어로 작성된 프로그램의 검증은 이미 상기 도 1의 S110 단계 및 S120 단계에서 작성된 상위 프로그래밍 언어로 구현된 프로그램에서 생성된 입출력 결과들을 이용한 비교를 통해서 동작을 검증할 수 있다.
위에 기술된 바와 같이, 하위 프로그래밍 언어의 시뮬레이션이 완료되면, 상기 도 1의 마지막 단계(S140)인 하드웨어 구현을 수행한다. S140단계에서는 이전 S130 단계에서 작성된 하위 프로그래밍 언어를 이용하여 합성과 배치 및 배선 과정을 거쳐 최종적으로 디지털 시스템이 하드웨어로 구현된다.
기존의 하드웨어 시스템 설계 단계에서는 상위 프로그래밍 언어를 통하여 알고리즘에 대한 검증 단계를 거친 후, 하위 프로그래밍 언어로 프로그램을 작성하여 검증을 수행하였다. 이러한 단계를 거칠 경우, 하위 프로그래밍 언어로 만들어진 프로그램에서의 동작을 검증하는 데에는 하위 프로그래밍 언어 시뮬레이터의 특성상 많은 시간이 요구되며, 새롭게 하위 프로그램을 작성하여 시뮬레이션 하는 데 소요되는 시간도 길었다.
하지만, 상위 프로그래밍 언어를 이용하여, 하드웨어가 갖는 특성을 고려한 프로그래밍을 수행할 경우, 상위 언어 시뮬레이터가 가지는 빠른 동작의 이점을 이용하므로, 하위 프로그래밍 언어를 이용한 시뮬레이션과 비슷한 결과를 얻을 수 있을 뿐만 아니라, 알고리즘의 변화에 대해서도 빠른 수정을 통한 검증을 수행할 수 있다.
여기서, 전술한 본 발명의 실시예의 구성에 대응하는 기능을 실현하는 프로그램 또는 그 프로그램이 기록된 기록 매체 역시 본 발명의 범주에 포함되는 것이다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리 범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.
전술한 실시예에 따르면, 디지털 시스템을 구현함에 있어 상위 프로그래밍 언어로 작성된 프로그램을 토대로 알고리즘을 검증하고, 하위 프로그래밍 언어로 프로그램을 작성하기 전 중간 단계로 상위 프로그래밍 언어로 하드웨어가 갖는 특성을 이용한 프로그래밍을 수행함으로써, 하위 프로그래밍 언어로의 변환을 용이하게 수행할 수 있다.
또한, 하위 프로그래밍 언어로 작성된 프로그램의 시뮬레이션에 소요되는 시간을 줄일 수 있으며, 알고리즘 수정에 대한 프로그램 수정이 용이하다.

Claims (7)

  1. 프로그래밍 언어를 이용하여 디지털 시스템을 설계하는 방법에 있어서,
    (a) 상위 프로그래밍 언어를 이용하여 구현하고자 하는 상기 디지털 시스템에 대한 알고리즘 및 제1 변수를 설정하는 단계;
    (b) 상기 설정된 알고리즘 및 제1 변수를 토대로, 상위 프로그래밍 언어를 이용하여 상기 구현하고자 하는 상기 디지털 시스템의 하드웨어와 유사한 환경에 해당하는 시뮬레이터를 구성하는 단계;
    (c) 상기 시뮬레이터에 대하여 상기 디지털 시스템의 시간에 따른 동작 변화를 고려한 시간 개념 시뮬레이션을 수행하는 단계; 및
    (d) 상기 상위 프로그래밍 언어로 구성된 디지털 시스템 환경을 하위 프로그래밍 언어로 전환한 후, 하드웨어로 구현하는 단계
    를 포함하는 프로그래밍 언어를 이용한 디지털 시스템 설계 방법.
  2. 제1항에 있어서,
    상기 (b) 단계는, 상기 상위 프로그래밍 언어를 이용하여 상기 디지털 시스템의 하드웨어 환경에 해당하는 시뮬레이터를 구성하고,
    상기 시뮬레이터에 대하여 제2 변수를 생성하고, 상기 제2 변수의 비트수를 조절하여 비트 단위 시뮬레이션을 수행하는 단계
    를 포함하는 프로그래밍 언어를 이용한 디지털 시스템 설계 방법.
  3. 제1항에 있어서,
    상기 (c) 단계는,
    상기 디지털 시스템에서 클럭을 생성하는 제1 함수, 상기 생성된 클럭에 의해 변화가 발생되는 변수 값을 갱신하는 제2 함수 및 상기 디지털 시스템의 동작을 정의하는 제3 함수
    를 포함하는 상위 프로그래밍 언어를 토대로 구성되는 프로그래밍 언어를 이용한 디지털 시스템 설계 방법.
  4. 제3항에 있어서,
    상기 (c) 단계는,
    상기 제1 함수에 의해 제1 동작 클럭이 생성되는 단계;
    상기 제1 동작 클럭이 생성된 후 일정 시간 후에 상기 제1 함수에 의해 제2 동작 클럭이 생성되는 단계;
    상기 제2 동작 클럭의 생성과 동시에, 상기 제1 동작 클럭이 제2 함수를 토대로 갱신 클럭으로 발생되는 단계; 및
    상기 갱신 클럭을 토대로, 상기 제2 동작 클럭의 생성으로 인하여 변경된 상기 제1 동작 클럭의 변수 값이 갱신되는 단계
    를 포함하는 프로그래밍 언어를 이용한 디지털 시스템 설계 방법.
  5. 제4항에 있어서,
    상기 생성된 제1 동작 클럭은 상기 제2 함수에 의해 갱신 클럭이 발생할 때까지 임시 변수에 저장되는 프로그래밍 언어를 이용한 디지털 시스템 설계 방법.
  6. 제2항에 있어서,
    상기 제2 변수를 이용하여, 상기 (d) 단계에서 디지털 시스템을 하드웨어로 구현하였을 때 생기는 비트의 변화에 의한 성능 변화를 검증할 수 있는 프로그래밍 언어를 이용한 디지털 시스템 설계 방법.
  7. 제1항에 있어서,
    상기 (b) 단계에서 구성된 상기 디지털 시스템의 하드웨어 환경을 토대로, 상기 (d) 단계의 상기 하위 프로그래밍 언어로 전환되어 수행된 상기 디지털 시스템 환경에 대한 검증을 수행하는 프로그래밍 언어를 이용한 디지털 시스템 설계 방법.
KR1020060032587A 2005-12-10 2006-04-11 상위 프로그래밍 언어를 이용한 디지털 시스템 설계 방법 KR100857903B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/636,506 US7783467B2 (en) 2005-12-10 2006-12-11 Method for digital system modeling by using higher software simulator

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020050121357 2005-12-10
KR20050121357 2005-12-10

Publications (2)

Publication Number Publication Date
KR20070061733A KR20070061733A (ko) 2007-06-14
KR100857903B1 true KR100857903B1 (ko) 2008-09-10

Family

ID=38357449

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060032587A KR100857903B1 (ko) 2005-12-10 2006-04-11 상위 프로그래밍 언어를 이용한 디지털 시스템 설계 방법

Country Status (1)

Country Link
KR (1) KR100857903B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100965856B1 (ko) * 2009-12-04 2010-06-24 주식회사 모뎀게이트 순차 실행 고급 프로그래밍 언어를 이용한 디지털 집적 회로 설계, 시뮬레이션 및 검증 방법 및 시스템
KR101678480B1 (ko) * 2015-07-08 2016-11-22 주식회사 유비콤테크놀로지 R 언어 기반 빅데이터 처리용 fpga 시스템 및 방법
KR20180023754A (ko) * 2016-08-27 2018-03-07 유홍준 안전성 기반 알고리즘 학습용 자율주행 자동차 교구 시스템 및 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11213031A (ja) * 1997-11-03 1999-08-06 Lucent Technol Inc ソフトウェアにおけるハードウェアの検証、およびその逆の検証
JP2000011022A (ja) 1998-06-22 2000-01-14 Matsushita Electric Ind Co Ltd ハードウェア/ソフトウェア協調検証方法
US6226776B1 (en) 1997-09-16 2001-05-01 Synetry Corporation System for converting hardware designs in high-level programming language to hardware implementations
JP2001209556A (ja) * 1999-11-18 2001-08-03 Yokogawa Electric Corp 検証支援システム
US20040143813A1 (en) 2001-05-30 2004-07-22 Kentaro Hanma System development supporting apparatus, system development supporting method, and computer-readable recorded medium

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6226776B1 (en) 1997-09-16 2001-05-01 Synetry Corporation System for converting hardware designs in high-level programming language to hardware implementations
JPH11213031A (ja) * 1997-11-03 1999-08-06 Lucent Technol Inc ソフトウェアにおけるハードウェアの検証、およびその逆の検証
JP2000011022A (ja) 1998-06-22 2000-01-14 Matsushita Electric Ind Co Ltd ハードウェア/ソフトウェア協調検証方法
JP2001209556A (ja) * 1999-11-18 2001-08-03 Yokogawa Electric Corp 検証支援システム
US20040143813A1 (en) 2001-05-30 2004-07-22 Kentaro Hanma System development supporting apparatus, system development supporting method, and computer-readable recorded medium

Also Published As

Publication number Publication date
KR20070061733A (ko) 2007-06-14

Similar Documents

Publication Publication Date Title
US6301553B1 (en) Method and apparatus for removing timing hazards in a circuit design
US5831866A (en) Method and apparatus for removing timing hazards in a circuit design
JP4988758B2 (ja) マルチサイクル・クロック・ゲーティングのための方法および装置
JP2001109788A (ja) シミュレーションモデル、その生成方法、シミュレーション方法及びその記録媒体
US6757884B2 (en) Application specific integrated circuit design tool and file structure
US6567971B1 (en) Circuit synthesis method using technology parameters extracting circuit
KR100857903B1 (ko) 상위 프로그래밍 언어를 이용한 디지털 시스템 설계 방법
Moreira et al. NCL synthesis with conventional EDA tools: Technology mapping and optimization
US20070234253A1 (en) Multiple mode approach to building static timing models for digital transistor circuits
JP3179004B2 (ja) 論理回路検証システムおよび方法
JP4403187B2 (ja) 設計データ変換プログラム、該プログラムを記録した記録媒体、設計データ変換装置、および設計データ変換方法
US7783467B2 (en) Method for digital system modeling by using higher software simulator
JP5056511B2 (ja) 検証支援プログラム、該プログラムを記録した記録媒体、検証支援装置、および検証支援方法
JP2009230392A (ja) シミュレーション装置、シミュレーション方法及びプログラム
JP2009009318A (ja) 非同期回路検証用のプログラムデータ生成方法、非同期回路検証方法及び非同期回路検証装置
Bornebusch et al. Towards automatic hardware synthesis from formal specification to implementation
JP4881769B2 (ja) 半導体集積回路設計支援装置、半導体集積回路設計支援方法、半導体集積回路設計支援プログラム
US10796051B1 (en) Adaptive model interface for a plurality of EDA programs
Bommu et al. Retiming-based factorization for sequential logic optimization
KR100965856B1 (ko) 순차 실행 고급 프로그래밍 언어를 이용한 디지털 집적 회로 설계, 시뮬레이션 및 검증 방법 및 시스템
Neff Automatic synthesis of CMOS digital/analog converters
JP2003067438A (ja) シミュレーションモデルの生成方法及びシミュレーション方法及びその記録媒体
JP2010257003A (ja) 論理等価性検証システム、論理等価性検証方法、半導体集積回路の製造方法、制御プログラムおよび可読記憶媒体
US6898562B2 (en) Method and system for efficiently overriding net values in a logic simulator machine
JP2005129054A (ja) 回路設計方法

Legal Events

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