Results 1 
5 of
5
Causality Analysis of Synchronous Programs with Delayed Actions
, 2004
"... Synchronous programs are wellsuited for the implementation of realtime embedded systems. However, their compilation is difficult due to the paradigm that microsteps are executed in zero time. This can yield cyclic dependencies that must be resolved to generate singlethreaded code. State of the ar ..."
Abstract

Cited by 9 (6 self)
 Add to MetaCart
Synchronous programs are wellsuited for the implementation of realtime embedded systems. However, their compilation is difficult due to the paradigm that microsteps are executed in zero time. This can yield cyclic dependencies that must be resolved to generate singlethreaded code. State of the art techniques are based on a fixpoint computation at compile time that `simulates' the microstep execution. However, existing procedures do not consider delayed actions that have been recently introduced in synchronous languages. In this paper, we show that the analysis of programs with delayed actions can be performed by two fixpoint computations, one for the initialization and one for the transitions of the system. Moreover, we discuss an implementation using BDDs that is based on dual rail encoding.
Maximal causality analysis
 in: Conference on Application of Concurrency to System Design (ACSD
, 2005
"... Perfectly synchronous systems immediately react to the inputs of their environment, which may lead to socalled causality cycles between actions and their trigger conditions. Algorithms to analyze the consistency of such cycles usually extend data types by an additional value to explicitly indicate ..."
Abstract

Cited by 6 (6 self)
 Add to MetaCart
Perfectly synchronous systems immediately react to the inputs of their environment, which may lead to socalled causality cycles between actions and their trigger conditions. Algorithms to analyze the consistency of such cycles usually extend data types by an additional value to explicitly indicate unknown values. In particular, Boolean functions are thereby extended to ternary functions. However, a Boolean function usually has several ternary extensions, and the result of the causality analysis depends on the chosen ternary extension. In this paper, we show that there always is a maximal ternary extension that allows one to solve as many causality problems as possible. Moreover, we elaborate the relationship to hazard elimination in hardware circuits, and finally show how the maximal ternary extension of a Boolean function can be efficiently computed by means of binary decision diagrams.
Loops in Esterel
 ACM TRANS. EMBEDDED COMPUT. SYST
, 2005
"... Esterel is a synchronous design language for the specification of reactive systems. Thanks to its compact formal semantics, code generation for Esterel is essentially provably correct. In practice, due to the many intricacies of an optimizing compiler, an actual proof would be in order. To begin wit ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
Esterel is a synchronous design language for the specification of reactive systems. Thanks to its compact formal semantics, code generation for Esterel is essentially provably correct. In practice, due to the many intricacies of an optimizing compiler, an actual proof would be in order. To begin with, we need a precise description of an efficient translation scheme, into some lowerlevel formalism. We tackle this issue on a specific part of the compilation process: the translation of loop constructs. First, because of instantaneous loops, programs may generate runtime errors, which cannot be tolerated for embedded systems, and have to be predicted and prevented at compile time. Second, because of schizophrenia, loops must be partly unfolded, making C code generation as well as logic synthesis nonlinear in general. Clever expansion strategies are required to minimize the unfolding. We first characterize these two difficulties w.r.t. the formal semantics of Esterel. We then derive very efficient, correctbyconstruction algorithms to verify and transform loops at compile time, using static analysis and program rewriting techniques. With this aim in view, we extend the language with a new gotopause construct, which we use to encode loops. It behaves as a noninstantaneous jump instruction compatible with concurrency.
An Efficient Algorithm for the Analysis of Cyclic Circuits
 In ISVLSI ’06: Proceedings of the IEEE Computer Society Annual Symposium on Emerging VLSI Technologies and Architectures
, 2006
"... Compiling highlevel hardware languages can produce circuits containing combinational cycles that can never be sensitized. Such circuits do have welldefined functional behavior, but wreak havoc with most logic synthesis and timing tools, which assume acyclic combinational logic. As such, some sort ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
Compiling highlevel hardware languages can produce circuits containing combinational cycles that can never be sensitized. Such circuits do have welldefined functional behavior, but wreak havoc with most logic synthesis and timing tools, which assume acyclic combinational logic. As such, some sort of cycleremoval step is usually necessary for handling these circuits. We present an algorithm able to quickly and exactly characterize all combinational behavior of a cyclic circuit. It iteratively examines the boundary between gates whose outputs are and are not defined and works backward to find additional input patterns that make the circuit behave combinationally. It produces a minimal set of sets of assignments to inputs that together cover all combinational behavior. This can be used to restructure the circuit into an acyclic equivalent, report errors, or as an optimization aid. Experiments show our algorithm runs several orders of magnitude faster than existing ones on reallife cyclic circuits, making it useful in practice. 1
Transforming Cyclic Circuits Into Acyclic Equivalents
"... Abstract—Designers and highlevel synthesis tools can introduce unwanted cycles in digital circuits, and for certain combinational functions, cyclic circuits that are stable and do not hold state are the smallest or most natural representations. Cyclic combinational circuits have welldefined functi ..."
Abstract
 Add to MetaCart
Abstract—Designers and highlevel synthesis tools can introduce unwanted cycles in digital circuits, and for certain combinational functions, cyclic circuits that are stable and do not hold state are the smallest or most natural representations. Cyclic combinational circuits have welldefined functional behavior yet wreak havoc with most logic synthesis and timing tools, which require combinational logic to be acyclic. As such, some sort of cycleremoval step is necessary to handle these circuits with existing tools. We present a twostage algorithm for transforming a combinational cyclic circuit into an equivalent acyclic circuit. The first part quickly and exactly characterizes all combinational behavior of a cyclic circuit. It starts by applying input patterns to each input and examining the boundary between gates whose outputs are and are not defined to find additional input patterns that make the circuit behave combinationally. It produces sets of assignments to inputs that together cover all combinational behavior. This can be used to report errors, as an optimization aid, or to restructure the circuit into an acyclic equivalent. The second stage of our algorithm does this restructuring by creating an acyclic circuit fragment from each of these assignments and assembles these fragments into an acyclic circuit that reproduces all the combinational behavior of the original cyclic circuit. Experiments show that our algorithm runs in seconds on reallife cyclic circuits, making it useful in practice. Index Terms—Acyclic circuits, combinational logic, constructiveness, cyclic circuits, resynthesis. I.