KR100779014B1 - Method of designing hardware based on a systemc - Google Patents

Method of designing hardware based on a systemc Download PDF

Info

Publication number
KR100779014B1
KR100779014B1 KR1020050106503A KR20050106503A KR100779014B1 KR 100779014 B1 KR100779014 B1 KR 100779014B1 KR 1020050106503 A KR1020050106503 A KR 1020050106503A KR 20050106503 A KR20050106503 A KR 20050106503A KR 100779014 B1 KR100779014 B1 KR 100779014B1
Authority
KR
South Korea
Prior art keywords
module
hardware
hardware module
software
memory
Prior art date
Application number
KR1020050106503A
Other languages
Korean (ko)
Other versions
KR20070049391A (en
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 KR1020050106503A priority Critical patent/KR100779014B1/en
Publication of KR20070049391A publication Critical patent/KR20070049391A/en
Application granted granted Critical
Publication of KR100779014B1 publication Critical patent/KR100779014B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven

Abstract

본 발명은 시스템씨를 기반으로 하드웨어를 설계함으로써 개발 기간을 단축하는 것으로서, C함수로 설계된 JPEG-2000 시스템을 소프트웨어 모듈과 하드웨어 모듈로 분리하는 단계, 소프트웨어 모듈과 상기 하드웨어 모듈의 통신을 위해 채널을 형성하는 단계, 소프트웨어 모듈에 마스터 라이브러리(master library)를 적용하는 단계, 하드웨어 모듈에 슬레이브 라이브러리(slave library)를 적용하는 단계, C함수로 설계된 하드웨어 모듈을 행동적 시스템씨(behavioral SystemC)로 설계하여 합성 가능한 하드웨어 모듈로 형성하는 단계, 그리고 합성 가능한 하드웨어 모듈을 시스템씨 컴파일러로 컴파일하는 단계를 포함한다. 이와 같이, C언어로 설계된 JPEC-2000 부호화 시스템을 재사용하여 시스템씨를 기반으로 하는 하드웨어를 설계함으로써 제품 개발의 시간을 단축 할 수 있고, 하드웨어와 소프트웨어의 통합 설계를 통해 개발 도중에 코시뮬레이션이 가능하다. The present invention shortens the development period by designing hardware based on the system, and separating the JPEG-2000 system designed by the C function into a software module and a hardware module, and forming a channel for communication between the software module and the hardware module. Step of applying a master library to a software module, applying a slave library to a hardware module, and designing and synthesizing a hardware module designed as a C function as a behavioral SystemC. Forming a possible hardware module, and compiling a synthesizable hardware module with a SystemC compiler. In this way, by reusing the JPEC-2000 coding system designed in C language, designing the hardware based on the system seed can shorten the product development time, and cosimulation is possible during the development through the integrated design of the hardware and software.

소프트웨어, 하드웨어, 코시뮬레이션, 합성, 시스템씨 Software, hardware, cosimulation, synthesis, system

Description

시스템씨를 기반으로 하는 하드웨어의 설계 방법{METHOD OF DESIGNING HARDWARE BASED ON A SYSTEMC}Design method of hardware based on system Mr. {METHOD OF DESIGNING HARDWARE BASED ON A SYSTEMC}

도 1은 본 발명의 한 실시예에 따른 소프트웨어 알고리즘으로 설계된 JPEG-2000 부호화 시스템에 대한 순서도이다.1 is a flowchart of a JPEG-2000 encoding system designed by a software algorithm according to an embodiment of the present invention.

도 2는 본 발명의 한 실시예에 따른 언타임 레벨(untime level)에서의 JPEG-2000 부호화 시스템에 관한 블록도이다.2 is a block diagram of a JPEG-2000 encoding system at an untime level according to an embodiment of the present invention.

도 3은 본 발명의 한 실시예에 따른 합성 MQ 코더의 시스템씨 모델에 대한 블록도이다.3 is a block diagram of a system C model of a synthetic MQ coder according to one embodiment of the invention.

도 4는 본 발명의 한 실시예에 따른 JPEG-2000 부호화 시스템을 검증하는 것에 대한 순서도이다.4 is a flowchart for verifying a JPEG-2000 encoding system according to an embodiment of the present invention.

본 발명은 시스템씨를 기반으로 하드웨어를 설계하는 방법에 관한 것으로서, 특히 JPEG-2000 부호화 시스템에서 하드웨어를 설계하는 방법에 관한 것이다.The present invention relates to a method of designing hardware based on system seed, and more particularly, to a method of designing hardware in a JPEG-2000 encoding system.

JPEG-2000은 기존의 JPEG에 다양한 기능을 종합한 차세대 정지영상규격으로서, 특히 국제전기통신연합 ITU-RSG8과 ISO, IEC, JTC1, SC29 및 WG1에서 표준화를 수행하고 있다. 이것은 자연영상, 과학영상, 의료영상, 원격탐사영상, 문서영상, 그래픽영상 등과 같이 서로 다른 특성을 갖는 다양한 형태의 정지영상에 하나의 통합된 부호를 부여한다.JPEG-2000 is a next-generation still image standard that integrates various functions in the existing JPEG, and is standardized in particular by the International Telecommunication Union ITU-RSG8 and ISO, IEC, JTC1, SC29 and WG1. This gives a single unified code to various types of still images with different characteristics such as natural image, scientific image, medical image, remote sensing image, document image, and graphic image.

이러한 JPEG-2000은 의료영상, 원격탐사, 영상저장, 그래픽스 및 컴퓨터 합성영상, 팩시필리, 인쇄 및 출판영상, 레이저 인쇄, 디지털카메라, 스캐너 및 디지털 복사기, 경제 문서, 보안용 카메라, 지구영상처리, 사진 및 미술품의 디지털도서관 및 카메라폰 등 정지영상이 관련되는 전분야에 걸쳐 다양하게 이용될 수 있다.These JPEG-2000s include medical images, remote sensing, image storage, graphics and computer composite images, facsimile, printed and published images, laser printing, digital cameras, scanners and digital copiers, economic documents, security cameras, earth image processing, It can be used in various fields such as digital library of photographs and artworks, camera phones, and all related fields.

이와 같은 JPEG-2000의 부호화 시스템은 소프트웨어 개발자에 의해 C-model로 설계된다.The JPEG-2000 encoding system is designed as a C-model by a software developer.

JPEG-2000 부호화 시스템은 프로그래밍 언어를 이용하여 하나의 이미지(image)를 적절하게 나누는 타일링(tilling) 작업을 진행하고, 분할된 이미지에 대한 부호화(encoding)를 수행한다. 이어, JPEC-2000의 부호화 시스템의 하드웨어(hardware, HW)를 설계하기 위해 모델링(modeling)을 진행한다.The JPEG-2000 encoding system performs a tiling operation of appropriately dividing an image using a programming language, and performs encoding on the divided image. Next, modeling is performed to design hardware (HW) of the encoding system of JPEC-2000.

그런 다음, 하드웨어 개발자는 소프트웨어 시스템을 바탕으로하여 ASIC 설계 흐름을 따라 RTL(register transfer level)의 VHDL 이나 Verilog로 재작성한다.The hardware developer then rewrites the VHDL or Verilog at the register transfer level (RTL) along the ASIC design flow based on the software system.

한편, 이와 같이 하드웨어 설계를 위한 프로그램의 재작성은 설계자의 수작업으로 진행되므로 시스템에 오류가 발생하기 쉽다.On the other hand, since the rewriting of the program for hardware design is performed by the designer's manual operation, it is easy to cause an error in the system.

또한, 소프트웨어(software, SW) 개발자와 하드웨어 개발자가 서로 다른 언 어로 개발함으로써 서로 다른 수준의 테스트벤치(testbench)를 가지고 시스템 검증을 진행해야하므로 개발 도중의 코시뮬레이션(co-simulation)을 진행하기 어렵다. 이로 인해 종래의 시스템 검증은 하드웨어 개발을 완료한 다음에 이루어진다.In addition, co-simulation during development is difficult because software (SW) developers and hardware developers must develop systems with different levels of testbenches by developing in different languages. . Because of this, conventional system verification occurs after hardware development is completed.

코시뮬레이션은 소프트웨어의 시뮬레이션과 하드웨어 에뮬레이션을 동기화하는 것으로서, 매우 큰 기능 블록으로 독립적으로 분리된 순수 소프트웨어 시뮬레이션 프로세스와 순수 에뮬레이션 가속화 프로세스를 보다 사용자 친화적으로 만들기 위한 것이다.Cosimulation is a synchronization of software simulation and hardware emulation, which aims to make the pure software simulation process and the pure emulation acceleration process independent of very large functional blocks.

이러한, 코시뮬레이션 진행시 오류가 발생할 경우, 하드웨어 설계자는 하드웨어 설계를 처음 단계부터 다시 시작해야 하므로 개발 기간이 길어진다.If an error occurs during the co-simulation process, the hardware designer has to restart the hardware design from the beginning and the development period is long.

따라서, 본 발명의 기술적 과제는 시스템씨를 기반으로 하드웨어를 설계함으로써 개발 기간을 단축하는 것이다.Therefore, the technical problem of the present invention is to shorten the development period by designing hardware based on the system.

본 발명에 따른 시스템씨를 기반으로 하드웨어를 설계하는 방법으로, C함수로 설계된 JPEG-2000 시스템을 소프트웨어 모듈과 하드웨어 모듈로 분리하는 단계, 상기 소프트웨어 모듈과 상기 하드웨어 모듈의 통신을 위해 채널을 형성하는 단계, 상기 소프트웨어 모듈에 마스터 라이브러리(master library)를 적용하는 단계, 상기 하드웨어 모듈에 슬레이브 라이브러리(slave library)를 적용하는 단계, 상기 C함수로 설계된 상기 하드웨어 모듈을 행동적 시스템씨(behavioral SystemC)로 설계하여 합성 가능한 하드웨어 모듈로 형성하는 단계, 그리고 상기 합성 가능한 하드웨어 모듈을 시스템씨 컴파일러로 컴파일하는 단계를 포함한다.A method of designing hardware based on the system of the present invention, comprising: separating a JPEG-2000 system designed with a C function into a software module and a hardware module, and forming a channel for communication between the software module and the hardware module. Applying a master library to the software module, applying a slave library to the hardware module, and designing the hardware module designed by the C function as a behavioral system C. Forming a synthesizable hardware module, and compiling the synthesizable hardware module with a system C compiler.

상기 채널은 시스템씨 랩퍼(SystemC wrapper)를 통해 형성하는 시스템씨를 기반으로 할 수 있다.The channel may be based on SystemC, which is formed through a SystemC wrapper.

상기 시스템씨 랩퍼는 상기 마스터 및 상기 슬레이브 라이브러리의 풀 핸드쉐이크(full-handshake) 방법으로 형성할 수 있다.The system C wrapper may be formed by a full handshake method of the master and the slave libraries.

상기 소프트웨어 모듈이 상기 하드웨어 모듈의 동작을 요청(req) 및 응답(ack) 신호를 통해 제어하는 시스템씨를 기반으로 할 수 있다.The software module may be based on a system that controls the operation of the hardware module through request and ack signals.

상기 소프트웨어 모듈과 상기 하드웨어 모듈 사이에 주고 받는 신호는 객체지향적 C언어의 클래스(class)형태로 정의하여 사용할 수 있다.Signals transmitted and received between the software module and the hardware module may be defined and used in a class form of an object-oriented C language.

상기 합성 가능한 하드웨어 모듈 형성 단계는, 상기 C함수로 설계된 상기 하드웨어 모듈을 독립적 모듈, 메모리 인터페이스 및 메모리로 나누는 단계, 상기 독립적 모듈과 상기 메모리 인터페이스 사이에 데이터 전달을 위한 제1 포트를 선언하는 단계, 상기 메모리 인터페이스와 상기 메모리 사이에 데이터 전달을 위한 제2 포트를 선언하는 단계를 포함한다.The synthesizable hardware module forming step may include dividing the hardware module designed as the C function into an independent module, a memory interface, and a memory, declaring a first port for data transfer between the independent module and the memory interface; Declaring a second port for data transfer between the memory interface and the memory.

상기 제1 포트 및 상기 제2 포트는 상기 채널을 기반으로 지정할 수 있다.The first port and the second port may be designated based on the channel.

상기 독립적 모듈간의 데이터 전달은 이진(binary) 변수를 사용하여 제3 포트를 생성함으로써 전달할 수 있다.Data transfer between the independent modules can be transferred by creating a third port using a binary variable.

상기 메모리에 저장된 전역변수를 사용하여 상기 독립적 모듈간의 데이터룰 전달하는 경우, 상기 메모리 인터페이스를 통해 상기 메모리에 접근함으로써 데이터를 전달할 수 있다.When transferring data between the independent modules using global variables stored in the memory, data may be transferred by accessing the memory through the memory interface.

첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기 술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. DETAILED DESCRIPTION Embodiments of the present invention will be described in detail with reference to the accompanying drawings so that those skilled in the art may easily implement the present invention. As those skilled in the art would realize, the described embodiments may be modified in various different ways, all without departing from the spirit or scope of the present invention.

도면에서 여러 층 및 영역을 명확하게 표현하기 위하여 두께를 확대하여 나타내었다. 명세서 전체를 통하여 유사한 부분에 대해서는 동일한 도면 부호를 붙였다. 층, 막, 영역, 판 등의 부분이 다른 부분 위에 있다고 할 때, 이는 다른 부분 바로 위에 있는 경우뿐 아니라 그 중간에 또 다른 부분이 있는 경우도 포함한다. 반대로 어떤 부분이 다른 부분 바로 위에 있다고 할 때에는 중간에 다른 부분이 없는 것을 뜻한다.In the drawings, the thickness of layers, films, panels, regions, etc., are exaggerated for clarity. Like parts are designated by like reference numerals throughout the specification. When a part of a layer, film, area, plate, etc. is over another part, this includes not only the part directly above the other part but also another part in the middle. On the contrary, when a part is just above another part, it means that there is no other part in the middle.

그러면 본 발명의 실시예에 따른 시스템씨를 기반으로 하드웨어를 설계하는 방법에 대하여 도 1 내지 도 4를 참고로 하여 상세하게 설명한다.Next, a method of designing hardware based on the system C according to an embodiment of the present invention will be described in detail with reference to FIGS. 1 to 4.

도 1은 본 발명의 한 실시예에 따른 소프트웨어 알고리즘으로 설계된 JPEG-2000 부호화 시스템에 대한 순서도이고, 도 2는 본 발명의 한 실시예에 따른 언타임 레벨(untime level)에서의 JPEG-2000 부호화 시스템에 대한 블록도이고, 도 3은 본 발명의 한 실시예에 따른 버스 액큐래잇 레벨(bus accurate level)에서 합성된 MQ 코더의 시스템씨 모델에 대한 블록도이고, 도 4는 본 발명의 한 실시예에 따른 JPEG-2000 부호화 시스템을 검증하는 것에 대한 순서도이다.1 is a flowchart of a JPEG-2000 encoding system designed by a software algorithm according to an embodiment of the present invention, and FIG. 2 is a JPEG-2000 encoding system at an untime level according to an embodiment of the present invention. 3 is a block diagram of a system C model of an MQ coder synthesized at a bus accurate level according to an embodiment of the present invention, and FIG. 4 is an embodiment of the present invention. Is a flowchart for verifying a JPEG-2000 encoding system according to the present invention.

도 1에 도시한 바와 같이, C-model로 설계된 JPEG-2000 부호화 시스템(90)은 반도체 회로의 명확한 모델에 대한 이미지(image)를 식별하고(S10), 이미지를 적절하게 분할하는 이미지 타일링(image tiling) 작업을 수행하고(S20), 분할된 이미지 를 디지털화 하여 각 이미지 패킷(packet)에 헤더(header)를 더하고(S30), 이것을 이산 웨이블렛 변환기(Discrete wavelet transform)에 전달하여 이미지를 시간(t) 및 주파수(f)에 대하여 국부성을 가진 신호를 생성하고(S40), 블락 코딩(block coding) 과정을 통해 CX(context), D(decision) 및 확률 테이블(Qe)의 값을 생성한 다음(S50), MQ 코더(coder)에 CX(context), D(decision) 및 확률 테이블(Qe) 값을 전달하여 이미지 데이터를 압축하고(S60), 압축된 이미지 데이터는 Tier2에 전달되어 하나의 코드 블락에 대한 처리가 끝나면 데이터 종결(termination) 부호를 더한 패킷을 생성한 다음(S70), 이미지 데이터를 비트(bit) 단위로 나열하여 이미지 데이터 비트 스트림(bit stream)을 형성하는(S80) C함수들로 구성되어 있다. 여기서, 압축된 이미지 데이터는 0 또는 1로 표현되며 1byte 단위로 저장한다.As shown in FIG. 1, a JPEG-2000 encoding system 90 designed as a C-model identifies an image of a clear model of a semiconductor circuit (S10), and image tiling that appropriately divides the image. tiling) (S20), digitize the divided image, add a header to each image packet (S30), and pass it to a discrete wavelet transform to transfer the image to time (t ) Generates a signal having locality with respect to the frequency f) (S40), and generates values of CX (context), D (decision), and probability table (Qe) through a block coding process. (S50), compresses the image data by passing the CX (context), D (decision) and probability table (Qe) values to the MQ coder (S60), and the compressed image data is passed to Tier2, one code After the block has been processed, the packet plus the data termination code. Generating a next (S70), the list image data to the bit (bit) unit is composed of (S80) of forming a C function, the image data bit stream (bit stream). Here, the compressed image data is represented by 0 or 1 and stored in units of 1 byte.

