Re: [vhdl-200x] Clocked Shorthand Proposal - Need Consensus

From: Jim Lewis <Jim@synthworks.com>
Date: Thu Mar 27 2014 - 13:26:39 PDT
Hi All,
   @ comes from PSL.  Quoting IEEE 1850-2010:

       6.2.1.2 Clocked FL properties
       The FL clock operator operator(@), shown in Syntax 6-18, provides a way to clock an FL Property.
          FL_Property ::= FL_Property @ Clock_Expression

       The first operand is the FL Property to be clocked. The second operand is a Boolean expression with which
       to clock the FL Property.

       The @ operator specifies that the clock expression that is its right operand defines the clock context of its
       left operand.

Hence with '@', we are not introducing a new operator, just recycling the one from PSL.

Personally I prefer expressive code and am not fond of either '@' or "after" since they do not mention Clk.  Who knows though, if the "C/C++" style behavioral synthesis takes hold, maybe we no longer 
need to specify clock in our designs.  Just waiting for someone to do a decent VHDL behavioral synthesis tool.

OTOH, I am not convinced we need any syntax for this.  When you start looking at adding reset, we do not have anything
that is all that much better than:
Q <= D when rising_edge(Clk) ;
   Q <= '0' when not nReset else D when rising_edge(Clk) ;
   Q <= '0' when not nReset and rising_edge(Clk) else D when rising_edge(Clk) ;

Ok, so you loose the pipelining, however, maybe that is what we need the operator for.

If I want more concise, but less expressive code, I can always switch to using a procedure:
   Reg(Clk, D, Q) ;
   RegAr(Clk, not nReset, D, Q) ;
   RegSr(Clk, not nReset, D, Q) ;
   RegR(Clk, not nReset, D, Q) ; -- default reset style choosen by selecting/compiling a particular package body.

   RegPipe(Clk, D, Q, 5) ;

Some of the reset issues would be simplified if synthesis tools provided a mechanism for shifting reset styles.

Jim

-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jim Lewis
VHDL Training Expert, SynthWorks
IEEE 1076 VHDL Working Group Chair
Open Source VHDL Verification Methodology (OSVVM), Chief Architect and Co-founder

1-503-320-0782
Jim@SynthWorks.com
http://www.SynthWorks.com

VHDL Training on leading-edge, best coding practices for hardware design and verification.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Thu Mar 27 13:26:48 2014

This archive was generated by hypermail 2.1.8 : Thu Mar 27 2014 - 13:27:05 PDT