Table of Contents

Sequential Statements

Simultaneous Procedural Statement

procedural [is]
  procedural_declarative_part;
begin
  procedural_statement_part;
end procedural;

D/A-converter

architecture SIMPLE of DAC is
begin
   procedural
      variable conv: real = 0.0;
   begin
      for i in digital_vek'right to digital_vek'left loop
         if digital_vek(i) = '1' then
            conv := real(2**i) + conv;
         end if;
      end loop;
      analog := conv;
   end procedural;
end architecture SIMPLE;

Notes

Procedural statement are at the architecture body. The syntax is:

 procedural [is]
      {procedural_declarative_part};
 begin
      {sequential_statements};
 end procedural;

The procedural_declarative_part consists of constants, variables, (sub-) types, attributes… The simultaneous statements are executed sequential. Except of wait and signal assignments, all sequential statements are allowed.

Break

Break List

    q == C * v;
    i == q'Dot;
break for q use v => init when init/= real'low;
 
    i == C * v'Dot:
break v => init when init/= real'low;
break a => 0.0;
 
break x => 1.5, y => 0.0, z => 20;

Notes

One of the most important new data types is break. It announces a discontinuity in the solution of a DAE. To go on after a discontinuity, the quantities get re - initialized for the next continuous interval. The break follows after an event on a signal or when some condition becomes true. The syntax is:

 break [break_list] [when condition];
 break_list ::= break_element(s)
 break_element ::= [selector_clause] {quantity_name} => {expression}
 selector_clause ::= for {quantity_name} use

Exist a condition for the break, the break is sensitive on it. Exists no condition, the quantities of the break get initialized for the simulation start. The selector clause quantity is the quantity the discontinuity may be. It must be of the type Q'Dot or Q'Integ. Exists no selector clause, it counts for the quantities of the break_element(s), too. The type of the expression must be of the same type like the initializing quantity.