그런 다음, C-model로 작성한 JPEG-2000을 재사용하여 SystemC-model을 기반으로한 하드웨어를 설계하기 위해 도 2에 도시한 바와 같이, 기존의 C-model을 하드웨어 모듈(hardware module)(HWM)과 소프트웨어 모듈(software module)(SWM)로 나눈다.Then, to design hardware based on SystemC-model by reusing JPEG-2000 made by C-model, as shown in FIG. 2, the existing C-model is replaced with a hardware module (HWM). Divide into software modules (SWMs).

본 발명에서의 하드웨어 모듈(HWM)은 C-model로 작성되어 이미지 데이터를 압축하는 MQ 코더(coder)(S60)를 포함하고, 소프트웨어 모듈(SWM)은 C-model로 작성한 JPEG-2000 부호화 시스템 중 하드웨어 모듈(HWM) 부분을 제외한 C함수(S20, S30, S40, S50, S70, S80)를 포함한다.The hardware module (HWM) in the present invention includes an MQ coder (S60) written in C-model and compresses the image data, and the software module (SWM) in the JPEG-2000 encoding system created in C-model. C functions S20, S30, S40, S50, S70, and S80 except for the hardware module (HWM) portion are included.

이어, 소프트웨어 모듈(SWM)과 하드웨어 모듈(HWM)을 동시에 시뮬레이션 할 수 있도록 만든다.The software module (SWM) and the hardware module (HWM) can then be simulated simultaneously.

