реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Некорректное симулирование Nios II системы на Cyclone III. Нужна момощь
Shevnnov
сообщение Nov 23 2010, 11:00
Сообщение #16


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 8-04-10
Из: Нижний Новгород
Пользователь №: 56 498



Значит так. Прогресс есть, а именно какой:
Собрал систему под Cyclone III: cpu, onchip_mem(128Kb), jtag_uart. И где то на 3,7ms был получена ответ от jtag_uart (Запускалась тестовая программа Hello World). Это радует, но не синмает общей проблемы - а именно необходимости симуляции более сложной системы для проверки своего компонента.
Для этого я как понимаю нужно разобраться как заставить программу загружаться из памяти DDR. Для того проекта проверял - при выполнении mem_init_install файл ddr_sdram.dat обновляется. Но вот почему не работает при симуляции - остается загадкой.
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Nov 23 2010, 12:07
Сообщение #17


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Еще раз проверил, уже с DDR-контроллером. Все работает (см. аттач)!
Скорее всего, Вы просто не дожидаетесь начала вывода в JTAG UART.

Цитата(Shevnnov @ Nov 22 2010, 20:42) *
Какие настройки нужно проверить? В BSP ставлю галку ...

Вопрос - какой размер кода у вас получается? Попробуйте его сократить до минимума. Вы какую версию драйверов используете - полную или сокращенную? Использование сокращенной версии позволяет сжать код раз в несколько.
Если Вы используете полную версию драйверов, то для себя еще раз попробуйте оценить, сколько времени будет выполняться startup-код - у Вас весьма изрядный объем памяти, в ней есть сегмент BSS, в стартапе он заполняется нулями - сколько это потребует времени??)

Также проверьте "железную" сторону :
- какая опция симуляции установлена для JTAG_UART? - у меня выдача ASCII
- какая опция калибровки для режима симуляции установлена для контроллера DDR? - у меня Skip Calibration
- на какой тактовой частоте работает ниос? - у меня 100 МГц, ядро Standard.
В моем примере выдача в JTAG_UART начинается примерно на сорок шестой микросекунде от начала моделирования.

Цитата(Shevnnov @ Nov 22 2010, 20:42) *
С компонентом и архитектуры перефирийного устройства косяков не должно бы быть, так как работая в аналогичной системе, но без использвоания Clock-Crossing Bridge ...

ModelSim никакой отсебятины в проект не вносит - что Вы ему подсовываете, то он и показывает.
Так что косяк я бы искал или в Вашем аппаратном проекте, или в Вашем ниосовском коде.
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Nov 23 2010, 12:17
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



А никто не сталкивался с
Цитата
...
# ** Warning: (vsim-8598) Non-positive replication multiplier inside concat. Replication will be ignored
...

Что собственно с ним делать ?

До этого работал с 8.1сп1 - проблем не было вообсче, сейчас переполз на 10.0сп1 в симуляции сопц выскакивает такой варнинг.. На альтерафоруме нашёл упоминание такого варнинга, привязанное к timescale, но у меня она везьде 1ns/1ps..
Go to the top of the page
 
+Quote Post
Shevnnov
сообщение Nov 23 2010, 13:37
Сообщение #19


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 8-04-10
Из: Нижний Новгород
Пользователь №: 56 498



Цитата(Stewart Little @ Nov 23 2010, 15:07) *
Вопрос - какой размер кода у вас получается? Попробуйте его сократить до минимума. Вы какую версию драйверов используете - полную или сокращенную? Использование сокращенной версии позволяет сжать код раз в несколько.
Если Вы используете полную версию драйверов, то для себя еще раз попробуйте оценить, сколько времени будет выполняться startup-код - у Вас весьма изрядный объем памяти, в ней есть сегмент BSS, в стартапе он заполняется нулями - сколько это потребует времени??)


Размер кода, если оценивать по размеру файла памяти - 234 Kбайта (это е код hello_world, а тестовая программа для перефирийного компонента). Версия драйверов - полная. Поддержка C++ отключена. По поводу аремени оценки - не знаю как оценить, был бы признателен на ссылку на соответствующую литературу.

Цитата
Также проверьте "железную" сторону :
- какая опция симуляции установлена для JTAG_UART? - у меня выдача ASCII
- какая опция калибровки для режима симуляции установлена для контроллера DDR? - у меня Skip Calibration
- на какой тактовой частоте работает ниос? - у меня 100 МГц, ядро Standard.
В моем примере выдача в JTAG_UART начинается примерно на сорок шестой микросекунде от начала моделирования.


