Автоматизированное проектирование. Норенков И.П. - 176 стр.

UptoLike

Составители: 

%*#$A&,& +($*,#&($"!)&P !"#$%!#&'&($"!))KH :&:#*%5@!"! 6
если между подтипами нет взаимосвязи, выражаемой логической функцией (в частности, ИЛИ или И вершина-
ми), то указание в а1 факта, что это супертип, не требуется; достаточно упоминание о подчиненности подтипов в их дек-
ларациях в виде subtype of (a1);
перед декларацией supertype записывается зарезервированное слово abstract, если вершине а1 не соответству-
ют какие-либо экземпляры сущности, т.е. если а1 введена только для указания общих для подтипов атрибутов;
у одного подтипа может быть больше одного супертипа; подтип наследует атрибуты всех своих супертипов; ес-
ли в декларациях супертипов используются одинаковые идентификаторы атрибутов, то ссылка на них должна быть в ви-
де составного идентификатора, например, a1.size.
Пример:
entity device
supertype of (oneof (transistor, diode));
(* device есть ИЛИ вершина И-ИЛИ-дерева с двумя альтернативами transistor и diode*)
end_entity;
entity transistor —
subtype of (device);
b: real;
end_entity;
entity diode
subtype of (device);
r: real;
end_entity;
$@8:0+A.0+>. Ограничения, накладываемые на экземпляры сущности, выражаются с помощью 0")('4 (rules).
Правила могут быть общими или локальными.
Описание правила, общего для ряда сущностей, начинается со служебного слова rule, далее следуют идентифика тор пра-
вила, слу ж ебное слово for, ссылки на с ущности, на которые правило распространяется, и, наконец, собственно ограничения.
Локальные правила могут описывать ключевые атрибуты (uniqueness rules) или выражать ограничения, накладыва-
емые на атрибуты некоторой сущности (domain rules). Например, если ключевой атрибут сущности Z есть составной ат-
рибут X.Y, или, другими словами, одному сочетанию значений атрибутов X и Y должен соответствовать единственный эк-
земпляр сущности Z, то
entity Z;
X: integer;
Y: string;
unique
X,Y;
end_entity;
Ограничение на атрибуты некоторой сущности выражается с помощью правила в теле этой сущности. Ограничение
записывается после слова where в виде выражения, значениями которого могут быть true, false или unknown. Допусти-
мыми значениями атрибута будут только те, для которых выражение принимает значение true. Например, можно записать,
что длина вектора vect = (x,y,z) должна быть равна единице, в виде правила cons:
entity vect;
x,y,z: real;
where
cons: x**2 + y**2 + z**2 = 1.0;
end_entity;
"84=.5<81 + H<07=++. !"#=$-7". и E7*%='' служат для описания процедурной части модели. Как и в алго-
ритмических языках, используется концепция формальных и фактических параметров. Описание процедуры начинается
с служебного слова procedure, за которым следуют идентификатор процедуры и описание формальных параметров в круг-
лых скобках. Пример описания заголовка процедуры:
procedure eq (x,y: real; n: integer; var result: route);
Аналогично описываются функции, их отличает только описание в заголовке типа ре зультата после закрываю-
щей скобки:
function log (a: real; m: integer): real;
&.+.)$(*),$". !"#$%!#&'&($"!))$* +($*,#&($"!)&*
176
 5@!"! 6                                          %*#$A&,&   +($*,#&($"!)&P !"#$%!#&'&($"!))KH :&:#*%

       — если между подтипами нет взаимосвязи, выражаемой логической функцией (в частности, ИЛИ или И вершина-
ми), то указание в а1 факта, что это супертип, не требуется; достаточно упоминание о подчиненности подтипов в их дек-
ларациях в виде subtype of (a1);
       — перед декларацией supertype записывается зарезервированное слово abstract, если вершине а1 не соответству-
ют какие-либо экземпляры сущности, т.е. если а1 введена только для указания общих для подтипов атрибутов;
       — у одного подтипа может быть больше одного супертипа; подтип наследует атрибуты всех своих супертипов; ес-
ли в декларациях супертипов используются одинаковые идентификаторы атрибутов, то ссылка на них должна быть в ви-
де составного идентификатора, например, a1.size.
       Пример:

      entity device
      supertype of (oneof (transistor, diode));
      (* device есть ИЛИ вершина И-ИЛИ-дерева с двумя альтернативами transistor и diode*)
      end_entity;
      entity transistor —
      subtype of (device);
      b: real;
      end_entity;
      entity diode
      subtype of (device);
      r: real;
      end_entity;

      $@8:0+A.0+>. Ограничения, накладываемые на экземпляры сущности, выражаются с помощью 0")('4 (rules).
Правила могут быть общими или локальными.
       Описание правила, общего для ряда сущностей, начинается со служебного слова rule, далее следуют идентификатор пра-
вила, служебное слово for, ссылки на сущности, на которые правило распространяется, и, наконец, собственно ограничения.
       Локальные правила могут описывать ключевые атрибуты (uniqueness rules) или выражать ограничения, накладыва-
емые на атрибуты некоторой сущности (domain rules). Например, если ключевой атрибут сущности Z есть составной ат-
рибут X.Y, или, другими словами, одному сочетанию значений атрибутов X и Y должен соответствовать единственный эк-
земпляр сущности Z, то

      entity Z;
      X: integer;
      Y: string;
      unique
      X,Y;
      end_entity;

      Ограничение на атрибуты некоторой сущности выражается с помощью правила в теле этой сущности. Ограничение
записывается после слова where в виде выражения, значениями которого могут быть true, false или unknown. Допусти-
мыми значениями атрибута будут только те, для которых выражение принимает значение true. Например, можно записать,
что длина вектора vect = (x,y,z) должна быть равна единице, в виде правила cons:

      entity vect;
      x,y,z: real;
      where
      cons: x**2 + y**2 + z**2 = 1.0;
      end_entity;

      "84=.5<81 + H<07=++. !"#=$-7". и E7*%='' служат для описания процедурной части модели. Как и в алго-
ритмических языках, используется концепция формальных и фактических параметров. Описание процедуры начинается
с служебного слова procedure, за которым следуют идентификатор процедуры и описание формальных параметров в круг-
лых скобках. Пример описания заголовка процедуры:

      procedure eq (x,y: real; n: integer; var result: route);

      Аналогично описываются функции, их отличает только описание в заголовке типа результата после закрываю-
щей скобки:

      function log (a: real; m: integer): real;

 &.+.)$(*),$" . !"#$%!#&'&($"!))$*                  +($*,#&($"!)&*                                              176