Часть 10: СИМУЛЯЦИЯ


plug

10-7: Функция (Function Entity) (ALS)

plug



Объект функция - альтернативный метод спецификации поведения. Он делает ссылку на C-процедуру, которая была скомпилирована в Electric. Поскольку есть только ограниченное количество таких процедур, и поскольку исходный код всегда не столь просто обновить, объект функция ограничен в использовании. Однако это средство очень мощное и может быть использовано для повышения эффективности сложной модели цепи. Оно позволяет разработчику работать на верхних уровнях абстракции так, что вся система может быть задумана до разработки нижнего уровня схемы. Примеры этого включают арифметико-логические узлы, RAM, ROM и другие цепи, которые легче описать в терминах программного алгоритма, чем на уровне описания вентилей аппаратной части.

Функция озаглавлена объявлением function - заявление, которое дает имя и список экспортов (на которые есть ссылки на верхнем уровне описания). Формат заявления функции показан ниже:

Format:

function name(signal1, signal2, signal3, ... signalN)

Example:

function JK_FF(ck, j, k, out)


function DFFLOP(data_in, clk, data_out)


function BUS_TO_STATE(b7,b6,b5,b4,b3,b2,b1,b0, output)


function STATE_TO_BUS(input, b7,b6,b5,b4,b3,b2,b1,b0)

Имя ссылается на C-процедуру, которая найдет параметры сигнала в той очередности, в какой они появляются в списке аргументов. Только четыре функции в настоящее время доступны, они перечислены выше. Есть два триггера (JK и D) и два числовых конвертера, которые осуществляют трансляцию между шиной из 8 сигналов и композицией шестнадцатеричных цифр.

Объявление портов Input и Output

Заявления i: и o:, сопровождающие объявление функции, используются для передачи симулятору информации о сигналах, относящихся к управляемым функцией, и к управляемым другими событиями. Если любой сигнал в списке управляемых событием меняет состояние, вызывается функция, и выходные значения вычисляются заново. Формат заявления i:, которое содержит список событий, управляющих входом, показан ниже:

Format:

i: signal1 signal2 signal3 ... signalN

Example:

i: b7 b6 b5 b4 b3 b2 b1 b0


i: input phi phi_bar set reset

Формат заявления o:, которое содержит список выходных портов, показан ниже:

Format:

o: signal1 signal2 signal3 ... signalN

Example:

o: out1 out2 out3


o: q q_bar

Другие спецификации

Поскольку есть специальные заявления, сказывающиеся на операционных характеристиках объекта вентиля, постольку есть заявления, возможные непосредственно из функций. Заявление t: используется для задания времени задержки между изменениями входа и выхода. Заявление load используется для задания относительной нагрузки (емкостной) для входных и выходных портов. Заявление priority используется для планирования приоритета. Заявление set используется для инициализации сигналов в специальное логическое состояние перед запуском симулятора. Формат этих заявлений идентичен соответствующим для объекта вентиля. Заметьте, что С-процедура не использует значений, установленных в этих заявлениях и может планировать события со значениями, которые установлены непосредственно внутри программы.

Пример использования функции

Спецификация для 3х-битового сдвигающего регистра (переключаемого фронтом) показан ниже. Эта цепь использует примитив функции для моделирования операций D-триггера:

   model main(input, ck, q2, q1, q0)  
   stage0: DFFLOP(input, ck, q0)  
   stage1: DFFLOP(q0, ck, q1)  
   stage2: DFFLOP(q1, ck, q2)
   function DFFLOP(data_in, clock, output)  
   i: clock  
   o: output  
   t: delta=10e-9  
   load clock=2.0

Следует отметить, что тактовый генератор (clock) - единственное событие управляющее входом для функции триггера. Нет необходимости вызывать функцию, если сигнал "data_in" образуется только тогда, когда сигнал управляющего события ("clock") изменяет состояние. Разработчик может написать функцию так, что она образует данные только тогда, когда функция вызвана, и тактовый вход переходит в высокий уровень (переключение передним фронтом). Если тактовый сигнал в низком состоянии, когда вызывается функция (спад), процедура может игнорировать данные и возвращать управление назад программе симуляции.

Аргументы вызова С-процедуры устанавливаются, как прикрепленный список указателей сигнала. Симулятор размещает аргументы в этом списке в том же порядке, в каком они появляются в объявлении объекта функции. От программиста требуются некоторые знания внутреннего устройства симулятора для извлечения корректной информации из этого списка и планирования новых событий. Полное обсуждение программирования объекта функции выходит за рамки данного документа.


Prev

Предыдущий

   

Contents

Содержание

   

Следующий

Next