Да, действительно, у меня примерно такая же картина, правда цифры немного другие.
Смотрел структуру умножителя в RTL viewer-е, принципиальных различий не обнаружил. Однако должен отметить, что регистр
Цитата
и на выходе также регистр (pipeline =1)
стоит совсем не на выходе, а примерно в середине структуры. Это и логично, самый длинный путь нужно разбить пополам. Так вот, видимо при 30 битном умножении этот регистр стоит ближе к середине, чем при 28 битном. Издержки универсальности описания видимо.
Попробовал такой финт: умножитель описал как 30-битный, но младшие 2 бита установил в 0. Лишняя логика соптимизировалась, и получилось LE как в 28-битном, а скорость осталась как в 30-битном.
Единственное, что нельзя гарантировать что эффективность такой "оптимизации" сохранится на последующих версиях квартуса, точнее мегафункции, хотя и маловероятно, что ее кто-то будет переписывать