Ответы на вопросы (13.11.2010)

Ответы на вопросы (13.11.2010)

Сообщение sash » 19 ноя 2010, 23:01

Здравствуйте!

На лекции возникли вопросы, на которые я обещал найти ответ:
1. Что означают спецификаторы %u и %z при выводе с помощью системных задач $write(), $display() и т.д.?
Спецификатор %u выводит данные в двоичном виде как при вызове функции стандартной библиотеки Си fwrite(data, 4, (N + 1) / 4, fptr), где data - данные, N - число байт, занимаемых данными, а fptr - дескриптор потока (в случае $write() и $display() это stdout). То есть, выводится число байт, округленное в большую сторону до кратного 4. Если в некотором разряде данные содержат x или z, то разряд считается равным 0. Порядок байт, в котором выводятся данные
Спецификатор %z выводит данные в двоичном виде также, как и %u, но по 2 бита на каждый разряд исходных данных. Таким образом, число байт, которое выводит спецификатор, округляется до кратного 8.

2. Утверждалось, что блоки specify предназначены только для формального документирования задержек и игнорируются симулятором. В то же время, в стандарте есть раздел, согласно которому, если при описании модуля указаны задержки на отдельных компонентах модуля и одновременно блоки specify, то задержка между портами считается равной максимальному из двух значений (первое есть сумма задержек на отдельных компонентах, а второе задержка, указанная в блоке specify). Может ли игнорировать симулятор блоки specify?
Как показала практика, может. Возможно, данный раздел стандарта касается не симулятора, а инструментов временного анализа, для которых также важна задержка в модуле, и для которых в первую очередь и создавались блоки specify.

--
С уважением,
Александр Лукичев
sash
 
Сообщения: 90
Зарегистрирован: 28 фев 2009, 20:56

Вернуться в Организация и проектирование встроенных вычислительных систем

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1