UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 61720

Vivado Synthesis 2014.2 - Mixed language (VHDL Verilog) generic parameter passed causes Synth 8-26 error

Description

I have a design where a Verilog module instantiates an instance of a VHDL file. 

The instantiation includes several parameters passed to the instance. 


When synthesizing, the following error is received:

[Synth 8-26] instantiation from Verilog of vhdl entity with complex port types not implemented ["/home/marcb/CASES/1018586/design/marc_psram_hdl_prj2/project_1/project_1.srcs/sources_1/imports/src/design_1_psram_ip_0_0.v":237]

Why is this happening?

Solution

The error is caused by a mixed language parameter/generic that specifies a negative bus range i.e. (-1 downto 0).

This happens when the parameter is defined as zero in the Verilog instantiation:

  psram_ip_v1_0 #(   

.C_S00_AXI_ID_WIDTH(0), 

...

 

In the VHDL file, there are several bus ranges defined as:

std_logic_vector(C_S00_AXI_ID_WIDTH-1 downto 0)

 

This leads to the negative bus range and the error.


To avoid the error, the range should be 0 or positive. 


When synthesizing the VHDL file as the top module that still specifies the negative range, there is no error, but the ports are removed:

 

WARNING: [Synth 8-506] null port 'S_AXI_ARUSER' ignored [/home/marcb/CASES/1018586/design/marc_psram_hdl_prj2/project_1/project_1.srcs/sources_1/imports/src/psram_ip_v1_0.vhd:144]

AR# 61720
Date Created 08/07/2014
Last Updated 01/21/2015
Status Active
Type General Article
Tools
  • Vivado Design Suite - 2014.2