Скачиваний:
10
Добавлен:
29.11.2022
Размер:
1.9 Mб
Скачать

Оптимизация выбранной схемы

Для выбранной схемы 3 (рисунок 7) транзисторы T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 входят в некритическую подсхему, следовательно их ширины каналов будут минимальными:

При этом времена задержек . Считаем, что сигналы X и Y симметричны, так как они предварительно установлены и имеют одинаковую нагрузку, значит W1 = W2 и, следовательно, .

Определим переменные оптимизации :

Тогда:

Введем ограничения на сумму ширин каналов и на минимальное значение ширины отдельного канала:

Формулировка задачи оптимизации:

Найти вектор X, который минимизирует целевую функцию

и удовлетворяет условиям:

В качестве начала решения зафиксируем мкм, а все остальные ширины каналов оставим по 6 мкм. Очевидно, что чем больше значение , тем сильнее минимизируется значение целевой функции, однако стоит учитывать ограничение на сумму ширин каналов. При одновременном увеличении происходит минимизация целевой функции при соблюдении условия .

Результаты оптимизации приведены в таблице 6.

Таблица 6. Результаты оптимизации выбранной схемы.

T

W, мкм

1

15

2

15

3

12

4

6

5

6

6

6

7

6

8

6

9

6

10

6

11

6

12

6

13

6

14

12

Общая сумма ширин каналов составила 228 мкм.

Проектирование топологии

Схема 1 не делается, так как была отброшена в экспресс-анализе

Рисунок 6. Эскиз 1

Был выбран лучший эскиз (второй), по нему будет строиться топология.

Рисунок 7. Эскиз 2

Рисунок 8. Эскиз 3

Рисунок 9. Топология

Сапр трас Функция 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, 15, 6, 0, 0, 0, 0);

layout_fix Tp2 = TRAN_(PMOP, 15, 6, 0, 0, 0, 0);

layout_fix Tp3 = TRAN_(PMOP, 12, 6, 0, 0, 0, 0);

layout_fix Tp4 = TRAN_(PMOP, 6, 6, 0, 0, 0, 0);

layout_fix Tp5 = TRAN_(PMOP, 6, 6, 0, 0, 0, 0);

layout_fix Tp6 = TRAN_(PMOP, 6, 6, 0, 0, 0, 0);

layout_fix Tp7 = TRAN_(PMOP, 6, 6, 0, 0, 0, 0);

layout_fix Tp8 = TRAN_(PMOP, 6, 6, 0, 0, 0, 0);

layout_fix Tp9 = TRAN_(PMOP, 6, 6, 0, 0, 0, 0);

layout_fix Tp10 = TRAN_(PMOP, 6, 6, 0, 0, 0, 0);

layout_fix Tp11 = TRAN_(PMOP, 6, 6, 0, 0, 0, 0);

layout_fix Tp12 = TRAN_(PMOP, 6, 6, 0, 0, 0, 0);

layout_fix Tp13 = TRAN_(PMOP, 6, 6, 0, 0, 0, 0);

layout_fix Tp14 = TRAN_(PMOP, 12, 6, 210, 0, 210, 0);

layout_fix Tn1 = TRAN_(NMOP, 15, 6, 0, 0, 0, 0);

layout_fix Tn2 = TRAN_(NMOP, 15, 6, 0, 0, 0, 0);

