[an error occurred while processing this directive]
|
Допускаю. Конкретный пример. Задача есть процессор и периферия к нему. Периферийные регистры можно организовать как латчи, а можно как флопы. Написав вариант с флопами, получаю к примеру 500000 квадратных микрон. Написав с латчами (но привинтив генератор импульса записи из библиотечного элемента "линия задержки" и двинутого им клока) получаю 400000 микрон. В результате имею в запасе чуток площади, в которое влезает что-нить полезное. Хотя конечно в принципе решение сопливое с точки зрения ПЛИС, однако для ASIC работает и в симуляции и в реальном кристалле на всех рабочих режимах, включая предельные (тут уже доверяю симулятору verilog-XL и STA PrimeTime, и не зря - с первой итерации получаю ОК). Докучи такой генератор импульса записи однохренственно нужен, так как используется latch-based RAM в качестве регистрового файла. В FPGA я такое бы ни в жизни делать не стал, однако на этапе тестирования кода на FPGA пришлось поизголяться, задерживая клок пачками LCELL'ов.
А вот насчет инференции LATCH'ей из DW - не пытался даже, я ихнее только комбинаторное юзал, даже не я, а сам синтезатор. Кстати я даже не знал до Вашего сообщения, что DW может генерить что-то с LATCH'ами.
Теперь про образование LATCH'ей из комбинаторных блоков, объявленных через always @* - не допускаю. Бывает приходится до безобразия перекапывать нетлист, чтобы понять, с какого хрена там этот LATCH образовался.
E-mail: info@telesys.ru