- Две реализации кодера и декодера 8b/10b по схемам из отчетов IBM RC 18855 и RC 23408;
- Тестовое окружение для проверки кодеров/декодеров 8b/10b в папке qa с таблицами всех возможных комбинаций;
- Скрипты для моделирования и синтеза в стеке от cadence'а окружения с кодером и декодером. Что используется:
- Библиотеки от SkyWater 130nm;
- UPF;
- Lowpower flow;
- MMMC flow;
- multidomain/multilib;
- Simple PLE flow.
- Скрипты для двух различных окружений:
- Несколько бибилотек ячеек различной высоты (multilib);
- Одна библиотека ячеек (lp).
- В окружении используются кодер и декодер из RC 23408;
- В рамках синтеза используются некоторые ячейки промаркированные в бибилиотеках как
dont_use
.
Кодер, декодер и регистры из окружения принадлежат разным доменам питания. Цель синтеза - вставка ячеек для изоляции, преобразования уровня напряжения и сохранения состояния.
Кодер реализован по схеме из RC 23408. Состоит из двух частей:
- Ядро (комбинационная схема с триггером для хранения текущего running disparity);
- Обвязка из триггеров. Подразумевается что вычислительное ядро должно отключаться в целях энергосбережения.
Декодер реализован по схеме из RC 23408. Состоит из двух частей:
- Ядро (комбинационная схема и триггер для хранения running disparity);
- Обвязка из триггеров. Аналогичено кодеру, ядро декодера должно отключаться в целях энергосбережения.
- В кодере и декодере описаны абстрактные переключатели питания работающие по портам
ENC_PS_CTRL
иDEC_PS_CTRL
(потому что в библиотекахsky130_fd_*
нет ячеек реализующих функционал переключателей питания); - И кодер и декодер разбиты на два домена питания:
aon
: входит переключатель питания и обвязка из триггеров;ps
: входит комбинационная логика и триггер хранения running disparity.
- И в кодере и в декодере на границе между
ps
иaon
доменами описаны рпавила вставки ячеек изоляции на случай отключения питания ядра. Включение ячеек изоляции осуществляется через портыENC_ISO
иDEC_ISO
; - Для триггеров внутри ядер кодера и декодера описано правило вставки ячейки с сохранением состояния на случай отключения питания ядра. Переход в режим хранения осуществляется по фронтам управляющих сигналов
ENC_RET
иDEC_RET
; - Для всех сигналов переходящих из домена в домен описаны правила вставки ячеек преобразования уровня напряжения, т.к. подразумевается что уровни в каждом домене будут отличаться.
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
-
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 |