초록
Esterel은 명령형 동기언어로서, 많은 경우에 메모리, 캐쉬 컨트롤러, 버스 인터페이스 등을 개발하는데 사용하고 있다. Esterel 프로그램은 특정 상황에서 한 문장이 한 단위시간 안에 2번 이상 수행될 수 있다. 이러한 문장을 하드웨어로 컴파일 할 경우, 하나의 회로(circuit)가 한 클럭 안에 2번 수행되어 정상적으로 동작하지 않을 수 있다. 이러한 문제를 회로 중복사용(schizophrenia) 문제라고 부른다. 기존연구에서는 지역신호선언문과 병렬문만이 회로 중복사용 문제를 유발할 수 있다고 보았다. 하지만, 예외선언문에 의해 생성되는 제어 신호와 출력문이 만들어내는 데이터 신호도 회로 중복사용 문제를 유발할 수 있다. 특히, 출력문의 경우에는 기존 회로 중복사용 문제에 대한 해결책들의 출발점인 단순한 루프 펼치기(loop unrolling)로는 해결되지 않았다. 본 논문에서는 예외선언문과 출력문이 만들어 내는 2가지 새로운 회로 중복사용 문제들을 열거하고 회로 중복사용 문제를 재정의 하였다.
Esterel is an imperative synchronous language that is used to develop memories, cache controllers, bus interfaces, and so on. An Esterel statement is called schizophrenic if it is executed more than once in an instant. A schizophrenic statement may cause problems when it is translated to hardware circuits; a circuit performs more than one reaction in a clock. Previous works claim that only local signal declarations and parallel statements may cause schizophrenic problems. However, control signals produced by a trap statement or data signals used by emit statements can cause schizophrenia. They are new schizophrenic patterns. Especially, schizophrenic problems caused by emit statements cannot be solved by a loop unrolling technique that is the key idea of previous curing techniques for schizophrenic problems. In this paper, we introduce and define the two schizophrenic problems.