Формальная Семантика сложных операторов линейной темпоральной логики

УДК 681.326:519.613

С.А. ЗАЙЧЕНКО, В.И. ХАХАНОВ

ФОРМАЛЬНАЯ СЕМАНТИКА СЛОЖНЫХ ОПЕРАТОРОВ ЛИНЕЙНОЙ ТЕМПОРАЛЬНОЙ ЛОГИКИ

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

1. Введение

Любая система на кристалле является параллельной. В общем случае под параллельными понимаются программно-аппаратные системы с несколькими параллельными процессами, которые непрерывно обмениваются сообщениями с внешней средой. Большинство цифровых аппаратных систем имеют конечное число состояний, определяющееся набором достижимых значений всех сигналов. В отличие от аппаратных систем, большинство программных систем, где применяются динамические структуры данных, имеют бесконечное число состояний, что значительно усложняет процессы их верификации [1,2].

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

Очевидно, анализ работы параллельных систем, также как и анализ ограничений, предполагает формальные рассуждения об изменении состояния системы с течением времени. Формальное утверждение о том, что система всегда или в выбранном интервале времени удовлетворяет заданному логико-временному ограничению последовательностей состояний, называется темпоральным утверждением или темпоральной ассерци-ей. Необходимы формальные механизмы для моделирования параллельных систем и механизмы описания ассерций.

Темпоральная логика позволяет задать порядок событий во времени без внесения понятия времени в явном виде. Применение темпоральной логики для описания ограничений параллельных систем показало свою эффективность при специфицировании требований и верификации цифровых систем.

С точки зрения цели специфицирования различают два принципиальных вида темпоральных ограничений, которые можно задавать при помощи утверждений темпоральной логики [2]:

- инвариантные ограничения (safety) - заданная последовательность состояний никогда не случится (например, ресурс никогда не будет использован двумя процессами одновременно);

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

Помимо цели, темпоральные ограничения могут дополнительно характеризоваться требованиями допустимости (fairness constraints). Допустимость является требованием к множеству разрешенных в системе вычислительных путей. Характеристика допустимости является важным фактором для путей бесконечной длины, возникающих при циклических вычислительных процедурах. Различают три вида требования допустимости:

- безусловная допустимость (unconditional fairness) - для всех переходов независимо от их вхождения в состав выбранного пути каждый переход выполняется бесконечно часто;

- слабая условная допустимость (weak fairness) - некоторые из переходов, включенных в состав выбранного пути, будут выполнены бесконечно часто:

- сильная условная допустимость (strong fairness) - все переходы, включенные в состав выбранного пути, будут выполнены бесконечно часто.

Существует два основных подхода к решению задачи верификации цифровых систем на основе темпоральных ассерций: формальные методы [3] ( математическое доказательство удовлетворения системой инвариантных и достижимых ограничений без тестовых воздействий ) и динамические методы [4] ( проверка выполнения системой заданных ограничений во время имитационного моделирования, или симуляции, под воздействием тестовых стимулов ). Формальные методы гарантируют 100% точность результатов верификации, однако их применение сопряжено со значительными вычислительными затратами в связи с экспоненциальной сложностью. На практике, несмотря на отсутствие 100% гарантии результатов, более распространено применение динамических методов, более приспособленных к проверке работоспособности системы в основных операционных режимах.

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

Типичная математическая база анализа ассерций во время симуляции, состоящая в трансформации операторов LTL-логики к детерминированным конечным автоматам, лишь частично способна удовлетворить основные требования к верификации на основе ассерций [5]. Основной проблемой классической модели является экспоненциальный рост количества состояний в зависимости от структурной сложности реализуемой темпоральной формулы. Кроме того, накладывается существенное ограничение на языки описания ассерций в виде простого подмножества, поскольку классическая модель неспособна осуществить проверку ряда темпоральных конструкций с приемлемой для практического применения вычислительной сложностью. Поддержка режима глобального времени практически невозможна на основе модели конечных автоматов.

Очевидно, для обеспечения существенно лучшей производительности анализа ассер-ций и поддержки темпоральных операторов, определяемых для бесконечных вычислительных путей, необходима принципиально иная модель. Такими свойствами обладает ранее предложенная модель динамических регистровых очередей (DRTLQ - Dynamic Register-Transfer-Level Queues) [6]. Модель ориентирована на высокопроизводительный анализ элементов линейной темпоральной логики и эффективность обнаружения и локализации нарушений [7]. Ключевые понятия, вводимые в модели (последовательностные функции, темпоральные свойства), представляют собой обобщенную надстройку над общеизвестными терминами LTL и языков описания ассерций [8].

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

К основным задачам исследования относятся:

- уточнение ранее предложенной модели процесса анализа темпоральных формул в рамках динамических методов верификации ( под управлением HDL-симулятора );

- формальное определение семантики сложных операторов LTL-логики последова-тельностного и темпорального уровня, призванное обеспечить строгую однозначность интерпретации формул при реализации системы верификации на основе ассерций;

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

