Может ли каскад LUT использоваться одновременно с несущей цепью в FPGA iCE40 какими-либо инструментами?
Я пытаюсь построить следующее:
CO
|
/carry\ ____
s2 ---(((---|I0 |------------ O
+------+((---|I1 |
| +-(+---|I2 |
| | +----|I3__|
| +-(-----------+
| | |
| /carry\ ____ |B ___ BQ
D -----+------(((---|I0 |-+-----| |-+
s0 --+((---|I1 | > | |
s1 ---(+---|I2 | s3 -|S | |
| +-|I3__| s4 -|CE_| |
| +--------------------+
|
/carry\
|||
Я пишу в Verilog и создаю экземпляры примитивов SB_LUT4, SB_CARRY, SB_DFFESS. Чтобы попытаться получить каскад LUT, я редактирую файл ограничений.pcf (set_cascading...). Тем не менее, синтез (Lattice IceCube 2017.01.27914) игнорирует ограничения: W2401: Игнорирование каскадного ограничения для экземпляра LUT "filap.blk_0__a.cmbA.l.l", так как он упакован с помощью DFF/CARRY в LogicCell
В замечательном Project IceStorm я не вижу никакой причины, по которой нельзя использовать комбинацию каскадных LUT и цепи переноса.
Я знаю, что (немного) более новый IceCube2 доступен. Я знаю о наборе инструментов Yosys/arachne-pnr/icepack/iceprog. Но перед сменой цепочки инструментов, кажется разумным спросить, кто-нибудь уже решил эту проблему, или действительно ли невозможно объединить цепочку переноса и каскады LUT?
Обновление - быстрая установка Yosys/arachne-pnr/icetools синтезирует мой дизайн без предупреждений, но визуализация в ice40_viewer (и вывод журнала) указывает на то, что цепочечная лут не используется.