Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

skill / Лбы skill / Лекция7_м

.doc
Скачиваний:
50
Добавлен:
05.06.2015
Размер:
443.39 Кб
Скачать

Лекция7

OCEAN

OCEAN- Open Command Environment for Analysis. OCEAN позволяет моделировать схемы, анализировать информацию после моделирования. Скрипты OCEAN можно запускать из терминала UNIX или из окна CIW. OCEAN можно применять с любым пакетом моделирования, интегрированным в Virtuoso ADE(Analog Design Environment) .

Обычно Virtuoso ADE используется при создании схемы и при ее отлаживании. После того, как вы добились полного соответствия характеристик схемы требуемым, вы можете использовать OCEAN для запуска своих скриптов и проверки схемы при различных условиях работы. После внесения изменений в схему (если они требуются) вы прсто еще раз запускаете ваши скрипты. OCEAN позволяет:

  • Создавать скрипты для проверки работоспособности схемы;

  • Осуществлять длительные типы анализов (например, параметрический, анализ работы по “углам”, статистический анализ) более эффективным способом;

  • запускать моделирование схемы прямо из терминала, не используя графический интерфейс.

Типы команд OCEAN

Скрипты OCEAN создаются для усовершенствования процесса контроля работоспособности, который осуществляется с помощью Virtuoso ADE. Скрипты OCEAN могут содержать три типа команд, как показано на этом рисунке.

Вся информация о запуске, создаваемая программой моделирования, доступна пользователю через команды OCEAN доступа к информации. Они также включают в себя все функции калькулятора Virtuoso ADE.

Ocean help

Помощь для команд ocean: ocnHelp(‘commandName).

Шаблон построения скрипта:

1

Определение программы моделирования

simulator

2

Установка переменных среды

(env variable)

design

resultDir

outfile

path

option

envoption

temp

3

Создание netlist

createNetlist

createFinalNetlist

4

Анализ

analysis

ic

dc

desVar

5

Запуска

run

paramRun

6

Доступ к информации

openResults

selectResults

delay

average

simulator(s_simulator )-устанавливает программу для моделирования.

Типы симуляторов:

-spekrtre

-spektreS

-cdsSpice

-spectreVerilog

Пример:

