cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Explorer
Explorer
3,551 Views
Registered: ‎07-03-2014

[ISE 14.4] Impossible to merge a MEM file into a bitfile

Hello everybody,

 

I have a complex design on a Spartan6 FPGA which is made up of:

 * Picoblaze for security purpouses (XAPP780)

 * Microblaze for control and communications to a host

 * Highly complex design on 10.000 slices

 

My problem is that I can't merge the .elf for the Microblaze and the .mem for the Picoblaze using neither data2mem nor specific command line in the ISE 14.4 implementation flow.

 

When using data2mem, this is the scenario:

 

 * I implement the whole desing from synthesis to bitgen without errors

 * In win7 command line I type:

data2mem.exe -bm edkBmmFile_bd.bmm -bt TOP_DESIGN.bit -bd uB_Code.elf tag microblaze_0 -o b download.bit

 If I program the FPGA with "download.bit", the microblaze starts and run perfectly, but my security check is not done because I must first merge the .mem with Picoblaze code.

 * Then, in win7 command line I type:

 

data2mem.exe -bm ifftest_bd.bmm -bt download.bit -bd pB_Code.mem -o b download_full.bit

 If I program the FPGA with "download_full.bit", the security check still is not done, so .mem code for picoblaze is not inserted in the BRAM by data2mem

 * I double-checked that PLACED BRAM in "ifftest_bd.mem" matched the correct placement in FPGA Editor, and both .bmm and .mem are properly written beause they are the same files I've been using the past 4 years, and always worked.




 

 

When trying to make it work using ISE 14.4 flow, this is the scenario:

 * I can't add .bmm to my design, because if I do, translate step reports the following error: found identical ISE and XPS BMM files. That error shouldn't ever to occur, since BMM file has nothing to do with XPS.

 * I decided to add manually the options to translate step in order to it generates the back-annotated .bmm file for picobleze, so in "Other Ngdbuild command line options" I typed:

-bm ifftest.bmm

 This should update "ifftest_bd.bmm" after implementation, but it doesn't. I guess the problem is that ISE puts that option AT THE END of the command line, just after "TOP_DESIGN.ngd":

ngdbuild.exe -intstyle ise -dd _ngo -nt timestamp -uc TOP_DESIGN.ucf -bm
edkBmmFile.bmm -p xc6slx75t-fgg676-3 TOP_DESIGN.ngc TOP_DESIGN.ngd -bm ifftest.bmm

  * I decided to execute the translate step outside ISE 14.4, and in Win7 command line I typed:

ngdbuild.exe -intstyle ise -dd _ngo -nt timestamp -uc TOP_DESIGN.ucf -bm
edkBmmFile.bmm -bm ifftest.bmm -p xc6slx75t-fgg676-3 TOP_DESIGN.ngc TOP_DESIGN.ngd

 This WORKS!! Please note the placement of "-bm ifftest.bmm" option in the command line.

 

 * I completed the mapper, placer and router succesfully and then, I added the following option in "Other bitgen command line options" in order the MEM file was merged into the bitfile:

bitgen.exe -intstyle ise -w -g DebugBitstream:No -g Binary:no -g CRC:Enable -g Reset_on_err:No -g ConfigRate:26 -g ProgPin:PullUp -g TckPin:PullUp -g TdiPin:PullUp -g TdoPin:PullUp -g TmsPin:PullUp -g UnusedPin:PullDown -g UserID:0xFFFFFFFF -g ExtMasterCclk_en:No -g SPI_buswidth:4 -g TIMER_CFG:0xFFFF -g multipin_wakeup:No -g StartUpClk:CClk -g DONE_cycle:4 -g GTS_cycle:5 -g GWE_cycle:6 -g LCK_cycle:NoWait -g Security:None -g DonePipe:Yes -g DriveDone:No -g Encrypt:No -g en_sw_gsr:No -g drive_awake:No -g sw_clk:Startupclk -g sw_gwe_cycle:5 -g sw_gts_cycle:4 TOP_DESIGN.ncd  -bd iff_scr_v30.mem

 Again this not works, seeming as if it is due to ISE addind the option at the end of the command line. I guess that because I executed this from the WIn7 command line:

bitgen.exe -intstyle ise -bd iff_scr_v30.mem -w -g DebugBitstream:No -g Binary:no -g CRC:Enable -g Reset_on_err:No -g ConfigRate:26 -g ProgPin:PullUp -g TckPin:PullUp -g TdiPin:PullUp -g TdoPin:PullUp -g TmsPin:PullUp -g UnusedPin:PullDown -g UserID:0xFFFFFFFF -g ExtMasterCclk_en:No -g SPI_buswidth:4 -g TIMER_CFG:0xFFFF -g multipin_wakeup:No -g StartUpClk:CClk -g DONE_cycle:4 -g GTS_cycle:5 -g GWE_cycle:6 -g LCK_cycle:NoWait -g Security:None -g DonePipe:Yes -g DriveDone:No -g Encrypt:No -g en_sw_gsr:No -g drive_awake:No -g sw_clk:Startupclk -g sw_gwe_cycle:5 -g sw_gts_cycle:4 TOP_DESIGN.ncd 

 Again, it worked because I placed the -bd option in the proper place into the command line.

 

My problem is that I can implement  my design only if I execute the process in a .bat file from the Win7 command line, but I want to do it from the ISE flow. How can I do it?

Why is data2mem not working when merging .mem files and it does when merging .elf?

How come ISE is not executing the extra command line options correctly?

 

Sorry for this long and tedious post, but I'm really desperated!

 

Cheers!

Tags (4)
0 Kudos
Reply
2 Replies
Scholar
Scholar
3,523 Views
Registered: ‎06-14-2012

Moving to embedded tools

0 Kudos
Reply
Explorer
Explorer
3,391 Views
Registered: ‎07-03-2014

Nobody knows why Ngdbuild is puting everything I write on "Other Ngdbuild command line options" at the end of the command line? This bug provokes I can't add any customized options to Ngdbuid.

I can't velieve nobody noticed this huge bug in ISE 14.4 before and that nobody can give a solution after more than a month waiting for it...

0 Kudos
Reply