KR100326843B1 - 레지스터 전송 수준의 칩 시뮬레이터 자동 생성방법 - Google Patents

레지스터 전송 수준의 칩 시뮬레이터 자동 생성방법 Download PDF

Info

Publication number
KR100326843B1
KR100326843B1 KR1019990002429A KR19990002429A KR100326843B1 KR 100326843 B1 KR100326843 B1 KR 100326843B1 KR 1019990002429 A KR1019990002429 A KR 1019990002429A KR 19990002429 A KR19990002429 A KR 19990002429A KR 100326843 B1 KR100326843 B1 KR 100326843B1
Authority
KR
South Korea
Prior art keywords
simulator
virtual machine
hardware
simulation
definition unit
Prior art date
Application number
KR1019990002429A
Other languages
English (en)
Other versions
KR20000051795A (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 KR1019990002429A priority Critical patent/KR100326843B1/ko
Publication of KR20000051795A publication Critical patent/KR20000051795A/ko
Application granted granted Critical
Publication of KR100326843B1 publication Critical patent/KR100326843B1/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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 사용자에 의해 정의된 스크립트파일을 입력수단으로 하여 레지스터 전송 수준(Resister Transfer Level)의 칩 시뮬레이터를 자동으로 생성하기 위한 컴퓨터로 읽을 수 있는 매체에 기록된 시뮬레이터 자동 생성방법에 관한 것으로, ① 하드웨어 구성요소가 클래스로 제공되는 컴퍼넌트 라이브러리부, ② 입력수단인 스크립트파일에서의 가상기계 하드웨어 구성 및 명령어 동작정보가 전달되는 가상기계 하드웨어 정의부 및 명령어 동작을 정의한 RTL 테이블 정의부, 및 ③ 시뮬레이션 절차가 정의되어 있고 상기 가상기계 하드웨어 정의부 및 RTL 테이블 정의부 정보를 이용하는 시뮬레이션 수행부로 구성되는, 내장코드 및 시뮬레이터 생성커널을 포함하여 이루어진 프로그램 코드화된 시뮬레이터 자동 생성 프로그램을 포함하여 이루어져 있으며, 간략하고 직관적인 스크립트를 입력수단으로 하여 레지스터 전송 수준의 시뮬레이터를 자동 생성함으로써, 칩 제작시의 빈번한 하드웨어 변경에도 적은 인력과 시간으로 대응할 수 있고, 또한 생성되는 시뮬레이터가 레지스터 전송 수준에서 동작하므로 시뮬레이션 결과를 빠른 시간에 얻을 수 있다. 이러한 장점들로 인해 칩 개발 기간이 단축되며, 시뮬레이터 개발에 소요되는 인원을 최소화할 수 있다.

Description

레지스터 전송 수준의 칩 시뮬레이터 자동 생성방법{A method for generating Register Transfer Level Instruction Simulator for a Chip}
본 발명은 사용자에 의해 정의된 스크립트파일을 입력수단으로 하여 레지스터 전송 수준(Resister Transfer Level)의 칩 시뮬레이터를 자동으로 생성하기 위한 컴퓨터로 읽을 수 있는 매체에 기록된 시뮬레이터 자동 생성방법에 관한 것이다.
새로운 칩의 개발과정은 일반적으로 하드웨어의 설계, 최적화 그리고 제작단계로 나누어진다. 칩의 시뮬레이션은 이러한 각 단계에서 설계된 칩의 동작을 검증하고 칩의 최적화를 위한 벤치마킹을 수행하는데 이용되며, 칩이 제작된 후 어플리케이션 프로그램의 작성에도 이용된다. 그러나, 종래의 시뮬레이션 툴(tool)들이 제공하는 하드웨어 기술언어(Hardware Description Language; HDL)가 낮은 레벨의 언어이고 게이트 레벨 이하에서 동작하므로, 시뮬레이터 구성에 많은 노력과 시간을 필요로 하며 시뮬레이션에도 상당한 시간적 지연을 초래하고 있었다.
따라서, 종래의 시뮬레이션 툴이 하드웨어 설계와 최적화 과정에서 가지고 있는 문제들을 해소하고, 칩 제작과정에서 발생하는 잦은 설계 변경에 유연성 있게 대응할 수 있는 명령어 시뮬레이션 생성기가 요구된다.
좁은 의미에서의 논리 시뮬레이션(Logic Simulation)은 게이트 레벨(Gate-Level)에서 이루어지는 회로요소(Circuit element)의 시뮬레이션을 뜻하며, 넓은 의미에서는 스위치레벨(Switch-Level)에서부터 동작레벨(Behavioral-level)까지의 시뮬레이션을 말한다. VHDL, Compass, Verilog HDL, Synapsis등의 종래 시뮬레이션 툴(Tool)들은 약간의 차이는 있지만 좁은 의미에서의 논리 시뮬레이션과 넓은 의미에서의 논리시뮬레이션을 대부분 만족하는 시뮬레이션 기능을 제공한다.
하드웨어 제작과정중 내부기능 유닛을 디자인하고 동작을 검증하는 하드웨어 설계와 최적화 단계는 분석력과 창의력을 요구하는 단계이기 때문에 많은 시간과 노력을 필요로 한다. 또한 사용 목적과 비용, 성능 등 여러환경요소들을 고려해야 하므로 수정, 검증, 성능 평가 작업이 계속적으로 반복되며, 이때 기능 유닛들의 동작 검증과 벤치마킹을 위해 시뮬레이션을 수행하게 된다. 그러나, 이들 작업에 기존의 시뮬레이션 툴을 이용할 경우 다음과 같은 문제가 있다.
먼저, 프로그래밍의 어려움을 들 수 있다. 대부분의 시뮬레이션 툴에서 제공하는 하드웨어 기술언어가 낮은 레벨의 언어이고, 논리합성 가능한 함수만을 제공하기 때문에 기능 유닛들의 동작 모델(behavior model)을 구현하는데 있어서, 많은 제약을 받는다. 다음으로는, 시뮬레이션 시간의 지연을 들 수 있다. 하드웨어를 최적화하는 단계에서는 벤치마킹을 통해 수행 클락 사이클이나 명령어의 사용빈도 등 여러 측정요소들의 결과를 얻어 이들을 분석하는 것이 목적인데, 종래 시뮬레이션 툴들은 함수나 모듈들이 게이트 레벨 이하에서 게이트 딜레이와 와이어 딜레이등의 요소를 감안하여 동작하기 때문에 결과를 얻는데 상당한 시간적 지연을 초래하게 된다.
본 발명은 상기 문제점을 해결하고 DSP 칩 개발 및 응용프로그램 개발 효율의 향상에 기여할 수 있는 시뮬레이터 자동 생성방법에 관한 것이다. 본 발명에 의한 시뮬레이터 자동 생성방법은 하드웨어 구성을 기술한 스크립트 파일을 입력받아 명령어 시뮬레이터를 자동 생성하며, 이에 따라 새로운 시뮬레이터의 제작에 소요되는 시간과 노력을 감소시키고 계속적인 하드웨어 설계 변경에 신속히 대응할 수 있게 된다. 본 발명에 의하여 생성되는 시뮬레이터의 시뮬레이션 수준은 파이프라인의 진행에 따라 레지스터 상태를 확인할 수 있는 레지스터 전송수준(Register Transfer Level)으로 설정한다. 이는 하드웨어 설계 및 최적화 단계에서 내부 기능 유닛들의 동작을 검증하는데 무리가 없고, 기존 시뮬레이션 툴처럼 많은 양의 복잡한 테스트 벡터를 입력할 필요도 없을 뿐만 아니라, 게이트 딜레이나 와이어 딜레이 요소들을 배제하는 수준의 시뮬레이션을 통해 하드웨어 최적화 단계에서 빠른 벤치마킹 결과를 얻을 수 있도록 하기 위함이다. 또한 본 발명에 의해 얻어진 시뮬레이터는 칩 완성 후에도 응용프로그램의 개발 과정에서 빈번히 이용될 수 있다.
도1은 본 발명의 방법에 따라 시뮬레이터가 생성되는 단계를 개략적으로 도시한 과정도,
도2는 스크립트파일의 예제도,
도3은 컴퍼넌트 클래스 계층도,
도4는 본 발명에 따라 생성된 시뮬레이터의 동작도,
도5는 RTL 동작도이다.
본 발명에 의한 시뮬레이터 자동 생성방법은 입력수단으로 가상기계의 하드웨어 구성기술부 및 명령어 동작의 RTL 기술부로 구성된 스크립트 파일을 이용하며, 생성되는 시뮬레이터의 골격을 제공하는 내장 코드와, 스크립트를 분석하고 내장 코드를 이용하여 시뮬레이터를 생성하는 프로그램 코드화된 시뮬레이터 생성 커널(Simulator Generation Kernel)로 구성된다.
상기 내장 코드는 ① 하드웨어 구성요소가 클래스로 제공되는 컴퍼넌트 라이브러리부, ② 상기 스크립트 파일의 정보를 채워 넣음으로써 완성된 시뮬레이터 생성기 소스 프로그램의 일부를 구성하는, 가상기계의 하드웨어 정의부와 명령어 동작을 정의한 RTL 테이블 정의부, ③ 완성된 하드웨어 정의부와 RTL 테이블 정의부를 이용하여 시뮬레이션을 수행하도록 프로그램 코드화된 시뮬레이션 수행부로 구성된다.
상기 시뮬레이터 생성프로그램 내장 코드는 컴퍼넌트 라이브러리(Componet Library)부와 상기 ② 및 ③으로 정의되는 템플릿 코드(Template Code)로 대분된다. 상기 컴퍼넌트 라이브러리는 하드웨어의 구성요소가 되는 레지스터, 메모리, 제어신호 비트등을 C++ 언어를 이용하여 클래스로 구현해 놓은 것이며 하드웨어의 변화에 무관하게 고정되어 있는 부분이다. 상기 템플릿 코드는 실제 시뮬레이션을 진행시키는 시뮬레이션 엔진의 소스 코드로 대부분이 이미 코딩되어 있으나, 그 일부는 확정되지 않고 대신 특별한 표식을 가지고 있다. 즉, 템플릿 코드 중 하드웨어 구성 요소나 동작등에 따라 가변적인 부분은 공란으로 비워져 있으며, 이러한 공란에는 이 부분이 스크립트 파일의 해석에 의해 추후에 채워질 부분임을 표시하는 표식이 붙여지는 것이다. 따라서, 본 발명에 의한 시뮬레이터 자동 생성방법은 입력으로 주어진 스크립트 파일에서 이들 가변적인 요소에 대한 내용을 읽어들여 템플릿 코드의 비어있는 부분을 채워 넣음으로써 시뮬레이터를 완성한다. 본 발명의 시뮬레이터 자동 생성방법에 의하여 시뮬레이터를 생성하는 과정을 도시하면 도1과 같다. 이하, 본 발명의 시뮬레이터 자동 생성방법에 의한 프로그램의 구성요소를 상세히 설명한다.
① 스크립트 파일
스크립트 파일에는 가상기계의 구조에 관한 기술과 명령어의 동작을 묘사한 RTL 기술이 담겨있다. 시뮬레이터 생성 프로그램의 스크립트 해석기는 이를 읽어들어 가상기계를 생성하고 시뮬레이터의 소스 코드를 만들어 낸다. 스크립트 파일의 구조는 도2와 같다.
도시된 바와 같이 스크립트 파일은 4개의 섹션(Section)으로 구성되어 있다. 먼저, Machine 섹션은 대상 하드웨어를 구성하는 컴퍼넌트(Component)들을 기술하는 부분이다. 따라서, 이 섹션의 각 행은 일반적으로 다음과 같은 구조를 가진다.
component-type : component-name(size. option)
즉, 콜론(:)의 좌측에는 뒤에 나열될 하드웨어 컴퍼넌트의 종류를 지정하는 Register, Memory, Control등의 예약어가 기술되며, 그 각각은 레지스터, 메모리, 그리고 제어신호 비트를 지칭한다. 콜론 우측에는 실제 하드웨어 제작자에 의해 정의된 각 컴퍼넌트들의 이름이 나열되며, 각 이름에는 대상 컴퍼넌트의 크기가 덧붙여진다. 이때, 정확한 기술을 위해서 하나 이상의 파라미터가 필요한 컴퍼넌트인 경우에는 옵션(option) 필드를 이용한다. 즉, 메모리를 정의하기 위해서는 단위크기와 전체워드수가 필요하므로, Pmem(32, 4096)과 같이 32 비트 단위의 4kb 메모리임을 명시할 수 있다.
다만 맨 앞의 두 항목은 특별한 의미를 가지고 있는데, 첫 행에 기술된 'Timer : T(8)'은 T라는 이름의 8 비트 제어신호를 로컬 타이머(Local Timer)로 정의하는 것이다. 여기에서 로컬 타이머라 함은 하나의 명령이 페치(Fetch)된 후 경과된 시간을 담고 있는 제어 신호 비트로서, 매 실행 스텝마다 글로벌 타이머(Global Timer)에 의해 자동적으로 갱신된다. 따라서, 로컬 타이머는 별도의 지시가 없어도 파이프라인 깊이와 같은 수의 인스턴스(Instance)를 가진다.
다음행의 'Pipeline : 8'은 이 하드웨어의 파이프라인 깊이가 8임을 지정하고 있다. 이 파이프라인 기술부에 '{}'로 둘러싸여 덧붙여진 컴퍼넌트들은 파이프라인의 각 스테이지마다 존재하며, 그 상태 값이 파이프라인의 진행에 따라 이동된다. 따라서, 여기에 정의된 컴퍼넌트는 로컬 타이머와 같이 가상기계에서 파이프라인 깊이와 같은 수의 인스턴스를 가지게 되며, 이는 파이프라인을 따라 전송되는 제어신호를 모사하기 위한 것이다.
선택적으로 Instruction 섹션이 사용자가 기정의된(Pre-defined)디코딩 함수를 이용할 수 있도록 기술될 수 있다. 즉, 도2의 스크립트 파일 예에서 Decode(D, IR)은 레지스터 IR의 내용을 읽어 디코딩한 후 그 결과를 제어신호 비트배열 D에 기록함을 나타낸다. 따라서, 이 함수를 호출하면 주어진 명령어 코드에 따라 D 배열중 하나의 비트만이 1로 셋팅되고 나머지 비트는 0이된다. Decode() 함수는 이러한 디코딩 과정에서 주어진 명령에 대응하는 하나의 정수 값을 찾아내야 하며, 이를 위해 Instruction 섹션에 기술된 각 명령어 형식의 번호와 비트 패턴의 리스트를 이용한다. 즉, Decode() 함수는 페치(Fetch)된 명령을 인자로 호출되어 이 명령과 Instruction 섹션의 각 행에 기록된 비트 패턴을 대조한다. 여기에서 x자로 표시된 부분은 패턴 매치에 영향을 미치지 않는 필드이므로, 다른 비트들의 값이 모두 일치하면 그 명령어 형식번호에 해당하는 D 배열의 한 비트를 1로 셋팅하는 작업이 별도의 사용자 정의 코드 없이 수행된다. 따라서, 명령어 형식의 식별 이후의 작업은 사용자가 정의해야 하며, 이것을 사용하지 않고 사용자가 직접 디코딩 함수를 정의할 경우 기술하지 않아도 무방하다.
그 뒤의 두 섹션은 모두 RTL 기술에 관련된 부분이며, 첫 번째는 User Function 섹션으로 명령어 동작을 기록할 때 사용되는 루틴들을 함수로 정의하는 부분이다. 두 번째는 RTL Description 섹션으로 실제 명령어의 동작을 기술하는 부분이다. 이 섹션의 선두에는 기술된 명령을 실행할 조건이 될 수 있는 비트들이 나열된다. 즉, 명령어 기술부에서 콜론 좌측에 출현할 수 있는 조건들을 사전에 기술해 준다. 또한, 이 섹션의 본체에는 하드웨어의 상태가 특정조건을 만족할 때수행해야할 동작들이 레지스터 전송수준으로 기술된다. 예를 들어, 도2에서 첫번째 동작 기술은 FT 신호가 셋팅되어 있고, TO 타이밍일 때에는 PC가 가리키는 메모리 번지로부터 IR로 값을 로드하고 PC값을 증가시키라는 페치 단계를 기술한 것이다. 명령어 동작의 기술형식은 표1에 제시한 바와 같으며, 제시되지 않은 기술은 C++ 문법형식을 따른다.
동작기술
동작표현 설명
Mem[addr] Mem으로 지정된 메모리의 addr번지 Pmem[PC]Dmem[ARO]
Reg1 + Reg2Reg + num Reg1과 Reg2, Reg1과 num을 더함 PC + 1
Mem[addr] = RegMem[addr] = num addr 번지에 Reg 또는 num 값을 대입 Dmem[Aro] = M1
Reg(Start,END)Ctrl(Start,END) 레지트터 Reg 또는 제어신호 Ctrl의 Start 비트와 END 비트 사이의 값 M2=M3(10,20)
② 컴퍼넌트 라이브러리
시뮬레이터 생성 프로그램이 이용하는 컴퍼넌트 라이브러리는 하드웨어의 각 컴퍼넌트가 궁극적으로 데이터 스토리지(Data Storage)로 모델링 가능하다는 관점에서 작성된 것이다. 이러한 관점에서 각각의 하드웨어 컴퍼넌트는 그 상태(state)를 저장하는 데이터 멤버와 이를 입출력/조작하는 메소드로 묘사되며, 하나의 하드웨어는 이러한 컴퍼넌트들의 집합으로 간주될 수 있다. 따라서, 제공되는 컴퍼넌트 라이브러리는 도3과 같은 계층을 가진다.
Storage 클래스는 모든 컴퍼넌트들의 기반 클래스이며, 모든 컴퍼넌트들이여기에서 파생된다. 상기 클래스는 데이터 저장 공간과 이 값을 읽고 쓸 수 있는 메소드들로 구성되어 있다. Memory와 BitStorage 클래스는 Storage 클래스로부터 파생되며, 차이점은 BitStorage 클래스에서 생성된 객체는 비트 레벨의 조작이 가능한 메소드를 제공한다는 점이다. 따라서, Memory 클래스는 메모리와 같이 일정 크기의 단위로만 억세스 하는 컴퍼넌트를 표현하고, BitStorage 클래스는 레지스터 또는 제어신호 비트와 같이 비트 수준의 억세스가 필요한 컴퍼넌트를 표현하는 데 이용한다. 도3에서 Register와 Control 클래스가 BitStorage 클래스에서 파생되었음을 도시하고 있다. 기본적으로 시뮬레이터 생성 프로그램을 통해 생성된 시뮬레이터의 컴퍼넌트는 상기에서 제시된 클래스들의 객체이거나 여기에서 파생된 클래스의 객체들로 표현된다. 또한, 버스, ALU, 스위칭 네트워크등과 같이 빈번하게 사용되는 컴퍼넌트들은 시뮬레이터 생성 프로그램과 함께 제작 및 배포함으로써 사용자가 별도의 정의없이 사용할 수 있다.
시뮬레이터 생성 프로그램은 업그레이드됨에 따라 이러한 컴퍼넌트들이 점차 명시적인 클래스로 제공될 것이며, C++ 프로그램이 가능한 사용자라면 현재의 클래스 구성을 참조하여 새로운 컴퍼넌트 클래스를 정의하고 사용할 수도 있다.
③ 템플릿 코드부
템플릿 코드부는 하드웨어 정의부, RTL 테이블 정의부, 그리고 시뮬레이션 수행부로 구분할 수 있다. 하드웨어 정의부는 하드웨어를 구성하는 컴퍼넌트들을 가상기계에 속한 객체로 선언하는 부분이며, 스크립트 파일의 Machine 섹션을 분석하여 생성가능하다. RTL 테이블은 각 동작의 실행조건 리스트와 이 조건을 만족할 때 수행할 함수의 포인터들로 구성된다. 여기에서 실행조건 리스트는 RTL Description 섹션의 동작 기술에서 콜론 좌측의 조건들을 떼어내서 얻을 수 있으며, 동작의 RTL 기술은 각각 하나의 함수로 생성하고 RTL 테이블에는 그 함수 포인터만을 기록함으로써 테이블을 완성할 수 있다.
이와 같은 구성으로 인해 시뮬레이션 수행부는 하드웨어 관계없이 항상 동일한 코드를 가질 수 있으며, 그 동작을 도시하면 도4와 같다.
도4에서 알 수 있듯이, 시뮬레이션은 글로벌 타이머(Global Timer)의 클럭 단위로 이루어지며 이를 시뮬레이션의 단위인 스텝(Step)이라고 정의한다. 시뮬레이션 엔진은 한 스텝의 시뮬레이션을 위해서 타이머를 한 클럭 증가시키고 타이머와 각 제어신호 비트들의 상태를 파악하여 RTL 테이블의 조건필드와 비교하기 쉬운 형태로 나열한다. 이렇게 하여 현재 하드웨어 상태의 리스트가 만들어지면 이것을 RTL 테이블의 각 조건 필드와 비교하여 조건을 만족하는 항목이 존재하면 이에 대응하는 함수를 수행하게 되는 것이다. 이 과정은 한 스텝내에서 파이프라인의 깊이만큼 반복되며, 파이프라인의 정확한 시뮬레이션을 위해 각각의 반복에서는 각각 다른 Pipelined Control이 이용된다. 즉, 전술한 바와 같이 스크립트의 Machine 섹션중 Pipeline 부분에서 정의된 컴퍼넌트들은 파이프라인 깊이와 같은 수의 인스턴스를 가지며, 시뮬레이션 엔진은 이들 각각과 로컬 타이밍, 그리고 일반제어 신호들의 상태를 결합하여 파이프라인 깊이와 같은 수의 하드웨어 상태 리스트를 얻어 이들 조건을 만족하는 RTL 동작을 실행한다. 이 과정을 도시한 것이 도5이다.
이것은 하나의 이름으로 대표될 수 있으나 실제 하드웨어에서는 파이프라인스테이지를 따라 전달되어 각각의 스테이지의 다른 값을 가질 수 있는 제어신호들 모사하기 위한 것으로써, 디코딩 신호가 그 대표적인 예이다. 예를 들어 대상 하드웨어에 30개의 명령어가 존재하고 디코딩 신호중 일부가 명령어 구분을 위해 할당되었다면, 이것은 30개의 비트 배열로 표현될 수 있으며 디코딩이 수행되면 이들 비트중의 한 값만이 1로 셋팅된다. 또한, 이러한 디코딩 신호는 클럭의 증가에 따라 다음 스테이지로 전달되어야만 해당 명령의 해당 스테이지에서 올바른 수행 결과를 얻을 수 있다. 즉, 파이프라인 구조를 가진 하드웨어의 디코딩 신호들이 단지 하나의 비트 배열로 표현된다면, 한 명령의 실행이 종료되기 전에 다음 명령에 의해 디코딩 신호가 바뀌게 되므로 먼저 디코드 되었던 명령은 수행되지 않으며 먼저 궁극적으로 프로그램의 가장 마지막 명령만이 올바르게 수행되는 결과를 초래한다. 따라서, 파이프라인의 깊이와 같은 갯수의 디코딩 신호 비트를 유지하여야 각 파이프라인 스테이지에서 올바른 실행 결과를 얻을 수 있게 된다.
이와 같은 방법으로 RTL 동작들이 실행되면, 그 동작에 따라 가상기계의 메모리, 레지스터, 하드웨어 구성요소의 상태가 변경되며 이러한 상태 값 변화는 다음 스텝에서 반영된다.
본 발명은 종래의 문제점, 즉 시뮬레이션 툴들이 제공하는 하드웨어 기술언어가 낮은 레벨의 언어이고, 시뮬레이터 구성에 많은 노력과 시간을 필요로 하며 시뮬레이션에도 상당한 시간적 지연을 초래하고 있고, 응용 프로그래머를 위한 명령어 시뮬레이터가 하드웨어마다 매번 다르게 작성되어야 한다는 단점을 해결하기위하여 제공되는 것으로 본 발명에 따르면, 간략하고 직관적인 스크립트를 입력수단으로 하여 레지스터 전송 수준의 시뮬레이터를 자동 생성함으로써, 칩 제작시의 빈번한 하드웨어 변경에도 적은 인력과 시간으로 대응할 수 있다. 또한, 생성되는 시뮬레이터가 레지스터 전송 수준에서 동작하므로 시뮬레이션 결과를 빠른 시간에 얻을 수 있다. 이러한 장점들로 인해 칩 개발 기간이 단축되며, 시뮬레이터 개발에 소요되는 인원을 최소화할 수 있다.

Claims (2)

  1. 청구항1는 삭제 되었습니다.
  2. 가상기계 하드웨어 구성 및 명령어 동작 정보가 기록된 스크립트 파일을 입력수단으로 하여 컴퍼넌트 라이브러리부, 가상기계 하드웨어 정의부 및 RTL 테이블 정의부, 및 시뮬레이션 수행부로 구성된 내장코드와 시뮬레이터 생성커널을 포함하여 이루어진 시뮬레이터 생성 프로그램을 이용하여 시뮬레이터 생성 프로그램을 자동으로 생성하는 방법에 있어서, 상기 입력수단으로부터의 가상기계 하드웨어 구성 및 명령어 동작 정보가 상기 가상기계 하드웨어 정의부 및 RTL 테이블 정의부에 전달되고, 상기 시뮬레이션 수행부가 상기 가상기계 하드웨어 정의부 및 RTL 테이블 정의부 정보를 이용하는 시뮬레이션 절차를 정의하고, 상기 시뮬레이터 생성커널이 상기 내장코드를 이용하여 시뮬레이터 생성소스프로그램을 완성하는 시뮬레이터 생성 프로그램 자동 생성방법.
KR1019990002429A 1999-01-26 1999-01-26 레지스터 전송 수준의 칩 시뮬레이터 자동 생성방법 KR100326843B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019990002429A KR100326843B1 (ko) 1999-01-26 1999-01-26 레지스터 전송 수준의 칩 시뮬레이터 자동 생성방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019990002429A KR100326843B1 (ko) 1999-01-26 1999-01-26 레지스터 전송 수준의 칩 시뮬레이터 자동 생성방법

Publications (2)

Publication Number Publication Date
KR20000051795A KR20000051795A (ko) 2000-08-16
KR100326843B1 true KR100326843B1 (ko) 2002-03-04

Family

ID=19572425

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990002429A KR100326843B1 (ko) 1999-01-26 1999-01-26 레지스터 전송 수준의 칩 시뮬레이터 자동 생성방법

Country Status (1)

Country Link
KR (1) KR100326843B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100809684B1 (ko) * 2005-08-22 2008-03-06 삼성전자주식회사 디바이스의 전원차단효과를 rtl에서 검증할 수 있는 검증 장치 및 전원차단효과를 모델링 하는 방법
KR101635397B1 (ko) 2010-03-03 2016-07-04 삼성전자주식회사 재구성 가능한 프로세서 코어를 사용하는 멀티코어 시스템의 시뮬레이터 및 시뮬레이션 방법

Also Published As

Publication number Publication date
KR20000051795A (ko) 2000-08-16

Similar Documents

Publication Publication Date Title
CN1885295B (zh) 使用逻辑单元建置集成电路
EP1971944B1 (en) Implementing a design flow for a programmable hardware element that includes or is coupled to a processor
US7472361B2 (en) System and method for generating a plurality of models at different levels of abstraction from a single master model
US5918035A (en) Method for processor modeling in code generation and instruction set simulation
Perry VHDL: programming by example
US5854929A (en) Method of generating code for programmable processors, code generator and application thereof
WO2002001424A9 (en) System and method relating to verification of integrated circuit design
WO2003056429A2 (en) System, method, and computer program product for data transfer reporting for an application
EP1376413A1 (en) Test bench generator for integrated circuits, particularly memories
CN109891395B (zh) 调试系统和方法
WO2006078436A2 (en) Methods and systems for modeling concurrent behavior
KR100326843B1 (ko) 레지스터 전송 수준의 칩 시뮬레이터 자동 생성방법
US5774380A (en) State capture/reuse for verilog simulation of high gate count ASIC
Dushina et al. Semi-formal test generation with Genevieve
KR20010104622A (ko) 반도체 설계의 구성 및 기능을 관리하는 방법 및 장치
CN110210046B (zh) 应用程序及专用指令集处理器一体化敏捷设计方法
US20030046641A1 (en) Representing a simulation model using a hardware configuration database
US6904398B1 (en) Design of an application specific processor (ASP)
Wirthlin et al. Synthesizing RTL hardware from Java byte codes
EP0969394B1 (en) Design of an application specific processor (ASP)
Cai et al. Introduction of design-oriented profiler of Specfic language
US6697774B1 (en) Application specific processor (ASP)
Urban et al. Compiler-Centred Microprocessor Design (CoMet)-From C-Code to a VHDL Model of an ASIP
US8495539B1 (en) Scheduling processes in simulation of a circuit design
Coelho et al. Redesigning hardware-software systems

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