Witam
Realizuje dość duży projekt na CPLD CoolRunner2 Xilinxa w VHDLu. Całość działa na 50 MHz. Układ został zaprojektowany przy pomocy behavioral simulator przed zaprojektowaniem i zamówieniem pcb. Pomijając standardowe, wstępne trudności można powiedzieć, że układ od razu działał dobrze. Jednak po zmianie Optimization goal z Area na Speed sygnały wyjściowe były bardzo przekłamane, a maszyna stanu nie przechodziła pełnego cyklu. Podobnie, ale nie identycznie, działo się, gdy zmieniałem Optimization effort z normal na high lub FSM Encoding Algorithm z compact na Gray lub hot-one. Po poprawieniu fragmentu kodu, który myślałem, że może sprawiać problemy jest dużo lepiej. Teraz tylko zmiana FSM Encoding Algorithm na hot-one powoduje problemy (na razie nie określiłem, w którym miejscu i dlaczego).
Skąd biorą się takie problemy, jak szukać ich przyczyn i najważniejsze - jak pisać, żeby one nie występowały?
Można by powiedzieć "zostań przy konfiguracji, która działa", ale te problemy prawie na pewno są wynikiem hazardów sygnałów wewnętrznych CPLD i zostawienie tego, tak jak jest byłoby ryzykowne, a już na pewno nie eleganckie.
pozdrawiam sludig