Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Nios II и временные ограничения
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
Грендайзер
Здравствуйте. Есть ядро написанное на VHDL (не моё), хочу прикрутить его к Nios II по шине авалон. Среди файлов из которого состоит ядро имеется файл .sdc с временными ограничениями. Надо соответственно этот файл как то так подцепить к проекту, что бы трассировщик правильно для данной частоты развёл не только Nios но и данное ядро. Процессорную систему создаю в SOPC Builder, среди генерируемых им файлов, есть файл cpu.sdc, его содержание:
Код
set     cpu     cpu:*
set     cpu_oci     cpu_nios2_oci:the_cpu_nios2_oci
set     cpu_oci_break     cpu_nios2_oci_break:the_cpu_nios2_oci_break
set     cpu_ocimem     cpu_nios2_ocimem:the_cpu_nios2_ocimem
set     cpu_oci_debug     cpu_nios2_oci_debug:the_cpu_nios2_oci_debug
set     cpu_wrapper     cpu_jtag_debug_module_wrapper:the_cpu_jtag_debug_module_wrapper
set     cpu_jtag_tck     cpu_jtag_debug_module_tck:the_cpu_jtag_debug_module_tck
set     cpu_jtag_sysclk     cpu_jtag_debug_module_sysclk:the_cpu_jtag_debug_module_sysclk
set     cpu_oci_path      [format "%s|%s" $cpu $cpu_oci]
set     cpu_oci_break_path      [format "%s|%s" $cpu_oci_path $cpu_oci_break]
set     cpu_ocimem_path      [format "%s|%s" $cpu_oci_path $cpu_ocimem]
set     cpu_oci_debug_path      [format "%s|%s" $cpu_oci_path $cpu_oci_debug]
set     cpu_jtag_tck_path      [format "%s|%s|%s" $cpu_oci_path $cpu_wrapper $cpu_jtag_tck]
set     cpu_jtag_sysclk_path      [format "%s|%s|%s" $cpu_oci_path $cpu_wrapper $cpu_jtag_sysclk]
set     cpu_jtag_sr      [format "%s|*sr" $cpu_jtag_tck_path]

#**************************************************************
# Set False Paths
#**************************************************************

set_false_path -from [get_keepers *$cpu_oci_break_path|break_readreg*] -to [get_keepers *$cpu_jtag_sr*]
set_false_path -from [get_keepers *$cpu_oci_debug_path|*resetlatch]     -to [get_keepers *$cpu_jtag_sr[33]]
set_false_path -from [get_keepers *$cpu_oci_debug_path|monitor_ready]  -to [get_keepers *$cpu_jtag_sr[0]]
set_false_path -from [get_keepers *$cpu_oci_debug_path|monitor_error]  -to [get_keepers *$cpu_jtag_sr[34]]
set_false_path -from [get_keepers *$cpu_ocimem_path|*MonDReg*] -to [get_keepers *$cpu_jtag_sr*]
set_false_path -from *$cpu_jtag_sr*    -to *$cpu_jtag_sysclk_path|*jdo*
set_false_path -from sld_hub:*|irf_reg* -to *$cpu_jtag_sysclk_path|ir*
set_false_path -from sld_hub:*|sld_shadow_jsm:shadow_jsm|state[1] -to *$cpu_oci_debug_path|monitor_go

До этого не обращал внимания, но... где здесь указание на то, какая частота сигнала используется, куда вписать нестабильность частоты (квартус выдаёт критические ворненги относительно того, что нестабильность не задана). Возможно необходимо создавать отдельный .sdc файл. Как я понял, Qsys сама генерит подпбный файл, а как быть с SOPC Builder? 05.gif
vadimuzzz
Цитата(Грендайзер @ May 29 2015, 13:07) *
Возможно необходимо создавать отдельный .sdc файл.

Да. В отчете TQ написано, какие файлы констрейнов используются.
Грендайзер
По запросу Read SC File TQ выдал мне вот такую табличку. Cpu.sdc - файл созданный Sopc Builder, а SDC1.sdc - созданный мной. Т.е. при синтезе схемы будут использованы оба файла?
vadimuzzz
Цитата(Грендайзер @ Jun 1 2015, 12:45) *
По запросу Read SC File TQ выдал мне вот такую табличку. Cpu.sdc - файл созданный Sopc Builder, а SDC1.sdc - созданный мной. Т.е. при синтезе схемы будут использованы оба файла?

Да. Причем порядок, в котором они перечислены, имеет значение: TQ как бы сольет их в один файл. Если будут взаимоисключающие констрейны, то приоритет имеет ограничение, прочитанное позже (будет соотв. предупреждение).
Грендайзер
Цитата
приоритет имеет ограничение, прочитанное позже (будет соотв. предупреждение).

О как!
vadimuzzz, большое спасибо за ответ!
Хотя всё же непонятно, где же по умолчанию прописано, на какой частоте будит работать Nios, т.е. в файле cpu.sdc про частоту вроде ничего нет...
vadimuzzz
Цитата(Грендайзер @ Jun 2 2015, 13:46) *
Хотя всё же непонятно, где же по умолчанию прописано, на какой частоте будит работать Nios, т.е. в файле cpu.sdc про частоту вроде ничего нет...

