YosysHQ / nextpnr

nextpnr portable FPGA place and route tool
ISC License
1.32k stars 245 forks source link

Himbaechel for Xilinx target : Unable to place cell DSP48E1 #1361

Closed marzoul closed 2 months ago

marzoul commented 2 months ago

Hi,

When experimenting with the Himbaechel variant for Xilinx Zynq target, nextpnr-himbaechel fails very early with the following message: ERROR: Unable to place cell 'user_inst.mul_i.gen_dsp48e1_inst', no BELs remaining to implement cell type 'DSP48E1'

Indeed the test design instantiates a DSP48E1 cell. But it seems that the supported cells are named DSP48E1_DSP48E1 according to the log : Info: DSP48E1_DSP48E1: 0/ 80 0%

I guess that BRAMs will have the same issue.

Note that this does not happen with experimental nextpnr-xilinx, this tool implements a dedicated mapping according to its log, it seems this pass is missing in Himbaechel for Xilinx :

Info: Packing DSPs..
Info:     Created 1 DSP48E1_DSP48E1 cells from:
Info:              1x DSP48E1

Tested with latest commit as of now, compiled on Archlinux.

Archive of the reproducer (with source verilog generated with ghdl, the json produced by Yosys, the netpnr-himbaechel log, and the Makefile to reproduce) : https://cloud.univ-grenoble-alpes.fr/s/pTHEn8ngLgSTpxg

Regards, Adrien

marzoul commented 2 months ago

This issue is now resolved.