Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как описать констрейн?
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Iptash
Здравствуйте все.
Есть вот такой код:
Код
always @ (posedge clock1) begin
    if(IN) begin
      if(!S1)
        zap <= 1'b1;
      dreb <= 7'd0;    
    end else if(dreb > 7'd100) begin
                zap <= 1'b0;
                S1 <= 1'b0;
             end  else begin
                dreb <= dreb + 1'b1;
                S1 <= 1'b1;
            end
end

где clock1 тактовый вход, IN это входной измеряемый сигнал, и zap соответсвенно формируется из этих сигналов и служит клоком для др. части программы.
Как описать этот констрейн?
maksimp
Помещаете ваш код в модуль - обязательно чтобы у него появилось имя и было на что ссылаться в .sdc файле:
module cdel(input clock1,input IN,input S1,output zap)
...
endmodule

Вставляете его
cdel cdel1(clock1,IN,S1,zap);

В .sdc файл вставляете (здесь 62.5 - период в наносекундах, у вас может быть другой):
create_clock -name clock1 -period 62.5 clock1
create_generated_clock -divide_by 2 -name zap -source clock1 -master_clock clock1 -add cdel:cdel1|*

"-divide_by 2" означает деление частоты на 2. Пончтно что деление будет не менее чем в 2 раза. Вероятно безопасно указать меньший коэффициент деления чем на самом деле.
Iptash
Спасибо. Сигнал zap это внутренний регистр и этот модуль используется в нескольких каналах X, Y, Z.
Вот я описываю его так create_generated_clock -name zapX -source [get_ports {clock1}] -divide_by 2 [get_registers {chanel:chanel_X|zap}] и тайм квест его игнорирует. Вот я и
думаю как его описать как клок.
maksimp
Цитата(Iptash @ Jan 23 2013, 20:22) *
Спасибо. Сигнал zap это внутренний регистр и этот модуль используется в нескольких каналах X, Y, Z.
Вот я описываю его так create_generated_clock -name zapX -source [get_ports {clock1}] -divide_by 2 [get_registers {chanel:chanel_X|zap}] и тайм квест его игнорирует.

А у вас не появляется предупреждение при работе таймквеста, что на один из фильтров нет совпадений? [get_ports {clock1}] или [get_registers {chanel:chanel_X|zap}] может легко промахиваться.
Особенно подозрительно то что zap это внутренний регистр, он его может не находить его в такой ситуации. Попробуйте например заменить [get_registers {chanel:chanel_X|zap}] на [get_registers {chanel:chanel_X|*}].
Iptash
Цитата(maksimp @ Jan 23 2013, 21:38) *
[get_registers {chanel:chanel_X|*}].

Так тоже игнорирует. Я наверное вынесу этот фильтр в топ модуль, а то из за этого zap тысяча слаков. Жаль нет описания метода работы в тайм квест со всеми мелочами и секретами на Русском.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.