simulator( 'spectre )

design( t_lib t_cell t_view )-указывает имя проекта (схемы), который необходимо моделировать.

Пример:

design( "tests" "simple" "schematic" )

resultsDir( t_dirName )-указывает директорию в которую будут помещены результаты моделирования(psf файлы). Если директория не указана, то psf файлы помещаются в …/psf в директорию netlist.

Пример:

resultsDir("~/simulation/ckt/spectreS/schematic/psf")

path устанавливает путь к директории с модельными файлами.

Пример:

path(“ ~/models” ) - путь к директории “models” с моделями для симулятора Spice.

option([?categ s_categ] s_option1 g_value1 [s_option2 g_value2] .) - используется для задания значений встроенных параметров симулятора.

s_categ- тип используемого симулятора. Значения analog, digital, mixed. По умолчанию analog.

Пример:

option( ‘abstol (1e-10) ‘reltol (1e-6) )

envOption(s_envOption1 g_value1 ... [ s_envOptionN g_valueN ]) - задает параметры окружения.

Пример:

envOption( 'initFile "./myDotSFiles/init" )

temp( f_tempValue )- устанавливает значение температуры для моделирования.

Пример:

temp( 125 )

createNetlist( [?recreateAll b_recreate] [?display b_display]) – создание входного файла для симулятора. Если схема (проект) определены как lib/cell/view, то эта функция создает netlist и, если требуется то создает и входной файл. Если аргумент b_recreate определен как t, то перед созданием входного файла создание netlist происходит заново. Если проект задан как netlist, то он просто включается во входной файл. Аргумент b_display указывает отображать или нет netlist на экране. Функция используется для spectre.

Пример:

createNetlist( )

createNetlist(?recreateAll)

createFinalNetlist()-создает окончательный netlist. Эта функция используется для specters.

analysis(s_analysisType[?analysisOption1g_analysisOptionValue1].[?analysisOptionN g_analysisOptionValueN])- задает вид анализа для моделирования. Типы анализов: 'tran, 'dc, 'ac, 'noise. Параметры анализа зависят от его вида.

Пример:

analysis( ‘tran ?start 0 ‘stop 1u ?step 10)

После задания анализа задаются переменные, если они существуют.

desVar( t_desVar1 f_value1 ... [t_desVarN f_valueN])– функция задания переменных. Возвращает строку. Для дальнейших действий со значениями необходимо использовать evalstring.

Пример:

desVar(“r0” 1k )

desVar( "r1" "rs" "r2" "rs*2" )

a = evalstring( desVar( "rs")) / 2

save( vnet34” “net45” ) - функция определяет сохраняемые узлы и ветви.

здесь:

v - напряжение

i - ток

all - напряжения всех ветвей и токи всех узлов схемы

allv - напряжения всех ветвей схемы

alli - токи всех узлов схемы.

ic( t_net value ) - уставливает начальные значения на ветвях электрической цепи. Для tran анализа.

Пример:

ic( “/net1” 5 )

run( [analysisType] ) - функция запуска моделирования.

Пример:

run( )

run('dc)

paramRun( [s_paramAnalysis] ) - запуск параметрического анализа

Пример:

rsAnalysis = paramAnalysis("CAP" ?values '(10 20))

cornerRun - запуск анализа по “углам”

monteRun - запуск статистического анализ по методу Монте-Карло

optimizeRun -запуск оптимизационного анализа

Обработка результатов моделирования

openResults( t_dir )открывает результаты моделирования.

Пример:

openResults( "./simulation/opamp/spectre/schematic/psf" )

selectResults( analysisType )выбирает результаты заданного типа анализа.

Пример:

selectResults( ‘tran )

outputs( “net13” “net19” ) – выбирает из базы данных ветви с которыми будут работать, которые были сохранены с помощью selectResults.

v( t_net [‘resultsDir] )выбор конкретной цепи для работы с ней.

Для удобства работы с результатами можно какой-либо переменной присвоить значения конкретной ветви.

Пример:

a = v(“/net156” )

getData(t_name [?result s_resultName] [?resultsDir t_resultsDir])- возвращает номер или график указанного сигнала в зависимости от того в какой функции используется.

Пример:

getData( "/net6" ) => drwave:25178234

Далее для обработки результатов можно использовать любые функции калькулятора.

Одна из функций калькулятора delay. Она измеряет задержку.

delay( ?wf1 o_wf

?value1 n_value1

?edge1

?nth1

?td1

?wf2 o_wf2

.

.

.

)

=> o/waveform / n_value / nil

Пример:

delay( ?wf1 wf1 ?value1 2.5 ?nth1 2 ?edge1 ‘either

?wf2 wf2 ?value2 2.5 ?nth2 1 ?edge2 ‘falling )

Вычисляет задержку одного сигнала относительно другого в точке 2.5, причем первый сигнал может быть при пересечении и нарастающим, и спадающим, а второй сигнал должен быть спадающим. Причем первый сигнал пересекает ординату 2.5 второй раз, а второй сигнал – первый.

cross( o_waveform n_crossVal x_n s_crossType ) возвращает координату x точки пересечения заданного графика и линии заданной координатой y.

Отображение результатов моделирования:

plot(o_waveform)

=>o_waveform / nil

Выводит результат в заданном окне, если окно не задано, то создается новое.

Пример:

plot(v( "/net56" ) )

awvCreatePlotWindow(

?bBox l_boxSpec

?parentWindow w_windowId

)

  • w_windowId/nil

Создает окно Waveform и возвращает его Id.

l_boxSpec-координаты нижнего левого и верхнего правого углов нового окна, полагая что 0:0 это нижний левый угол экрана.

awvAppendWaveform(

w_windowId

l_waveform

[?expr l_exprList]

[?index l_waveIndexList]

[?color l_colorList]

[?lineType l_styleList]

)

=> t/nil

Добавляет графики из l_waveform листа в уже существующее окно к другим графикам.

l_exprList-выражения, которые будут отображены в названии графика

Пример:

awvAppendWaveform( window( 2 ) list( w3 w4 ) ?color

list( "y2" "y4" )

)

awvPlotWaveform(

w_windowId

l_waveform

[?expr l_exprList]

[?index l_waveIndexList]

[?color l_colorList]

[?lineType l_styleList]

[?datasymbol l_symbolList]

[?subwindow x_subwindow]

[?yNumber l_yNumberList]

[?stripNumber l_stripNumberList]

)

  • t/nil

строит графики в заданном окне (первый раз, затем исп. awvAppendWaveform)

Пример:

awvPlotWaveform( window( 2 ) list( w1 w1 ) ?expr

list( "wave1" "wave2" ) )

6

Соседние файлы в папке Лбы skill