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

 
 
> получил предупреждения
serg_k1
сообщение Aug 29 2013, 13:48
Сообщение #1


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

Группа: Участник
Сообщений: 115
Регистрация: 21-03-07
Пользователь №: 26 368



Здравстуйте,помогите разобраться.
получил предупреждения
WARNING:PhysDesignRules:372 - Gated clock. Clock net
Ch_M_BC/GND_12_o_GND_12_o_AND_159_o is sourced by a combinatorial pin. This
is not good design practice. Use the CE pin to control the loading of data
into the flip-flop.
как найти причину и насколько это важно?
методом исключений из описания получил , что вроде бы это получается из следующего куска кода. таких есть несколько. получается , что нужно упрощать?
Код
//----------- 2   3   4   5-е слово  -------------------------------------            
if ( reg_nomer_slova == 8'h02 | reg_nomer_slova == 8'h03 | reg_nomer_slova == 8'h04 | reg_nomer_slova == 8'h05)
  begin
casez (nomer_bit)
        5'b00???:   begin     //0..7                                 
            reg_CM_BC <=  (reg_nomer_slova == 8'h02) ?
                ( ( reg_kod_oper  == paket_znak ) ?  reg_kolich_znakov[nomer_bit]  :
                            ( ( reg_kod_oper  == paket_linia ) ?  reg_nach_koord_linii_Y[nomer_bit]  : 1'bz  ) ) :
                    (reg_nomer_slova == 8'h03) ?          
                        ( ( reg_kod_oper  == paket_znak ) ?  reg_koord_perv_znaka_Y[nomer_bit]  :  
                            ( ( reg_kod_oper  == paket_linia )  ?  reg_nach_koord_linii_X[nomer_bit]  : 1'bz  ) ) :
                        (reg_nomer_slova == 8'h04) ?        
                            ( ( reg_kod_oper  == paket_znak ) ?  reg_koord_perv_znaka_X[nomer_bit]  :  
                                ( ( reg_kod_oper  == paket_linia )  ?  reg_proekcii_linii_Y[nomer_bit]  : 1'bz  ) ) :        
                                ( ( reg_kod_oper  == paket_znak ) ?  reg_kod_znaka_bit_ml[nomer_bit]  :  
                                    ( ( reg_kod_oper  == paket_linia )  ?  reg_proekcii_linii_X[nomer_bit]  : 1'bz  ) );
                nomer_bit <= nomer_bit + 1'b1;    
            end
    5'b0100?:   begin     //8,9
            reg_podgotovki_smeni_slova <= 1'b0;
            reg_CM_BC <=  (reg_nomer_slova == 8'h02) ?
                        ( ( reg_kod_oper  == paket_znak ) ?  reg_kolich_znakov[nomer_bit]  :
                            ( ( reg_kod_oper  == paket_linia ) ?  reg_nach_koord_linii_Y[nomer_bit]  : 1'bz  ) ) :
                        (reg_nomer_slova == 8'h03) ?          
                            ( ( reg_kod_oper  == paket_znak ) ?  reg_koord_perv_znaka_Y[nomer_bit]  :  
                                ( ( reg_kod_oper  == paket_linia )  ?  reg_nach_koord_linii_X[nomer_bit]  : 1'bz  ) ) :
                            (reg_nomer_slova == 8'h04) ?        
                                ( ( reg_kod_oper  == paket_znak ) ?  reg_koord_perv_znaka_X[nomer_bit]  :  
                                ( ( reg_kod_oper  == paket_linia )  ?  reg_proekcii_linii_Y[nomer_bit]  : 1'bz  ) ):        
                                        ( ( reg_kod_oper  == paket_znak ) ?  reg_kod_znaka_bit_st[nomer_bit-8]  :  
                                    ( ( reg_kod_oper  == paket_linia )  ?  reg_proekcii_linii_X[nomer_bit]  : 1'bz  ) );
                    nomer_bit <= nomer_bit + 1'b1;    
                end                              
        5'b0101?:   begin     //10,11
        reg_CM_BC <=  (reg_nomer_slova == 8'h02 | reg_nomer_slova == 8'h03 | reg_nomer_slova == 8'h04) ?
                        ( ( reg_kod_oper  == paket_znak ) ?   1'b0  :
                            ( ( reg_kod_oper  == paket_linia ) ?   1'b0   : 1'bz  ) ) :
                                ( ( reg_kod_oper  == paket_znak ) ?  reg_kod_znaka_bit_st[nomer_bit-8]  :  
                                    ( ( reg_kod_oper  == paket_linia )  ?   1'b0  : 1'bz  ) );
                    nomer_bit <= nomer_bit + 1'b1;    
                end    
        5'b0110?:   begin      //12,13
            reg_CM_BC <=
                                       ...
                nomer_bit <= nomer_bit + 1'b1;    
            end    
        5'b01110:   begin      //14
            reg_CM_BC <=  ...

                nomer_bit <= nomer_bit + 1'b1;    
            end    
    5'b01111:   begin      //15
            reg_CM_BC <=
                                         ...
                nomer_bit <= nomer_bit + 1'b1;    
            end
    5'b10000:   begin      
                reg_CM_BC <=  1'b0;
                nomer_bit <= nomer_bit + 1'b1;    
             end          
    5'b10001:   begin
                reg_CM_BC <=  reg_kontr_razr;
                nomer_bit <= nomer_bit + 1'b1;                                
                            ...    
                                        
            end                          
                    default :   begin
                                
                                nomer_bit <= 5'b00000;
                                end      
        endcase
end    //reg_nomer_slova == 8'h02

и еще одно предупреждение.
PhysDesignRules:372 - Gated clock. Clock net Ch_M_BC/reg_IZ_BC_CIB_BC is
sourced by a combinatorial pin. This is not good design practice. Use the CE
pin to control the loading of data into the flip-flop.
история такая.
есть два входных сигнала импульс IZ_BC и еще несколько импульсов CIB_BC. непересекающихся. под частоту в always получен общий reg_IZ_BC_CIB_BC. и далее на нем сделан свой always.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Torpeda
сообщение Sep 3 2013, 11:53
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 23-02-12
Пользователь №: 70 424



Цитата(serg_k1 @ Aug 29 2013, 16:48) *
Здравстуйте,помогите разобраться.
получил предупреждения
WARNING:PhysDesignRules:372 - Gated clock. Clock net
Ch_M_BC/GND_12_o_GND_12_o_AND_159_o is sourced by a combinatorial pin. This
is not good design practice. Use the CE pin to control the loading of data
into the flip-flop.
как найти причину и насколько это важно?


1) В Вашем исходном коде и в последующих модификациях ошибок нет.
То что описано Вами допустимо с точки зрения синхронного дизайна.

2) вы имеете варнинги (не ероры) поскольку Ваш стиль описания "неудобоварим" и не оптимален для FPGA
Вы неосознано используете Generated clock и Gated clock.
FPGA это может сделать и ему это можно объяснить.

3) FPGA не любит когда выходы тригеров заводятся на клок или ресет других тригеров или когда в клоковой цепи поставлены гейты.
Gated clock возникает, потому что кроме прямого подключения FF.Q на FF.CLK по пути есть есчё и комбинаторика.
FPGA советует использовать FF.CE вместо Generated clock и Gated clock.

4) тулза и ресеты считает и называет клоковыми нетами
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


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


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