Перейти к содержанию
    

Скачал у Альтеры пример clock_enable_multicycle.qar,а он похоже не работающий.Ибо setup relationship у него равен одному такту,а должен быть равен двум.

http://www.altera.com/support/examples/dow..._multicycle.qar

post-18832-1220609533_thumb.jpg

 

вот их строчки из .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.А ещё что?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Неужели никто констрейны не пишет?

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

Как правильно обконстрейнить схему с использованием enable?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

немного поигрался с этим проектом, посмотрел 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.

 

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

 

Удачи!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

 

Спасибо!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет,не работает.

regout нужно заменить на q,но всё равно setup relationship равен одному такту,а должен быть равен двум тактам.

Картинка должна быть примерно такой:

post-18832-1221114569_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет,не работает. regout нужно заменить на q,но всё равно setup relationship равен одному такту,а должен быть равен двум тактам.

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

2).Вот картинка с Альтеровскими строчками мультицикла:

post-18832-1221541536_thumb.jpg

3).Вот картинка с Вашими строчками мультицикла:

post-18832-1221541608_thumb.jpg

 

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

 

http://edisk.ukr.net/get/346740/mc_pic2.qar

Расширение .htm нужно изменить на .qar

Схемотехнику проекта не менял,только файл .sdc.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Расширение .htm нужно изменить на .qar

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

Выслал проект на почту "диод".

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

post-18832-1221558064_thumb.jpg

Я сейчас могу это сделать только для всех узлов запитанных от клока,а нужно избирательно,только в те узлы в которые заводится ena.

Удачи!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я сейчас могу это сделать только для всех узлов запитанных от клока,а нужно избирательно,только в те узлы в которые заводится 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 %)

post-3453-1221621937_thumb.jpg

post-3453-1221622165_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

To be continue %)

 

Класс,я как-то о таком решении не подумал:-((

Однако при сложном проекте ручками нужно будет все шины прописывать...Или вводить префиксы/постфиксы.

Видимо должна всё таки быть возможность указать то же самое через ENA, не зря Альтеровцы применили ключевое слово -through(правда,криво применили).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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 примеры приведены правильно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Спасибо,примем к сведению.Точно data_in?Не data_out?

А по моей теме пока сдвигов нет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо,примем к сведению.Точно data_in?Не data_out?

А по моей теме пока сдвигов нет?

 

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...