소프트웨어 모듈(SW)은 순차적으로 작업을 진행하는 반면, 하드웨어 모듈(HW)은 하드웨어가 포함하는 모든 모듈이 동시에 작업을 진행한다.The software module SW performs the tasks sequentially, while the hardware module HW processes all the modules included in the hardware at the same time.

따라서, 소프트웨어 모듈(SWM)과 하드웨어 모듈(HWM) 사이의 통신을 위해 시스템씨 랩퍼(SystemC wrapper)를 설계하여 채널(ch1, ch2)을 생성한다. 그리고 JPEG-2000 부호화 시스템의 순차적인 처리를 위해 소프트웨어 모듈(SWM)에 마스터 라이브러리(master library)를 사용하고, 하드웨어 모듈(HWM)에 슬레이브 라이브러리(slave library)를 사용한다. 이것은 하드웨어 모듈(HWM)인 MQ 코더가 C함수의 호출을 통해 수행되던 부분을 하드웨어적으로 시뮬레이션하기 위한 방법으로으로서, 마스터인 소프트웨어 모듈(SW)이 슬레이브인 하드웨어 모듈(HW)의 동작을 요구 신호(request signal, req) 및 응답 신호(acknowledge signal, ack)를 통해 제어함으로써 데이터를 순차적으로 처리할 수 있다. 이러한 이유로 시스템씨 랩퍼는 마스터 라이브러리 및 슬레이브 라이브러리의 풀 핸드쉐이크(full-handshake) 방법을 사용하여 만들 수 있다.Therefore, a SystemC wrapper is designed to generate channels ch1 and ch2 for communication between the software module SWM and the hardware module HWM. The master library is used for the software module (SWM) and the slave library is used for the hardware module (HWM) for the sequential processing of the JPEG-2000 encoding system. This is a method for hardware simulation of the part performed by the MQ coder, which is a hardware module (HWM), through a call to the C function. A signal requesting the operation of the hardware module (HW), which is a slave, is a software module (SW), which is a master. Data can be processed sequentially by controlling through (request signal, req) and acknowledgment signal (acck). For this reason, System Sea wrappers can be created using the full-handshake method of master and slave libraries.

