SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
Библиотека VITAL

                Проектирования систем на основе
                    программируемой логики


                   д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ
2/22/2011                  e-mail: hahanova@mail.ru,      1
Цель лекции и содержание
 Цель – изучить принципы построения
  моделей вентильного и dataflow
  уровней
 План
     1.     История и причины создания
     2.     Структура библиотеки
     3.     Совместимость моделей Level 0
     4.     Совместимость моделей Level 1



2/22/2011            д.т.н. Хаханова И.В, каф.АПВТ,   2
                     ХНУРЭ e-mail: hahanova@mail.ru
1. Создание VITAL(1)
VITAL - VHDL Initiative Towards ASIC Libraries
Идея создания VITAL-библиотек возникла в
 1992 г на международном форуме
 пользователей VHDL(VHDL International
 Users' Forum).
Причины создания:
      Пользователям были нужны ASIC библиотеки в их
       VHDL-приложениях
      Разработчики ASIC нуждались в единой
       стандартной ASIC-библиотеке
      Разработчики EDA-сред нуждались в средстве
       помогающем использовать VHDL для
       возрастающего рынка ASIC
2/22/2011         д.т.н. Хаханова И.В, каф.АПВТ,   3
                  ХНУРЭ e-mail: hahanova@mail.ru
1. Создание VITAL (2)
Стандарт
      IEEE P1076.4: Timing Methodology (VITAL)


Разработка VITAL стандарта выполнялась на
 основе существующего:
      Формат передачи задержек Stantard Delay
       File(SDF)
      некоторые элементы из пакета Std_Timing группы
       VHDL Technology Group, а также специальные
       временные и поведенческие техники,
       предложенные Rian&Rian(фирма)
      существующие ASIC библиотеки
2/22/2011          д.т.н. Хаханова И.В, каф.АПВТ,       4
                   ХНУРЭ e-mail: hahanova@mail.ru
2 Элементы VITAL (1)
        “VITAL-совместимые модели
               ”(“VITAL compliant models”)
        “VITAL-совместимые программы моделирования
               ”(“VITAL compliant simulators”).

        Пять областей стандартизации VITAL:
               VITAL_TIMING
            •      Пакет, содержащий типы данных и подпрограммы для разработки
                   временных моделей макроячеек.
               VITAL_PRIMITIVE
            •      Пакет определяет множество обычно используемых комбинационных
                   примитивов.
               VITAL_SDFMAP
            •      Правила преобразования SDF данных в значения VHDL Generic -
                   констант для VITAL моделей.
               VITAL compliant Level 0 Models
            •      Правила описания интерфейса
               VITAL compliant Level 1 Models
            •      Правила описания архитектуры


2/22/2011                       д.т.н. Хаханова И.В, каф.АПВТ,                   5
                                ХНУРЭ e-mail: hahanova@mail.ru
VITAL Data Flow
         Инструменты
        имплементации




                                                         Симулятор,
                                                          Например,
                                                          Active-HDL




2/22/2011               д.т.н. Хаханова И.В, каф.АПВТ,                 6
                        ХНУРЭ e-mail: hahanova@mail.ru
2 Элементы VITAL (2)




2/22/2011        д.т.н. Хаханова И.В, каф.АПВТ,   7
                 ХНУРЭ e-mail: hahanova@mail.ru
3. Совместимость моделей уровня Level 0
Уровень совместимости моделей Level 0
 определяет совместимость моделей на
 уровне интерфейса.
      Задан способ описания имен портов и generic-
       констант, таким образом чтобы можно было
       применять back-annotation параметры,
       передаваемые через формат Standard-Delay-File
       (SDF).

Все порты устройства должны иметь тип
 std_lociс_1164: для однобитовых сигналов
 использовать тип std_logic, для массивов –
 std_logic_vector. Такой же тип должны иметь
 все остальные сигналы в проекте.

2/22/2011          д.т.н. Хаханова И.В, каф.АПВТ,      8
                   ХНУРЭ e-mail: hahanova@mail.ru
Типы Generic-параметров для времени
 Generic-параметры, используемые для обратной передачи
  временных параметров должны быть одного из заданных в
  пакете VITAL_Timing типов данных:

     TYPE TransitionType is ( tr01, tr10, tr0z, trz1, tr1z, trz0 );
     TYPE TransitionArrayType is ARRAY (TransitionType range <>) of TIME;

     SUBTYPE DelayTypeXX is TIME;
     SUBTYPE DelayType01 is TransitionArrayType (tr01 to tr10);
     SUBTYPE DelayType01Z is TransitionArrayType (tr01 to trz0);
     TYPE DelayArrayTypeXX is ARRAY (natural range <>) of DelayTypeXX;
     TYPE DelayArrayType01 is ARRAY (natural range <>) of DelayType01;
     TYPE DelayArrayType01Z is ARRAY (natural range <>) of DelayType01Z;
     TYPE TimeArray IS ARRAY ( natural range <> ) OF TIME;




2/22/2011                д.т.н. Хаханова И.В, каф.АПВТ,                     9
                         ХНУРЭ e-mail: hahanova@mail.ru
Соглашения по декларации имен generic-констант

 Имя константы может иметь одну из следующих форм:
     <VITAL_prefix>
     <VITAL_prefix>_<port1-name>
     <VITAL_prefix>_<port1-name>_<port2name>_<condition>_<edge1>_<edge2>
     <VITAL-prefix> ::=
        Приставка                                          Описание
       tipd          Interconnect Path Delay (IPD)             Задержка пути межсоединения
       tpd           propagation delay                         Задержка распространения
       tsetup        setup constraint                          Время установки
       thold         hold constraint                            Время хранения
       trelease      release constraint                         Время освобождения
       trecovery     recovery constraint                        Время восстановления
       tperiod       period where min or max is not specified   Период без указания минимальной и
                                                                максимальной величин
       tperiod_min   minimum period                             Минимальный период
       tperiod_max   maximum period                             Максимальный период
       tpw           minimum pulsewidth                         Минимальная ширина импульса
       tdevice       indicates to which subcomponent the        Описывает компонент которому
                     spec. applies                              прилагается параметр
       tskew         indicates to which subcomponent the        Описывает компонент которому
                     spec. applies                              прилагается параметр
       tpulse        for path pulse delay                       для задержки импульса пути

2/22/2011                          д.т.н. Хаханова И.В, каф.АПВТ,                                   10
                                   ХНУРЭ e-mail: hahanova@mail.ru
Пример. Фрагмент пакета VCOMPONENTS
   package VCOMPONENTS is
    constant DefaultTimingChecksOn : Boolean := True;
    constant DefaultXon : Boolean := True;
    constant DefaultMsgOn : Boolean := False;
    signal GSR : std_logic := '0';
    …
    ----- component X_AND2 -----
      component X_AND2
    -- synopsys translate_off
       generic(
         TimingChecksOn: Boolean := DefaultTimingChecksOn;
         InstancePath: STRING := "*";
         Xon: Boolean := DefaultXon;
         MsgOn: Boolean := DefaultMsgOn;
       tpd_I1_O                   : VitalDelayType01 := (0.100 ns, 0.100 ns);
       tpd_I0_O                   : VitalDelayType01 := (0.100 ns, 0.100 ns);
       tipd_I1                  :   VitalDelayType01 := (0.000 ns, 0.000 ns);
       tipd_I0                  :   VitalDelayType01 := (0.000 ns, 0.000 ns)
       );
    -- synopsys translate_on
       port(
        O                   :       out STD_ULOGIC;
        I0                 :        in STD_ULOGIC;
        I1                 :        in STD_ULOGIC
        );
      end component;
2/22/2011                          д.т.н. Хаханова И.В, каф.АПВТ,               11
                                   ХНУРЭ e-mail: hahanova@mail.ru
Фрагмент интерфейса для триггера X_FF.1
component X_FF
  -- synopsys translate_off
     generic(
     ...
            tpd_SET_O                    :        VitalDelayType01 := (0.100 ns, 0.100 ns);
            tpd_RST_O                    :        VitalDelayType01 := (0.100 ns, 0.100 ns);
            tpd_CLK_O                    :        VitalDelayType01 := (0.100 ns, 0.100 ns);
            tsetup_I_CLK_posedge_posedge :        VitalDelayType := 0.010 ns;
            tsetup_I_CLK_negedge_posedge :        VitalDelayType := 0.010 ns;
            thold_I_CLK_posedge_posedge :         VitalDelayType := 0.010 ns;
            thold_I_CLK_negedge_posedge :         VitalDelayType := 0.010 ns;
            tsetup_CE_CLK_posedge_posedge :       VitalDelayType := 0.010 ns;
            tsetup_CE_CLK_negedge_posedge :       VitalDelayType := 0.010 ns;
            thold_CE_CLK_posedge_posedge :        VitalDelayType := 0.010 ns;
            thold_CE_CLK_negedge_posedge :        VitalDelayType := 0.010 ns;
            trecovery_RST_CLK_negedge_posedge :   VitalDelayType := 0.010 ns;
            thold_RST_CLK_negedge_posedge    :    VitalDelayType := 0.010 ns;
            trecovery_SET_CLK_negedge_posedge :   VitalDelayType := 0.010 ns;
            thold_SET_CLK_negedge_posedge    :    VitalDelayType := 0.010 ns;

            ticd_CLK                    :         VitalDelayType := 0.000 ns;
            tisd_I_CLK                  :         VitalDelayType := 0.000 ns;
            tisd_CE_CLK                 :         VitalDelayType := 0.000 ns;
            tisd_SET_CLK                :         VitalDelayType := 0.000 ns;
            tisd_RST_CLK                :         VitalDelayType := 0.000 ns;

2/22/2011                    д.т.н. Хаханова И.В, каф.АПВТ,                                   12
                             ХНУРЭ e-mail: hahanova@mail.ru
Фрагмент интерфейса для триггера X_FF.2
            tpw_CLK_posedge             : VitalDelayType := 0.010 ns;
            tpw_RST_posedge             : VitalDelayType := 0.010 ns;
            tpw_SET_posedge             : VitalDelayType := 0.010 ns;
            tpw_CLK_negedge             : VitalDelayType := 0.010 ns;

          tipd_I                        : VitalDelayType01 := (0.000 ns, 0.000 ns);
          tipd_CLK                      : VitalDelayType01 := (0.000 ns, 0.000 ns);
          tipd_CE                       : VitalDelayType01 := (0.000 ns, 0.000 ns);
          tipd_RST                      : VitalDelayType01 := (0.000 ns, 0.000 ns);
          tipd_SET                      : VitalDelayType01 := (0.000 ns, 0.000 ns));
   -- synopsys translate_on
          port(
                   O                    : out      STD_ULOGIC;
                   CE                   : in              STD_ULOGIC;
                   CLK                  : in              STD_ULOGIC;
                   I                    : in              STD_ULOGIC;
                   RST                  : in              STD_ULOGIC;
                   SET                  : in              STD_ULOGIC);
          end component;




2/22/2011                     д.т.н. Хаханова И.В, каф.АПВТ,                           13
                              ХНУРЭ e-mail: hahanova@mail.ru
Back-Annotation
 Backannotation – процесс обновления значений
  generic-констант, задающих временные параметры, с
  использованием внешней временной информации.
      Back-Annotation generic-параметры не могут быть
       использованы в ситуации, когда их значения должны быть
       известны до начальной фазы инициализации
       моделирования.
      Back-Annotation generic-параметры могут быть использованы
       как реальные значения, ассоциированные с формальными
       параметрами подпрограмм, вызываемых из пакета
       VITAL_Timing.
      Back-Annotation generic-параметры могут быть использованы
       для декларации временных констант, имеющих тип
       DelayType01Z, которые получают свои значения только из
       подпрограммы VitalExtendToFillDelay.
      Back-Annotation generic-параметры могут быть связаны с
       generic-параметрами копии компонента в структурной
       модели.

2/22/2011             д.т.н. Хаханова И.В, каф.АПВТ,          14
                      ХНУРЭ e-mail: hahanova@mail.ru
Архитектура VITAL-совместимой модели



                       Внешние задержки на входы модели




                                                Описание
                                                функциональности
                                                и временных
                                                параметров




2/22/2011      д.т.н. Хаханова И.В, каф.АПВТ,                      15
               ХНУРЭ e-mail: hahanova@mail.ru
Модель распределенной задержки
 Distributed delay – величина задержки между входом
  и выходом состоит из задержек отдельных
  структурных элементов, находящихся на пути между
  двумя контактами




2/22/2011        д.т.н. Хаханова И.В, каф.АПВТ,    16
                 ХНУРЭ e-mail: hahanova@mail.ru
Пример использования распределенной задержки

  entity AO2 is
       generic (tdevice_A1_Q : DelayType01 := (10 ns, 11 ns); — Device delay for A1
                tdevice_A2_Q : DelayType01 := (10 ns, 11 ns); — Device delay for A
                tdevice_O1_Q : DelayType01 := (11 ns, 12 ns));— Device delay for O1
       port (Y : OUT std_logic; A, B, C, D : IN std_logic);
  end;
  architecture Level1DistributedDelay of AO2 is
       — This attribute indicates that model is VITAL LEVEL1 compliant
       attribute VITAL_LEVEL1 of Level1DistributedDelay : architecture is TRUE;
       begin
       —————————————————————————————-
       — This block is used for Distributed delay modelling.
       —————————————————————————————-
       VITAL_NETLIST : block
              SIGNAL A1Out, A2Out : std_logic; — local signals only
              begin
                — Concurrent procedure calls to VITAL_Primitives
                 A1: VitalAND2 ( q => A1Out, a => A, b => B,
                            tpd_a_q => tdevice_A1_Q,
                            tpd_b_q => tdevice_A1_Q);
                 A2: VitalAND2 ( q => A2Out, a => C, b => D,
                            tpd_a_q => tdevice_A2_Q,
                            tpd_b_q => tdevice_A2_Q);
                O2: VitalOR2 ( q => Y, a => A1Out, b => A2Out,
                            tpd_a_q => tdevice_O1_Q,
                            tpd_b_q => tdevice_O1_Q);
                end block;
  end;
2/22/2011                         д.т.н. Хаханова И.В, каф.АПВТ,                      17
                                  ХНУРЭ e-mail: hahanova@mail.ru
Pin-to-Pin delay
  Задается задержкой между отдельными контактами
  В одной ASIC-ячейке не могут быть применены
   одновременно оба способа описания задержек.

                                 Все выполняемые функции
                                  должны быть описаны в
                                  процессе с именем
                                  VitalBehavior, что позволяет
                                  повысить скорость
                                  моделирования.
                                 Никаких других блоков и
                                  процессов не должно быть
                                  использовано в архитектуре.
                                 Метки TimingCheck:,
                                  Functionality: и PathDelay:
                                  должны указывать на первую
                                  линию каждой секции процесса
                                  VitalBehavior, соответственно.


2/22/2011       д.т.н. Хаханова И.В, каф.АПВТ,                     18
                ХНУРЭ e-mail: hahanova@mail.ru
Timing Checks Section
 Секция Timing Check состоит из одного оператора if, проверяющего
  единственное условие – значение generic-константы TimingChecksOn.
  Операторы в конструкции if выполняются, когда TimingChecksOn = TRUE.
 Ветвь then оператора if должна содержать только вызов подпрограммы
  VITAL_Timing. Ветвь else не разрешена. Приняты следующие дополнительные
  парвила:
        Каждая проверка временных параметров возвращает значение переменной типа
         std_logic, которое должно означать, что нарушение произошло и обнаружено.
        Временная проверка не должна управлять ни выходным сигналом, ни каким либо
         другим сигналом.
        Временная проверка не должна выполнять ни каких действий, кроме вывода внешнего
         сообщения об ошибке..

 Пример описания секции Timing Check
 ————————————————————————————
  — Timing Checks Section
  ————————————————————————————
  TimingCheck: If (TimingChecksOn) then
          — do timing checks on *_ipd signals
          — the ‘output’ of this section are violation flags
          — one per violation check.
  end if;




2/22/2011                    д.т.н. Хаханова И.В, каф.АПВТ,                           19
                             ХНУРЭ e-mail: hahanova@mail.ru
Functionality Section
 Секция Functionality может содержать
      один или несколько вызовов подпрограмм из пакета
       VITAL_Primitives;
      операторы присвоения значений временным (temporary)
       переменным.

 Пример описания секции Functionality
 ————————————————————————————
  — Functionality Section
  ———————————————————————————-
  Functionality: violation := Tviol_<FirstTest> OR Tviol_<SecondTest>
  OR ... Tviol_<LastTest>;
        — call to VITAL_Primitives subprogram which determine the
        — output with the timing violations considered as an additional
        — input parameter
  VitalStateTable (
        StateTable => DLE24_tab,
        DataIn => ( violation, CLK_ipd, CLRZ_CLK_ipd, RL_CLK_ipd),
        NumStates => 5,
        Result => Results,
        PreviousDataIn => PrevData );
  Y_zd := To_X01(A_ipd);
2/22/2011               д.т.н. Хаханова И.В, каф.АПВТ,                    20
                        ХНУРЭ e-mail: hahanova@mail.ru
Path Delay Selection Section
 В этой секции модели обрабатывается задержка пути. Каждый выходной сигнал
  должен управляться вызовом процедуры VitalPropagatePathDelay(...). Задачей
  подпрограммы VitalPropagatePathDelay(...) – определить соответствующую
  задержку, используемую для изменения значений выходного сигнала.
 Пример описания секции Path Delay
 ————————————————————————————
  — Pin-to-Pin Delay Section
  ————————————————————————————
  — One call to VitalPropagatePathDelay for each output signal.
  PathDelay: VitalPropagatePathDelay(
        OutSignal => Q2, — Actual OUTPUT signal
        OutSignalName => “Q2”,
        OutTemp => Q2_zd, — Zero delayed internal Output signal
  — First of two input pins which affect the output Q2
        Paths(0).InputChangeTime => Clock_ipd’last_event,
        Paths(0).PathDelay => VitalExtendToFillDelay(tpd_clock_q2),
        Paths(0).Condition => (RESET = ‘0’),
  — Second of two input pins which affect the output Q2
        Paths(1).InputChangeTime => Data_ipd’last_event,
        Paths(1).PathDelay => VitalExtendToFillDelay(tpd_data_q2),
        Paths(1).Condition => (RESET = ‘0’),
        GlitchData => GlitchData,
        GlitchMode => MessagePlusX,
        GlitchKind => OnEvent);


2/22/2011                д.т.н. Хаханова И.В, каф.АПВТ,                   21
                         ХНУРЭ e-mail: hahanova@mail.ru
Логические примитивы VITAL

       VitalAND       VitalAND2          VitalAND3       VitalAND4
        VitalOR        VitalOR2           VitalOR3        VitalOR4
       VitalXOR       VitalXOR2          VitalXOR3       VitalXOR4
      VitalNAND      VitalNAND2         VitalNAND3      VitalNAND4
       VitalNOR       VitalNOR2          VitalNOR3       VitalNOR4
      VitalXNOR      VitalXNOR2         VitalXNOR3      VitalXNOR4
       VitalBUF       VitalBufIf0        VitalBufIf1     VitalIDENT
       VitalINV       VitalInvIf0        VitalInvIf1           -
       VitalMux       VitalMux2          VitalMux3       VitalMux4
      VitalDecoder   VitalDecoder2      VitalDecoder4   VitalDecoder8




2/22/2011              д.т.н. Хаханова И.В, каф.АПВТ,                   22
                       ХНУРЭ e-mail: hahanova@mail.ru
Использование функций примитивов
ARCHITECTURE PinToPinDelay of AndOr IS
           attribute VITAL_LEVEL1 of PinToPinDelay: architecture is TRUE;
    BEGIN
    VitalBehavior: PROCESS (A, B, C, D)
           VARIABLE AND1_Out, AND2_Out, Q_Zd: std_ulogic;
           VARIABLE GlitchData_Q: VitalGlitchDataType;
         BEGIN
           -- Functionality section
           AND1_Out:= VitalAND2 ( A, B );
           AND2_Out:= VitalAND2 ( C, D );
           Q_zd:= VitalOR2 (AND1_Out, AND2_Out, ResultMap => DefaultECLMap);
            -- Path delay section
            VitalPathDelay01 (OutSignal => Q, OutSignalName => 'Q', OutTemp => Q_zd,
                    Paths => ( 0 => (InputChangeTime => A’last_event,
                                      PathDelay => tpd_A_Q, PathCondition => TRUE),
                               1 => (InputChangeTime => B’last_event,
                                      PathDelay => tpd_B_Q, PathCondition => TRUE),
                               2 => (InputChangeTime => C’last_event,
                                      PathDelay => tpd_C_Q, PathCondition => TRUE),
                               3 => (InputChangeTime => D’last_event,
                                      PathDelay => tpd_D_Q, PathCondition => TRUE)),
                              GlitchData => GlitchData_Q, DefaultDelay => VitalZeroDelay01,
                              Mode => OnDetect, XoN => TRUE, MsgOn => TRUE,
                              MsgSeverity => WARNING);
           END PROCESS;
    END;
2/22/2011                           д.т.н. Хаханова И.В, каф.АПВТ,                            23
                                   ХНУРЭ e-mail: hahanova@mail.ru
Логические примитивы

ARCHITECTURE DistributedDelay OF AndOr IS
  attribute VITAL_LEVEL1 of DistributedDelay: architecture IS TRUE;
  signal AND1_Out, AND2_Out: std_ulogic;

 BEGIN
      I1: VitalAND2 (AND1_Out, A, B, tdevice_I1_Q, tdevice_I1_Q);
      I2: VitalAND2 (AND2_Out, C, D, tdevice_I2_Q, tdevice_I2_Q);
      I3: VitalOR2 (Q, AND1_Out, AND2_Out,
                      tdevice_I3_Q, tdevice_I3_Q);
END;




2/22/2011             д.т.н. Хаханова И.В, каф.АПВТ,             24
                      ХНУРЭ e-mail: hahanova@mail.ru
Таблица символов VITAL
type VitalTableSymbolType is (
    '/',   -- 0 -> 1
    '',   -- 1 -> 0
    'P', -- Union of '/' and '^' (any edge to 1)
    'N', -- Union of '' and 'v' (any edge to 0)
    'r',   -- 0 -> X
    'f',   -- 1 -> X
    'p', -- Union of '/' and 'r' (any edge from 0)
    'n', -- Union of '' and 'f' (any edge from 1)
    'R', -- Union of '^' and 'p' (any possible rising edge)
    'F', -- Union of 'v' and 'n' (any possible falling edge)
    '^', -- X -> 1
    'v',    -- X -> 0
    'E', -- Union of 'v' and '^' (any edge from ФXХ)
    'A', -- Union of 'r' and '^' (rising edge to or from 'X')
    'D', -- Union of 'f' and 'v' (falling edge to or from 'X')
    '*', -- Union of 'R' and 'F' (any edge)
    'X', -- Unknown level
    '0', -- low level
    '1', -- high level
    '-',   -- don't care
    'B', -- 0 or 1
    'Z', -- High Impedance
    'S' -- steady value
        );


2/22/2011                      д.т.н. Хаханова И.В, каф.АПВТ,    25
                               ХНУРЭ e-mail: hahanova@mail.ru
Структура таблицы истинности
                                      Truth Table
 DataIn
               Map to X01




                                      Section
                                      Output
                                                                     Result
                                                  Map to X01Z


     Таблица истинности дешифратора 2 в 4

     Constant DecoderTable: VitalTruthTableType(0 to 3, 0 to 5) :=
     -- Input Pattern Response
     -- D1 D0          Q3      Q2     Q1    Q0
     (( '0',   '0',    '0',   '0',   '0',   '1'),
      ( '0',   '1',    '0',   '0',   '1',    '0'),
      ( '1',   '0',    '0',   '1',   '0',    '0'),
      ( '1',   '1',    '1',   '0',   '0',    '0'));


2/22/2011                д.т.н. Хаханова И.В, каф.АПВТ,                  26
                         ХНУРЭ e-mail: hahanova@mail.ru
Структура таблицы состояний




          Таблица состояний D-триггера
     с синхронизацией по переднему фронту
    Constant DFFTable: VitalStateTableType :=
          --RESET D        CLK     State Q
            (('0', '-',      '-',     '-',  '0'),
             ('1', '1',      '/',     '-',  '1'),
             ('1', '0',      '/',     '-',  '0'),
             ('1', 'X',      '/',     '-',  'X'),
            ('1',  '-',      '-',     '-',  'S'));



2/22/2011                   д.т.н. Хаханова И.В, каф.АПВТ,   27
                            ХНУРЭ e-mail: hahanova@mail.ru
Преимущества VITAL моделей(1)
 Для ASIC разработчиков:
      Улучшение переносимости проектов между различными EDA
       проектами.
      Повышение скорости моделирования без выхода из среды
       VHDL проекта (в 10-15 раз)
      Возможность использования стандартных VITAL-
       подпрограмм для пользовательских моделей.
 Для поставщиков полупроводниковой продукции:
      Единые библиотеки, поддерживаемые всеми основными
       средами моделирования EDA.
      Точная поддержка временных параметров для
       субмикронной продукции.
      Сокращение стоимости разработки и эксплуатации




2/22/2011           д.т.н. Хаханова И.В, каф.АПВТ,         28
                    ХНУРЭ e-mail: hahanova@mail.ru
Преимущества VITAL моделей(2)
 Для разработчиков EDA:
      Концентрация на создании инструментов и проектов, а не
       библиотек.
      Стандартные методы создания моделей позволяют повысить
       оптимизацию и сократит сложность проекта

 Для проектировщиков микросхем и систем:
      Отдельные VITAL-подпрограммы доступны всем пользователем.
      Стандартизация пакетов гарантирует одинаковое поведение на
       различных инструментах и платформах
      VITAL-примитивы позволяют упростить создание VHDL-моделей
      Подпрограммы управления VITAL pin-to-pin задержкой позволяют
       легко добавить временные параметры в поведенческую модель
      Временная проверка VITAL может быть использована для поиска
       ошибок функционирования проекта.
      Использование SDF back-annotation может быть необязательным,
       допускается внесение всех временных параметров в модель
      Множество смешанных пользовательских моделей имеет “Level0”
      Пользовательские модели “Level 1” будут обрабатываться в 10-15
       раз
2/22/2011               д.т.н. Хаханова И.В, каф.АПВТ,              29
                        ХНУРЭ e-mail: hahanova@mail.ru
Выводы

            1    Click to add Title


            2    Click to add Title


            3    Click to add Title


            4    Click to add Title




2/22/2011       д.т.н. Хаханова И.В, каф.АПВТ,   30
                ХНУРЭ e-mail: hahanova@mail.ru
Контрольные вопросы и задания
1.    В программе ISEWebPack создать проект и модель триггера
      или счетчика (что больше нравится), или взять готовую.
2.    Выполнить синтез и имплементацию полученного устройства.
3.    На этапе Place&Route сгенерировать vhdl-модель для
      анализа временных параметров и sdf-файл.
4.    Открыть vhdl-файл, лучше в Active-HDL. Проанализировать из
      каких компонентов состоит модель устройства после
      имплементации. Как реализована функциональность, как
      временные параметры.
5.    В какой библиотеке находятся компоненты, составляющие
      модель? Найти их реализацию в данной библиотеки.
6.    Проанализировать код компонента. Определить является ли
      он совместимым по level0 или level1. Какие generic-константы
      он имеет. Как реализована функциональность. Где
      вычисляются задержки.
7.    Оформить свои выводы, можно на листике от руки, можно
      печать.
                          За все 5 баллов.

2/22/2011             д.т.н. Хаханова И.В, каф.АПВТ,            31
                      ХНУРЭ e-mail: hahanova@mail.ru
Контрольные вопросы и задания
1. Причины создания стандарта IEEE Std
   1076 –Vital?
2. Пять областей стандартизации VITAL?
3. Объяснить принципы совместимости
   модели Level0 и Level1.
4. Что такое SDF, где используется?
5. Как реализуется и где применяется
   Vital Data Flow?


2/22/2011   д.т.н. Хаханова И.В, каф.АПВТ,   32
            ХНУРЭ e-mail: hahanova@mail.ru

Contenu connexe

Tendances

Java. Многопоточность.
Java. Многопоточность.Java. Многопоточность.
Java. Многопоточность.Unguryan Vitaliy
 
C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.Igor Shkulipa
 
Релиз PHP7 - что нас ждет в октябре 2015
Релиз PHP7 - что нас ждет в октябре 2015Релиз PHP7 - что нас ждет в октябре 2015
Релиз PHP7 - что нас ждет в октябре 2015Andrey Tokarchuk
 
C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.Igor Shkulipa
 
Объектно-ориентированное программирование. Лекция 5 и 6
Объектно-ориентированное программирование. Лекция 5 и 6Объектно-ориентированное программирование. Лекция 5 и 6
Объектно-ориентированное программирование. Лекция 5 и 6Dima Dzuba
 
Шишки, набитые за 15 лет использования акторов в C++
Шишки, набитые за 15 лет использования акторов в C++Шишки, набитые за 15 лет использования акторов в C++
Шишки, набитые за 15 лет использования акторов в C++Yauheni Akhotnikau
 
C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.Igor Shkulipa
 
C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.Igor Shkulipa
 
Архитектура. Доступноять программных систем.
Архитектура. Доступноять программных систем.Архитектура. Доступноять программных систем.
Архитектура. Доступноять программных систем.Dima Dzuba
 
Современный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыСовременный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыcorehard_by
 
Проектирование программных систем. Занятие 10
Проектирование программных систем. Занятие 10Проектирование программных систем. Занятие 10
Проектирование программных систем. Занятие 10Dima Dzuba
 
Java осень 2014 занятие 6
Java осень 2014 занятие 6Java осень 2014 занятие 6
Java осень 2014 занятие 6Technopark
 
Code Contracts ABC 16.04.2011
Code Contracts ABC 16.04.2011Code Contracts ABC 16.04.2011
Code Contracts ABC 16.04.2011Dmytro Mindra
 
Системы контроля версий
Системы контроля версийСистемы контроля версий
Системы контроля версийUnguryan Vitaliy
 
C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.Igor Shkulipa
 
C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.Igor Shkulipa
 
Память в Java. Garbage Collector
Память в Java. Garbage CollectorПамять в Java. Garbage Collector
Память в Java. Garbage CollectorOlexandra Dmytrenko
 
C++ refelection and cats
C++ refelection and catsC++ refelection and cats
C++ refelection and catscorehard_by
 
Legacy: как победить в гонке (Joker)
Legacy: как победить в гонке (Joker)Legacy: как победить в гонке (Joker)
Legacy: как победить в гонке (Joker)Victor_Cr
 

Tendances (20)

Java. Многопоточность.
Java. Многопоточность.Java. Многопоточность.
Java. Многопоточность.
 
C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.
 
Релиз PHP7 - что нас ждет в октябре 2015
Релиз PHP7 - что нас ждет в октябре 2015Релиз PHP7 - что нас ждет в октябре 2015
Релиз PHP7 - что нас ждет в октябре 2015
 
C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.
 
Объектно-ориентированное программирование. Лекция 5 и 6
Объектно-ориентированное программирование. Лекция 5 и 6Объектно-ориентированное программирование. Лекция 5 и 6
Объектно-ориентированное программирование. Лекция 5 и 6
 
Шишки, набитые за 15 лет использования акторов в C++
Шишки, набитые за 15 лет использования акторов в C++Шишки, набитые за 15 лет использования акторов в C++
Шишки, набитые за 15 лет использования акторов в C++
 
Parallel STL
Parallel STLParallel STL
Parallel STL
 
C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.
 
C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.
 
Архитектура. Доступноять программных систем.
Архитектура. Доступноять программных систем.Архитектура. Доступноять программных систем.
Архитектура. Доступноять программных систем.
 
Современный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыСовременный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтеры
 
Проектирование программных систем. Занятие 10
Проектирование программных систем. Занятие 10Проектирование программных систем. Занятие 10
Проектирование программных систем. Занятие 10
 
Java осень 2014 занятие 6
Java осень 2014 занятие 6Java осень 2014 занятие 6
Java осень 2014 занятие 6
 
Code Contracts ABC 16.04.2011
Code Contracts ABC 16.04.2011Code Contracts ABC 16.04.2011
Code Contracts ABC 16.04.2011
 
Системы контроля версий
Системы контроля версийСистемы контроля версий
Системы контроля версий
 
C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.
 
C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.
 
Память в Java. Garbage Collector
Память в Java. Garbage CollectorПамять в Java. Garbage Collector
Память в Java. Garbage Collector
 
C++ refelection and cats
C++ refelection and catsC++ refelection and cats
C++ refelection and cats
 
Legacy: как победить в гонке (Joker)
Legacy: как победить в гонке (Joker)Legacy: как победить в гонке (Joker)
Legacy: как победить в гонке (Joker)
 

En vedette

Alegacions cobertura xefe area admon
Alegacions cobertura xefe area admonAlegacions cobertura xefe area admon
Alegacions cobertura xefe area admoncomiteportos
 
Prokudin gorskii
Prokudin gorskiiProkudin gorskii
Prokudin gorskii000175031
 
Wikipedia takes angkor ppt & demo - final 20121003
Wikipedia takes angkor   ppt & demo - final 20121003Wikipedia takes angkor   ppt & demo - final 20121003
Wikipedia takes angkor ppt & demo - final 20121003Kounila Keo
 
Semantic BDD with ShouldIT?
Semantic BDD with ShouldIT?Semantic BDD with ShouldIT?
Semantic BDD with ShouldIT?Richard McIntyre
 
10c; control systems
10c; control systems10c; control systems
10c; control systemskwiley0019
 
апкс 2011 03_verilog
апкс 2011 03_verilogапкс 2011 03_verilog
апкс 2011 03_verilogIrina Hahanova
 
Hutan hujan prestashop study case
Hutan hujan prestashop   study caseHutan hujan prestashop   study case
Hutan hujan prestashop study caseMahda Gustarini
 
The Individuality Tool
The Individuality ToolThe Individuality Tool
The Individuality ToolCompton Maddox
 
Externe veiligheid in het ruimtelijk planproces
Externe veiligheid in het ruimtelijk planprocesExterne veiligheid in het ruimtelijk planproces
Externe veiligheid in het ruimtelijk planprocesReinoud Scheres
 
Test Automation Made Easy
Test Automation Made EasyTest Automation Made Easy
Test Automation Made Easyqainfotech09
 
Bodaetla
BodaetlaBodaetla
Bodaetlavedmoga
 
Digitalisering externe veiligheid
Digitalisering externe veiligheidDigitalisering externe veiligheid
Digitalisering externe veiligheidReinoud Scheres
 
JAN LOKPAL BILL
JAN LOKPAL BILLJAN LOKPAL BILL
JAN LOKPAL BILLAAR VEE
 
Final danny krueger lime energy july 2010
Final danny krueger lime energy july 2010Final danny krueger lime energy july 2010
Final danny krueger lime energy july 2010limeenergysurveys
 

En vedette (20)

ClasePPT17
ClasePPT17ClasePPT17
ClasePPT17
 
Alegacions cobertura xefe area admon
Alegacions cobertura xefe area admonAlegacions cobertura xefe area admon
Alegacions cobertura xefe area admon
 
Prokudin gorskii
Prokudin gorskiiProkudin gorskii
Prokudin gorskii
 
Business Planning and Marketing
Business Planning and MarketingBusiness Planning and Marketing
Business Planning and Marketing
 
Compost Trials 2013
Compost Trials 2013Compost Trials 2013
Compost Trials 2013
 
Wikipedia takes angkor ppt & demo - final 20121003
Wikipedia takes angkor   ppt & demo - final 20121003Wikipedia takes angkor   ppt & demo - final 20121003
Wikipedia takes angkor ppt & demo - final 20121003
 
Global classroom project 2012 2013
Global classroom project 2012 2013Global classroom project 2012 2013
Global classroom project 2012 2013
 
Landscaping for Pollinators
Landscaping for PollinatorsLandscaping for Pollinators
Landscaping for Pollinators
 
Semantic BDD with ShouldIT?
Semantic BDD with ShouldIT?Semantic BDD with ShouldIT?
Semantic BDD with ShouldIT?
 
10c; control systems
10c; control systems10c; control systems
10c; control systems
 
апкс 2011 03_verilog
апкс 2011 03_verilogапкс 2011 03_verilog
апкс 2011 03_verilog
 
Hutan hujan prestashop study case
Hutan hujan prestashop   study caseHutan hujan prestashop   study case
Hutan hujan prestashop study case
 
The Individuality Tool
The Individuality ToolThe Individuality Tool
The Individuality Tool
 
Externe veiligheid in het ruimtelijk planproces
Externe veiligheid in het ruimtelijk planprocesExterne veiligheid in het ruimtelijk planproces
Externe veiligheid in het ruimtelijk planproces
 
Kerr center for sustainable agriculture summary overview
Kerr center for sustainable agriculture summary overview Kerr center for sustainable agriculture summary overview
Kerr center for sustainable agriculture summary overview
 
Test Automation Made Easy
Test Automation Made EasyTest Automation Made Easy
Test Automation Made Easy
 
Bodaetla
BodaetlaBodaetla
Bodaetla
 
Digitalisering externe veiligheid
Digitalisering externe veiligheidDigitalisering externe veiligheid
Digitalisering externe veiligheid
 
JAN LOKPAL BILL
JAN LOKPAL BILLJAN LOKPAL BILL
JAN LOKPAL BILL
 
Final danny krueger lime energy july 2010
Final danny krueger lime energy july 2010Final danny krueger lime energy july 2010
Final danny krueger lime energy july 2010
 

Plus de Irina Hahanova

апкс 2011 08_verilog_макросы
апкс 2011 08_verilog_макросыапкс 2011 08_verilog_макросы
апкс 2011 08_verilog_макросыIrina Hahanova
 
апкс 2011 07_синтез_verilog
апкс 2011 07_синтез_verilogапкс 2011 07_синтез_verilog
апкс 2011 07_синтез_verilogIrina Hahanova
 
цсноп 2 11_4_архитектуры памяти
цсноп 2 11_4_архитектуры памятицсноп 2 11_4_архитектуры памяти
цсноп 2 11_4_архитектуры памятиIrina Hahanova
 
цсноп 2 11_3_проект памяти
цсноп 2 11_3_проект памятицсноп 2 11_3_проект памяти
цсноп 2 11_3_проект памятиIrina Hahanova
 
апкс 2011 06_проектирование арифметических устройств
апкс 2011 06_проектирование арифметических устройствапкс 2011 06_проектирование арифметических устройств
апкс 2011 06_проектирование арифметических устройствIrina Hahanova
 
апкс 2011 05_verilog
апкс 2011 05_verilogапкс 2011 05_verilog
апкс 2011 05_verilogIrina Hahanova
 
апкс 2011 04_verilog_продолж
апкс 2011 04_verilog_продолжапкс 2011 04_verilog_продолж
апкс 2011 04_verilog_продолжIrina Hahanova
 
апкс 2011 04_verilog
апкс 2011 04_verilogапкс 2011 04_verilog
апкс 2011 04_verilogIrina Hahanova
 
апкс 2011 02_verilog
апкс 2011 02_verilogапкс 2011 02_verilog
апкс 2011 02_verilogIrina Hahanova
 
апкс 2011 01_введение
апкс 2011 01_введениеапкс 2011 01_введение
апкс 2011 01_введениеIrina Hahanova
 
моап 2011 02_active_1
моап 2011 02_active_1моап 2011 02_active_1
моап 2011 02_active_1Irina Hahanova
 
моап 2011 01_введение
моап 2011 01_введениемоап 2011 01_введение
моап 2011 01_введениеIrina Hahanova
 

Plus de Irina Hahanova (15)

апкс 2011 08_verilog_макросы
апкс 2011 08_verilog_макросыапкс 2011 08_verilog_макросы
апкс 2011 08_verilog_макросы
 
апкс 2011 07_синтез_verilog
апкс 2011 07_синтез_verilogапкс 2011 07_синтез_verilog
апкс 2011 07_синтез_verilog
 
цсноп 2 11_4_архитектуры памяти
цсноп 2 11_4_архитектуры памятицсноп 2 11_4_архитектуры памяти
цсноп 2 11_4_архитектуры памяти
 
цсноп 2 11_3_проект памяти
цсноп 2 11_3_проект памятицсноп 2 11_3_проект памяти
цсноп 2 11_3_проект памяти
 
апкс 2011 06_проектирование арифметических устройств
апкс 2011 06_проектирование арифметических устройствапкс 2011 06_проектирование арифметических устройств
апкс 2011 06_проектирование арифметических устройств
 
апкс 2011 05_verilog
апкс 2011 05_verilogапкс 2011 05_verilog
апкс 2011 05_verilog
 
апкс 2011 04_verilog_продолж
апкс 2011 04_verilog_продолжапкс 2011 04_verilog_продолж
апкс 2011 04_verilog_продолж
 
апкс 2011 04_verilog
апкс 2011 04_verilogапкс 2011 04_verilog
апкс 2011 04_verilog
 
апкс 2011 02_verilog
апкс 2011 02_verilogапкс 2011 02_verilog
апкс 2011 02_verilog
 
апкс 2011 01_введение
апкс 2011 01_введениеапкс 2011 01_введение
апкс 2011 01_введение
 
моап 2011 05
моап 2011 05моап 2011 05
моап 2011 05
 
моап 2011 04
моап 2011 04моап 2011 04
моап 2011 04
 
моап 2011 03
моап 2011 03моап 2011 03
моап 2011 03
 
моап 2011 02_active_1
моап 2011 02_active_1моап 2011 02_active_1
моап 2011 02_active_1
 
моап 2011 01_введение
моап 2011 01_введениемоап 2011 01_введение
моап 2011 01_введение
 

цсноп 2 11_1_vital

  • 1. Библиотека VITAL Проектирования систем на основе программируемой логики д.т.н. Хаханова И.В, каф.АПВТ, ХНУРЭ 2/22/2011 e-mail: hahanova@mail.ru, 1
  • 2. Цель лекции и содержание  Цель – изучить принципы построения моделей вентильного и dataflow уровней  План 1. История и причины создания 2. Структура библиотеки 3. Совместимость моделей Level 0 4. Совместимость моделей Level 1 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 2 ХНУРЭ e-mail: hahanova@mail.ru
  • 3. 1. Создание VITAL(1) VITAL - VHDL Initiative Towards ASIC Libraries Идея создания VITAL-библиотек возникла в 1992 г на международном форуме пользователей VHDL(VHDL International Users' Forum). Причины создания:  Пользователям были нужны ASIC библиотеки в их VHDL-приложениях  Разработчики ASIC нуждались в единой стандартной ASIC-библиотеке  Разработчики EDA-сред нуждались в средстве помогающем использовать VHDL для возрастающего рынка ASIC 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 3 ХНУРЭ e-mail: hahanova@mail.ru
  • 4. 1. Создание VITAL (2) Стандарт  IEEE P1076.4: Timing Methodology (VITAL) Разработка VITAL стандарта выполнялась на основе существующего:  Формат передачи задержек Stantard Delay File(SDF)  некоторые элементы из пакета Std_Timing группы VHDL Technology Group, а также специальные временные и поведенческие техники, предложенные Rian&Rian(фирма)  существующие ASIC библиотеки 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 4 ХНУРЭ e-mail: hahanova@mail.ru
  • 5. 2 Элементы VITAL (1)  “VITAL-совместимые модели  ”(“VITAL compliant models”)  “VITAL-совместимые программы моделирования  ”(“VITAL compliant simulators”).  Пять областей стандартизации VITAL:  VITAL_TIMING • Пакет, содержащий типы данных и подпрограммы для разработки временных моделей макроячеек.  VITAL_PRIMITIVE • Пакет определяет множество обычно используемых комбинационных примитивов.  VITAL_SDFMAP • Правила преобразования SDF данных в значения VHDL Generic - констант для VITAL моделей.  VITAL compliant Level 0 Models • Правила описания интерфейса  VITAL compliant Level 1 Models • Правила описания архитектуры 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 5 ХНУРЭ e-mail: hahanova@mail.ru
  • 6. VITAL Data Flow Инструменты имплементации Симулятор, Например, Active-HDL 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 6 ХНУРЭ e-mail: hahanova@mail.ru
  • 7. 2 Элементы VITAL (2) 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 7 ХНУРЭ e-mail: hahanova@mail.ru
  • 8. 3. Совместимость моделей уровня Level 0 Уровень совместимости моделей Level 0 определяет совместимость моделей на уровне интерфейса.  Задан способ описания имен портов и generic- констант, таким образом чтобы можно было применять back-annotation параметры, передаваемые через формат Standard-Delay-File (SDF). Все порты устройства должны иметь тип std_lociс_1164: для однобитовых сигналов использовать тип std_logic, для массивов – std_logic_vector. Такой же тип должны иметь все остальные сигналы в проекте. 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 8 ХНУРЭ e-mail: hahanova@mail.ru
  • 9. Типы Generic-параметров для времени  Generic-параметры, используемые для обратной передачи временных параметров должны быть одного из заданных в пакете VITAL_Timing типов данных: TYPE TransitionType is ( tr01, tr10, tr0z, trz1, tr1z, trz0 ); TYPE TransitionArrayType is ARRAY (TransitionType range <>) of TIME; SUBTYPE DelayTypeXX is TIME; SUBTYPE DelayType01 is TransitionArrayType (tr01 to tr10); SUBTYPE DelayType01Z is TransitionArrayType (tr01 to trz0); TYPE DelayArrayTypeXX is ARRAY (natural range <>) of DelayTypeXX; TYPE DelayArrayType01 is ARRAY (natural range <>) of DelayType01; TYPE DelayArrayType01Z is ARRAY (natural range <>) of DelayType01Z; TYPE TimeArray IS ARRAY ( natural range <> ) OF TIME; 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 9 ХНУРЭ e-mail: hahanova@mail.ru
  • 10. Соглашения по декларации имен generic-констант  Имя константы может иметь одну из следующих форм: <VITAL_prefix> <VITAL_prefix>_<port1-name> <VITAL_prefix>_<port1-name>_<port2name>_<condition>_<edge1>_<edge2> <VITAL-prefix> ::= Приставка Описание tipd Interconnect Path Delay (IPD) Задержка пути межсоединения tpd propagation delay Задержка распространения tsetup setup constraint Время установки thold hold constraint Время хранения trelease release constraint Время освобождения trecovery recovery constraint Время восстановления tperiod period where min or max is not specified Период без указания минимальной и максимальной величин tperiod_min minimum period Минимальный период tperiod_max maximum period Максимальный период tpw minimum pulsewidth Минимальная ширина импульса tdevice indicates to which subcomponent the Описывает компонент которому spec. applies прилагается параметр tskew indicates to which subcomponent the Описывает компонент которому spec. applies прилагается параметр tpulse for path pulse delay для задержки импульса пути 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 10 ХНУРЭ e-mail: hahanova@mail.ru
  • 11. Пример. Фрагмент пакета VCOMPONENTS  package VCOMPONENTS is constant DefaultTimingChecksOn : Boolean := True; constant DefaultXon : Boolean := True; constant DefaultMsgOn : Boolean := False; signal GSR : std_logic := '0'; … ----- component X_AND2 ----- component X_AND2 -- synopsys translate_off generic( TimingChecksOn: Boolean := DefaultTimingChecksOn; InstancePath: STRING := "*"; Xon: Boolean := DefaultXon; MsgOn: Boolean := DefaultMsgOn; tpd_I1_O : VitalDelayType01 := (0.100 ns, 0.100 ns); tpd_I0_O : VitalDelayType01 := (0.100 ns, 0.100 ns); tipd_I1 : VitalDelayType01 := (0.000 ns, 0.000 ns); tipd_I0 : VitalDelayType01 := (0.000 ns, 0.000 ns) ); -- synopsys translate_on port( O : out STD_ULOGIC; I0 : in STD_ULOGIC; I1 : in STD_ULOGIC ); end component; 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 11 ХНУРЭ e-mail: hahanova@mail.ru
  • 12. Фрагмент интерфейса для триггера X_FF.1 component X_FF -- synopsys translate_off generic( ... tpd_SET_O : VitalDelayType01 := (0.100 ns, 0.100 ns); tpd_RST_O : VitalDelayType01 := (0.100 ns, 0.100 ns); tpd_CLK_O : VitalDelayType01 := (0.100 ns, 0.100 ns); tsetup_I_CLK_posedge_posedge : VitalDelayType := 0.010 ns; tsetup_I_CLK_negedge_posedge : VitalDelayType := 0.010 ns; thold_I_CLK_posedge_posedge : VitalDelayType := 0.010 ns; thold_I_CLK_negedge_posedge : VitalDelayType := 0.010 ns; tsetup_CE_CLK_posedge_posedge : VitalDelayType := 0.010 ns; tsetup_CE_CLK_negedge_posedge : VitalDelayType := 0.010 ns; thold_CE_CLK_posedge_posedge : VitalDelayType := 0.010 ns; thold_CE_CLK_negedge_posedge : VitalDelayType := 0.010 ns; trecovery_RST_CLK_negedge_posedge : VitalDelayType := 0.010 ns; thold_RST_CLK_negedge_posedge : VitalDelayType := 0.010 ns; trecovery_SET_CLK_negedge_posedge : VitalDelayType := 0.010 ns; thold_SET_CLK_negedge_posedge : VitalDelayType := 0.010 ns; ticd_CLK : VitalDelayType := 0.000 ns; tisd_I_CLK : VitalDelayType := 0.000 ns; tisd_CE_CLK : VitalDelayType := 0.000 ns; tisd_SET_CLK : VitalDelayType := 0.000 ns; tisd_RST_CLK : VitalDelayType := 0.000 ns; 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 12 ХНУРЭ e-mail: hahanova@mail.ru
  • 13. Фрагмент интерфейса для триггера X_FF.2 tpw_CLK_posedge : VitalDelayType := 0.010 ns; tpw_RST_posedge : VitalDelayType := 0.010 ns; tpw_SET_posedge : VitalDelayType := 0.010 ns; tpw_CLK_negedge : VitalDelayType := 0.010 ns; tipd_I : VitalDelayType01 := (0.000 ns, 0.000 ns); tipd_CLK : VitalDelayType01 := (0.000 ns, 0.000 ns); tipd_CE : VitalDelayType01 := (0.000 ns, 0.000 ns); tipd_RST : VitalDelayType01 := (0.000 ns, 0.000 ns); tipd_SET : VitalDelayType01 := (0.000 ns, 0.000 ns)); -- synopsys translate_on port( O : out STD_ULOGIC; CE : in STD_ULOGIC; CLK : in STD_ULOGIC; I : in STD_ULOGIC; RST : in STD_ULOGIC; SET : in STD_ULOGIC); end component; 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 13 ХНУРЭ e-mail: hahanova@mail.ru
  • 14. Back-Annotation  Backannotation – процесс обновления значений generic-констант, задающих временные параметры, с использованием внешней временной информации.  Back-Annotation generic-параметры не могут быть использованы в ситуации, когда их значения должны быть известны до начальной фазы инициализации моделирования.  Back-Annotation generic-параметры могут быть использованы как реальные значения, ассоциированные с формальными параметрами подпрограмм, вызываемых из пакета VITAL_Timing.  Back-Annotation generic-параметры могут быть использованы для декларации временных констант, имеющих тип DelayType01Z, которые получают свои значения только из подпрограммы VitalExtendToFillDelay.  Back-Annotation generic-параметры могут быть связаны с generic-параметрами копии компонента в структурной модели. 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 14 ХНУРЭ e-mail: hahanova@mail.ru
  • 15. Архитектура VITAL-совместимой модели Внешние задержки на входы модели Описание функциональности и временных параметров 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 15 ХНУРЭ e-mail: hahanova@mail.ru
  • 16. Модель распределенной задержки  Distributed delay – величина задержки между входом и выходом состоит из задержек отдельных структурных элементов, находящихся на пути между двумя контактами 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 16 ХНУРЭ e-mail: hahanova@mail.ru
  • 17. Пример использования распределенной задержки entity AO2 is generic (tdevice_A1_Q : DelayType01 := (10 ns, 11 ns); — Device delay for A1 tdevice_A2_Q : DelayType01 := (10 ns, 11 ns); — Device delay for A tdevice_O1_Q : DelayType01 := (11 ns, 12 ns));— Device delay for O1 port (Y : OUT std_logic; A, B, C, D : IN std_logic); end; architecture Level1DistributedDelay of AO2 is — This attribute indicates that model is VITAL LEVEL1 compliant attribute VITAL_LEVEL1 of Level1DistributedDelay : architecture is TRUE; begin —————————————————————————————- — This block is used for Distributed delay modelling. —————————————————————————————- VITAL_NETLIST : block SIGNAL A1Out, A2Out : std_logic; — local signals only begin — Concurrent procedure calls to VITAL_Primitives A1: VitalAND2 ( q => A1Out, a => A, b => B, tpd_a_q => tdevice_A1_Q, tpd_b_q => tdevice_A1_Q); A2: VitalAND2 ( q => A2Out, a => C, b => D, tpd_a_q => tdevice_A2_Q, tpd_b_q => tdevice_A2_Q); O2: VitalOR2 ( q => Y, a => A1Out, b => A2Out, tpd_a_q => tdevice_O1_Q, tpd_b_q => tdevice_O1_Q); end block; end; 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 17 ХНУРЭ e-mail: hahanova@mail.ru
  • 18. Pin-to-Pin delay  Задается задержкой между отдельными контактами  В одной ASIC-ячейке не могут быть применены одновременно оба способа описания задержек.  Все выполняемые функции должны быть описаны в процессе с именем VitalBehavior, что позволяет повысить скорость моделирования.  Никаких других блоков и процессов не должно быть использовано в архитектуре.  Метки TimingCheck:, Functionality: и PathDelay: должны указывать на первую линию каждой секции процесса VitalBehavior, соответственно. 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 18 ХНУРЭ e-mail: hahanova@mail.ru
  • 19. Timing Checks Section  Секция Timing Check состоит из одного оператора if, проверяющего единственное условие – значение generic-константы TimingChecksOn. Операторы в конструкции if выполняются, когда TimingChecksOn = TRUE.  Ветвь then оператора if должна содержать только вызов подпрограммы VITAL_Timing. Ветвь else не разрешена. Приняты следующие дополнительные парвила:  Каждая проверка временных параметров возвращает значение переменной типа std_logic, которое должно означать, что нарушение произошло и обнаружено.  Временная проверка не должна управлять ни выходным сигналом, ни каким либо другим сигналом.  Временная проверка не должна выполнять ни каких действий, кроме вывода внешнего сообщения об ошибке..  Пример описания секции Timing Check  ———————————————————————————— — Timing Checks Section ———————————————————————————— TimingCheck: If (TimingChecksOn) then — do timing checks on *_ipd signals — the ‘output’ of this section are violation flags — one per violation check. end if; 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 19 ХНУРЭ e-mail: hahanova@mail.ru
  • 20. Functionality Section  Секция Functionality может содержать  один или несколько вызовов подпрограмм из пакета VITAL_Primitives;  операторы присвоения значений временным (temporary) переменным.  Пример описания секции Functionality  ———————————————————————————— — Functionality Section ———————————————————————————- Functionality: violation := Tviol_<FirstTest> OR Tviol_<SecondTest> OR ... Tviol_<LastTest>; — call to VITAL_Primitives subprogram which determine the — output with the timing violations considered as an additional — input parameter VitalStateTable ( StateTable => DLE24_tab, DataIn => ( violation, CLK_ipd, CLRZ_CLK_ipd, RL_CLK_ipd), NumStates => 5, Result => Results, PreviousDataIn => PrevData ); Y_zd := To_X01(A_ipd); 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 20 ХНУРЭ e-mail: hahanova@mail.ru
  • 21. Path Delay Selection Section  В этой секции модели обрабатывается задержка пути. Каждый выходной сигнал должен управляться вызовом процедуры VitalPropagatePathDelay(...). Задачей подпрограммы VitalPropagatePathDelay(...) – определить соответствующую задержку, используемую для изменения значений выходного сигнала.  Пример описания секции Path Delay  ———————————————————————————— — Pin-to-Pin Delay Section ———————————————————————————— — One call to VitalPropagatePathDelay for each output signal. PathDelay: VitalPropagatePathDelay( OutSignal => Q2, — Actual OUTPUT signal OutSignalName => “Q2”, OutTemp => Q2_zd, — Zero delayed internal Output signal — First of two input pins which affect the output Q2 Paths(0).InputChangeTime => Clock_ipd’last_event, Paths(0).PathDelay => VitalExtendToFillDelay(tpd_clock_q2), Paths(0).Condition => (RESET = ‘0’), — Second of two input pins which affect the output Q2 Paths(1).InputChangeTime => Data_ipd’last_event, Paths(1).PathDelay => VitalExtendToFillDelay(tpd_data_q2), Paths(1).Condition => (RESET = ‘0’), GlitchData => GlitchData, GlitchMode => MessagePlusX, GlitchKind => OnEvent); 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 21 ХНУРЭ e-mail: hahanova@mail.ru
  • 22. Логические примитивы VITAL VitalAND VitalAND2 VitalAND3 VitalAND4 VitalOR VitalOR2 VitalOR3 VitalOR4 VitalXOR VitalXOR2 VitalXOR3 VitalXOR4 VitalNAND VitalNAND2 VitalNAND3 VitalNAND4 VitalNOR VitalNOR2 VitalNOR3 VitalNOR4 VitalXNOR VitalXNOR2 VitalXNOR3 VitalXNOR4 VitalBUF VitalBufIf0 VitalBufIf1 VitalIDENT VitalINV VitalInvIf0 VitalInvIf1 - VitalMux VitalMux2 VitalMux3 VitalMux4 VitalDecoder VitalDecoder2 VitalDecoder4 VitalDecoder8 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 22 ХНУРЭ e-mail: hahanova@mail.ru
  • 23. Использование функций примитивов ARCHITECTURE PinToPinDelay of AndOr IS attribute VITAL_LEVEL1 of PinToPinDelay: architecture is TRUE; BEGIN VitalBehavior: PROCESS (A, B, C, D) VARIABLE AND1_Out, AND2_Out, Q_Zd: std_ulogic; VARIABLE GlitchData_Q: VitalGlitchDataType; BEGIN -- Functionality section AND1_Out:= VitalAND2 ( A, B ); AND2_Out:= VitalAND2 ( C, D ); Q_zd:= VitalOR2 (AND1_Out, AND2_Out, ResultMap => DefaultECLMap); -- Path delay section VitalPathDelay01 (OutSignal => Q, OutSignalName => 'Q', OutTemp => Q_zd, Paths => ( 0 => (InputChangeTime => A’last_event, PathDelay => tpd_A_Q, PathCondition => TRUE), 1 => (InputChangeTime => B’last_event, PathDelay => tpd_B_Q, PathCondition => TRUE), 2 => (InputChangeTime => C’last_event, PathDelay => tpd_C_Q, PathCondition => TRUE), 3 => (InputChangeTime => D’last_event, PathDelay => tpd_D_Q, PathCondition => TRUE)), GlitchData => GlitchData_Q, DefaultDelay => VitalZeroDelay01, Mode => OnDetect, XoN => TRUE, MsgOn => TRUE, MsgSeverity => WARNING); END PROCESS; END; 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 23 ХНУРЭ e-mail: hahanova@mail.ru
  • 24. Логические примитивы ARCHITECTURE DistributedDelay OF AndOr IS attribute VITAL_LEVEL1 of DistributedDelay: architecture IS TRUE; signal AND1_Out, AND2_Out: std_ulogic; BEGIN I1: VitalAND2 (AND1_Out, A, B, tdevice_I1_Q, tdevice_I1_Q); I2: VitalAND2 (AND2_Out, C, D, tdevice_I2_Q, tdevice_I2_Q); I3: VitalOR2 (Q, AND1_Out, AND2_Out, tdevice_I3_Q, tdevice_I3_Q); END; 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 24 ХНУРЭ e-mail: hahanova@mail.ru
  • 25. Таблица символов VITAL type VitalTableSymbolType is ( '/', -- 0 -> 1 '', -- 1 -> 0 'P', -- Union of '/' and '^' (any edge to 1) 'N', -- Union of '' and 'v' (any edge to 0) 'r', -- 0 -> X 'f', -- 1 -> X 'p', -- Union of '/' and 'r' (any edge from 0) 'n', -- Union of '' and 'f' (any edge from 1) 'R', -- Union of '^' and 'p' (any possible rising edge) 'F', -- Union of 'v' and 'n' (any possible falling edge) '^', -- X -> 1 'v', -- X -> 0 'E', -- Union of 'v' and '^' (any edge from ФXХ) 'A', -- Union of 'r' and '^' (rising edge to or from 'X') 'D', -- Union of 'f' and 'v' (falling edge to or from 'X') '*', -- Union of 'R' and 'F' (any edge) 'X', -- Unknown level '0', -- low level '1', -- high level '-', -- don't care 'B', -- 0 or 1 'Z', -- High Impedance 'S' -- steady value ); 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 25 ХНУРЭ e-mail: hahanova@mail.ru
  • 26. Структура таблицы истинности Truth Table DataIn Map to X01 Section Output Result Map to X01Z Таблица истинности дешифратора 2 в 4 Constant DecoderTable: VitalTruthTableType(0 to 3, 0 to 5) := -- Input Pattern Response -- D1 D0 Q3 Q2 Q1 Q0 (( '0', '0', '0', '0', '0', '1'), ( '0', '1', '0', '0', '1', '0'), ( '1', '0', '0', '1', '0', '0'), ( '1', '1', '1', '0', '0', '0')); 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 26 ХНУРЭ e-mail: hahanova@mail.ru
  • 27. Структура таблицы состояний Таблица состояний D-триггера с синхронизацией по переднему фронту Constant DFFTable: VitalStateTableType := --RESET D CLK State Q (('0', '-', '-', '-', '0'), ('1', '1', '/', '-', '1'), ('1', '0', '/', '-', '0'), ('1', 'X', '/', '-', 'X'), ('1', '-', '-', '-', 'S')); 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 27 ХНУРЭ e-mail: hahanova@mail.ru
  • 28. Преимущества VITAL моделей(1)  Для ASIC разработчиков:  Улучшение переносимости проектов между различными EDA проектами.  Повышение скорости моделирования без выхода из среды VHDL проекта (в 10-15 раз)  Возможность использования стандартных VITAL- подпрограмм для пользовательских моделей.  Для поставщиков полупроводниковой продукции:  Единые библиотеки, поддерживаемые всеми основными средами моделирования EDA.  Точная поддержка временных параметров для субмикронной продукции.  Сокращение стоимости разработки и эксплуатации 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 28 ХНУРЭ e-mail: hahanova@mail.ru
  • 29. Преимущества VITAL моделей(2)  Для разработчиков EDA:  Концентрация на создании инструментов и проектов, а не библиотек.  Стандартные методы создания моделей позволяют повысить оптимизацию и сократит сложность проекта  Для проектировщиков микросхем и систем:  Отдельные VITAL-подпрограммы доступны всем пользователем.  Стандартизация пакетов гарантирует одинаковое поведение на различных инструментах и платформах  VITAL-примитивы позволяют упростить создание VHDL-моделей  Подпрограммы управления VITAL pin-to-pin задержкой позволяют легко добавить временные параметры в поведенческую модель  Временная проверка VITAL может быть использована для поиска ошибок функционирования проекта.  Использование SDF back-annotation может быть необязательным, допускается внесение всех временных параметров в модель  Множество смешанных пользовательских моделей имеет “Level0”  Пользовательские модели “Level 1” будут обрабатываться в 10-15 раз 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 29 ХНУРЭ e-mail: hahanova@mail.ru
  • 30. Выводы 1 Click to add Title 2 Click to add Title 3 Click to add Title 4 Click to add Title 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 30 ХНУРЭ e-mail: hahanova@mail.ru
  • 31. Контрольные вопросы и задания 1. В программе ISEWebPack создать проект и модель триггера или счетчика (что больше нравится), или взять готовую. 2. Выполнить синтез и имплементацию полученного устройства. 3. На этапе Place&Route сгенерировать vhdl-модель для анализа временных параметров и sdf-файл. 4. Открыть vhdl-файл, лучше в Active-HDL. Проанализировать из каких компонентов состоит модель устройства после имплементации. Как реализована функциональность, как временные параметры. 5. В какой библиотеке находятся компоненты, составляющие модель? Найти их реализацию в данной библиотеки. 6. Проанализировать код компонента. Определить является ли он совместимым по level0 или level1. Какие generic-константы он имеет. Как реализована функциональность. Где вычисляются задержки. 7. Оформить свои выводы, можно на листике от руки, можно печать. За все 5 баллов. 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 31 ХНУРЭ e-mail: hahanova@mail.ru
  • 32. Контрольные вопросы и задания 1. Причины создания стандарта IEEE Std 1076 –Vital? 2. Пять областей стандартизации VITAL? 3. Объяснить принципы совместимости модели Level0 и Level1. 4. Что такое SDF, где используется? 5. Как реализуется и где применяется Vital Data Flow? 2/22/2011 д.т.н. Хаханова И.В, каф.АПВТ, 32 ХНУРЭ e-mail: hahanova@mail.ru