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# 56009

FIFO Generator v9.3 - How to run Structural Simulation for built-in FIFO in the Vivado tool with standalone and multiple instances of FIFO Generator core in the design

Description

The built-in FIFO simulation from the Vivado tool generates an error below while trying to run behavioral simulation for the FIFO in Vivado:

Failure: FAILURE: Use of behavioral models for Virtex-4 and Virtex-5 built-in FIFO configurations is currently not supported. Please use the structural simulation model. You can enable this from CORE Generator by selecting Project -> Project Options -> Generation tab -> Structural Simulation.

There is no direct option in the Vivado tool to generate a Structural Simulation model in Vivado.

Solution

To run Structural Simulation of the built-in FIFO, you will need to create a structural model.

  1. In the Vivado GUI, Set IP as Top, run synthesis.
  2. After synthesis is complete, you can write out a back annotated simulation model for the IP by running the following commands from the TCL console accessible from the Vivado GUI.
    • write_verilog -mode funcsim <corename>.v (for Verilog)
    • write_vhdl -mode funcsim <corename>.vhd (for VHDL)
  3. Add the model as a simulation only source for the flow to simulate the IP.


For the design that has multiple instances of FIFO Generator, you need to run the rename_ref command before running the write commands.
The rename_ref command is a must for uniquify the FIFO instances, otherwise simulation may fail with some other errors.

You can use the below proc for multiple instances of built-in FIFO core in a design:

proc gen_synth_net { ip_file ip_dir part_name } {
   create_project -in_memory -part $part_name
   set ip_name [file rootname [file tail $ip_file]]
   read_ip $ip_file
   synth_design -mode out_of_context -top $ip_name
   rename_ref -prefix_all ${ip_name}
   write_verilog -mode funcsim -force -file $ip_dir/$ip_name/${ip_name}_post_synth.v
   close_project
   puts "Wrote Verilog simulation for $ip_name"
   return 0
}
AR# 56009
Date Created 05/14/2013
Last Updated 01/08/2014
Status Active
Type General Article
Devices
  • FPGA Device Families
Tools
  • Vivado Design Suite - 2012.4
IP
  • FIFO Generator