Перейти к содержанию
    

setup на характеризацию

Уважаемые форумчане и мой постоянный собеседник oratie! :)

Где бы найти информацию о сетапе на характеризацию цифровых селов хоть одного автоматического тула. Как правильно нагрузить экстрактнутый нетлист?

Что я имею ввиду:

Какой номинал сопротивление между генератором и гейтами входных транзисторов. А может это вовсе не сопротивление а единичный буффер. Вопрос остро стоит из-за возникновения набросов при вычислении внутренней энергии при переключении села. Кривая тока источника во времени на диапазоне переключения может иметь как отрицательные, так и положительные выбросы (зависит от внешней нагрузочной емкости) . Что учитывать, как учитывать?

:05:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Use of the Synopsys Pre-Driver Waveform for Characterization

 

OVERVIEW

 

When obtaining timing characteristics for a standard cell from spice

simulation data, the input waveform has a significant effect on the timing

measurements. In Liberty NCX there are four methods of creating the input

waveform. These are:

1) the 'ramp' method using a linear Hspice PWL source statement.

2) The 'active driver' method with 'active_drv_pwl=false', which uses the

output of another cell.

3) a multi-point PWL representation of the active driver output, obtained by

using the setting 'active_drv_pwl=true'.

4) the pre-driver method which is analogous to taking the output of a PWL

source and passing it through a low-pass filter.

The recommended method for best results in most cases is the pre-driver.

 

THEORY OF THE PREDIVER METHOD

 

In an actual design, waveforms seen at an input pin of a cell instance

may come from any cell driver in the library and will be modified after passage

through a wide range of RC networks. So in an actual design, not fabricated

testcases (e.g. where all of the cells are characterized with similar input

waveforms), 0% error for gate-level delay-calculation is unattainable. Almost

all input waveforms along a design path will differ from any specific

characterization stimulus waveform.

 

So, what to do? Picking a specific active driver is bad for several

reasons. The first is that in an actual design there are many different

driver/load cell combinations; choosing a specific driver improves accuracy

for cells driven by the choice at the expense of accuracy for cells driven

otherwise.

 

Second, there are many ways to use an active driver to elicit a desired output

slew, for example:

1) sweep the output capacitance for fixed input slew,

2) sweep input slew for fixed output capacitance, and

3) a mix of these and/or other termination networks

 

The shape of the output waveform (which is then used as the input

waveform for characterization) in these three cases is different even when

the slew values are exactly the same, and all three scenarios are possible in an

actual design. Picking one scenario over another does not minimize the error

introduced for all instances in a design.

 

A third major reason an active driver is a bad choice is that it completely

ignores the impact of a waveform propagating through an RC network, and this is

typically MUCH more significant in an actual design than the variation in driver

waveform shapes.

 

This leads to the realization that the choice of pre-driver waveform that

minimizes error for designs is empirical; it depends on so many different factors

(e.g. technology, library, design), that the best thing to do is to use an

abstract driver that mitigates error in an explicit, easy to understand way.

This is what the pre-driver does; it splits the error between the two extremes

of:

 

1) fast input slew with no RC network effect and

2) slow input slew with significant RC network effect.

 

By using a pre-driver waveform, we strive to minimize the maximum error possible

over all driver/load/net scenarios. For a fabricated testcase with homogeneous

cells and/or networks, using a pre-driver specific to the testcase can give

better results, but that approach is not of sign-off quality for an actual design.

 

Is the pre-driver the best choice for a specific technology, library, and

design combination? One cannot know this without performing detailed comparisons.

This question is exactly like asking what is the best possible routing

configuration, synthesized netlist, etc. ... the only way to know is to

consider all possible characterization waveform shapes, which is impractical.

 

What we can say is that in the ABSENCE of any analysis specific to the

technology, library, and design used, the Synopsys pre-driver is a better choice

than using a linear ramp or a specific active driver.

 

 

DETAILS OF THE PREDRIVER IMPLEMENTATION

 

The pre-driver used in Liberty NCX is a composite of a linear PWL (ramp)

waveform and a single-pole step response. This is to split the error between

the two cases of:

 

1) fast input slew with no RC network effect.

2) slow input slew with significant RC network effect.

 

In Liberty NCX the ramp portion is just a common spice PWL waveform with a

slope value specified by the user. The single-pole step-response is generated