layout_fix Tn3 = TRAN_(NMOP, 12, 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 Tn7 = TRAN_(NMOP, 6, 6, 0, 0, 0, 0);

layout_fix Tn8 = TRAN_(NMOP, 6, 6, 0, 0, 0, 0);

layout_fix Tn9 = TRAN_(NMOP, 6, 6, 0, 0, 0, 0);

layout_fix Tn10 = TRAN_(NMOP, 6, 6, 0, 0, 0, 0);

layout_fix Tn11 = TRAN_(NMOP, 6, 6, 0, 0, 0, 0);

layout_fix Tn12 = TRAN_(NMOP, 6, 6, 0, 0, 0, 0);

layout_fix Tn13 = TRAN_(NMOP, 6, 6, 0, 0, 0, 0);

layout_fix Tn14 = TRAN_(NMOP, 12, 6, 0, 0, 0, 0);

layout_fix CELL;

float h = 20;

FRAG(CELL) M(1000)

COM("Aaia?aoey oiiieiaee o?aaiaioa ");

P(Tp1, 52, 173)

TV(TSP_, 52, 173, h, "TP1")

P(Tn1, 135, 173);

TV(TSN_, 135, 173, h, "TN1")

P(Tp2, 52, 155)

TV(TSP_, 52, 155, h, "TP2")

P(Tn2, 134, 155);

TV(TSN_, 134 , 155 , h, "TN2")

P(Tp3, 52, 137, R1)

TV(TSP_, 52, 137, h, "TP3")

P(Tn3, 134, 137, R1);

TV(TSN_, 134, 134, h, "TN3")

P(Tp4, 76, 173);

TV(TSP_, 76, 173, h, "TP4")

P(Tn4, 110, 173);

TV(TSN_, 110 , 173, h, "TN4")

P(Tp5, 76, 155)

TV(TSP_, 76 , 155, h, "TP5")

P(Tn5, 115, 155);

TV(TSN_, 115 , 155, h, "TN5")

P(Tp6, 53, 53)

TV(TSP_, 53, 53, h, "TP6")

P(Tn6, 134, 53)

TV(TSN_, 134, 53, h, "TN6")

P(Tp7, 53, 71)

TV(TSP_, 53, 71, h, "TP7")

P(Tn7, 135, 71)

TV(TSN_, 53, 71, h, "TN7")

P(Tp8, 53, 89)

TV(TSP_, 53, 89, h, "TP8")

P(Tp8, 135, 89)

TV(TSN_, 135, 89, h, "TN8")

P(Tp9, 53, 107)

TV(TSP_, 53, 107, h, "TP9")

P(Tp9, 135, 107)

TV(TSN_, 135, 107, h, "TN9")

P(Tp10, 77, 71)

TV(TSP_, 77, 71, h, "TP10")

P(Tn10, 111, 71)

TV(TSN_, 111, 71, h, "TN10")

P(Tp11, 77, 89)

TV(TSP_, 77, 89, h, "TP11")

P(Tn11, 111, 89)

TV(TSN_, 111, 89, h, "TN11")

P(Tp12, 77, 107)

TV(TSP_, 77, 107, h, "TP12")

P(Tn12, 111, 107)

TV(TSN_, 111, 107, h, "TN12")

P(Tp13, 105, 16)

TV(TSP_, 105, 16, h, "TP13")

P(Tn13, 128, 16)

TV(TSN_, 111, 107, h, "TN13")

P(Tp14, 76, 53)

TV(TSP_, 76, 53, h, "TP14")

P(Tn14, 76, 18)

TV(TSN_, 76, 18, h, "TN14")

TV(TSI_, 162, 74 , h, "X")

TV(TSI_, 162, 110 , h, "Y")

TV(TSI_, 162, 92, h, "C")

TV(TM1_, 115, 1, h, "S")

TV(TM1_, 5, 30, h, "P")

TV(TM1_, 75, 202 , h, "E")

TV(TM1_, 115, 202, h, "GND")

S(SI_)

H(6)

T(77, 189) Y(146)

T(103, 186) X(112) Y(149) X(120)

T(91, 22) X(142)

K(72, 7) X(72 + 12) Y(68) X(81) Y(123) X(81 - 6) Y(68) X(72) ENDK

K(103, 62) X(103 + 11) Y(122 - 6) X(103 + 11 + 5) Y(122) X(103 + 5) Y(68) X(103) ENDK

K(51, 41) XY(57, 41) XY(57, 62) XY(62, 62) XY(62, 68) XY(57, 68) XY(57, 83) XY(57, 83) XY(57, 98) XY(62, 98) XY(62, 104) XY(57, 104) XY(57, 123) XY(46, 123) XY(46, 117) XY(51, 117) XY(51, 86) XY(46, 86) XY(46, 80) XY(51, 80) ENDK

K(44, 146) XY(46, 146) XY(46, 128) XY(60, 128) XY(60, 134) XY(58, 134) XY(58, 149) XY(60, 149) XY(60, 189) XY(44, 189) XY(44, 183) XY(45, 183) XY(45, 152) XY(44, 152) ENDK

K(129, 128) XY(143, 128) XY(143, 134) XY(141, 134) XY(141, 149) XY(143, 149) XY(143, 189) XY(128, 189) XY(128, 170) XY(125, 170) XY(125, 164) XY(128, 164) XY(128, 149) XY(129, 149) ENDK

K(126, 41) XY(137, 41) XY(137, 62) XY(137, 80) XY(142, 80) XY(142, 86) XY(137, 86) XY(137, 86) XY(137, 116) XY(142, 116) XY(142, 122) XY(131, 122) XY(131, 104) XY(126, 104) XY(126, 98) XY(131, 98) XY(131, 68) XY(126, 68) XY(126, 62) XY(131, 62) XY(131, 47) XY(126, 47) ENDK

S(NA_)

K(10, 180) XY(145, 180) XY(145, 174) XY(16, 174) XY(16, 77) XY(159, 77) XY(159, 71) XY(10, 71) ENDK

K(21, 143) XY(148, 143) XY(148, 137) XY(27, 137) XY(27, 95) XY(159, 95) XY(159, 89) XY(21, 89) ENDK

K(33, 59) XY(159, 59) XY(159, 53) XY(39, 53) XY(39, 25) XY(86, 25) XY(86, 19) XY(33, 19) ENDK

K(40, 113) XY(153, 113) XY(153, 155) XY(40, 155) XY(40, 161) XY(159, 161) XY(159, 107) XY(40, 107) ENDK

K(103, 47) XY(109, 47) XY(109, 13) XY(125, 13) XY(125, 30) XY(131, 30) XY(131, 7) XY(103, 7) ENDK

S(M1_) // iaoaee (?a?iue)

K(33, 134) XY(74, 134) XY(74, 152) XY(80, 152) XY(80, 134) XY(103, 134) XY(103, 189) XY(109, 189) XY(109, 134) XY(125, 134) XY(125, 170) XY(131, 170) XY(131, 128) XY(39, 128) XY(39, 53) XY(33, 53) ENDK

K(21, 200) XY(80, 200) XY(80, 183) XY(74, 183) XY(74, 194) XY(60, 194) XY(60, 164) XY(54, 164) XY(54, 194) XY(27, 194) XY(27, 47) XY(51, 47) XY(51, 59) XY(75, 59) XY(75, 68) XY(81, 68) XY(81, 59) XY(97, 59) XY(97, 19) XY(91, 19) XY(91, 53) XY(57, 53) XY(57, 41) XY(21, 41) ENDK

K(10, 36) XY(81, 36) XY(81, 30) XY(10, 30) ENDK

K(114, 25) XY(120, 25) XY(120, 7) XY(114, 7) ENDK

K(56, 104) XY(62, 104) XY(62, 62) XY(56, 62) ENDK

K(126, 104) XY(132, 104) XY(132, 62) XY(126, 62) ENDK

K(137, 189) XY(143, 189) XY(143, 164) XY(137, 164) ENDK

K(44, 189) XY(50, 189) XY(50, 146) XY(44, 146) ENDK

K(46, 123) XY(86, 123) XY(86, 77) XY(109, 77) XY(109, 47) XY(132, 47) XY(132, 41) XY(103, 41) XY(103, 71) XY(80, 71) XY(80, 117) XY(52, 117) XY(52, 80) XY(46, 80) ENDK

K(114, 200) XY(159, 200) XY(159, 116) XY(142, 116) XY(142, 80) XY(136, 80) XY(136, 116) XY(119, 116) XY(119, 59) XY(142, 59) XY(142, 19) XY(136, 19) XY(136, 31) XY(109, 31) XY(109, 7) XY(73, 7) XY(73, 13) XY(103, 13) XY(103, 37) XY(136, 37) XY(136, 53) XY(113, 53) XY(113, 122) XY(153, 122) XY(153, 128) XY(137, 128) XY(137, 134) XY(153, 134) XY(153, 194) XY(120, 194) XY(120, 146) XY(114, 146) ENDK

POZ(Kp) // eiioaeou

_(47, 186)

_(77, 186)

_(106, 186)

_(140, 186)

_(57, 167)

_(128, 167)

_(140, 167)

_(47, 149)

_(77, 149)

_(117, 149)

_(57, 131)

_(140, 131)

_(49, 120)

_(78, 120)

_(116, 119)

_(139, 119)

_(59, 101)

_(129, 101)

_(49, 83)

_(139, 83)

_(59, 65)

_(78, 65)

_(106, 65)

_(129, 65)

_(36, 56)

_(53, 44)

_(106, 44)

_(129, 44)

_(94, 22)

_(139, 22)

_(77, 10)

_(77, 34)

_(77, 32)

_(116, 22)

_(118, 22)

S(KN_)

K(42, 33) XY(88, 33) XY(88, 192) XY(42, 192) ENDK

K(89, 17) XY(117, 17) XY(117, 27) XY(89, 27) ENDK

ENDF

return (CELL);}