home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #19 / NN_1992_19.iso / spool / comp / lang / vhdl / 431 < prev    next >
Encoding:
Internet Message Format  |  1992-08-29  |  2.4 KB

  1. Path: sparky!uunet!sun-barr!ames!data.nas.nasa.gov!taligent!apple!veritas!amdcad!dvorak.amd.com!dvorak!marvin
  2. From: marvin@dvorak.amd.com (Dean Marvin)
  3. Newsgroups: comp.lang.vhdl
  4. Subject: Re: VHDL Problem - Procedures & Processes
  5. Message-ID: <1992Aug28.181028.11411@dvorak.amd.com>
  6. Date: 28 Aug 92 18:10:28 GMT
  7. References: <1992Aug25.172750.11830@babbage.ece.uc.edu> <DLB.92Aug27103946@fanny.wash.inmet.com>
  8. Sender: usenet@dvorak.amd.com (Usenet News)
  9. Reply-To: marvin@amd.com (Dean Marvin)
  10. Followup-To: comp.lang.vhdl
  11. Distribution: usa
  12. Organization: Advanced Micro Devices
  13. Lines: 64
  14.  
  15. In article <1992Aug25.172750.11830@babbage.ece.uc.edu>
  16. pmamtora@pumpkin.ece.uc.edu (Paddy Mamtora) writes:
  17.  
  18.    2. In a procedure, can you assign to signals that are declared
  19.    to be ports of the entity ? ( without declaring any 
  20.    formal parameters for the signals in the procedure declaration) 
  21.  
  22. In article <DLB.92Aug27103946@fanny.wash.inmet.com>
  23. dlb@hudson.wash.inmet.com (Dave Barton) replies:
  24.  
  25. > Sure.  The procedure must have visibility over the port; i.e., it must
  26. > be declared in the entity or an architecture of the entity that
  27. > declares the formal port.  A procedure in a package does not qualify.
  28.  
  29. I don't agree.  Any procedure declared in the architecture declaration
  30. region may be called by any process in the architecture.  If multiple
  31. processes call the same procedure that generates a signal assignment,
  32. then the signal value is not deterministic (a definite no no in the
  33. philosophy of VHDL).
  34.  
  35. As a counter example:
  36.  
  37. ENTITY proc IS
  38.     PORT (
  39.     a : out bit
  40.     );
  41. END proc;
  42.  
  43. ARCHITECTURE behav OF proc IS
  44.  
  45.     PROCEDURE assign_a (val : bit) IS
  46.     BEGIN
  47.         a <= val;
  48.     END assign_a;
  49.  
  50. BEGIN
  51.  
  52.     pa : PROCESS
  53.     BEGIN 
  54.         assign_a('0');
  55.         wait;
  56.     END PROCESS pa;
  57.  
  58.     pb : PROCESS
  59.     BEGIN 
  60.         assign_a('1');
  61.         wait;
  62.     END PROCESS pb;
  63.     
  64. END behav;
  65.  
  66. If this were allowed, depending on the order in which the processes were
  67. elaborated, the value scheduled to port a could be different.  Your
  68. compiler should flag this as an error and disallow the assignment.
  69.  
  70. It is possible to assign a signal if the procedure doing the assignment
  71. is declared within the declarative region of a specific process.  In that case 
  72. there is no ambiguity.
  73.  
  74. For a resolved signal... we could argue about whether or not the above
  75. example should be allowed.  My compiler says no.
  76.  
  77. Dean.
  78. marvin@amd.com
  79.