[an error occurred while processing this directive]
|
Регистр на VHDL имеет вид:
...
cr10_i <=( data_in_r(10) and (not be_mask_r(10) and write) ) or
( cr10_r and not(not be_mask_r( 8) and write) );
cr8_i <=( data_in_r( 8) and (not be_mask_r( 8) and write) ) or
( cr8_r and not(not be_mask_r( 8) and write) );
...
srcr_reg_p:process (clk,nRst) is
begin
f nRst='0' then
cr10_r<='0'; cr8_r<='0'; cr6_r<='0';
cr3_r <='0'; cr1_r<='0'; cr0_r<='0';
elsif rising_edge(clk) then
cr10_r<=cr10_i; cr8_r<=cr8_i; cr6_r<=cr6_i;
cr3_r <=cr3_i; cr1_r<=cr1_i; cr0_r<=cr0_i;
end if;
end process srcr_reg_p;
Проблема в том, что на выходе cr10_r всегда 0. Думаю, что MaxPlus неправильно оптимизирует выражение для cr10_i ? Самое интерессное начинается, когда сигналы cr10_i,cr8_i, ... делаются выходными ( в целях тестирования) - тогда вдруг все работает как и задумано!
Вопрос: это глюк MaxPlus? именно этой версии ? может кто-то уже боролся с такими приколами?
Спасибо за ответы.
E-mail: info@telesys.ru