2. Цикл работы ассерционного процесса в модели DRTLQ

Наиболее общим понятием модели DRTLQ является ассерционный процесс - совокупность элементов булевого, темпорального и верификационного уровня семантики ассерций, реализующая верификацию логически связанной группы темпоральных утверждений. Самым близким к ассерционному процессу языковым термином является единица верификации (verification unit) из языка PSL. Ассерционным процессом AP в модели DRTLQ называется целостная совокупность множества верификационных переменных B, списка текущих потоков активации Q , очереди последовательностных функций F и темпоральных свойств р, одного ассерционного монитора M, как правило, относящаяся к определенному функциональному блоку системы и реализующая верификацию логически связанной группы темпоральных утверждений в процессе моделирования:

AP = {B, Q, F, P, M}.

В моменты изменения верификационные переменные создают события:

e = Iе ^, e t^ , e , Р tb , ta },

где e^ - связи события с другими событиями; р - характеристический вектор

события; tb и ta - время создания и активации события соответственно, измеряемое в количестве тактовых событий с момента начала моделирования.

Событие называется активированным, если в ходе обработки оно достигло элемента ассерционного процесса, создающего поток активации. Поток (или кольцо) активации Ю k е Q в модели DRTLQ - динамическое множество всех обрабатываемых событий e J,, i > 0,k > 0, соответствующих одному вычислительному пути п , который начинается с тактового цикла с порядковым номером k .

Событие может быть связано с другими событиями в двух различных видах цепочек. Правая цепочка r^, формируемая двунаправленными событийными связями e^, соответствует событиям, связанным одним кольцом активации. Основная цель связывания событий в правые цепочки состоит в возможности каскадных операций над всем потоком (например, уничтожение при завершении потока). Левая однонаправленная цепочка r^, формируемая событийными связями e ^, соответствует событиям различных колец активации, которые одновременно транспортируются через выбранный элемент модели. Правая цепочка неупорядочена, она формируется свободно, здесь порядок не играет никакой роли, а левая цепочка упорядочена по времени создания события, что принципиально важно для конвейерной обработки нескольких потоков активации.

Характеристический вектор события р - короткое двоичное слово, транспортируемое в составе события, индивидуальные биты которого моделируют семантические флаги-модификаторы, оказывающие влияние на обработку события. Важнейшие флаги-модификаторы приведены в табл.1.

Таблица 1

Обозначение Описание

VAL р Текущее значение события

LDEAD р Событие должно быть отделено от левой цепочки

RDEAD р Событие должно быть отделено от правой цепочки

ACTIVE р Событие активировано

RTOP р Событие является вершиной потока активации

ABORT р Событие исходит от элемента прерывания анализа

Транспортирование событий осуществляется путем перегруппировки левых цепочек. Левые цепочки ассоциируются с элементами модели более высокого уровня, формирующими пути транспортирования событий. Пусть ;{е} ••• е^ } представляет собой левую цепочку, из которой транспортируются события, а г^ ;{е! • • • е^2 } - левую цепочку, к которой они направляются. Суть задачи простого (а) и копирующего транспортирования (б);

а) г^ ;гД и

б) С2; к

состоит в корректном расширении цепочки г^ событиями из цепочки с сохранением относительного порядка событий в результирующей цепочке г^ ;

е ^ (е02) = е;

Ук,1 < к <

г!2

2. = е

-1,ек—1 = е^(ек ) ^Ме^) < 1ь(е^).

Слияние цепочек событий происходит начиная с правого края с одновременным итерированием в единственно допустимом направлении, при этом не теряется позиция

.2

вставки, что обеспечивает линейную сложность алгоритма относительно суммы

+

г

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

полностью очищает и перезаписывает результатом г^ цепочку .

Помимо основной задачи (3), осуществляется дополнительная задача элиминации лишних событий, руководствующаяся двумя критериями;

1. Если рКОБА°(ек) = 1, т.е. вычислительный поток события уничтожен, событие должно быть отключено от левой цепочки и уничтожено. Гарантируется, что событие с установленным флагом р КША° будет уничтожено при первой же попытке транспортирования, соответственно, можно утверждать, что для любого события целевой цепочки

ЬББАБ / к ч п

р (е2) = 0.

2. Если для двух соседних событий в результирующей цепочке выполняется условие

^ь(е к2-1) = *ь(е к2), а р(ек2_1) = р(ек2) (характеристические векторы идентичны), то одно из событий можно уничтожить.

Частным случаем задачи транспортирования (3) является случай, при котором | | = 0. Такое упрощение сводит задачу к переносу тех элементов цепочки в результирующую цепочку , которые не попадают под действие описанных выше критериев элиминации. Этот процесс, аналогично полноценному транспортированию, характеризуется

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

Анализ ассерций в модели DRTLQ осуществляется по событию, доставка которого в ассерционный процесс является обязанностью родительской системы моделирования. Каждая итерация цикла работы всегда соответствует уникальному моменту времени. Ситуация, когда одному моменту времени соответствует более одной итерации анализа, исключается.

