vhdlxilinxmicroblaze

Unexpected symbol in bmm file for Microblaze


I am trying to get to grips with a simple Microblaze project, and have followed a tutorial I have found closely. I can synthesize the design in ISE successfully, but when I try and implement the design I get the following error:

ERROR::11 - Unexpected symbol 'MICROBLAZE', 'ADDRESS_MAP name' expected. Line #1, File "ipcore_dir/microblaze.bmm". ERROR:NgdBuild:989 - Failed to process BMM information ipcore_dir/microblaze.bmm

The file microblaze.bmm is generated by the microblaze core generator so I've not edited the contents.

The .bmm file generated with the microblaze core is:

ADDRESS_MAP microblaze MICROBLAZE-LE 100
  ADDRESS_SPACE lmb_bram COMBINED [0x00000000:0x00001fff]
   ADDRESS_RANGE RAMB16
    BUS_BLOCK
    mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S9.The_BRAMs[0].RAMB16_S9_1 [31:24] INPUT = microblaze.lmb_bram_0.mem;
    mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S9.The_BRAMs[1].RAMB16_S9_1 [23:16] INPUT = microblaze.lmb_bram_1.mem;
    mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S9.The_BRAMs[2].RAMB16_S9_1 [15:8] INPUT = microblaze.lmb_bram_2.mem;
    mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S9.The_BRAMs[3].RAMB16_S9_1 [7:0] INPUT = microblaze.lmb_bram_3.mem;
  END_BUS_BLOCK;
 END_ADDRESS_RANGE;
 END_ADDRESS_SPACE;
 END_ADDRESS_MAP;

And the microblaze is instantiated with this vhdl code:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity microblaze_top is
PORT (
   Clk : IN STD_LOGIC;
   Reset : IN STD_LOGIC;
   UART_Rx : IN STD_LOGIC;
   UART_Tx : OUT STD_LOGIC;
   GPO1 : OUT STD_LOGIC_VECTOR(11 DOWNTO 0)    
 );
end microblaze_top;

architecture Behavioral of microblaze_top is
COMPONENT microblaze
PORT (
   Clk : IN STD_LOGIC;
   Reset : IN STD_LOGIC;
   UART_Rx : IN STD_LOGIC;
   UART_Tx : OUT STD_LOGIC;
   FIT1_Interrupt : OUT STD_LOGIC;
   FIT1_Toggle : OUT STD_LOGIC;
   GPO1 : OUT STD_LOGIC_VECTOR(11 DOWNTO 0);
   INTC_IRQ : OUT STD_LOGIC
);
END COMPONENT;
begin
  mcs_0 : microblaze
  PORT MAP (
    Clk => Clk,
    Reset => Reset,
    UART_Rx => UART_Rx,
    UART_Tx => UART_Tx,
    GPO1 => GPO1
  );
  end Behavioral;

I have run this command in the TCL console to include the microblaze in the synthesis.

source ipcore_dir/microblaze_mcs_setup.tcl

I have spent ages trawling various tutorials and I cannot fathom what the problem is. Can someone please give me a hint as to what is going wrong.

I don't seem to be able to find a way to contact the author of the tutorial.

I'm using ISE14.7 running in a virtual appliance.

(Edit - added the following aditional info)

I have taken a look in the console tab which appears to give some more info, compared to the Errors tab:

ERROR::37 - Illegal file or path name symbol 'MICROBLAZE'. Line #5, File "ipcore_dir/microblaze.bmm". mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S9.The_BRAMs[0].RAMB16_S9_1 [31:24] INPUT = microblaze.lmb_bram_0.mem;

Looking closely ISE is not happy about microblaze.lmb_bram_0.mem; I'm not clear why though.

Below is a snapshot of the project Hierarchy:

project Hierarchy

And this is the MicroBlaze setup

MicroBlaze Setup


Solution

  • I found this page, and the suggestion is that the naming in the bmm file might not be matching what you have in your design hierarchy. Can you confirm that? Since you have a name related error. microblaze might be invalid.

    As you have updated your answer, it is visible that the hierarchical design name for it is in fact msc_0. Updating your bmm file with the correct naming would resolve the issue!