JTAG_UARY - так же выдача в ASCII.
Частота процессора - 100Мгц.
У DDR стояла калиброка - Quick Calibration.
По поводу времени выдачи - вечра ставил сумуляцию на 30 милесекунд - вывода через jtag не было. Сейчас
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Nov 23 2010, 13:48
Сообщение #20


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(Shevnnov @ Nov 23 2010, 16:37) *
Размер кода, если оценивать по размеру файла памяти - 234 Kбайта

Это же можно опупеть от ожидания, пока 234 килобайта кода отсимулируются! Причем львиная доля этого кода, я подозреваю, это стартап.

Цитата(Shevnnov @ Nov 23 2010, 16:37) *
По поводу аремени оценки - не знаю как оценить, был бы признателен на ссылку на соответствующую литературу.

Какую, нахрен, литературу!
Смотрите размер области BSS, смотрите, сколько времени нужно за запись одного слова в DDR SDRAM, умножайте первое на второе, и получите время заливки BSS нулями.

Цитата(Shevnnov @ Nov 23 2010, 16:37) *
DDR стояла калиброка - Quick Calibration.

Это еще плюс десяток миллисекунд.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
Shevnnov
сообщение Nov 24 2010, 10:23
Сообщение #21


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 8-04-10
Из: Нижний Новгород
Пользователь №: 56 498



Урезал код путем использования укророченной версии драйверов, newC lib, отключение C++ до 54Кб. Так же отключил калибровку DDR. Но всё равно через 55ms ответа от jtag_uart не последовало (часов 10 продолжалась симуляция).
Ответ на 45us мне кажется чем-то нереальным.
Еще вопрос - посмотрел дизайн на Cyclone II на котором симулировалось всё. Там размер файла ddr.dat - 257Кб. Но выполнение тестовой программы начиналось на 410us.
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Nov 24 2010, 10:33
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(Shevnnov @ Nov 24 2010, 16:23) *
Но всё равно через 55ms ответа от jtag_uart не последовало (часов 10 продолжалась симуляция).

немного оффтопа, если позволите. а в чем выигрыш от такой симуляции? за 10 часов можно уйму тестов прогнать в сигналтапе на железе. я понимаю симуляцию на rtl-уровне, да и то, по большей части она имеет смысл для отдельных компонентов на предмет соответствия шинным спецификациям, например. а многочасовая симуляция нетлиста, да еще от стороннего производителя? не понимаю, зачем это.
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Nov 24 2010, 11:58
Сообщение #23


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(Shevnnov @ Nov 24 2010, 13:23) *
Урезал код путем использования укророченной версии драйверов, newC lib, отключение C++ до 54Кб. Так же отключил калибровку DDR. Но всё равно через 55ms ответа от jtag_uart не последовало (часов 10 продолжалась симуляция).
Ответ на 45us мне кажется чем-то нереальным.

54 кб - это тоже не мало. У меня объем кода 528 байт. А весь код состоит из
Код
#include "sys/alt_stdio.h"

int main()
{ alt_putstr("Hello from Nios II!\n");
   while (1);

   return 0;
}



Цитата(Shevnnov @ Nov 24 2010, 13:23) *
Еще вопрос - посмотрел дизайн на Cyclone II на котором симулировалось всё. Там размер файла ddr.dat - 257Кб. Но выполнение тестовой программы начиналось на 410us.

Так весь вопрос в том и есть, а что эта программа делает???

Цитата(vadimuzzz @ Nov 24 2010, 13:33) *
а в чем выигрыш от такой симуляции?
а многочасовая симуляция нетлиста, да еще от стороннего производителя? не понимаю, зачем это.

+100 !!!


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
Shevnnov
сообщение Nov 29 2010, 11:10
Сообщение #24


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 8-04-10
Из: Нижний Новгород
Пользователь №: 56 498



Переместив в Linker'е код программы в onchip memory и используя скоращенные версии библиотек и драйверов удалось добиться начала работы тестовой программы на 49us. Но если в Linker'е указать всё класть в память ddr (в предыдущем случае в ddr лежал только heap - в драйвере периферийного устройства используется динамическое выделение памяти), то время реакции много увеличивается, и повторяется пролема обсуждаемая выше. Это вероятно связано с большим временем доступа к ddr контроллеру в режиме симуляции.
По поводу выигрыга от такой симуляции - посмотреть как ведет себя компонент во взаимодействии со всей системой, потому что когда я пытаюсь запустить на тестовой плате, на часть тестов я получаю муру, а не результаты.

Цитата
Так весь вопрос в том и есть, а что эта программа делает???

Абсолютно то же самое, что и тестовая программа, которую я запускаю на Cyclone III дизайне
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 20:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.01454 секунд с 7
ELECTRONIX ©2004-2016