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!

cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Observer betontalpfa
Observer
121 Views
Registered: ‎10-12-2018

MIG (DDR memory interface generator) cannotmove with blockdesign

Hi,

I have a project, which includes a blockdesign with a MIG (DDR memory interface generator). If I copy and import the *.bd file to a new project, all IPs and connections (in the blockdesign) ok, except the MIG. The box of the MIG is missing, and I get several errors regarding to the MIG. Like the following:

 

...
[BD 41-6] mig_7series_0 does not have a port called ui_clk [BD 41-6] mig_7series_0 does not have a port called aresetn [BD 41-6] mig_7series_0 does not have a port called mmcm_locked
...

 

Is it normal to include MIG into blockdesign? Or this is not recommended, and I should insert it into the topmodule HDL.

What other source files should I copy/import to restore the blockdesign? Other IPs in the blockdesign not requires to import their *.xci files does MIG requires?

(The motivation of the copy is to store only the *.bd file in version control, so I want to regenerate the whole project from the *.bd, wrapper, and constraints)

0 Kudos
5 Replies
Moderator
Moderator
96 Views
Registered: ‎02-11-2014

Re: MIG (DDR memory interface generator) cannotmove with blockdesign

Hello @betontalpfa,

7-Series MIG whether you are using IP Catalog or IPI Flow requires the usage of a mig.prj file. If you are using a "board aware" flow like with a Arty A7-35T for example, then instead of referenceing a mig.prj the *.bd will be referencing ddr3_sdram for example. Which is actually a reference to the board.prj included in the board repo.

If you are not using the "board aware" flow, and you actually customize MIG to provide a pinout, that pinout and ALL the IP configuration will be store in a mig_a.prj and/or a mig_b.prj. This file is crucial to properly revision control a 7-Series MIG IP in IPI or IP Catalog.

Example of BD including reference to mig_a.prj

<spirit:instanceName>mig_7series_0</spirit:instanceName>
        <spirit:componentRef spirit:library="ip" spirit:name="mig_7series" spirit:vendor="xilinx.com" spirit:version="4.1"/>
        <spirit:configurableElementValues>
          <spirit:configurableElementValue spirit:referenceId="bd:xciName">design_1_mig_7series_0_0</spirit:configurableElementValue>
          <spirit:configurableElementValue spirit:referenceId="XML_INPUT_FILE">mig_a.prj</spirit:configurableElementValue>
          <spirit:configurableElementValue spirit:referenceId="RESET_BOARD_INTERFACE">Custom</spirit:configurableElementValue>
          <spirit:configurableElementValue spirit:referenceId="MIG_DONT_TOUCH_PARAM">Custom</spirit:configurableElementValue>
          <spirit:configurableElementValue spirit:referenceId="BOARD_MIG_PARAM">Custom</spirit:configurableElementValue>

If you don't want to worry about the mig_a.prj file, then I recommend porting your BD that includes 7-Series MIG by using the write_bd_tcl command. We end up taking the contents of the mig_a.prj and embedding it in the produced *.tcl script. You can then use this script to recreate your *.bd in a different project or a new BD.

I have attached a sample *.tcl script to re-create a BD including 7-Series MIG properly. Most of the time the only thing you need to change is the design_name variable.

 

Thanks,
Cory

-------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
Observer betontalpfa
Observer
68 Views
Registered: ‎10-12-2018

Re: MIG (DDR memory interface generator) cannotmove with blockdesign

Thank @coryb!

Are there any other IP which requires additional files in blockdesign? (Like the prj file for the MIG)

0 Kudos
Moderator
Moderator
55 Views
Registered: ‎02-11-2014

Re: MIG (DDR memory interface generator) cannotmove with blockdesign

Hello @betontalpfa,

I would think that an IP that require *.coe, *.mem, init files csv, etc would also require extra care with revision control. But I am not sure how other IP function with external files.

I think a post in Design Entry would be a better target area for this more broad question.

Thanks,
Cory

-------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
0 Kudos
Observer betontalpfa
Observer
50 Views
Registered: ‎10-12-2018

Re: MIG (DDR memory interface generator) cannotmove with blockdesign

I have experimented that 3 files are needed by the MIG:

  • system.bxml (This file must be in the same directory than the system.bd)
  • mig_a.prj (Mist be located in <projname>.srcs\sources_1\bd\system\ip\system_mig_7series_0_0_1. The path can be different depends on naming of your IP)
  • system_mig_7series_0_0.xci (This file must be in the same directory than the mig_a.prj)

If any of files above is missing the blockdesign cannot open properly. (Note, that no files are needed by other IPs.)

0 Kudos
Moderator
Moderator
40 Views
Registered: ‎02-11-2014

Re: MIG (DDR memory interface generator) cannotmove with blockdesign

Hello @betontalpfa,

The minimum sets of files required by IP Integrator per UG892 is as follows:

image.png

If you use the write_bd_tcl and add that scripts into revision control with your BD and the UI folder, then you don't need to worry about all the extra files required for MIG. The BD recreated will include everything you need.

Thanks,
Cory

-------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------