Итерации анализа разделяются на типы в зависимости от момента запуска;

- регулярная итерация - запускается по тактовому событию (если тактового события не определено, по событию изменения любой из множества верификационных переменных, принадлежащих ассерционному процессу);

- итерация прерывания - запускается при срабатывании условия прерывания (операторы async_abort и яупе_аЬог(), прерывает все активные вычислительные потоки путем обработки множеств внутренних событий элементов-очередей и элементов-репетиций;

- финальная итерация - запускается один раз в конце моделирования, транспортирует все цепочки событий непосредственно монитору на обработку с учетом требований условной допустимости (безусловная, слабая, сильная).

Финальная итерация и итерация прерывания предназначаются только для поддержки специальных видов ассерционных языковых конструкций и сводится к итерированию подготовленных заранее отдельных элементов системы (очередей и репетиций) и обработке множеств их внутренних событий.

Регулярная итерация анализа ассерций включает в себя следующие шаги:

1. Считывание значений всех ассерционных переменных.

2. Запуск шага вычислительной процедуры каждой из последовательностных функций, в соответствии с очередью обработки:

е ^ (е02) = е; Ук,1 < к < г.

<2

- 1,ек2_1 = е^(ек2) ^Ые^) < 1ь(ек2).

2

2

2

3. Запуск шага обработки ассерционного монитора.

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

Ассерционный монитор непосредственно не контактирует с уровнем последовательностей, а обрабатывает события по запросу. Для обеспечения взаимодействия уровня последовательностей с ассерционным монитором, вершиной иерархии последовательностных функций, т.е. последним элементом в очереди на выполнение, используется служебная

функция действия fAcтION . Данная функция не имеет ни внутренних, ни выходных событий, поскольку ее единственной задачей является доставка поступившей на вход цепочки событий к ассерционному монитору. Функции действия применяются также для реализации режима глобального времени, однако в этом случае цепочки поступивших событий доставляются не монитору, а темпоральным свойствам.

Пусть г^ - цепочка событий, транспортированных к монитору с последовательностного уровня. Независимо от типа монитора сначала проверяется статус активации каждого

события: если р АСТ1УЕ(е е ) ф 1, событие уничтожается без каких-либо нотификаций

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

Предположим, обрабатываемая ассерция моделирует инвариантное ЬТЬ-ограничение вида neveг({...seq...}). В таком случае монитор называется запрещающим, и принцип его работы следующий:

Уе е V,"

р ¥АЬ(е) = 1 ^

герог^айеф;

гесиге^е1у

Уе' е {е^е^ }(е), рКШАО(е') ^ 1;

[ ЬБЕАБ/ ч , ЯБЕАБ/ ч , ,

р ™(е) = о (е) (е) ^1;

I е^ (е) = е^ (е) = е ^ гepoгt(passed).

Если значение события рVAL (e) = 1, это означает, что дочерняя последовательность выполнена успешно, а значит, ассерция нарушена. В таком случае весь поток активации ю , соответствующий времени активации ta рассматриваемого события e е г^, признается удовлетворенным, и дальнейший его анализ (могут существовать другие события этого потока) не имеет смысла. Все события, относящиеся к данному потоку, уничтожаются

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

ет внешней среде о неудаче анализа ассерции, вызывая абстрактную процедуру report с неудачным статусом.

Если же значение события р VAL (e) = 0, это означает, что один из сценариев последовательности удовлетворяет свойству. В таком случае, событие просто уничтожается из всех цепочек. Если событие было последним в собственном потоке активации, монитор сигнализирует внешней среде об успехе анализа ассерции, на этот раз вызывая процедуру report с положительным статусом.

Работа разрешающего монитора, моделирующего инвариантное ограничение вида always({...seq...}), подобна запрещающему монитору. Различие состоит только в противоположности условия срабатывания: событие с отрицательным значением р VAL(e) = 0 является в данном случае определяющим неудачный статус и досрочное завершение анализа потока активации. Напротив, р VAL(e) = 1 считается успешным результатом, и,

если такое событие последнее в потоке активации, то ассерция удовлетворяется на данном вычислительном пути.

Также существует третий тип монитора - ожидающий, соответствующий LTL-ограни-чениям достижимости вида eventually!({...seq...}):

Ve е г^,

= 1 ^

report(passed);

e. U^RDE^ ' ) ^ 1-

recursively

Ve ' е {et^e^ }(e), р™^ ') ^ 1;

р VAL(e) = 0 ^ рLDEAD(e) ^ рRDEAD(e) ^ 1.

В случае прихода события с положительным значением рVAL (e) = 1 поток активации удовлетворяется, и монитор сигнализирует об успешном статусе анализа. Отрицательный статус р VAL(e) = 0 лишь уничтожает поступившее событие. Никакие действия с потоком

активации не происходят, поскольку в режиме локального времени свойство eventually! не может дать отрицательного результата, за исключением конца моделирования.

