МУ к лабораторным работам по приборно-технологическому моделированию в системе TCAD Sentaurus, страница 7
Описание файла
PDF-файл из архива "МУ к лабораторным работам по приборно-технологическому моделированию в системе TCAD Sentaurus", который расположен в категории "". Всё это находится в предмете "автоматизация проектирования электронных средств" из 5 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "автоматизация проектирования электронных средств" в общих файлах.
Просмотр PDF-файла онлайн
Текст 7 страницы из PDF
В общем случае ониспользуется следующим образом:if {<условное выражение>} {<фрагмент программы>}elseif {<условное выражение>} {<фрагмент программы> }else {<фрагмент программы>}Логическое выражение должно содержать одну из операций,приведенных в таблице 5.Внимание! Выражения внутри фигурных скобок в TCL могутрасполагаться на нескольких строках, но с внешней стороны скобкиотделять друг от друга переносом строки в синтаксисе команды недопускается! Это связано с тем, что перенос строки с внешней стороныфигурных скобок будет восприниматься интерпретатором как завершениекоманды.Таблица 5 — логические операцииВыражениЧто означаете==Проверка на равенство выражений в левой и правой частях<Значение выражения в левой части меньше значения выраженияв правой части?>Значение выражения в левой части больше значения выраженияв правой части?!Операция логического «НЕ»<=Значение выражения в левой части меньше или равно значениявыражения в правой части?>=Значение выражения в левой части больше или равно значениявыражения в правой части?!=Проверка на неравенство выражений в левой и правой частях||Операция «ИЛИ»&&Операция «И»Задача.
Написать программу, реализующую считывание из файлаradius.txt значения радиуса круга, вычисление площади этого круга и записьполученного результата в файл square.txt. В программе реализовать проверкузначения радиуса: если оно неотрицательное, то в выходной файл должновыводиться значение площади; если значение радиуса отрицательное, вкомандное окно должно выводиться сообщение «Incorrect radius value».Решение. Текст программы представлен ниже:set inp_file [open “radius.txt” r]; ##присваивание переменной imp_file##указателя файл “radius.txt”, открываемого для чтенияset radius [gets $inp_file]; ##чтение первой строки файла и перемещение##указателя на следующую строку (считаем, что в ней записан радиус);if {$radius>=0} {set square [expr 3.14*$radius*$radius]; ##вычисление площади кругаset out_file [open “square.txt” w]; ##присваивание переменной out_file##указателя файл “square.txt”, открываемого для записиputs $out_file $square; ##запись в выходной файл значения переменной##squareclose $out_file; ##закрытие выходного файла} else {puts “Incorrect radius value”;}close $inp_file; ##закрытие входного файлаОрганизация циклов.
Практически все методы решения задач (методконечных разностей, метод конечных элементов) позволяют свести системудифференциальных уравнений к системе алгебраических уравнений, котораярешается итерационными методами. Реализация итерационных методоввсегда связана с выполнением повторяющихся команд, входящих в телоцикла.В TCL реализуется главным образом цикл с предусловием while,который реализуется следующим образом:while {<логическое выражение>} {<тело цикла (повторяющиеся команды)>}Цикл выполняется до тех пор, пока логическое выражение принимаетзначение ИСТИНА.
Если при входе в цикл логическое выражение ЛОЖНО,то цикл не выполняется ни одного раза. Если логическое выражение всегдаИСТИННО вне зависимости от результата выполнения цикла, то такой циклбудет повторяться до бесконечности. Этого следует избегать.Возможно также реализовать цикл с параметром:for {<инициализация параметра>}{<условие>}{<правило измененияпараметра>} {<тело цикла>}Причем в качестве правила изменения параметра могут использоватьсяоперации инкремента incr или декремента decr. Например:for {set i 1} {$i<=$count} {incr i} {puts $i}Например, если в приведенном выше примере фигурную скобку передputs $i (выделена жирным) переместить на следующую строку, тоинтерпретатор TCL выдаст ошибку: знак конца строки означает завершениекоманды (если он не находится в фигурных скобках или в кавычках), т.
е.Цикл будет заканчиваться инструкцией {incr i}, и не будет правильноинтерпретирован.12. Задания для лабораторной работы №4 «Разработкапрограммных модулей на языке TCL»Написать программу в соответствии с номером варианта (1-9):1. Написать программу, считывающую из файла и записывающую его4 строки в переменные a, b, c и d. После считывания программа должнаb+cdвыполнить операцию: a .2. Написать программу, последовательно считывающую 4 элементаопределителя матрицы, и вычисляющую значения этого определителя.3. Написать программу, последовательно считывающую абсциссы иординаты двух двумерных векторов, и вычисляющую их скалярноепроизведение.4. Написать программу, последовательно считывающую абсциссы иординаты двух двумерных векторов, и вычисляющую координатысуммарного вектора.5.
Написать программу вычисления площади треугольника, стороныкоторого построены на векторах с координатами (a,b) и (c,d). Значениякоординат векторов считывать из файла.6. Написатьпрограммувычислениязначениявыраженияsin(a+b)×cos(c+d). Меры углов a, b, c и d считывать из файла. Первые двазначения считать заданными в радианной мере, вторые два — в градусноймере.7.
Написать программу вычисления обратной матрицы размером 2×2.Программа должна считать 4 элемента a, b, c и d. Первые два составляютпервую строку исходной матрицы, вторые два — вторую строку. Реализоватьпроверку существования обратной матрицы.8. Написать программу возведения матрицы размером 2×2 в квадрат.Программа должна считать 4 элемента a, b, c и d. Первые два составляютпервую строку исходной матрицы, вторые два — вторую строку.9.
Написать программу вычисления значения выражения a×b+c-d.Программа должна считывать 4 элемента a, b, c и d из файла.13.Разработкапрограммныхуправляющихс использованием средств TCL (Tool Command Language).модулейРабота с массивами. В TCL нет массивов как таковых, но естьсписковые структуры данных. При этом список можно получить из строки спомощью команды split:split <значение переменной-строки> <символ-разделитель>Создать список можно также командой list:list <перечень элементов>Доступ к элементу на заданной позиции осуществляется при помощикоманды lindex:lindex <имя списка> <индекс>Длина списка возвращается командой llength:llength <имя списка>Замена элементов списка выполняется командой lreplace:lreplace $<имя списка> <индекс первого заменяемого> <индекспоследнего заменяемого> <список заменяемых элементов>Нумерация элементов в массиве начинается с нуля.Задача.
Написать программу, реализующую сортировку массива повозрастанию методом «пузырька».Решение. Метод пузырька представляет собой два цикла, одинвложенный в другой. Внутренний цикл проверяет все пары соседнихэлементов на условие сортировки и, если оно не выполняется, реализуетперестановку этих элементов. Внешний цикл повторяет эту процедуруопределенное количество раз (привязанное к размеру массива)Текст программы представлен ниже:set str “5 4 3 2 1”;set mass [split $str “ “];set lmass [llength $mass];for {set i 0} {$i<$lmass} {incr i} {for {set j 0} {$j<$lmass} {incr j} {set c [lindex $mass $j]set jj [expr $j+1]set d [lindex $mass $jj]if {$c > $d} {set mass [lreplace $mass $j $jj $d $c]}}}puts $massСсылки в Sentaurus Workbench.
Для того, чтобы запустить большоеколичество узлов, подчиняющихся некоторому условию, на выполнение,следует определить, какие ссылки допускает Sentaurus Workbench. Каждаяссылка представляет собой внутренний параметр Sentaurus Workbench. Наэтапе препроцессорной обработки (перед запуском узлов проекта навыполнение) программы Sentaurus Workbench в каждом командном файледля каждого конкретного узла заменяет ссылки на параметр на его значение.Часто приходится ссылаться и на внутренние параметры SentaurusWorkbench. Приведем некоторые из них в таблице 6.Таблица 6 – внутренние параметры Sentaurus Workbench.Параметр@node@@node:all@@node:-<a>@@node:+<a>@@node:<a>@@node:index@@node|+<a>@@node|-<a>@@node:min@@node:max@@node|<comp>@Что означаетНомер текущего узлаTCL-Список всех узлов текущего компонентаНомер узла текущего компонента, расположенный на<a> уровней выше текущего узлаНомер узла текущего компонента, расположенный на<a> уровней ниже текущего узлаНомер <a>-го узла текущего компонентаПорядковый номер текущего узлаНомер узла, расположенного на <a> узлов правеетекущегоНомер узла, расположенного на <a> узлов левеетекущегоМинимальный индекс узла текущего компонентаМаксимальный индекс узла текущего компонентаНомер узла компонента <comp>, находящегося наодном уровне (на одной высоте) с текущимПолный список возможных ссылок на внутренние параметрыпредставлен в [4].В управляющей программе TCL можно ссылаться на номера узлов спомощью этих команд, их обрабатывать, фильтровать и т.п.
К примеру, еслиследует определить все узлы предшествующего компонента sdevice1, тосписок будет записываться следующим образом:set node_list [list @node|sdevice1@];set len [llength $node_list];Вывод полученных в программе значений переменных возможно в средуSentaurus Workbench командой puts "DOE: <имя переменной> <значениепеременной>".Например, puts “DOE: d $d”.Язык Inspect. Когда требуется выполнить обработку большогоколичества электрических характеристик, вывести их на график,сгенерировать файлы в формате txt для обработки их другими программами,выполнять это в интерактивном режиме неэффективно по времени исопряжено с возможными субъективными ошибками.
На этот случайпрограмма Inspect предоставляет пользователю возможность написатьпрограмму чтения и обработки результатов моделирования. Язык программыInspect представляет собой расширение языка TCL дополнительнымифункциями, приведенными в [5]. Некоторые из них приведены в таблице 7.Таблица 7 – встроенные функции InspectФункцияproj_load<dataset>ОписаниеПример<filename> Загрузка plt-файла proj_loadn@node|<filename> в набор sdevice@_combinat.pltданных <dataset>n@node|sdevice@_combinatcv_createDS<curveName><xDataPath><yDataPath> <{axis y}>Созданиекривойсименем<curveName>,спискомабсцисс<xDataPath>,спискомординат<yDataPath>*cv_createDSTotalCurrent_c_drain {n@node|sdevice@_combinat NO_NODEtime}{n@node|sdevice@_combinatc_drainTotalCurrent} ycv_createWithFormula<curveName><formula><xmin><xmax><ymin><ymax>Создание кривой сименем<curveName>,вычисляемойпоформуле <formula>вдиапазонезначений <xmin> …<xmax> по осиабсцисс и диапазонезначений <ymin> …<ymax> по осиординат.cv_createWithFormulamy_drain"<TotalCurrent_c_drain>$myy" A A A A ##Вычитаетиз всех ординат кривойзначение параметра $myy## Если следует выполнитьрасчет для всех значений, товместо границ диапазонапишутся буквы Аcv_getValsX<curveName>ПолучениеTCL- set answerYсписок абсцисс из "my_drain"]кривой с именем<curveName>[cv_getValsYcv_getValsY<curveName>ПолучениеTCL- set answerXсписок ординат из "my_drain"]кривой с именем<curveName>[cv_getValsXcv_createFromScriptСоздание кривой с<curveName> <x_list> именем<y_list> <{axis y}><curveName>подвум TCL-спискам:списку абсцисс исписку ординат.cv_createFromScript my_drain1$answerX $answerY y## Размеры списков должныбыть идентичнымиПродолжение таблицы 7ФункцияОписаниеПримерcv_write<type> Получение файла cv_writetxt<filename> <curvelist> типа<type>с n@PHI@_@TETA@_drain.txtименем <filename> my_drain1с характеристикой(спискомхарактеристик)<curvelist>proj_unload <dataset>Отключение набора proj_unloadданных <dataset>sdevice@_combinatn@node|*Для задания списка абсцисс или ординат следует в фигурных скобках записать следующуюпоследовательность: <имя набора данных> <имя контакта/NO_NODE> <Имя параметра Inspect/time>.Выражение NO_NODE указывается, если выводимый на ось параметр не связан с конкретнымконтактом, например, время (time).В правом столбце таблицы 7 выполняется последовательность действий:вначале считывается plt-файл n@node|sdevice@_combinat.plt, затем строитсявременная зависимость тока стока, из всех ординат зависимости вычитаетсязначение параметра $myy, разбивает полученную кривую на списки абсцисси ординат, собирает из полученных списков новую кривую и ее записывает вфайл n@PHI@_@TETA@_drain.txt, содержащий два столбца: столбецабсцисс и столбец ординат.