그리고 하드웨어 모듈(HWM)과 소프트웨어 모듈(SWM) 사이에 주고 받는 신호는 객체지향적인 C언어의 클래스(class) 형태로 정의한다.Signals transmitted and received between the hardware module (HWM) and the software module (SWM) are defined in the form of a class of object-oriented C language.

이어, 소프트웨어 모듈(SWM)과 하드웨어 모듈(HWM) 사이에 통신 여부를 언타임드 레벨(untimed level)에서 시뮬레이션을 수행하여 확인한다.Subsequently, whether communication between the software module (SWM) and the hardware module (HWM) is confirmed by performing a simulation at an untimed level.

그런 다음, 도 3에 도시한 바와 같이, MQ 코더를 설계하는데 사용된 C언어를 재사용하여 하드웨어에도 적용이 가능한 시스템씨로 MQ 코더(700)를 버스 액큐래이트 레벨(bus accurate level)에서 설계하여 합성 가능한 MQ 코더(700)를 형성한다.Then, as shown in FIG. 3, the MQ coder 700 is designed at a bus accurate level by a system that can be applied to hardware by reusing the C language used to design the MQ coder. Form a synthesizeable MQ coder 700.

우선, C함수로 작성된 MQ 코더의 각 C함수를 하드웨어 모듈(HWM)이 포함하는 MQ 모듈(module)(145)과 메모리 인터페이스(memory interface)(140), 그리고 메모리(memory)(150, 155, 160, 165)로 정의한다.First, the C module of the MQ coder written in the C function is included in the MQ module 145, the memory interface 140, and the memory 150, 155, which the hardware module (HWM) includes. 160, 165).

