Здравстуйте,помогите разобраться.
получил предупреждения
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.