[vhdl-200x-ft] ft24 issues of implicit vs explicit ?= operator

From: John Ries <johnr@model.com>
Date: Mon Nov 15 2004 - 16:35:44 PST

The outsiding issue with the don't care is how do we specify the don't care state
and do we handle strength removal. That is making 'H' = '1' return TRUE. From
the July meeting in which we discussed this I needed to provide a list of
pro's and con's for having it done implicitly in the language vs. having
the use explicitly write the function. The attachment is my first cut at
these issues.

Regards,
   John

-- 
-- mailto: johnr@model.com     phone: (503)685-0864
--   http://www.model.com        fax: (503)685-0921
--

What are the trade of using an explicitly defined "?=" operator in the case?
statement vs. using an implicitly defined operator.

For using explicitly define "?="

  1) Maximum flexibility. Can handle strength remove like 'H' = '1'. Because
     it is what ever the user codes up.

  2) Simplicity in definition, doesn't require extra stuff in the type
     declaration
     or attributes.

  3) Can be defined in a different scope or package.
 

Against using explicitly defined "?="

  1) Meaning of case? can change depending on which packages are directly
         visible. In some cases the case? may actually not compile because ?= could
         be hidden.

  2) Differs for the case statements behavior.

  3) Computing mutual exclusiveness of choices must be deferred to elaboration
     or runtime. Could be a performance impact and problems with delayed error
     reporting.

  4) User must code up function. There is no way to insure function behaves
     correctly.

  5) It wouldn't be possible to enforce no don't care in the selector. We
     wouldn't know what it is.

  6) To determine what matches requires either comments or understanding the
     body of the "?=" function.

  7) Need to define "?=" for arrays of a scalar type also. Just defining it
     for the element type would do it.

For using an implicit definition of "?="

  1) All checks can be done at compile time.

  2) All case? for a type work the same. Unaffected by visibility and other
     packages included.

  3) Functionality is well defined and fixed.

  4) Defining information on element type automatically defines the
     information on the array of element type.

Against using implicit definition of "?=".
  
  1) Definition of type requires definition of don't care value.

  2) Strength removal either not possible or extensions to type definition
     is required.

  3) Can only do what we have already thing of.
Received on Mon Nov 15 16:35:48 2004

This archive was generated by hypermail 2.1.8 : Mon Nov 15 2004 - 16:35:49 PST