MQ 모듈(145)은 MQ 코더(700) 내부 변수들을 초기화 하는 mqc_init_enc 모듈(100), 리셋 신호(reset signal)가 MQ 코더(700)로 인입할 경우 MQ 코더(700) 내부 변수들을 리셋하는 mqc_reset 모듈(105), 입력된 데이터를 부호화 하는 mqc_encode 모듈(110), 확률 테이블(Qe) 값을 재정의 하여 부호화 하는 mqc_renorme 모듈(115), 데이터를 부호화 하는 mqc_setcurctx 모듈(120), 부호화된 출력을 1byte씩 처리하는 mqc_byteout 모듈(125), MQ 코더(700)로 입력된 모든 데이터에 대한 부호화 작업이 완료되었을 때 종료 신호(termination signal)를 발생하는 mqc_flush 모듈(130) 및 부호화된 데이터의 길이를 계산하는 mqc_bytelength 모듈(135)을 포함한다.The MQ module 145 includes the mqc_init_enc module 100 for initializing the MQ coder 700 internal variables, and the mqc_reset module for resetting the MQ coder 700 internal variables when a reset signal enters the MQ coder 700. (105), the mqc_encode module 110 for encoding the input data, the mqc_renorme module 115 for redefining and encoding the probability table (Qe) values, the mqc_setcurctx module 120 for encoding the data, and the encoded output by 1 byte. Mqc_byteout module 125 for processing, mqc_flush module 130 for generating a termination signal when the encoding operation for all data input to the MQ coder 700 is completed, and mqc_bytelength for calculating the length of encoded data Module 135.

메모리(150, 155, 160, 165)는 MQ 코더(700) 설계시 필요한 전역변수를 저장하고, 메모리 인터페이스(140)는 데이터를 처리하는 MQ 모듈(145)과 메모리(150, 155, 160, 165) 사이의 데이터를 처리 장소로 보내주는 역할을 한다.The memory 150, 155, 160, 165 stores global variables necessary for designing the MQ coder 700, and the memory interface 140 stores the MQ module 145 and the memory 150, 155, 160, 165 for processing data. It sends data between) to the processing site.

