Как известно в Verilog есть два типа чувствительных блоков : always @ (posedge/negedge CLK) срабататывают по фронту и always @ (CLK) срабатывают по уровню. Процессор PlayStation использует оба метода.
С блоками, которые срабатывают по фронту всё понятно: они завязаны на гроздь DFF, которые дальше уже рулят всей схемой.
Но как быть, если нам необходимо вначале сделать действие по фронту CLK, а за ним сделать действие по уровню CLK? Ведь нам необходимо расставить приоритеты, чтобы схема по уровню сработала позже, чем схема по фронту.
В этом нам помогают "детекторы уровня" :
Эта стандартная ячейка гарантирует, что фронт CLK "не пролезет" в схему (причем не только передний, но и задний), а пролезет только уровень. Реализуется этот механизм путём эксплуатирования propagation delay, при этом CLK превращается в "спайк" (короткий импульс), который возникает по середине уровня:
Таким образом процессор PSX уже в 1995 году использовал как фронт CLK, так и его уровень, предвосхитив повсевместное использование этого трюка. Примером устройств, использующих такую же логику является память DDR.