Abstract
Esterel is an imperative synchronous language well-adapted to control-intensive systems. When an Esterel program is translated to a circuit, the synchronizer of a parallel statement may be executed more than once in a clock; the synchronizer is called schizophrenic. Existing compilers cure the problems of schizophrenic parallel synchronizers using logic duplications. This paper proposes the conditions under which a synchronizer causes no problem in circuits when it is executed more than once in a clock. In addition we design a detection algorithm based on those conditions. Our algorithm detects schizophrenic parallel synchronizers that have to be duplicated in Esterel source codes so that compilers can save the size of synthesized circuits
Esterel이라는 절차형(imperative) 동기(synchronous) 언어로부터 회로를 합성(synthesis)할 때, 하나의 동기장치(synchronizer)가 한 클럭에 중복사용되는 문제(schizophrenic parallel synchronizer)가 발생할 수 있다. 기존 컴파일러는 동기장치가 중복사용될 경우 동기장치를 복제하여 이 문제를 해결하고 있다. 본 논문은 동기장치가 중복사용되더라도 회로상/기능상 문제가 없는 조건을 제시하고, 이를 기반으로 소스코드를 분석하여 복제해야만 하는 동기장치를 찾아주는 알고리즘을 제안한다. 이 알고리즘은 컴파일러가 중복사용되는 동기장치들 중에서 꼭 복제해야만 하는 것을 알 수 있게 해 주어, Esterel 프로그램을 좀 더 작은 회로로 합성할 수 있도록 한다.