( ESNUG 291 Item 9 ) ----------------------------------------------- [5/27/98]

Subject: ( ESNUG 290 #8 )  The Differences Between RTL & Behavioral Code ?

> Behavioral code is more abstract than RTL (Register Transfer) code.
> Language constructs like loops (for), initial-blocks or events are pure
> behavioral Verilog.  RTL code is written with synthesis in mind, since
> tools like Synopsys can map RTL code much better than behavioral (most
> synthesis tools accept only a subset of an HDL).
>
>   - Lars Rzymianowicz
>     University of Mannheim                   Germany


From: Dyson.Wilkes@swi055.ericsson.se (Dyson Wilkes)

John:

It seems the discussion about RTL vs. behavioural was mixing up semantic
domains.  Most HDLs (e.g. Verilog, VHDL) were defined to have a simulation
semantic (i.e. meaning).  Their meaning was defined in terms of what a chunk
of code does when it runs in a simulator.

When the term RTL is introduced and we start to talk about synthesisable
code then we are talking about a synthesis semantic.  That is, what the code
means in terms of a hardware implementation.

Between these two we have behavioural synthesis (BS).  Given that we do not
(yet) have a standard and open synthesis semantic for RTL synthesis it is 
going to be a while before we have one for higher levels of abstraction.  The
tricky thing with BS is defining not only what we want the h/w to do be
under what constraints (e.g. how many clock cycles, when to input data
arrives, when do you want the output and in what form).

Current BS tools infer an FSM, a set of operation units and storage units. 
RTL infers registers, latches and combinational logic blocks.
Current HDLs as they were defined infer a set of interacting processes 
commicating via events on signals.

We need a new language or extensions to the existing HDLs before we can
fully exploit the possibilities of BS technology.  One key issue is
the separation of interface from function:

  // interface
  @(posedge A)
  @(posedge clock)
  @(posedge clock)
  @(posedge clock)
  // function
  b = !b

The big question is: do we extend or start afreesh.  Given the reluctance
of h/w designers to change language, I would assume we are looking at
extensions.  In a sense, imposing a synthesis semantic on a simulation
based language constitues an extension. What do the other ESNUGers think?

 - Dyson Wilkes
   Ericsson

P.S. I was highly ammused to see all the different views on the simulation
sematics of a small chunk of Verilog code.  Not one e-mailer quoted the
LRM?  I now question anyone who says Verilog is easy to learn!!



 Sign up for the DeepChip newsletter.
Email
 Read what EDA tool users really think.


Feedback About Wiretaps ESNUGs SIGN UP! Downloads Trip Reports Advertise

"Relax. This is a discussion. Anything said here is just one engineer's opinion. Email in your dissenting letter and it'll be published, too."
This Web Site Is Modified Every 2-3 Days
Copyright 1991-2024 John Cooley.  All Rights Reserved.
| Contact John Cooley | Webmaster | Legal | Feedback Form |

   !!!     "It's not a BUG,
  /o o\  /  it's a FEATURE!"
 (  >  )
  \ - / 
  _] [_     (jcooley 1991)