from the response of an RC network. To better understand how we mix the ramp

and step-response, we first define two values, t_low and t_high. These are the

time values derived from the low and high thresholds, or trip points used to

define the output transition. Specifically, t_low is the time in the

simulation when the low-threshold voltage is achieved and t_high is the

corresponding time when the high-threshold voltage is achieved.

 

For a rising output, the transition time can be calculated from the

equations:

 

vlow = Vdd * ( 1 - exp(-(t_low-tstart)/RC))

vhigh = Vdd * (1 - exp(-(t_low-tstart)/RC))

 

Solving the above two equations we can get tstart and RC time constant which

yields the step-response:

 

v_step(t) = Vdd * (1 - exp(-(t-tstart)/RC))

 

We can then write an equation to use in generating a new piece-wise linear

source that is a composite of the original ramp waveform and the step response

as:

 

v_predriver(t) = 0.5 * (vramp(t) + v_step(t))

 

In NanoChar a sample at a step size of "0.1*slope" is used. This results in

time points as follows:

 

t0, t0+0.1*slope, t0+0.2*slope , ..., t0 + slope

 

This yields the voltage time pairs needed in the Hspice PWL source statement.

Below is a spice deck that shows how a pre-driver is used:

 

* netlist to show the pre-driver

* Get the pre-driver waveform for input slew = 1ns

.param inslew=1n

 

.param vdd = 1.0v, vlow=0.2, vhigh=0.8

.param tl=`1n+0.2n`, th=`1n+0.8n`

.param pct_low=0.2, pct_high=0.8

 

* ramp input

V1 1 0 PWL (1n 0, '1n + inslew' vdd)

 

* step-response

.param rc=`(th-tl)/log((1.0-pct_low)/(1.0-pct_high))`

.param tx=`tl+rc*(log(1.0-pct_low))`

 

V2 2 0 EXP ( 0 1 tx rc 20n rc)

 

 

* mix of ramp and step-response

* 0.5 * (v1 + v2)

E3 3 0 poly(2) 2 0 1 0 0 0.5 0.5

 

.option post=1

.tran 1ps 20n

.plot

.end

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уважаемые форумчане и мой постоянный собеседник oratie! :)

Где бы найти информацию о сетапе на характеризацию цифровых селов хоть одного автоматического тула. Как правильно нагрузить экстрактнутый нетлист?

Что я имею ввиду:

Какой номинал сопротивление между генератором и гейтами входных транзисторов. А может это вовсе не сопротивление а единичный буффер. Вопрос остро стоит из-за возникновения набросов при вычислении внутренней энергии при переключении села. Кривая тока источника во времени на диапазоне переключения может иметь как отрицательные, так и положительные выбросы (зависит от внешней нагрузочной емкости) . Что учитывать, как учитывать?

:05:

 

Из своего опыта: вход - идеальный источник и linear PWL (по двум точкам), нагрузка - обычная емкость:). Очень неплохая корреляция по задержкам и выходным слопам с TSMC библиотекой (разница меньше 2% ). Для Internal Power погрешность больше, иногда до 10%.

Что касается выбросов тока источника, то информации недостаточно: что за выбросы, тип ячейки, условия характеризации и т.д. Если это не очень секретная информация:).

А вообще, как я понимаю, отрицательный выброс тока на шине питания очень даже возможен - за счет перезаряда емкости Gate-Source/Drain.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Из своего опыта: вход - идеальный источник и linear PWL (по двум точкам), нагрузка - обычная емкость:). Очень неплохая корреляция по задержкам и выходным слопам с TSMC библиотекой (разница меньше 2% ). Для Internal Power погрешность больше, иногда до 10%.

Что касается выбросов тока источника, то информации недостаточно: что за выбросы, тип ячейки, условия характеризации и т.д. Если это не очень секретная информация:).

А вообще, как я понимаю, отрицательный выброс тока на шине питания очень даже возможен - за счет перезаряда емкости Gate-Source/Drain.

 

Да действительно, со слопами и задержками корреляция хорошая и при идеальном источнике. И сравниваемся мы тоже c TSMC. :) C Internal Power теже проблемы, может чуть побольше в процентах ,чем в вашем случае. Во всем диапазоне templates разница между "эталонными" TSMC и нашими результатами неравномерна. При практически нулевых входных фронтах и нулевых нагрузочных емкостях имеем резулатат, меньший чем у TSMC.

