hardware/software codesign for embedded systems consists of following steps : high level specification, high level specification language translation, cosimulation, formal verification, design partitioning, software synthesis, hardware synthesis, and rapid prototyping.
The rapid prototyping plays a crucial role in the overall codesign flows. Using rapid prototyping, we can validate the specification and provide developers with feedback during the design process. It is mixture of the software synthesis and the hardware synthesis.
There exist physical and logical gaps between hardware and software. We need a communication mechanism which delivers data between hardware and software. This mechanism is called as interface which consists of the device driver and the hardware controller.
In the earlier design frameworks, the interface generation is manually done by the hard-ware designers. It is tedious and error-prone because the hardware designers have to know both characteristics of the hardware and software. We design an interface generator from high level specification by modeling the target architecture.
In this paper, we present Push-Pull Interface. This is a realistic communication model which can express interrupt, polling, and sensing mechanisms in our codesign framework. We call the transfered data between hardware and software as communication events. Our Push-Pull Interface delivers communication events between two extended finite states machines(EFSMs) in the logical layer, and provides library functions which connect C and Esterel(or Verilog HDL) in the specification layer. From these two layers, our Hardware INterface GEneartor(HINGE) system generates a device driver(in C), a driver API(in C) for Linux and a controller logic(in Verilog HDL) for ALTERA Cyclone FPGA chip. Our contribution in this paper is the automatic interface generation from the high level specification. In addition, we provide the run-time state-checking interface validating the high level specification. Other interface generation systems do not have any run-time constraint checking. With the run-time state-checking, software designers can easily detect hardware misuses.
Our HINGE system reduces mistakes and errors that can be produced when a programmer manually implements the interface between hardware and software.
임베디드 시스템이 널리 사용되고 관련 기술들의 빠른 발전에 따라, 빠른 시간 안에 안 전하면서 다양한 기능의 임베디드 시스템을 개발할 수 있는 능력이 중요시 되고 있다. 이 를 위해서 하드웨어-소프트웨어 동시 설계라는 개념이 도입되었고, 이는 상위 수준의 고급 언어로부터 하드웨와 소프트웨어를 동시에 만들어 빠른 시간안에 안전한 제품을 만들고 자 하고 있다.
따라서 동시 설계 과정에서 빠른 원형을 제작하여 임베디드 시스템의 특성을 검증하고 테스트하는 것이 중요하다. 이러한 원형을 제작하기 위해서는 소프트웨어와 하드웨어를 연 결해 주는 부분이 중요하다. 이를 인터페이스라고 하는데 일반적으로 하드웨어 제어기와 장치 드라이버로 구성되어 있다. 과거에는 이러한 인터페이스를 하드웨어 설계자가 손수 제작하였다. 하지만 우리는 목표 시스템을 모델링하여 일반적인 인터페이스 모델을 제시 하였다. 이를 바탕으로 자동으로 하드웨어와 소프트웨어를 연결시켜 줄 수 있는 상태 검사 푸시-풀 인터페이스를 생성할 수 있게 되었다.
본 논문에서는 하드웨어와 소프트웨어의 기본 통신 방법인 인트럽트와 폴링 그리고 센 싱등을 표현 할 수 있는 푸시-풀 인터페이스를 제안하였다. 이는 상위 수준의 디자인 설계 시 두개의 확장된 유한 상태 기계를 연결 시켜주는 표현법을 제공하고, 이를 바탕으로 실제 시스템 설계에 사용되는 프로그래밍 언어를 연결시켜 주는 표현법을 제공한다. 본 논문에서 구현된 시스템은 상위 수준의 인터페이스 표현을 통해서 실제 임베디드 시스템에서 바로 사용할 수 있는 리눅스용 디바이스 드라이버와 콘트롤러 로직을 자동으로 생성해 준다. 또한 상위 수준에서 표기한 임베디드 시스템의 제약 조건과 상태 등을 실행 시간에 검사해 줄 수 있는 방법도 함께 제공한다.
본 시스템을 통해서 과거에는 하드웨어 설계자에 의해 만들어진 수많은 버그와 에러를 가지고 있던 인터페이스를 자동으로 생성함으로써 시간과 비용 뿐 아니라 많은 문제점들 을 해결할 수 있는 상태 검사 푸시-풀 인터페이스를 생성 할 수 있게 되었다.