On 24 Jul 2014, at 5:08 am, tgingold@free.fr wrote: > My understanding: > > >> As per section (IEEE-Std 1076-2008) >> >> 4.6 Resolution functions >> >> A resolution function is a function that defines how the values of >> multiple sources of a given signal are to be >> resolved into a single value for that signal. > > This is an informal explanation. I understand 'multiple' as one or more. > >> And as per section >> >> 14.7.3.2 Driving values > > [...] > > This section describes the semantic and how resolution functions are called. > >> Please clarify, does the resolution function be applied on a resolved >> signal when it is driven by only one source? > > So yes. Also Look to the resolution function for std_logic found in package std_logic_1164: ------------------------------------------------------------------- -- resolution function ------------------------------------------------------------------- constant resolution_table : stdlogic_table := ( -- --------------------------------------------------------- -- | U X 0 1 Z W L H - | | -- --------------------------------------------------------- ('U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U'), -- | U | ('U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X'), -- | X | ('U', 'X', '0', 'X', '0', '0', '0', '0', 'X'), -- | 0 | ('U', 'X', 'X', '1', '1', '1', '1', '1', 'X'), -- | 1 | ('U', 'X', '0', '1', 'Z', 'W', 'L', 'H', 'X'), -- | Z | ('U', 'X', '0', '1', 'W', 'W', 'W', 'W', 'X'), -- | W | ('U', 'X', '0', '1', 'L', 'W', 'L', 'W', 'X'), -- | L | ('U', 'X', '0', '1', 'H', 'W', 'W', 'H', 'X'), -- | H | ('U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X') -- | - | ); function resolved (s : STD_ULOGIC_VECTOR) return STD_ULOGIC is variable result : STD_ULOGIC := 'Z'; -- weakest state default begin -- the test for a single driver is essential otherwise the -- loop would return 'X' for a single driver of '-' and that -- would conflict with the value of a single driver unresolved -- signal. if (s'length = 1) then return s(s'low); else for i in s'range loop result := resolution_table(result, s(i)); end loop; end if; return result; end function resolved; And from 4.6, para 4: Resolution functions are implicitly invoked during each simulation cycle in which corresponding resolved signals are active (see 14.7.3.1). Each time a resolution function is invoked, it is passed an array value, each element of which is determined by a corresponding source of the resolved signal, but excluding those sources that are drivers whose values are determined by null transactions (see 10.5.2.2). Such drivers are said to be off. ... -- A signal with no active drivers doesn't invoke a resolution function nor are inactive drivers presented (the length of that array can be dynamic). As long as there's one active driver the resolution function is going to get called. -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.Received on Wed Jul 23 17:54:33 2014
This archive was generated by hypermail 2.1.8 : Wed Jul 23 2014 - 17:54:37 PDT