3. Семантика последовательностных функций

Последовательностной функцией f е F в модели DRTL Q называется некоторая вычислительная процедура, характеризующаяся множествами входных, внутренних и выходных событий, осуществляющая их пошаговое преобразование на каждом тактовом цикле верификации. Результатом последовательностной функции в некоторый момент времени (номер тактового цикла с начала моделирования) является содержимое множества выходных событий в этом моменте времени.

Активирующей последовательностной функцией является такая последовательностная функция, выходные события которой, во-первых, инициируют некоторый поток активации, соответствующий текущему тактовому циклу, если таковой еще не был инициирован, во-вторых, назначают связи между событиями по правой цепочке в соответствии с принадлежностью к инициированному потоку, в-третьих, устанавливают значение флага ACTIVE ,

р = ь

С точки зрения обработки одного события последовательностные функции можно интерпретировать как конечные автоматы. Событие, поступив на вход последовательностей функции, попадает в некоторое начальное состояние. Из начального состояния в зависимости от особенностей вычислительной процедуры и внешних условий событие попадает в одно из внутренних состояний. Наконец, достигнув конечного состояния, событие передается на выход функции и используется следующими элементами модели.

Детали вычислительного процесса, скрытого последовательностной функцией, зависят от ее типа. Многие функции также предусматривают параметризацию. К основным после-довательностным функциям относятся:

- функция-генератор - последовательностная функция, связанная с некоторой верификационной переменной Ь е В , не имеющая входных и внутренних событий, мгновенно порождающая событие е в выходном множестве с текущим значением верификационной переменной:

gen

(t) = [e0 :{e. = ec

I e ^ ^VAL wA11 • j =s, P = b(t)}]'

le ^

- функция конъюнктивного конкатенирования - последовательностная функция, имеющая два операнда, одним из которых обязательно является функция-генератор, значение выходных событий которого используется в качестве условия транспортирования цепочек событий из второго операнда:

f (t f f

^conj V1"' M >

gen

): a = p VAL (e 0 = first(f.

I a = 1 ^ fc

gen

( . Lconj (t, f1, fgen ) = f1 (t);

'

где first(f(t)) - первое событие, принадлежащее множеству (в случае операнда-генератора первое событие является единственным);

- функции-очереди, имеющие единственный операнд и моделирующие временные интервалы;

- функции-репетиции, реализующие циклический анализ булевого выражения или другой последовательностной функции;

- функции, реализующие логические последовательностные операторы, такие как OR, AND, INTERSECT, WITHIN, а также импликации и .

Наиболее часто применяемой последовательностной функцией в предлагаемой модели является функция-очередь, лежащая в основе выбранного названия DRTLQ. Очереди применяются для моделирования интервалов между интересующими событиями в системе. Наглядно очередь можно представить в виде цепочки триггеров. На рис. 1 показана схема обработки последовательности событий {a;[*2];b} на основе очереди, начинающейся с момента, в котором сигнал a = 1, и в прошествии 3 тактовых циклов завершающейся событием b = 1.

Рис. 1. Наглядная иллюстрация понятия БЯТЬр-очередей В данном случае функция-очередь Г# является операндом функции конъюнктивного конкатенирования ^^ с ^п(Ь) и имеет функцию-генератор на входе:

^,{а;[*2];Ь}) =

1 соп) V1?1 #[3:3] V1'1 gen

В общем виде, функция-очередь, имеющая идентичные конечные интервалы, функционирует путем хранения и продвижения к выходу списка цепочек событий, считанных с

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

(1, ^ (1)), N > 0 : (г0 (1), • • • гк_! (!});

Гс(1) =

Vi,0 < i < N,ri(t) = ri-1(t -1);

(t,f1(t)) = rN-1(t - 1).

l#[n:n]

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

(1, ^ (1)), N > 0^ < М: (го (1), • гм_! (1));

Го(1) = Ш;

Vi,0 < i < M,ri(t) = ri-1(t -1);

M-2

f#[N:M] (t, f1 (t)) = Гм-1 (t - 1) U U K(ri (t - 1)) .

i=N-1

Если M ^<x>, суть вычислительной процедуры (11) не изменяется, однако структура внутренних цепочек событий (r0(t),••• rM-1(t)) преобразуется из статической формы в динамическую. Очередь с бесконечным интервалом будет генерировать и продвигать к выходу копии считанного события до тех пор, пока не будет остановлен породивший событие поток активации.

Если N = 0, копии считанных с входа событий моментально транспортируются к выходу, независимо от обработки события внутри очереди:

X#[0:M]

Функции-репетиции в модели DRTLQ разделяются на булевы и сложные, в зависимости от типа операнда (булево выражение и SERE соответственно). В целом, схема обработки булевых репетиций имеет определенное сходство с обработкой очередей. Дополнительно к сопоставлению времени регистрации в очереди, в репетициях проверяется значение входного булевого выражения. В том случае, если выражение не выполняется, все цепочки событий, в текущий момент хранящиеся в репетиции, поступают на выход со значением 0, и репетиция полностью очищается:

X[*N] vL' igen

(t),N > 0:(v(t),r,(t), • %-1(t));

v(t) = р VAL (first(fgen(b) (t)));

v(t) = 1 ^

v(t) = 0 ^

r0 (t) = fgen(b) (t);

Vi,0 < i < N,ri(t) = ri-1(t -1);

f[*N] (t, fgen(b) (t)) = rN-1 (t);

Vi, k,0 < i < N,0 < k < |ri (t -1)|, рVAL (ek е ri(t -1)) ^ 0;

N-1

f[*N] (t, fgen(b) (t)) = U ri(t - 1);

i=0

Vi,0 < i < N, ri (t) = 0.

Аналогично очереди (11), интервальная репетиция требует создания и продвижения к выходу копий цепочек событий, выдержанных внутри репетиции минимальное количество итераций, но не достигших максимума:

M-1

v(t) = 1 ^ f[*N:M] (t, fgen(beB) ),N > 0,N < M = U ^(t - 1)) .

