SYRF Project

Task 6.1.1: "VHDL-Verilog"

Abstract of deliverable 6.1.1

Back to the SYRF Home Page



Approach:

We have explored the generation of VHDL-RTL code from Signal source specification. VHDL-RTL is the Register Transfer Level of VHDL, i.e., a low level code in the VHDL design suite. This requires that Signal itself is used to actually specify a synchronous architecture at RTL level. This is achieved by using the notion of a Signal process as a direct counterpart of a hardware component. >From this RTL architecture specification in Signal, the generation of VHDL-RTL is immediate, by the way of performing a direct mapping from the Signal-RTL architecture down to the VHDL-RTL architecture.

Simulations, verifications, optimizations, and exploration of the design space, are thus performed within the Signal environment itself, before VHDL code is generated. Signal processes, specified at a functional level, are substituted by their refined Signal models of hardware components, or alternatively by a VHDL-RTL component, imported within Signal as a black-box module equipped with its interface behavioral description. Signal-V4 provides means for describing such interfaces, using clock equations and directed graphs labelled by clocks (the notion of dependency graph labelled by clocks is described in detail in task task 4.1).

As Signal clocks are an abstract notion, of higher level than the corresponding notion of clock in hardware, part of the translation from Signal to VHDL consists in rewriting the Signal specification into Signal itself, but in such a way that all Signal clocks are now represented as boolean signals synchronized to a unique master clock, which is also the fastest one. In other words, every signal x is transformed into a strobed signal <h(x),v(x)> which is synchronous with a signal clk that represents the circuit main clock. In the pair <h(x),v(x)>, h(x) represents the boolean clock of x, it is a boolean signal with clock clk which takes the value true if and only if x is present; then, v(x) is a signal which carries the actual value of x when the latter is present, and otherwise carries a don't care. As optimizations in Signal are based on a clock and dependency calculus, prior to performing optimizations, clocks can be attached, either to signals, or alternatively to hardware components.

Achieved Results:

A pre-prototype of translator implementing this approach has been developed, which takes Signal.tra intermediate format as an input, and produces VHDL-RTL as an output. This translator, however, has limitations, as the following features of Signal are not supported:

Some small or medium size examples of circuits have been designed in this way.

Publications:

  1. A.A. Kountouris and C. Wolinski
    A method for the generation of HDL code at the RTL level from high-level format specification language
    Proceedings of MWSCAS'97, IEEE Computer Society Press, Sacramento, Aug. 1997

  2. M. Allemand, F. Bodin, A.A. Kountouris, P. Le Guernic, J-C. Le Lann, A. Seznec and C. Wolinski
    A synchronous approach for hardware design
    IRISA Research Report 1131, Oct. 1997