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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Описание Multicycle, sdc
_Anatoliy
сообщение Sep 5 2008, 10:18
Сообщение #1


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 474
Регистрация: 15-07-06
Из: г.Донецк
Пользователь №: 18 832



Скачал у Альтеры пример clock_enable_multicycle.qar,а он похоже не работающий.Ибо setup relationship у него равен одному такту,а должен быть равен двум.
http://www.altera.com/support/examples/dow..._multicycle.qar
Прикрепленное изображение


вот их строчки из .sdc
create_clock -name fast_clk -period 10.000 -waveform { 0.000 5.000 } [get_ports {fast_clk}]
create_generated_clock -name clk_div_2 -source [get_ports {fast_clk}] -divide_by 2 [get_pins {enable_reg|q}]
#Setup multicycle of 2 to enabled driven destination registers
set_multicycle_path 2 -to [get_fanouts [get_pins enable_reg|q*] -through [get_pins -hier *|*ena*]] -end -setup
#Hold multicycle of 1 to enabled driven destination registers
set_multicycle_path 1 -to [get_fanouts [get_pins enable_reg|q*] -through [get_pins -hier *|*ena*]] -end –hold

Как-то их подправить,видимо,нужно.Как?
Сразу бросается в глаза что clk_div_2 совсем не клок,а enable.А ещё что?
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Sep 8 2008, 09:23
Сообщение #2


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 474
Регистрация: 15-07-06
Из: г.Донецк
Пользователь №: 18 832



Неужели никто констрейны не пишет?
Вы хоть поругайте,если вопрос невнятно задал.
Как правильно обконстрейнить схему с использованием enable?
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 11 2008, 04:08
Сообщение #3


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 222
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



посмотрел этот пример, странный какой то.

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

немного поигрался с этим проектом, посмотрел mnl_timequest_cookbook.pdf и quartusii_handbook.pdf , поправил немного sdc файл, что бы заработал.

ИМХО я бы описал так :

Цитата
set_multicycle_path 2 -from [get_pins -hier enable_reg|regout] -to [get_pins -hier *|*ena*] -setup -end
set_multicycle_path 1 -from [get_pins -hier enable_reg|regout] -to [get_pins -hier *|*ena*] -hold -end


и никаких create_generated_clock

а в базовом sdc цифры 2 и 1 стоят правильные.

Цитата
A multicycle constraint relaxes setup or hold relationships by the specified number of clock cycles based on the source (-start) or destination (-end) clock. An end multicycle constraint of 2 extends the worst-case setup latch edge by one destination clock period.

Hold multicycle constraints are based on the default hold position (the default value is 0). An end hold multicycle constraint of 1 effectively subtracts one destination clock period from the default hold latch edge.


А вообще, если нет больших проблем с тактовой и ресурсом, я почти не ставлю мультициклы.

Удачи!!!


--------------------
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Sep 11 2008, 05:29
Сообщение #4


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 474
Регистрация: 15-07-06
Из: г.Донецк
Пользователь №: 18 832



Цитата(des00 @ Sep 11 2008, 07:08) *
посмотрел этот пример, странный какой то.
клок используется только один, и констрейн ставится по данным, на одинаковом клоке.

У меня сейчас тоже похожий узел в проекте будет,с enable на одном клоке.Тактовая частота очень высокая.

Спасибо!!!
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Sep 11 2008, 06:31
Сообщение #5


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 474
Регистрация: 15-07-06
Из: г.Донецк
Пользователь №: 18 832



Нет,не работает.
regout нужно заменить на q,но всё равно setup relationship равен одному такту,а должен быть равен двум тактам.
Картинка должна быть примерно такой:
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 15 2008, 17:21
Сообщение #6


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 222
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(_Anatoliy @ Sep 11 2008, 01:31) *
Нет,не работает. regout нужно заменить на q,но всё равно setup relationship равен одному такту,а должен быть равен двум тактам.


я собирал под второй кулон, у него в тригерах выход regout а не q. таймквест мне ошибок, на альтеровском дизайне не давал %). Если хотите вышлите мне ваш референсный проект, поковыряю поподробнее.

Кстати вы принимаете решение о том что констрейн не работает на основе чего ? У вас setup/hold не выполняется ? или просто картинка не так отрисовывается ? Нарушение мультицикла это именно нарушение setup/hold, а не точная задержка сигнала на 1 такт. %))


--------------------
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Sep 16 2008, 05:17
Сообщение #7


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 474
Регистрация: 15-07-06
Из: г.Донецк
Пользователь №: 18 832



Цитата(des00 @ Sep 15 2008, 20:21) *
я собирал под второй кулон, у него в тригерах выход regout а не q. таймквест мне ошибок, на альтеровском дизайне не давал %). Если хотите вышлите мне ваш референсный проект, поковыряю поподробнее.

Кстати вы принимаете решение о том что констрейн не работает на основе чего ? У вас setup/hold не выполняется ? или просто картинка не так отрисовывается ? Нарушение мультицикла это именно нарушение setup/hold, а не точная задержка сигнала на 1 такт. %))


1).Я собирал под циклон-3,при указанных параметрах клока и без констрейнов все слаки положительные.Чтобы получить отрицательные слаки я уменьшил период клока до 6 нс.
2).Вот картинка с Альтеровскими строчками мультицикла:
Прикрепленное изображение

