2

I try to construct the following:

               CO               
               |                            
            /carry\  ____                   
        s2 ---(((---|I0  |------------ O    
       +------+((---|I1  |                  
       |     +-(+---|I2  |                  
       |     | +----|I3__|                  
       |     +-(-----------+                
       |       |           |                
       |    /carry\  ____  |B     ___ BQ    
D -----+------(((---|I0  |-+-----|   |-+         
        s0  --+((---|I1  |       >   | |    
        s1  ---(+---|I2  |   s3 -|S  | |    
               |  +-|I3__|   s4 -|CE_| |    
               |  +--------------------+
               |                
            /carry\   
              |||

I write in Verilog, and instantiates SB_LUT4, SB_CARRY, SB_DFFESS primitives. To try to get a LUT cascade, I edit a .pcf constraints file (set_cascading...). However, synthesis (Lattice IceCube 2017.01.27914) disregards the constraints: W2401: Ignoring cascade constraint for LUT instance 'filt.blk_0__a.cmbA.l.l', as it is packed with DFF/CARRY in a LogicCell

In the admirable Project IceStorm I can't see any reason why a combination of cascaded LUTs and the carry chain can't be used.

I am aware that a (slightly) newer IceCube2 is available. I know of the Yosys/arachne-pnr/icepack/iceprog toolchain. But before changing a toolchain, it seems prudent to ask if anyone solved this problem already, or if it is indeed not possible to combine the carry chain and LUT cascades?

Update - a quick install of Yosys/arachne-pnr/icetools synthesizes my design without warnings, but visualisation in ice40_viewer (and log output) indicates that the chained lut is not used.

Baard
  • 809
  • 10
  • 26

0 Answers0