i=N

Случаи М ^ да и N = 0 определяются аналогичным очередям образом, разумеется, с учетом процедуры полного очищения репетиции при у(1;) = 0 .

Реализация галопирующих репетиций модифицирует базовую репетиционную функцию (13) добавлением элемента ф(1;), который должен обеспечивать буферизацию последнего успешного входного события до момента появления следующего. Соответственно, галопирующая репетиция никогда не выполняет полную очистку, как обычная репетиция:

[^N1 V1' ^еп(ЬеВ) 00), N > 0:(у(1), ф(1),Го(1), ••• %-1(1^,

VAL fv(t) = 1 ^q<t) = fgen(b) (t);

v(t) = ^ (firSt(fgen(b) (t))); |v(t) = 0 ^ 9(t) = K(9(t -1));

ro(t) = 9(t);

Vi,0 < i < N, r¡

f[^N] (t, fgen(b) ) = rN-1 (t)-

Неконсекутивные репетиции расширяют реализацию галопирующих репетиций дополнительным выходным буфером, порождающим копии ранее транспортированных на выход событий до удовлетворения потока активации:

f[=N] fgen

Наиболее сложными являются функции, реализующие логические операторы над последовательностями. Пусть имеется SERE s = {{a;b}|| {c;d}}&&{!e[*2]}. На рис. 2 в графическом виде представлена DRTLQ-реализация данного SERE, а формула (17) демонстрирует то же SERE в аналитическом виде.

fs (t) = f- (t); f- (t) = join 2-&& (t, f 2 (t), f[*2:2] (t, f

gen

(t)));

f- (t) = join;

Л

conj'