Это на вашу ответственность клоки ограничить. Иначе TQ по умолчанию 1ГГц воткнет
Грендайзер
Цитата
Это на вашу ответственность клоки ограничить. Иначе TQ по умолчанию 1ГГц воткнет

Ммм... Не согласен. Развести Ниос на частоту 1ГГц у Quartus не получтся, выскочило бы предупреждение, о том что временные ограничения не выполняются... Выскакивает лишь о том, что не задан джиттер тактового сигнала... Впрочем в SOPC Builder, при создании системы, ведь значение тактовой частоты указывается... другой вопрос откуда про неё TQ то узнаёт?!
vadimuzzz
проект можете выложить? или отчет TQ после компиляции
Грендайзер
В смысле "проект"? Я просто собрал систему из ниос2е, памяти на кристалле, порта В/В и пробное ядро о котором я здесь упомянал -> http://electronix.ru/forum/index.php?showt...=125994&hl=. Что же касается отчёта TQ, то какой Вас именно интересует? Вот на рисунке я представил отчёт clock summa summary (предварительно удалив собственный SDC фай). Здесь представлена частота 10 МГц (хотя в SOPC Builder я задавал 50МГц). На другом показан анализ сетапа одного из путей (произвольного). Так вот тут TQ за запускающий фронт принял передний(возрастающий) а защёлкивабщий - спадающий?! blink.gif
Timmy
Цитата(Грендайзер @ Jun 2 2015, 10:46) *
О как!
vadimuzzz, большое спасибо за ответ!
Хотя всё же непонятно, где же по умолчанию прописано, на какой частоте будит работать Nios, т.е. в файле cpu.sdc про частоту вроде ничего нет...

Насколько я понимаю, системная частота в SOPC Builder пишется не для STA, а в качестве параметра для модулей, которым надо отсчитывать задержки реального времени, и знать фактический период системного клока.
Рабочая частота Ниоса определяется частотой клока, которым он тактируется, если она не определена в sdc, то берётся из параметров PLL, а если и PLL нет, то уже никак.
Грендайзер
Цитата
Рабочая частота Ниоса определяется частотой клока, которым он тактируется, если она не определена в sdc, то берётся из параметров PLL, а если и PLL нет, то уже никак.
Так в том то и дело, что частота не определена. В этой ситуации TQ должен предположить, что раз частота не задана, значит разводить надо под частоту 1ГГц, однако развести под такую частоту ниос у него врят ли получится (максимальная его рабочая частота по заявлениям альтеровцев 100МГц) => должен выскочить ворнинг о том, что временные ограничения не соблюдаются... Однако его нет...
Timmy
Цитата(Грендайзер @ Jun 4 2015, 12:47) *
Так в том то и дело, что частота не определена. В этой ситуации TQ должен предположить, что раз частота не задана, значит разводить надо под частоту 1ГГц, однако развести под такую частоту ниос у него врят ли получится (максимальная его рабочая частота по заявлениям альтеровцев 100МГц) => должен выскочить ворнинг о том, что временные ограничения не соблюдаются... Однако его нет...

Если частота не задана, то анализ путей относительно соответствующего клока вообще не производится, и будет предупреждение, что не задана частота.
Грендайзер
Я в каком то мануале видел (да и vadimuzzz подтвердил), что TQ считает, что по умолчанию все тактовые частоты равны 1ГГц. Впрочем единственное предупреждение которое выскакивает, как я уже писал, относится к тому, что не задан джиттер... то биш
Цитата
The following clock transfers have no clock uncertainty assignment
Timmy
Цитата(Грендайзер @ Jun 4 2015, 13:28) *
Я в каком то мануале видел (да и vadimuzzz подтвердил), что TQ считает, что по умолчанию все тактовые частоты равны 1ГГц. Впрочем единственное предупреждение которое выскакивает, как я уже писал, относится к тому, что не задан джиттер... то биш

Мне кажется, что тестирование поведения Квартуса на дизайне с неопределёнными клоками так же бессмысленно, как тестирование японской бензопилы в известном анекдотеsm.gif.
Грендайзер
Timmy, обсолютно согласен! Вот и ходелось бы понять какой он там клок использует... Хотя конечно со своиму вопросу я более менее въехал... После генерирования системы на ниос достаточно написать отдельный .sdc файлик и если в нём не будит ошибок, TQ его подцепит и сам всё поймёт. Ещё раз всем большое спасибо. sm.gif
vadimuzzz
Цитата(Грендайзер @ Jun 4 2015, 13:29) *
Здесь представлена частота 10 МГц (хотя в SOPC Builder я задавал 50МГц).

Это не клок системы, это JTAG (TCK). Вот его точно SOPC генерит, а все остальные констрейны д.б. ваши.
Грендайзер
Ну да, я догадывался, что это JTAG'овский, хотя ф файле cpu.sdc он закоменчен... Интересно, а если я задам в констрейнах лишь значение частоты и нестабильности (в случае, если в системе нет собственных ядер) этого будет достаточно?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.