- •Техническое задание
- •2.1 Таблицы переключения схем и вывод формул времён задержек
- •Вывод времён задержек формирования выходного сигнала для схемы 2
- •Вывод времён задержек формирования выходного сигнала для схемы 3
- •2.2 Экспресс-анализ характеристик схем
- •3. Оптимизация выбранной подсхемы
- •4. Топологическое проектирование
- •5. Описание и генерация топологии в системе трас
- •5.1. Функция cell_ генерации топологии
- •5.2. Главная программа
- •5.3. Сгенерированная топология
- •Список источников
4. Топологическое проектирование
Перед выполнением чертежа, построим топологический эскиз (ТЭ) – упрощённое изображение топологического чертежа от руки без точного соблюдения масштаба, в котором отсутствуют непринципиальные для определения площади детали. В эскизе все шины поликремния и металла, имеющие минимальную ширину, изображаются не полосками, а линиями, т. е. не имеют толщины. Будем рисовать линию кремния коричневым цветом, кармана – синим, поликремния – зелёным, металла – чёрным. Топологический эскиз изображен на рисунке 8.
Рисунок 8. Топологический эскиз
По топологическому эскизу выполним топологический чертёж на листе в клетку с соблюдением масштаба. При построении будем опираться на оптимальные ширины каналов, приведённые в таблице 9. При проектировании будем учитывать правила воспроизводимости структур в 6-мкм-КМОП КНС-технологии. Полученный топологический чертеж представлен на рисунке 9.
Рисунок 9. Топологический чертёж
5. Описание и генерация топологии в системе трас
5.1. Функция cell_ генерации топологии
Специализированный кремниевый компилятор фрагмента CELL представляет собой функцию генерации топологии CELL_. В ней описываются и позиционируются транзисторы схемы; выводятся тексты входов, выходов, размеров схемы; расставляются слои.
Используются слои следующего типа: контактные окна, n-кремний, p-кремний, поликремний, карман, металл, слой для разметки габаритов фрагмента. Слои задаются трассами, тексты задаются операторами векторного текста, указание размеров - линиями. Транзисторы задаются переменными типа layout_fix. Координаты вводятся в масштабе 1:1000 (1 мм = 1 мкм). Текст функции генерации топологии представлен в листинге 1.
Листинг 1. Функция CELL_
#include "stdafx.h"
#include "CELL.H"
layout_fix CELL_()
{
layout_fix Tp1 = TRAN_(PMOP, 6, 6, 0, 0, 0, 0);
layout_fix Tp2 = TRAN_(PMOP, 6, 6, 0, 0, 0, 0);
layout_fix Tp3 = TRAN_(PMOP, 6, 6, 0, 0, 0, 0);
layout_fix Tp4 = TRAN_(PMOP, 6, 6, 0, 0, 0, 0);
layout_fix Tp5 = TRAN_(PMOP, 9, 6, 0, 0, 0, 0);
layout_fix Tp6 = TRAN_(PMOP, 18, 6, 70, -70, 70, -70);
layout_fix Tn1 = TRAN_(NMOP, 18, 6, 0, 0, 0, 0);
layout_fix Tn2 = TRAN_(NMOP, 9, 6, 0, 0, 0, 0);
layout_fix Tn3 = TRAN_(NMOP, 6, 6, 0, 0, 0, 0);
layout_fix Tn4 = TRAN_(NMOP, 6, 6, 0, 0, 0, 0);
layout_fix Tn5 = TRAN_(NMOP, 6, 6, 0, 0, 0, 0);
layout_fix Tn6 = TRAN_(NMOP, 6, 6, 0, 0, 0, 0);
layout_fix CELL; //Имя возвращаемого фрагмента
float h = 20;
FRAG(CELL) M(1000)
COM("Генерация топологии фрагмента ");
//Позиционирование транзисторов
P(Tp1, 44, -10) TV(TSP_, 44, -9, h, "TP1")
P(Tn1, 44, 0); TV(TSN_, 44, 0, h, "TN1")
P(Tp2, 60, -10) TV(TSP_, 60, -9, h, "TP2")
P(Tn2, 60, 0); TV(TSN_, 60 , 0 , h, "TN2")
PO(Tp3, 39, -39, R1) TV(TSP_, 36, -39, h, "TP3")
PO(Tn3, 39, -57, R1); TV(TSN_, 36, -57, h, "TN3")
P(Tp4, 76,-10); TV(TSN_, 76,-9, h, "TP4")
P(Tn4,76 , 0); TV(TSN_, 76 , 0, h, "TN4")
P(Tp5, 76 , -33) TV(TSP_, 76 , -33, h, "TP5")
P(Tn5, 76 , -70); TV(TSN_, 76 , -70, h, "TN5")
P(Tp6, 60, -42) TV(TSP_, 60, -42 , h, "TP6")
P(Tn6, 60,-70); TV(TSN_, 60,-70, h, "TN6")
TV(TSI_, 44, 30 , h, "X") // Bxoд X
TV(TSI_, 60, 30 , h, "Y") // Вход Y
TV(TSI_, 20 , -67 , h, "C") // Вход C
TV(TM1_, 90 ,-57, h, "S") // Bыxoд S
TV(TM1_, 90, -2, h, "P") // Bыxoд P
TV(TM1_, 80, -9 , h, "E") // E
TV(TM1_, 18,1, h, "GND") // Земля
S(NA_) // кремний (красный)
H(6)
T(36, 18) Y(0)
T(85, 3) X(89)
T(52, -4) Y(-20)
T(86, 0) Y(-10)
T(52, -54) Y(-70)
T(86, -54) Y(-70)
S(SI_) // поликремний (зелёный)
H (6)
T(44, 26) Y(-14)
T(60, 26) Y(-14)
T(60, -20) Y(-74)
T(76, 18) Y(-74)
T(29, -39) X(47)
T(44, -42) Y(-60)
T(46, -57) X(23)
T(26, -60) Y(-70)
// Позиционирование контактов
POZ(Kn) // CNA_
//_(36 , 13)
_( 68, 3)
_(86, -1)
_(36, -63)
_(52, -57)
_(68, -67)
_(86, -57)
//_(36, -49)
POZ(Kp) // CPA_
_(36 , -7)
_( 68, -7)
_( 86, -3)
_( 52, -17)
_(52, -37)
_(84, -27)
_(36, -47)
_(36, -33)
POZ(Ks) // CSI_
_(26, -67)
_(76, -17)
_(76, 15)
_(60, 23)
_(44, 23)
_(60, -47)
S(M1_) // Слой Ml_ - металл
H(6)
T(33, 15) X(79)
T(23, -67) X(29)
T(33, -67) X(89)
T(36, -64) Y(-54)
T(33, -57) X(23)
T(26, -54) Y(6)
T(29, 3) X(79)
T(79, -7) X(33)
T(36, -10) Y(-36)
T(39, -27) X(87)
T(44, 26) Y(20)
T(60, 26) Y(20)
T(86, 2) Y(-6)
T(49, -17) X(79)
T(33, -47) X(63)
T(49, -37) X(89)
T(83, -57) X(49)
T(86, -40) Y(-60)
S(PA_) // кремний (синий)
H (6)
T(85, -7) X(89)
T(52, -10) Y(-20)
T(35, -7) X(33)
T(86, -4) Y(-2)
T(84, -24) Y(-33)
H(18)
T(51, -33) X(49)
S(KN_) // карман KN_ (оранжевый)
K(91, -2) X(31) Y(-42) XY(41, -52) X(47) Y(-44)
X(71) Y(-35) X(91) Y(-2)
ENDK
ENDF
return (CELL);
} // CELL_