03-30-2012 08:43 AM
I was trying to make a custom PLBv46 peripheral and add it to the microblaze based system.
The custom peripheral contains 2 Coregen generated components, a BRAM and a DCM.
What I did:
1. Create a XPS system with BSB wizard
2. Create a custom peripheral with "Create and import peripheral wizard",
together with the automatically generated ISE & XST project files.
3. Goto the automatically generated ISE project and modify the user_logic.vhdl
4. Add a DCM module in the ISE project (using the core generator) and instantiate the DCM in the user_logic.vhdl.
5. Add a block ram module in the ISE project (using the core generator) and instantiate the BRAM in the user_logic.vhdl.
6. save the ISE project.
7. Go back to XPS, add the peripheral to the system, set connection and addresses.
8. press button "Generate bitstream".
9. Get error message during ngdbuild
..........Omitting many lines..........
Processing BMM file "system.bmm" ...
Checking expanded design ...
WARNING:NgdBuild:443 - SFF primitive
Gen_Bits.MEM_EX_Result_Inst' has unconnected output pin
ERROR:NgdBuild:604 - logical block
'hash_module_0/hash_module_0/USER_LOGIC_I/DCMx4' with type 'DCMtest' could
not be resolved. A pin name misspelling can cause this, a missing edif or ngc
file, case mismatch between the block name and the edif or ngc file name, or
the misspelling of a type name. Symbol 'DCMtest' is not supported in target
WARNING:NgdBuild:478 - clock net mdm_0/bscan_drck1 with clock driver
mdm_0/mdm_0/BUFG_DRCK1 drives no clock pins
Partition Implementation Status
No Partitions were found in this design.
NGDBUILD Design Results Summary:
Number of errors: 1
Number of warnings: 3
Total REAL time to NGDBUILD completion: 1 min 26 sec
Total CPU time to NGDBUILD completion: 1 min 25 sec
One or more errors were found during NGDBUILD. No NGD file will be written.
Writing NGDBUILD log file "system.bld"...
ERROR:Xflow - Program ngdbuild returned error code 2. Aborting flow execution...
make: *** [__xps/system_routed] Error 1
====================End of console message======================
What I observed,
1. If I implement the custom peripheral using ISE, I won't get error with ngdbuild.
2. I realize that DCM ipcore doesn't come along with a .ngc file.
I have been working on this problem for whole day.........Please give me some clues........
03-30-2012 11:08 AM
Doesn't coregen create the instaiations for the DCM and BRAM? Why did you need to do it again? Perhaps it is complaining that is has a DCM and a BRAM that it doesn't know what to do with (or the higher level is so confused)?
Xilinx San Jose
03-30-2012 09:31 PM - edited 03-30-2012 09:34 PM
For the instantiation of DCM and BRAM, I followed the guidelines in the "HDL instantiation template" and copied the template codes into user_logic.vhdl.
=============The following code was copied to user_logic architecture header============
CLK_IN1 : in std_logic;
CLK_OUT1 : out std_logic;
RESET : in std_logic;
LOCKED : out std_logic
=================The following code was copied to the user_logic architecture==================
myDCM : DCMtest
CLK_IN1 => Bus2IP_Clk,
CLK_OUT1 => myClk,
RESET => Bus2IP_Reset,
LOCKED => myLocked);
Are you saying that the above steps were unnecessary and caused the error?
03-31-2012 12:19 PM
I am a bit confused as to what you are trying to achieve.
When you developed your embedded system using BSB in XPS, surely that included a "clock_generator" block? Do you really *need* to try and instantiate another DCM in your system? May be you do but I'm just asking.
Moving on from that, what files does coregen produce for the DCM? Can/have you included the relevant output file into your ISE project (i.e. does ISE "know" where to find the description of your DCM)?
Lastly, you could avoid coregen completely and instantiate the DCM primitive (relevant to your device) instead. Just be sure to include the Xilinx primitive library in your user_logic if you do that.
"That which we must learn to do, we learn by doing." - Aristotle
04-05-2012 02:54 PM
Maybe you are missing the underlying code beneath your component declaration.
A few years ago I instantiated a DCM in a pcore to create a 40 mhz clock. Today I now would just add a clock output
to the Clock generator.
04-10-2012 06:45 AM
When you make change in the generated ipCore which is generated by XPS (using ISE) and the change includes adding vhdl files or adding some ports, it is necessary to import the ipCore as existing ip. In this way, XPS generates new *.pao file that includes information about your additional vhdl files. Then you can add the ipCore to your project, clean all generated files and update bitstream.