[an error occurred while processing this directive]
|
Вопрос к продвинутым в MAX-е
Есть AHDL-описание:
SUBDESIGN gliuk
( x1, x2, x3: input;
y: output; )
BEGIN
y = (x1 or x2) and x3;
END;
Этот файл компилируется в MAX++II (v9.23,9.6) для MAX7000,
и занимает 1 LC.
Если заглянуть в файл отчета, раздел "** EQUATIONS **",
то можно увидеть очень интересную оптимизацию:
-- Node name is 'y'
-- Equation name is 'y', location is LC017, type is output.
y = LCELL( _EQ001 $ x3);
_EQ001 = !x1 & !x2 & x3;
т.е. сигнал x3 заводится дважды.
Если такую схему прогонять Design Doctor-ом, у которого включена
проверка "Static hazards: After Synthesis", то он высмеивает вас:
Design Doctor Warning: Logic that drives primitive ':32' contains a static 0 hazard when 'x1'=0, 'x2'=0 and primitive 'x3' changes - hazard found after logic synthesis
И обойти это можно, только выбрав стиль оптимизации WYSIWYG
либо включив многоуровневый синтез.
Так это ошибка компилятора, оптимизатора, Design Doctor-a или моя?
E-mail: info@telesys.ru