그런 다음, MQ 모듈(145)과 메모리 인터페이스(140) 간의 통신을 위한 제1 포트(P1, P2, P3, P4, P5, P6, P7, P8)와 메모리 인터페이스(140)와 메모리(150, 155, 160, 165) 간의 통신을 위한 제2 포트(P9, P10, P11, P12)를 생성한다. 이때, 제1 및 제2 포트(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12)는 앞서 서술한 시스템씨 랩퍼를 통해 생성된 채널(ch1, ch2)을 기반으로하여 만든다.Then, the first ports (P1, P2, P3, P4, P5, P6, P7, P8) for communication between the MQ module 145 and the memory interface 140, the memory interface 140 and the memory (150, 155) To generate second ports P9, P10, P11, and P12 for communication between. In this case, the first and second ports P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, and P12 are channels (ch1 and ch2) generated through the above-mentioned SystemC wrapper. Make it based on

그리고 mqc_encode 모듈(110)과 mqc_renorme 모듈(115), mqc_encode 모듈(110)과 mqc_setcurctx 모듈(120), mqc_encode 모듈(110)과 mqc_byteout 모듈(125), mqc_renorme 모듈(115)과 mqc_flush 모듈(130), mqc_byteout 모듈(125)과 mqc_flush 모듈(130) 간의 데이터 전달은 이진(binary) 변수를 사용하여 제3 포트(P13, P14, P15, P16, P17)를 생성함으로써 전달한다. 한편, 메모리(150, 155, 160, 165)에 저장된 전역변수를 사용하여 데이터를 전달하는 경우, 메모리 인터페이스(140)을 통해 메모리(150, 155, 160, 165)에 접근하여 데이터를 전달한다. 이때, 메모리(150, 155, 160, 165)에 접근하는 mqc_encode 모듈(110), mqc_renorme 모듈(115), mqc_setcurctx 모듈(120), mqc_byteout 모듈(125) 및 mqc_flush 모듈(130)은 메모리 데이터를 읽고(read) 쓰는(write)데에 필요한 신호들을 고려하여 설계한다.Mqc_encode module 110, mqc_renorme module 115, mqc_encode module 110, mqc_setcurctx module 120, mqc_encode module 110, mqc_byteout module 125, mqc_renorme module 115, mqc_flush module 130, mqc_byteout 130 Data transfer between module 125 and mqc_flush module 130 is accomplished by creating third ports P13, P14, P15, P16, and P17 using binary variables. On the other hand, when data is transmitted using global variables stored in the memory 150, 155, 160, 165, the data is accessed through the memory interface 140 to the memory 150, 155, 160, 165. At this time, the mqc_encode module 110, the mqc_renorme module 115, the mqc_setcurctx module 120, the mqc_byteout module 125, and the mqc_flush module 130 accessing the memory 150, 155, 160, and 165 read memory data ( Design by considering the signals necessary to read.

이러한 설계 방법을 통해 시스템씨로 설계된 MQ 코더(700)는 C언어를 재사용하여 설계함에 따라 종래와 같이 하드웨어 개발자가 소프트웨어 시스템을 바탕으로하여 ASIC 설계 흐름을 따라 처음부터 RTL(register transfer level)의 VHDL 이나 Verilog로 설계자의 수작업으로 재작성하지 않으므로 개발기간을 단축할 수 있다.As the MQ coder 700 designed by System C through this design method is designed by reusing the C language, a hardware developer uses a software system based on a software system as in the prior art, and registers a VHDL of RTL (register transfer level) from the beginning. Since development is not done manually by the designer with Verilog, development time can be shortened.

또한, 하드웨어 모듈(HWM)과 소프트웨어 모듈(SWM)이 통합 설계되어 있으므로 개발 도중에도 코시뮬레이션(co-simulation)이 가능하다.In addition, since the hardware module (HWM) and software module (SWM) are integrated design, co-simulation is possible even during development.

그런 다음, 도 4에 도시한 바와 같이, 버스 액큐래이트 레벨에서 설계된 MQ 코더(S200)를 FPGA 라이브러리를 적용한(S215) 시스템씨 컴파일러(compiler)로 (S210) 하드웨어적인 언어.db/HDL로 합성(S230)하고, .db/HDL로 합성된 MQ 코더를 FPGA 컴파일러를 통해 시뮬레이션을 하고(S235) 이로써 얻어진 네트리스트 결과물(end netlist)(S240)을 iPROVE와 같은 보드(board)를 사용하여 FPGA칩(field programmable gate array chip)에 다운로드(S250)하고, FPGA칩과 컴퓨터에 입력된 소프트웨어 모듈(SWM)의 프로그램을 버스 시스템인 PCI(peripheral component interconnect)를 통하여 FPGA칩과 소프트웨어 모듈(SW)의 프로그램이 입력된 컴퓨터 통신을 실행하여 JPEG-2000 C-model을 이용한 인코딩 결과와 시스템씨로 설계하여 합성된 MQ 코더를 이용한 인코딩 결과가 일치하는 것을 검증할 수 있다.Then, as shown in FIG. 4, the MQ coder (S200) designed at the bus accumulator level (S215) is applied to the FPGA library (S215) by the system's compiler (S210). (S230), the .db / HDL synthesized MQ coder is simulated by the FPGA compiler (S235), and the netlist result (end netlist) (S240) obtained is a FPGA chip using a board such as iPROVE. The program of the FPGA chip and the software module (SW) is downloaded to the field programmable gate array chip (S250), and the program of the software module (SWM) input to the FPGA chip and the computer is transferred through a peripheral component interconnect (PCI), which is a bus system. This input computer communication can be executed to verify that the encoding result using the JPEG-2000 C-model and the encoding result using the synthesized MQ coder match.

따라서, 소프트웨어 알고리즘 수준에서 빠르고 손쉽게 RTL 수준의 재설계 없이 하드웨어를 설계함으로써, 기존의 설계보다 빠르게 하드웨어를 설계할 수 있다.Therefore, by designing hardware at the software algorithm level quickly and easily without redesigning at the RTL level, the hardware can be designed faster than the existing design.

본 발명에 따르면 C언어로 설계된 JPEC-2000 부호화 시스템을 재사용하여 시스템씨를 기반으로 하는 하드웨어를 설계함으로써 제품 개발의 시간을 단축 할 수 있다.According to the present invention, it is possible to reduce the time for product development by designing hardware based on the system seed by reusing the JPEC-2000 encoding system designed in the C language.

또한, 하드웨어와 소프트웨어의 통합 설계를 통해 개발 도중에 코시뮬레이션이 가능하다.In addition, the integrated design of the hardware and software enables cosimulation during development.

이상에서 본 발명의 바람직한 실시예에 대하여 상세하게 설명하였지만, 당해 기술 분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 수 있을 것이다. 따라서, 본 발명의 권리 범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.Although the preferred embodiments of the present invention have been described in detail above, those skilled in the art will understand that various modifications and equivalent other embodiments are possible therefrom. Accordingly, the scope of the present invention is not limited thereto, and various modifications and improvements of those skilled in the art using the basic concept of the present invention as defined in the following claims also fall within the scope of the present invention.

Claims (9)

C함수로 설계된 JPEG-2000 시스템을 소프트웨어 모듈과 하드웨어 모듈로 분리하는 단계,Separating the JPEG-2000 system designed with C function into software module and hardware module, 상기 소프트웨어 모듈과 상기 하드웨어 모듈의 통신을 위해 채널을 형성하는 단계,Establishing a channel for communication of the software module and the hardware module, 상기 소프트웨어 모듈에 마스터 라이브러리(master library)를 적용하는 단계,Applying a master library to the software module, 상기 하드웨어 모듈에 슬레이브 라이브러리(slave library)를 적용하는 단계,Applying a slave library to the hardware module; 상기 C함수로 설계된 상기 하드웨어 모듈을 행동적 시스템씨(behavioral SystemC)로 설계하여 합성 가능한 하드웨어 모듈로 형성하는 단계, 그리고Designing the hardware module designed with the C function as a behavioral system C to form a synthesizeable hardware module, and 상기 합성 가능한 하드웨어 모듈을 시스템씨 컴파일러로 컴파일하는 단계를 포함하며,Compiling the synthesizable hardware module with a SystemC compiler, 상기 채널은 시스템씨 랩퍼(SystemC wrapper)를 통해 형성하는 시스템씨를 기반으로 하는 하드웨어 설계 방법.The channel is a hardware design method based on System C formed by the System C wrapper (SystemC wrapper). 삭제delete 제1항에서,In claim 1, 상기 시스템씨 랩퍼는 상기 마스터 및 상기 슬레이브 라이브러리의 풀 핸드쉐이크(full-handshake) 방법으로 형성하는 시스템씨를 기반으로 하는 하드웨어 설계 방법.The system seed wrapper is based on a system seed formed by a full handshake method of the master and the slave library. 제1항에서,In claim 1, 상기 소프트웨어 모듈이 상기 하드웨어 모듈의 동작을 요청(req) 및 응답(ack) 신호를 통해 제어하는 시스템씨를 기반으로 하는 하드웨어 설계 방법.System based on the software module controlling the operation of the hardware module through a request and ack signals. 제1항에서,In claim 1, 상기 소프트웨어 모듈과 상기 하드웨어 모듈 사이에 주고 받는 신호는 객체지향적 C언어의 클래스(class)형태로 정의하여 사용하는 시스템씨를 기반으로 하는 하드웨어 설계 방법.A system design method based on a system used to define and use the signals transmitted and received between the software module and the hardware module in the form of a class of object-oriented C language. 제1항에서,In claim 1, 상기 합성 가능한 하드웨어 모듈 형성 단계는,The synthesizable hardware module forming step, 상기 C함수로 설계된 상기 하드웨어 모듈을 독립적 모듈, 메모리 인터페이스 및 메모리로 나누는 단계,Dividing the hardware module designed by the C function into an independent module, a memory interface, and a memory; 상기 독립적 모듈과 상기 메모리 인터페이스 사이에 데이터 전달을 위한 제1 포트를 선언하는 단계,Declaring a first port for data transfer between the independent module and the memory interface, 상기 메모리 인터페이스와 상기 메모리 사이에 데이터 전달을 위한 제2 포트 를 선언하는 단계Declaring a second port for data transfer between the memory interface and the memory 를 포함하는 시스템씨를 기반으로 하는 하드웨어 설계 방법.Hardware design method based on the system Mr. including. 제6항에서,In claim 6, 상기 제1 포트 및 상기 제2 포트는 상기 채널을 기반으로 지정하는 시스템씨를 기반으로 하는 하드웨어 설계 방법.And the first port and the second port are system based designations based on the channel. 제6항에서,In claim 6, 상기 독립적 모듈간의 데이터 전달은 이진(binary) 변수를 사용하여 제3 포트를 생성함으로써 전달하는 시스템씨를 기반으로 하는 하드웨어 설계 방법.Data transfer between the independent modules is based on the system Mr. system for transferring by creating a third port using a binary (binary) variable. 제8항에서,.In claim 8,. 상기 메모리에 저장된 전역변수를 사용하여 상기 독립적 모듈간의 데이터룰 전달하는 경우, 상기 메모리 인터페이스를 통해 상기 메모리에 접근함으로써 데이터를 전달하는 시스템씨를 기반으로 하는 하드웨어 설계 방법.The system design method based on the system for transferring data by accessing the memory through the memory interface when the data rule between the independent modules using the global variable stored in the memory.
KR1020050106503A 2005-11-08 2005-11-08 Method of designing hardware based on a systemc KR100779014B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020050106503A KR100779014B1 (en) 2005-11-08 2005-11-08 Method of designing hardware based on a systemc

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050106503A KR100779014B1 (en) 2005-11-08 2005-11-08 Method of designing hardware based on a systemc

Publications (2)

Publication Number Publication Date
KR20070049391A KR20070049391A (en) 2007-05-11
KR100779014B1 true KR100779014B1 (en) 2007-11-22

Family

ID=38273375

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050106503A KR100779014B1 (en) 2005-11-08 2005-11-08 Method of designing hardware based on a systemc

Country Status (1)

Country Link
KR (1) KR100779014B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100928181B1 (en) * 2007-06-22 2009-11-25 재단법인서울대학교산학협력재단 Digital system design method

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09153077A (en) * 1995-12-01 1997-06-10 Pfu Ltd Digital circuit design support system, and method for design of hardware and software of digital circuit
KR19990064824A (en) * 1999-05-12 1999-08-05 노명래 Apparatus and method for hardware/software co-emulating by supporting multi-function module
US20030005392A1 (en) 2001-06-29 2003-01-02 Matsushita Electric Industrial Co., Ltd. Method of designing a logic circuit
KR20030054061A (en) * 2001-12-24 2003-07-02 한국전자통신연구원 Method for Synthesizing Hardware-Software interface

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09153077A (en) * 1995-12-01 1997-06-10 Pfu Ltd Digital circuit design support system, and method for design of hardware and software of digital circuit
KR19990064824A (en) * 1999-05-12 1999-08-05 노명래 Apparatus and method for hardware/software co-emulating by supporting multi-function module
US20030005392A1 (en) 2001-06-29 2003-01-02 Matsushita Electric Industrial Co., Ltd. Method of designing a logic circuit
KR20030054061A (en) * 2001-12-24 2003-07-02 한국전자통신연구원 Method for Synthesizing Hardware-Software interface

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
단일칩시스템 설계 검증을 위한 가상 프로토타이핑

Also Published As

Publication number Publication date
KR20070049391A (en) 2007-05-11

Similar Documents

Publication Publication Date Title
US7509647B2 (en) Method and apparatus for modeling dataflow systems and realization to hardware
US6606588B1 (en) Design apparatus and a method for generating an implementable description of a digital system
TWI329821B (en) Transferring software assertions to hardware description language code
Ferrandi et al. A design methodology for dynamic reconfiguration: The caronte architecture
KR100779014B1 (en) Method of designing hardware based on a systemc
Tumeo et al. Prototyping pipelined applications on a heterogeneous fpga multiprocessor virtual platform
US7113901B1 (en) Reuse of hardware components
Rincón et al. Model reuse through hardware design patterns
Madl et al. Formal performance evaluation of AMBA-based system-on-chip designs
Daroui A loosely-timed tlm-2.0 model of a jpeg encoder on a checkerboard gpc
KR20080022878A (en) Method for designing jpeg2000 encoder
Baganne et al. A multi-level design flow for incorporating IP cores: Case study of 1D wavelet IP integration
Derrien et al. Automatic synthesis of efficient interfaces for compiled regular architectures
Zhenxin et al. A UML-based approach for heterogeneous IP integration
Thomas et al. Framework for development and distribution of hardware acceleration
Messaoudi et al. Hardware/software implementation of image processing systems based on ARM processor
Walstrom System-level design refinement using SystemC
Park et al. Reusable component IP design using refinement-based design environment
Danowitz Exploring abstract interfaces in system-on-chip integration
Varma A Study of FPGA Resource Utilization for Pipelined Windowed Image Computations
Mokrani et al. Assisting refinement in system-on-chip design
Gupta et al. System Design of Digital Camera Using Specfic
Chureau et al. Interface-based design of systems-on-chip using UML-RT
Fayad Co-design and communication synthesis of embedded systems for multimedia applications
SFAR et al. TRANSACTION LEVEL MODELS'STRUCTURING: FROM IDIOMS TO TLM-2.

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
FPAY Annual fee payment

Payment date: 20111020

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee