( Post 80  Item 1) ----------------------------------------------------------

From: brier@e5sb.osdhw.syr.ge.com (brier)
Subject: Synopsys & Vantage's VHDL Incompatabilities


Along the lines of Mark Gonzales' Post 79 Item 1, we've some VHDL issues, too!

Here are a couple of incompatabilities that we have found in using Synopsys and 
Vantage VHDL products.

  (For those of you who are used to working in Verilog, you'll find in VHDL
   that everything must be declared as opposed to what one is used to doing in 
   Verilog.  Bug # 1 is an example of all the typing that must be done in 
   VHDL.  The first part is the original type declaration, the second is 
   bundling it into a record (signal bundle) so you can use it.)


1.  Type declarations being used to type a record, then being used within that
    record elsewhere in the code.

	These are declarations in package "commmon_package":

           type UNIT_ID_TYPE is (H32, X1, X2, X3, X4, X5, X6);
           type PBOWN_TYPE is (H32, EXT); -- P12(i960) or EXTernal owns bus


	Later there is a declaration of a record using the above types an 
	E/A pair.

          type MONITOR_BUS_TYPE is record
            UNIT_ID   : UNIT_ID_TYPE;
            TIME_TAG  : TIME;
            INSTRUCTION: READ_WRITE_TYPE;
            ADDRESS   :  STD_LOGIC_VECTOR(31 DOWNTO 0);-- ADDRESS/DATA
            DATA      :  DATA_TYPE;
            WORD_COUNT:  WORD_COUNT_TYPE;
          end record;


	The following failed during compilation in Synopsys, but was OK in 
	Vantage where the signal assignment is made for the H32 variable in
	architecture test_a.vhdl.

           MONITOR_BUS : out  MONITOR_BUS_TYPE :=
             ( UNIT_ID   => H32,
             TIME_TAG  => 0 ns,
             INSTRUCTION => NOP,
             .
             .
             .

	This has been reported to Synopsys, but I haven't received any
	resolution.


2.  When a signal is passed through to a proceedure, but not through the calling
    declaration ( i.e.  procedure dog (a, b, c).... and the value d is in the
    calling code, but used within dog.  First it is visible, and secondly you
    would assume that section 4.3.3 of the LRM would apply.  Well Vantage looks
    at this as prohibiting attributes as discussed in 4.3.3, but Synopsys allows
    attributes.  I have received an explanation from both, and it looks as 
    though the LRM is ambiguous.

         example:  wait until (d'delayed = '1' and rising_edge(clk));

    This fails in Vantage but is OK in Synopsys.


3.  Another issue is that in some situations Synopsys is more demanding and
    requires type casting more often than Vantage.  We have developed code that
    will work in Vantage only to be required to type cast the same relational
    expressions to have them work in Synopsys.


Most of these issues are not major show stoppers, the root is that it appears 
for the near future, that there will be differences in the way the LRM is 
implemented by each vendor.  It could be worse, there are other VHDL simulators
that would not fit nearly as well.

VHDL is FUNNNN !

 Dave Brier
 GE Syracuse
 brier@e5sb.osdhw.syr.ge.com


 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)