(t, f#[1:1] (t, fconj (t, f<2(t),a)),b),

conj

i(t,f#

^conj A#[1:1] Vj ^conj f 2 (t) = Split 2—1| (t, f¿ (t)); f¿ (t) = Split 2

(t,fconj(t,f ¿(t),c)),d);

(t, fgen(1) (t)).

Рис. 2. DRTLQ-реализация последовательности с логическими операторами

Любой логический последовательностный оператор реализуется двумя DRTLQ-функ-циями: разделителем fc (splitter) и соединителем f3 (joiner). Функция-соединитель является вершиной пути операндов, а начало каждого из операндов исходит из функции-разделителя. Ряд операторов (WITHIN, импликации) могут иметь только два операнда, но степень разветвления логических операций (AND,OR,INTERSECT) не ограничивается. Разделитель всегда имеет единственный вход и множество выходов, соответствующее количеству операндов. Событие, считываемое разделителем с входа, расслаивается на самостоятельные копии, каждая из которых транспортируется по пути одного из операндов. Соединитель имеет единственный выход, порождая выходные цепочки событий в соответствии с реализуемой функцией.

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

4. Семантика сложных темпоральных свойств

Темпоральное свойство p е P в модели DRTLQ - совокупность логических и темпоральных отношений между булевыми выражениями, последовательностными функциями и другими темпоральными свойствами, задающая пространство поведения системы. При помощи темпоральных свойств задаются утверждения о поведении системы на протяжении всего цикла моделирования. Элементы-свойства создаются только в режиме глобального времени и являются промежуточным звеном между последовательност-ными функциями и ассерционным монитором.

При наличии в модели уровня темпоральных свойств задачи проверки критериев удовлетворения потоков активации выполняются именно этими элементами. Вспомогательные последовательностные функции fACTION доставляют выходные цепочки событий на первый уровень иерархии темпоральных свойств. С ассерционным монитором взаимодействует только вершина иерархии свойств. Роль самого монитора упрощается и сводится к обработке статуса единственного за весь сеанс моделирования события.

Каждое свойство состоит из следующих структурных элементов:

p е P :{pt P^ е P} х {INIT, ABORT, EVAL, FINAL},

где pt, - родительское свойство; P^ - множество дочерних свойств; INIT - рекурсивная процедура активации вычислительного потока; ABORT - рекурсивная процедура отмены активации всех текущих вычислительных потоков; EVAL - процедура обработки события; FINAL - процедура обработки завершения моделирования.

Тело процедур и дополнительные элементы структуры различаются в зависимости от типа свойства. К основным типам свойств относятся:

- унарные свойства, в свою очередь подразделяющиеся на группы:

- буферные свойства (BUF, NOT);

- глобальные свойства (always, never, eventually!);

- бинарные свойства (^, о, , , until *, before * , next *) - свойства, имеющие по два операнда-свойства;

- коммутативные свойства (& &, ||) - свойства, которые могут иметь неограниченное число равноправных операндов-свойств.

Унарные свойства в качестве операнда могут иметь как другие свойства, так и последовательностную функцию.

Цикл работы ассерционного процесса в режиме глобального времени отличается от простого режима дополнительными шагами по обработке уровня темпоральных свойств:

1. На каждом шаге моделирования осуществляется активация свойств путем вызова процедуры INIT на свойстве верхнего уровня. Активации обеспечивают разрешение создания вычислительных потоков на уровне последовательностей. В отличие от мониторов, всегда разрешающих активацию вычислительных потоков, свойство может блокировать часть дочерних последовательностей в случае необходимости.

2. События, транспортируемые функциями действия fACTION с последовательностно-го уровня, приводят к запуску процедуры EVAL у свойств первого уровня. В зависимости от этой процедуры, событие может быть либо уничтожено, либо транспортировано к родительскому свойству. Если событие признается удовлетворяющим процедуру EVAL свойства верхнего уровня, событие направляется к монитору, и весь цикл анализа ассер-ции завершается.

3. Финальная итерация предполагает вызов процедуры FINAL для всех свойств p , принадлежащих модели. Если анализ ассерции не был завершен на момент остановки симуляции, результат определяется именно в этот момент.

Рассмотрим простейшее темпоральное свойство BUF, которое либо может иметь последовательностный вход, создаваемый при продвижении булевого выражения или последовательности на уровень свойств, либо дочернее свойство-операнд:

е F;

Pbuf : {pt,

Q

BUF

eQ} х

P = 0,fACTION

Л :{p1 е P}; {INITbuf,ABORTbuf,EVALbuf,FINALbuf},

где fACTION - дочерняя последовательностная функция; p1 - дочернее свойство-операнд; Q buf - множество активных вычислительных потоков, порожденных свойством. Очевидно, такое свойство не имеет дочерних свойств.

Процедура INITBUF состоит в расширении Q BUF новым потоком активации ю t, соответствующим текущему моменту времени, в который добавляется искусственное событие e0t . На уровне последовательностей наличие потока разрешает активацию событий, примыкающих по правой цепочке к e0t .

Процедура ABORTbuf состоит в очищении множества потоков Q buf вместе с уничтожением всех порожденных правых цепочек событий.

Процедура EVALBUF, вызываемая либо функцией действия fACTION с последователь-

ностного уровня, либо дочерним свойством p1, удаляет из множества q buf поток ю', для которого время активации равно времени активации пришедшего с входа события t a (first(ra )) = tA(e). Само событие e направляется в процедуру EVAL родительского свойства.

Процедура FINALBUF для всех вычислительных потоков Q BUF выбирает порожденное при активации событие e0 и направляет к родительскому свойству: статус определяется режимом условной допустимости.

Аналогичным образом функционирует свойство NOT, имеющее идентичную структуру, а также процедуры активации и отмены активации:

'INITnot = INITbuf;

f action е F;

p NOT :{P t

P^=0f

P^ :{Pi e P};

Q

NOT

e Q} х

abortnot = abortbuf; EVAL

NOT

FINAL

NOT

Отличие процедур ЕУАЬмоТ и Р1КАЬмоТ от аналогов в ВИБ состоит в инверсии значения ршь (е), транспортируемого к родительскому свойству события.

Рассмотрим работу глобальных темпоральных свойств на примере свойства always :

Pg :{рt

= 0,fACTION e F;

P^ :{Pi e P};

Q G

INITg;

ABORTg = ABORTbuf; EVAL

G>

¿G eQ}x<

finalg;

Отличие процедуры INITG от INITBUF состоит в том, что в случае наличия дочернего свойства-операнда и открытых потоков активации в нем на каждом такте анализа создается дополнительный поток активации, помещаемый в Q buf • Такой прием обеспечивает неявное ветвление потоков активации, порождаемых глобальными темпоральными операторами, без фактического ветвления вычислений на уровне дочерних последовательностей.

Процедура EVALg состоит в завершении всех вычислительных потоков ю e Q g , для которых выполняется соотношение t a (first(ra)) < t a (e), и транспортировании соответствующих потокам событий e0 на уровень выше. Здесь ветвление свойств-операндов воссоздается, однако это не имеет такого эффекта на производительность анализа, как если бы производить все вычисления на последовательностном уровне.

Процедура FINALG с успешным статусом завершает все стартовавшие потоки QG. Очевидно, активность свойства always в момент остановки симуляции свидетельствует об успешном выполнении данного свойства.

Свойство

отличается от свойства always инверсией значений р L(e) транспортируемых событий в процедуре EVAL, а свойство eventually! - инверсией значений в процедуре FINAL.

Коммутативные свойства, такие как AND, имеют следующую структуру:

:{ptД :{pi, ^ ,Pn}, |(t): (k e [0; N], v e [0;1])} x INITA : Vi,0 < i < N, INIT(p;); ABORT : Vi,0 < i < N, ABORT(pi) 'EVALЛ; FINAL.;

Р/

где N - число операндов; рь---,pN - свойства-операнды, а и(1) - функция истории выполнения потока активации, каждый элемент которой соотносится с некоторым тактовым циклом и включает информацию о количестве завершенных на текущий момент операндов, а также общий статус завершения.

Работа процедур 1№ТЛ и ABORTл тривиальна и состоит из вызова аналогичных процедур на всех свойствах-операндах по очереди.

Работа процедуры ЕУАЬЛ состоит из двух шагов:

1. Изменение статуса истории потока активации по принципу у(ц(1)) ^ у(ц(1)) лр¥АЬ(е) (очевидно, начальное значение V = 1). В случае изменения статуса v(u(t -1)) = 1 ^ v(u(t)) = 0 поток активации признается неудачным, и событие е продвигается на уровень выше.

2. Инкремент числа выполненных операндов: к(и00) ^ к(и(1)) +1. Если новое значение к(/и(/)) = N, поток активации признается успешным, и событие е также продвигается на уровень выше.

Работа процедуры РШАЬЛ заключается в продвижении на уровень выше событий всех потоков активации, для которых имеется хотя бы один незавершенный поток операнда: к(иОО) < N - а начальный статус по-прежнему не изменился: v(u(t)) = 1.

Отличие свойства OR в деталях вычислительных процедур. Во-первых, начальным значением v(^(t)) является 0. Во-вторых, условие досрочного завершения анализа потока в процедуре EVALv заключается в переходе v(^(t -1)) = 0 ^ v(^(t)) = 1, и продвигает успешный статус. В-третьих, достижение значения k(^(t)) = N, при котором v(^(t)) = 0 , завершает поток с неудачным статусом.

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

Бинарное свойство, реализующее семейство операторов until *, имеет более сложную структуру и вычислительные процедуры:

pu :{pt,P^ :{p1,p2},v(t) :е {0,1,X},{sbs2,s1,s2}(t) :е {0,1,X}} х

{lNITU,ABORTU = {ABORT

где p1,p2 - дочерние свойства-операнды; v(t) - функция текущего статуса вычислительного потока; s 1 (t) и s2(t) - функции фактического состояния потоков, принадлежащих операндам, а s 1 (t) и s 2 (t) - функции интерпретации состояния потоков, принадлежащих операндам.

Процедура INITU активирует свойства-операнды и кроме того создает записи для текущего момента t c начальными значениями s^t) = s2 (t) = X, а также v(t) = X .

Работа процедуры EVALU состоит из следующих шагов:

1. Обновление состояния операнда, с которого пришло событие: s п (t) ^ р

I2

VAL

(e).

2. Обновление состояния ранее не разрешенных активированных потоков, начиная со стартовавших одновременно с событием, до текущего времени:

3k,0 < k < (tnow - tA(e)),

s2(tA(e) + k) =

0 ^

s1(tA(e) + k) = 0 ^ v(tA(e) + k); v(tA(e) + k) ^ X;

1 ^

k > 0 ^ v(tA(e) + k) ^ s1(tA(e) + k -1); k = 0 ^ v(tA(e) + k) ^ 1; X ^ v(tA(e) + k) ^ X;

3. Разрешение потоков (отправка события на уровень выше), для которых у(1;) на предыдущем шаге претерпело изменение X ^ 0 или X ^ 1.

В табл. 2 приведены определения функций 81(1) и 8 2(1;) на основе функций 8^1;) и 82 (1), изменяющиеся в зависимости от конкретного оператора.

Таблица 2

Оператор s1

f1 until f2 s1

f1 until_ f2 s1

f1 before f2 -s2

f1 before_ f2 -s2

Процедура FINALU для всех потоков с v(t) = X направляет событие, принадлежащее потоку, на родительский уровень со статусом, определяющимся соотношением —strong(p U) л s1 (t ) для операторов before * и —strong(p U) л s2(t ) - для операторов until * .

5. Выводы

Задача функциональной верификации параллельных систем состоит в проверке логико-временных ограничений между атомарными утверждениями, ассоциированными с состояниями системы на всех возможных вычислительных путях. Утверждения об удовлетворении системой определенных ограничений, называемые ассерциями, отражают требования спецификации в виде формальной математической формулы, использующей аппарат темпоральной логики, который пришел в компьютерную инженерию из философии. Экспоненциальная сложность формальной проверки накладывает существенные ограничения на применимость метода к крупным моделям. Лучшую производительность верификации LTL-ограничений обеспечивают динамические методы, функционирующие путем конвертирования LTL к детерминированному конечному автомату. Несмотря на проблему низкого покрытия пространства состояний системы (зависящую от внешнего теста) в динамических методах, а также нелинейный рост размера проверяющих автоматов в зависимости от структурной сложности формулы, использование LTL-логики во время симуляции способно обеспечить обнаружение большинства функциональных нарушений с более приемлемой производительностью по сравнению с формальными методами.

Для обеспечения существенно лучшей производительности анализа ассерций и поддержки режима полноценной интерпретации глобальных темпоральных операторов была предложена модель динамических регистровых очередей (DRTLQ). Она ориентирована на высокопроизводительный анализ элементов линейной темпоральной логики и эффективность обнаружения и локализации нарушений. Модель состоит из четырех структурных уровней: 1) переменных верификации, обеспечивающих абстракцию выражений бу-левого уровня, 2) последовательностью функций, предназначенных для реализации регулярных выражений, учитывающих параметр времени, 3) темпоральных свойств и ассер-ционного монитора, контролирующих потоки активации при анализе формул, 4) ассерцион-ного процесса, реализующего верификацию логически связанной группы темпоральных утверждений. В отличие от модели на основе конечных автоматов, количество элементов модели растет линейно относительно размера моделируемой LTL-формулы. Высокий уровень компактности модели достигается за счет минимальной структурной сложности представления простых и интервальных временных сдвигов, циклических ограничений, логических разветвлений - конструкций, порождающих сложные деревья вычислительных процессов, приводящих модель на основе конечных автоматов к нелинейному росту количества состояний.

