我尝试构建以下内容:
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 实例“filt.blk_0__a.cmbA.ll”的级联约束,因为它在 LogicCell 中与 DFF/CARRY 打包在一起
在令人钦佩的 Project IceStorm 中,我看不出为什么不能使用级联 LUT 和进位链的组合。
我知道有一个(稍微)更新的 IceCube2 可用。我知道 Yosys/arachne-pnr/icepack/iceprog 工具链。但在更改工具链之前,谨慎地询问是否有人已经解决了这个问题,或者是否确实不可能将进位链和 LUT 级联结合起来?
更新 - Yosys/arachne-pnr/icetools 的快速安装在没有警告的情况下合成了我的设计,但 ice40_viewer(和日志输出)中的可视化表明未使用链式 lut。