+ [ FREQ: <спецификация частоты повторения>]
+ [ GENERAL: <общая спецификация>]
Здесь приняты следующие обозначения:
<количество путей> – количество путей распространения сигналов от входных к выходным узлам; при этом количество входов путей должно быть равно количеству выходов. С каждым путем вход–выход ассоциируется задержка, вычисляемая по определенным правилам;
<количество входов разрешения> – спецификация тристабильных узлов, имеющихся в примитиве (может быть равным нулю). Тристабильные узлы используются в секциях TRISTATE;
<количество внутренних узлов> – внутренние узлы используются в выражениях, определяющих задержки, но они не входят в пути вход–выход (может быть равным нулю).
Проиллюстрируем взаимосвязь различных узлов на примере следующего примитива (рис. 6.17):
U1 PINDLY(4, 0, 3) $G_DPWR $G_DGND
+ IN1 IN2 IN3 IN4
+ REF1 REF2 REF3
+ OUT1 OUT2 OUT3 OUT4
+ IO_MODEL D0_GATE
+ PINDLY:
+ . . . .
Рис. 6.17. Правила назначения задержек |
На рис. 6.17 имеются четыре буфера, включенные между узлами IN1–OUT1, ..., IN4–OUT4, и три дополнительных узла REF1, REF2, REF3, состояния которых влияют на значения задержек, определяемых с помощью трех правил. Причем узлы REF1 и REF2 влияют на расчет задержек по Правилу 2, а узел REF3 – по Правилу 1 и Правилу 3. Из рис. 6.17 следует также, что задержки сигналов OUT2 и OUT3 вычисляются по одному и тому же правилу. Перейдем к описанию составления правил определения задержек.
Секция BOOLEAN. С помощью <булевского назначения> определяются промежуточные переменные, которые могут быть использованы в <определении задержки>. Секция BOOLEAN может быть включена на любой строке в описании примитива PINDLY. Выражение <булевское назначение> имеет вид
<булевская переменная> = { <булевское выражение> }
Имя <булевская переменная> составляется по тем же правилам, что имя узла.