Событийная модель обработки конструкций-свойств и вычислительные процедуры, контролирующие множества инициированных вычислительных путей, обеспечивают эффективную реализацию всех LTL-операторов с линейной сложностью. Производительность достигается иерархической декомпозицией событийных потоков. Теоретическая древовидность низкоуровневых вычислений, определяемая семантикой LTL, подменяется линейной нагрузкой на последовательностный уровень, а фактический учет сложных ветвлений эффективно реализуется на высоком уровне абстракции. Вычислительная сложность реализации такова, что применение на практике оказывается существенно быстрее (от 25 до 500%) по сравнению с традиционным способом реализации на основе конечных автоматов.

Ключевым научным результатом работы является формальное определение семантики сложных операторов LTL-логики последовательностного и темпорального уровня, а

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

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

Список литературы: 1. Emerson E.A. Temporal and modal logic // In J. Van Leeuwen, editor, "Handbook of Theoretical Computer Science", Elsevier Science Publishers, 1990, volume B. Р. 996-1072. 2. Clarke E.M.Jr, Grubmerg O., Peled D.A. Model Checking // The MIT Process, 2002. 314p. 3. Drechsler R. Advanced Formal Verification // Kluwer Academic Publishers, 2004. 277p. 4. Foster H., KrolnikA., Lacey D. Assertions-based Design", Kluwer Academic Publishers, 2003. 392p. 5. ForczekM, Hrynkiewicz K. Formal properties evaluation // Proc. of Programmable Devices and Systems Workshop 2003 (PDS-2003). Р.305-311. 6.ХахановВ.И., Зайченко С.А. Модель динамических регистровых очередей для быстродействующего анализа линейных темпоральных ограничений // АСУ и приборы автоматики. 2007. Вып. 136. С. 10-25. 7. Хаханов В. И., Егоров А. А., Зайченко С. А., Обризан В. И., Каминская М. А. Механизм ассерций для функциональной верификации проектируемых цифровых систем // АСУ и приборы автоматики. 2005. Вып.130.С. 85-95. 8. Зайченко С.А., Хаханов В.И. Эффективная функциональная верификация моделей цифровых систем на кристалле на основе ассерций глобального времени // АСУ и приборы автоматики. 2007. Вып. 137.С. 4-13.

Поступила в редколлегию 19.09.2008

Зайченко Сергей Александрович, аспирант кафедры АПВТ ХНУРЭ, начальник отдела разработки компании Aldec-Kharkov Ltd. Научные интересы: системы автоматизированного проектирования, моделирования и верификации цифровых систем на кристаллах. Увлечения: литература, музыка, футбол. Адрес: Украина, 61166, Харьков, пр. Ленина, 14, тел. (097)-367-62-93. E-mail: Sergei.Zaychenko@aldec.com

Хаханов Владимир Иванович, декан факультета КИУ ХНУРЭ, д-р техн. наук, профессор кафедры АПВТ ХНУРЭ. Научные интересы: техническая диагностика цифровых систем, сетей и программных продуктов. Увлечения: баскетбол, футбол, горные лыжи. Адрес: Украина, 61166, Харьков, пр. Ленина, 14, тел. (057)-702-13-26. E-mail: hahanov@kture.kharkov.ua