[an error occurred while processing this directive]
Функциональное и временное моделирование.
(«Телесистемы»: Конференция «Программируемые логические схемы и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено dxp 26 апреля 2004 г. 10:05

Вот имеем некий проектик, в нем есть модуль (на Verilog'е, хотя это, видимо, не суть важно). Это синтезируемая часть. Для моделирования создаем другой модуль (testbench), куда включаем наш тестируемый модуль под именем, например, UUT (как в мануальный примерах). Описываем все окружение - воздействия на UUT, реакции на сигналы с выходов UUT. Запускаем функциональное моделирование. Все замечательно - все работает, ошибки отлавливаются, иерархия модулей соблюдается, словом, все удобно и хорошо. Всю систему можно отмоделировать до тонкостей.

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

1. Тот testbench уже тут не годится - временнОй симулятор отказывается его кушать, что, в общем-то, до некоторой степени понятно. Вопрос: как быть? Это вообще невозможно сделать - промоделировать на временнОм уровне с использованием объемлющего модуля - тесбенча, написанного на языке, или все-таки есть какой-то путь?

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

//---------------------------------------------------------
module MBufReg(data, clk, q);

parameter MSB = `WIDTH - 1;

input [MSB:0] data;
input clk;
output [MSB:0] q;

reg [MSB:0] q;

always @(posedge clk) q = data;

endmodule
//---------------------------------------------------------

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

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

И как вообще по уму делают? Может это нормально, что основное моделирование проводят на функциональном уровне, где нет этих пробелем, а времянки смотрят очень ограниченно? Или нет? По имеющимуся опыту работы с AHDL+Maxplus+Quartus, уж на уровне триггеров/регистров все можно посмотреть без особых проблем. А как в случае VHDL/Verilog+синтезатор+имплементатор?

P.S. Использованные тулзы: оболочка/симулятор Active-HDL, синтезатор Synplify (Pro), имплементаторы ISE и Quartus.

Спасибо.


Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru