Skip to content

Latest commit

 

History

History
190 lines (157 loc) · 9.86 KB

README.md

File metadata and controls

190 lines (157 loc) · 9.86 KB

8b10b

Что внутри

  1. Две реализации кодера и декодера 8b/10b по схемам из отчетов IBM RC 18855 и RC 23408;
  2. Тестовое окружение для проверки кодеров/декодеров 8b/10b в папке qa с таблицами всех возможных комбинаций;
  3. Скрипты для моделирования и синтеза в стеке от cadence'а окружения с кодером и декодером. Что используется:
    • Библиотеки от SkyWater 130nm;
    • UPF;
    • Lowpower flow;
    • MMMC flow;
    • multidomain/multilib;
    • Simple PLE flow.

Пояснения

  1. Скрипты для двух различных окружений:
    1. Несколько бибилотек ячеек различной высоты (multilib);
    2. Одна библиотека ячеек (lp).
  2. В окружении используются кодер и декодер из RC 23408;
  3. В рамках синтеза используются некоторые ячейки промаркированные в бибилиотеках как dont_use.

Схема для синтеза

Кодер, декодер и регистры из окружения принадлежат разным доменам питания. Цель синтеза - вставка ячеек для изоляции, преобразования уровня напряжения и сохранения состояния.

Кодер

Кодер реализован по схеме из RC 23408. Состоит из двух частей:

  1. Ядро (комбинационная схема с триггером для хранения текущего running disparity);
  2. Обвязка из триггеров. Подразумевается что вычислительное ядро должно отключаться в целях энергосбережения.

Декодер

Декодер реализован по схеме из RC 23408. Состоит из двух частей:

  1. Ядро (комбинационная схема и триггер для хранения running disparity);
  2. Обвязка из триггеров. Аналогичено кодеру, ядро декодера должно отключаться в целях энергосбережения.

Варианты синтеза

Общие положения

  • В кодере и декодере описаны абстрактные переключатели питания работающие по портам ENC_PS_CTRL и DEC_PS_CTRL (потому что в библиотеках sky130_fd_* нет ячеек реализующих функционал переключателей питания);
  • И кодер и декодер разбиты на два домена питания:
    • aon: входит переключатель питания и обвязка из триггеров;
    • ps: входит комбинационная логика и триггер хранения running disparity.
  • И в кодере и в декодере на границе между ps и aon доменами описаны рпавила вставки ячеек изоляции на случай отключения питания ядра. Включение ячеек изоляции осуществляется через порты ENC_ISO и DEC_ISO;
  • Для триггеров внутри ядер кодера и декодера описано правило вставки ячейки с сохранением состояния на случай отключения питания ядра. Переход в режим хранения осуществляется по фронтам управляющих сигналов ENC_RET и DEC_RET;
  • Для всех сигналов переходящих из домена в домен описаны правила вставки ячеек преобразования уровня напряжения, т.к. подразумевается что уровни в каждом домене будут отличаться.

Синтез в варианте multilib

cd <папка_с_репозиторием>
make

Иллюстрация сборки проекта с использованием lowpower + UPF + multidomain/multilib.

Для каждого домена питания используется отдельная бибилотека, т.е. каждый домен питания еще и библтотечный домен:

  • окружение: sky130_fd_sc_hvl

    • подразумевается что это always on домен питания;

    • состояния домена питания:

      Название Уровень напряжения питания (В)
      ON_5v0 5.0
      ON_3v3 3.3
    • из hvl библиотеки, помимо триггеров, берутся ячейки преобразования уровня напряжения.

  • декодер: sky130_fd_sc_lp

    • состояния aon домена питания:

      Название Уровень напряжения питания (В)
      ON_1v6 1.6
      ON_1v95 1.95
    • состояния ps домена питания:

      Название Уровень напряжения питания (В)
      ON_1v6 1.6
      ON_1v95 1.95
      OFF OFF
    • таблица переходов для ps домена:

      ON_1v6 ON_1v95 OFF
      ON_1v6
      ON_1v95
      OFF
    • таблица состояний внутри декодера:

      Название Состояние aon Состояние ps
      ON_1v6 ON_1v6 ON_1v6
      ON_1v95 ON_1v95 ON_1v95
      ON_1v6_OFF ON_1v6 OFF
      ON_1v95_OFF ON_1v95 ON_1vOFF
  • кодер: sky130_fd_sc_ls + sky130_fd_sc_lp.

    • две библиотеки потому что в ls нет триггеров с сохранением состояния;

    • состояния aon домена питания:

      Название Уровень напряжения питания (В)
      ON_1v4 1.4
      ON_1v8 1.8
    • состояния ps домена питания:

      Название Уровень напряжения питания (В)
      ON_1v4 1.4
      ON_1v8 1.8
      OFF OFF
    • таблица переходов для ps домена:

      ON_1v4 ON_1v8 OFF
      ON_1v4
      ON_1v8
      OFF
    • таблица состояний внутри декодера:

      Название Состояние aon Состояние ps
      ON_1v4 ON_1v4 ON_1v4
      ON_1v8 ON_1v8 ON_1v8
      ON_1v4_OFF ON_1v4 OFF
      ON_1v8_OFF ON_1v8 ON_1vOFF

Синтез в варианте lp

cd <папка_с_репозиторием>
make lp

Синтез схемы с использованием lowpower + UPF + MMMC + simple PLE.
Основная цель - иллюстрация voltage & ferquency scaling.
У всего окружения два режима работы:

Название Уровень напряжения питания (В) Частота тактового сигнала (МГц) Скорость данных (Мбит)
VNOM 1.6 1.25 10
VBOOST 1.95 12.5 100

В scripts/lp/mmmc.tcl описаны все режимы и условия работы.
Состояния доменов питания:

  • aon:
    Название Уровень напряжения питания (В)
    VNOM 1.6
    VBOOST 1.95
  • ps:
    Название Уровень напряжения питания (В)
    VNOM 1.6
    VBOOST 1.95
    OFF OFF

Таблица состояний внутри кодера и декодера:

Название Состояние aon Состояние ps
VNOM VNOM VNOM
VBOOST VBOOST VBOOST
VNOM_OFF VNOM OFF
VBOOST_OFF VBOOST OFF

Таблица состояний всего окружения:

Название Состояние домена кодера Состояние домена окружения Состояние домена декодера
OFF_VNOM_OFF VNOM_OFF VNOM VNOM_OFF
VNOM_VNOM_OFF VNOM VNOM VNOM_OFF
OFF_VNOM_VNOM VNOM_OFF VNOM VNOM
VNOM_VNOM_VNOM VNOM VNOM VNOM
OFF_VBOOST_OFF VBOOST_OFF VBOOST VBOOST_OFF
VBOOST_VBOOST_OFF VBOOST VBOOST VBOOST_OFF
OFF_VBOOST_VBOOST VBOOST_OFF VBOOST VBOOST
VBOOST_VBOOST_VBOOST VBOOST VBOOST VBOOST

Ссылки

  1. 8B/10B Encoding and Decoding for High Speed Applications (RC23408)
  2. The ANSI Fibre Channel Transmission Code (RC 18855)