3).Вот картинка с Вашими строчками мультицикла:
Прикрепленное изображение


Видно что разницы нет.Что Вы на это скажете?

http://edisk.ukr.net/get/346740/mc_pic2.qar
Расширение .htm нужно изменить на .qar
Схемотехнику проекта не менял,только файл .sdc.
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 16 2008, 08:05
Сообщение #8


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 222
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(_Anatoliy @ Sep 16 2008, 00:17) *
Видно что разницы нет.Что Вы на это скажете?
Расширение .htm нужно изменить на .qar


ну что тут можно сказать, надо копать %)

по линку мне выдает COOKIE_EMPTY. Кинул мыло в личку, лучше вышлите так.


--------------------
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Sep 16 2008, 09:34
Сообщение #9


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 474
Регистрация: 15-07-06
Из: г.Донецк
Пользователь №: 18 832



Цитата(des00 @ Sep 16 2008, 11:05) *
ну что тут можно сказать, надо копать %)
по линку мне выдает COOKIE_EMPTY. Кинул мыло в личку, лучше вышлите так.


Выслал проект на почту "диод".
Уж очень хочется получить картинку,похожую на эту,с положительным слаком.
Прикрепленное изображение

Я сейчас могу это сделать только для всех узлов запитанных от клока,а нужно избирательно,только в те узлы в которые заводится ena.
Удачи!!!
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 17 2008, 03:32
Сообщение #10


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 222
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(_Anatoliy @ Sep 16 2008, 04:34) *
Я сейчас могу это сделать только для всех узлов запитанных от клока,а нужно избирательно,только в те узлы в которые заводится ena.



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

И вот что заметил :

1. Что же именно валиться : а валится путь с регистров, работающих на полном клоке, до выходных проводов-"виртуальных регистров", по понятию тайм квеста.(См. путь в sample1).

И ведь по сути так и есть, мултицикловость в нашем случае относиться к данным, а не к сигналу enable. Он то как раз должен идти на полном клоке.

2. Поступил очень просто, мышью на этот путь + правая кнопка и set multycycle path-> в sdc закоментил старые строки вписал такие :

Код
set_multicycle_path -from {x_times_y[*]} -to {xy_out[*]} -setup -start 2
set_multicycle_path -from {x_times_y[*]} -to {xy_out[*]} -hold  -start 1

set_multicycle_path -from {a_times_b[*]} -to {ab_out[*]} -setup -start 2
set_multicycle_path -from {a_times_b[*]} -to {ab_out[*]} -hold  -start 1


и вуаля (см. sample2)

И ведь если подумать так оно и должно быть. Данный пример не корректен. Блок умножителя с регистрами работает на полной тактовой и сигнал enable нужен для мультиплексирования потоков. Мультициклы начинаются до регистров и после регистров умножителя. И прописывать их надо как пути по данным. Но вот как сие дело распространить на логический блок перед/за умножителем надо подумать.

To be continue %)
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 


--------------------
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Sep 17 2008, 05:09
Сообщение #11


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 474
Регистрация: 15-07-06
Из: г.Донецк
Пользователь №: 18 832



Цитата(des00 @ Sep 17 2008, 06:32) *
To be continue %)


Класс,я как-то о таком решении не подумал:-((
Однако при сложном проекте ручками нужно будет все шины прописывать...Или вводить префиксы/постфиксы.
Видимо должна всё таки быть возможность указать то же самое через ENA, не зря Альтеровцы применили ключевое слово -through(правда,криво применили).
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 1 2008, 13:12
Сообщение #12


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 222
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



немножко оффтопик, но по теме

будьте осторожны в документе

mnl_timequest_cookbook.pdf :: Quartus II TimeQuest Timing Analyzer Cookbook :: System Synchronous Output

Цитата
#create the output maximum delay for the data output from the FPGA that
#accounts for all delays specified
set_output_delay -clock virt_sys_clk -max [expr $CLKs_max + $BD_max - $tSU - $CLKd_min] [get_ports {data_in[*]}]


ошибка. должно быть так

Цитата
set_output_delay -clock virt_sys_clk -max [expr $CLKs_max + $BD_max + $tSU - $CLKd_min] [get_ports {data_in[*]}]


причем в других доках Constraining SOPC Designs v1[1].0.doc и an433.pdf :: Constraining and Analyzing Source-Synchronous Interfaces примеры приведены правильно


--------------------
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Oct 1 2008, 15:47
Сообщение #13


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 474
Регистрация: 15-07-06
Из: г.Донецк
Пользователь №: 18 832



Цитата(des00 @ Oct 1 2008, 16:12) *


Спасибо,примем к сведению.Точно data_in?Не data_out?
А по моей теме пока сдвигов нет?
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 2 2008, 03:19
Сообщение #14


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 222
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(_Anatoliy @ Oct 1 2008, 10:47) *
Спасибо,примем к сведению.Точно data_in?Не data_out?
А по моей теме пока сдвигов нет?


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

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

Но к теме еще вернемся %))


--------------------
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Oct 2 2008, 05:02
Сообщение #15


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 474
Регистрация: 15-07-06
Из: г.Донецк
Пользователь №: 18 832



Цитата(des00 @ Oct 2 2008, 06:19) *


o'k!
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th December 2017 - 05:05
Рейтинг@Mail.ru


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