Скажем при подачи сигнала на простой сел, единичный инвертор, часть его (сигнала) попадает напрямую через емкости о которых вы писали на выход (g-d) и если у нас RС-распределенный нетлист - к источнику (g-s). Это ведь вклад входного источника в общее потребление, пусть и косвенный, раз снимаем ток с фиксированной ноды источника. Результат интегрирования i(t)- разность двух ~ равных по площади фигур :( . Возможно тулы как-то избавляются от вклада входного источника. Поправьте, если что не так, матчасть страдает....... :)

Изменено пользователем spectre

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уважаемые форумчане и мой постоянный собеседник oratie! :)

Где бы найти информацию о сетапе на характеризацию цифровых селов хоть одного автоматического тула. Как правильно нагрузить экстрактнутый нетлист?

Что я имею ввиду:

Какой номинал сопротивление между генератором и гейтами входных транзисторов. А может это вовсе не сопротивление а единичный буффер. Вопрос остро стоит из-за возникновения набросов при вычислении внутренней энергии при переключении села. Кривая тока источника во времени на диапазоне переключения может иметь как отрицательные, так и положительные выбросы (зависит от внешней нагрузочной емкости) . Что учитывать, как учитывать?

:05:

 

В SignalStorm есть пример в описании. Если кратко - на входе задаются разной длительности фронты. На выход вешаются различные емкости. Обычно группируются элементы и емкости соответсвуют именно их нагрузкам.

 

 

что-то вроде:

 

Index D1{

Slew = 0.0625n 0.15n 0.3125n 0.625n 1.375n 2.625n 5.375n;

Load = 0.0005p 0.0065p 0.018p 0.04p 0.09p 0.18p 0.37p;

};

Index D2{

Slew = 0.0625n 0.15n 0.3125n 0.625n 1.375n 2.625n 5.375n;

Load = 0.001p 0.013p 0.036p 0.08p 0.018p 0.36p 0.74p;

};

 

............................................

Group D1{

CELL = *D1 *C1 *L1 *PN* ;

};

Group D2{

CELL = *D2 *C2 *H2 *L2 *M? *M?? *D2_BS *EH2 ;

};

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Андрей, возможно у Вас ошибка (выделил жирным шрифтом). Извините за дотошность, но вдруг вы приведенные данные из исходных текстов у себя скопировали.

В SignalStorm есть пример в описании. Если кратко - на входе задаются разной длительности фронты. На выход вешаются различные емкости. Обычно группируются элементы и емкости соответсвуют именно их нагрузкам.

 

 

что-то вроде:

 

Index D1{

Slew = 0.0625n 0.15n 0.3125n 0.625n 1.375n 2.625n 5.375n;

Load = 0.0005p 0.0065p 0.018p 0.04p 0.09p 0.18p 0.37p;

};

Index D2{

Slew = 0.0625n 0.15n 0.3125n 0.625n 1.375n 2.625n 5.375n;

Load = 0.001p 0.013p 0.036p 0.08p 0.018p 0.36p 0.74p;

};

 

............................................

Group D1{

CELL = *D1 *C1 *L1 *PN* ;

};

Group D2{

CELL = *D2 *C2 *H2 *L2 *M? *M?? *D2_BS *EH2 ;

};

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Андрей, возможно у Вас ошибка (выделил жирным шрифтом). Извините за дотошность, но вдруг вы приведенные данные из исходных текстов у себя скопировали.

 

Да, Вы дважды правы: скопировал у себя и это неприятная опечатка. Сейчас буду смотреть, насколько критичная. Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Андрей, возможно у Вас ошибка (выделил жирным шрифтом). Извините за дотошность, но вдруг вы приведенные данные из исходных текстов у себя скопировали.

 

Оценил. В общем, криминала нет. Просто вместо ряда емкостей

0.001p 0.013p 0.036p 0.08p 0.018p 0.36p 0.74p;

 

получил

 

0.001, 0.013, 0.018, 0.036, 0.08, 0.36, 0.74

 

соответственно нагрузки между 0.08 и 0.36 будут считаться с меньшей точностью по этим точкам.

 

Но, конечно, надо пересчитывать. Да и группа элементов - самая большая.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...