RAMTester is failed with the recompiled ramtest.rbf


#1

I am using the ZEM4310 board and the FrontPanel SDK v4.4.1-2014-06-19 on Win32.

When I execute the downloaded original …/Samples/RAMTester.exe, I get an error message as follows.

“Can not find the procedure start entry of okFrontPanle_GetSerialNumber in okFrontPanel.dll”
(I was translated korean error message in english, so maybe different from original message)

So, I have re-compiled the …/Samples/RAMTester/Cxx/RAMTest.sln with Visual Studio 2012.
When I execute the recompiled RAMTester.exe with the original ramtest.rbf file, it is O.K.(all passed)

Next, I have recompiled the …/Samples/RAMTester/ZEM4310-Verilog/RAMTestter/ramtest.v with the Quartue Web Ed. 13.1, and I get recompiled ramtest.rbf.
But when I execute the RAMTester.exe with the recompiled ramtest.rbf file, it is failed.

What is wrong?

Thanks in advance.

The captured results :
---- Opal Kelly ---- RAMTester Application v1.0 ----
FrontPanel DLL loaded. Built: Jun 10 2014 15:03:49
Found a device: ZEM4310
Device firmware version: 1.18
Device serial number: 14330006ND
Device ID string: Opal Kelly ZEM4310
FrontPanel support is enabled.
Generating random data…
Writing to memory(0)…
Reading from memory(0)…
Passed: 1 Failed: 0
Generating random data…
Writing to memory(0)…
Reading from memory(0)…
[95189504] = 0x79 / 0x0D // 0x74
[95189505] = 0xE1 / 0xF0 // 0x11
[95189506] = 0xEE / 0xAD // 0x43
[95189507] = 0x63 / 0xDE // 0xBD
[95189508] = 0x58 / 0x0D // 0x55
[95189509] = 0xE2 / 0xF0 // 0x12
[95189510] = 0x52 / 0xAD // 0xFF
[95189511] = 0xCD / 0xDE // 0x13
Passed: 1 Failed: 1
Generating random data…
Writing to memory(0)…
Reading from memory(0)…
[0] = 0x61 / 0x0D // 0x6C
[1] = 0xF5 / 0xF0 // 0x05
[2] = 0x28 / 0xAD // 0x85
[3] = 0x25 / 0xDE // 0xFB
[4] = 0xA9 / 0x0D // 0xA4
[5] = 0x61 / 0xF0 // 0x91
[6] = 0x16 / 0xAD // 0xBB
[7] = 0x9E / 0xDE // 0x40
Passed: 1 Failed: 2
Generating random data…
Writing to memory(0)…
Reading from memory(0)…
[0] = 0x36 / 0x0D // 0x3B
[1] = 0xE9 / 0xF0 // 0x19
[2] = 0x06 / 0xAD // 0xAB
[3] = 0xCF / 0xDE // 0x11
[4] = 0xF7 / 0x0D // 0xFA
[5] = 0xAF / 0xF0 // 0x5F
[6] = 0xBA / 0xAD // 0x17
[7] = 0xF9 / 0xDE // 0x27
Passed: 1 Failed: 3
Generating random data…
Writing to memory(0)…
Reading from memory(0)…
[0] = 0xA8 / 0x0D // 0xA5
[1] = 0xEB / 0xF0 // 0x1B
[2] = 0x23 / 0xAD // 0x8E
[3] = 0xFE / 0xDE // 0x20
[4] = 0xA7 / 0x0D // 0xAA
[5] = 0xB6 / 0xF0 // 0x46
[6] = 0x53 / 0xAD // 0xFE
[7] = 0x75 / 0xDE // 0xAB
Passed: 1 Failed: 4
Generating random data…
Writing to memory(0)…
Reading from memory(0)…
[0] = 0xA9 / 0x0D // 0xA4
[1] = 0x44 / 0xF0 // 0xB4
[2] = 0x0D / 0xAD // 0xA0
[3] = 0x52 / 0xDE // 0x8C
[4] = 0x26 / 0x0D // 0x2B
[5] = 0x0F / 0xF0 // 0xFF
[6] = 0x2B / 0xAD // 0x86
[7] = 0x95 / 0xDE // 0x4B
Passed: 1 Failed: 5
Generating random data…
Writing to memory(0)…
Reading from memory(0)…
[0] = 0xD5 / 0x0D // 0xD8
[1] = 0xB2 / 0xF0 // 0x42
[2] = 0x17 / 0xAD // 0xBA
[3] = 0xA8 / 0xDE // 0x76
[4] = 0x16 / 0x0D // 0x1B
[5] = 0x13 / 0xF0 // 0xE3
[6] = 0x51 / 0xAD // 0xFC
[7] = 0xCA / 0xDE // 0x14
Passed: 1 Failed: 6
Generating random data…
Writing to memory(0)…
Reading from memory(0)…
[0] = 0x0A / 0x0D // 0x07
[1] = 0x36 / 0xF0 // 0xC6
[2] = 0x21 / 0xAD // 0x8C
[3] = 0xD2 / 0xDE // 0x0C
[4] = 0xB1 / 0x0D // 0xBC
[5] = 0x6E / 0xF0 // 0x9E
[6] = 0x8D / 0xAD // 0x20
[7] = 0xE0 / 0xDE // 0x3E
Passed: 1 Failed: 7
Generating random data…
Writing to memory(0)…
Reading from memory(0)…
[0] = 0xD7 / 0x0D // 0xDA
[1] = 0xF4 / 0xF0 // 0x04
[2] = 0x56 / 0xAD // 0xFB
[3] = 0x38 / 0xDE // 0xE6
[4] = 0xFA / 0x0D // 0xF7
[5] = 0xC8 / 0xF0 // 0x38
[6] = 0x1A / 0xAD // 0xB7
[7] = 0xAE / 0xDE // 0x70
Passed: 1 Failed: 8
Generating random data…
Writing to memory(0)…
Reading from memory(0)…
[0] = 0x65 / 0x0D // 0x68
[1] = 0xC1 / 0xF0 // 0x31
[2] = 0x74 / 0xAD // 0xD9
[3] = 0x79 / 0xDE // 0xA7
[4] = 0xBD / 0x0D // 0xB0
[5] = 0x25 / 0xF0 // 0xD5
[6] = 0x39 / 0xAD // 0x94
[7] = 0xD2 / 0xDE // 0x0C
Passed: 1 Failed: 9


#2

shjung2,
This looks like a security authentication error, i.e. the regenerated .rbf file is not passing the security tests on the board. This is a known issue with Quartus II 14.0, but it is possible to generate a functional bitfile in Quartus II 13.1. The most common cause of this error is that Quartus is not reading from the okHostMicrocode.hex file. Is that .hex file in the working directory of your project?

Cheers,
okAlex


#3

okAlex,
I am using Quartus II 13.1 Web edition, and I copied the okHostMicrocode.hex file in the working directory of my project.
I have tested another example, the PipeTest.
When I have recompiled the PipeTest.v, and execute the PipeTest.exe with the regenerated PipeTest.rbf file, then it is O.K.

I think the problem is not a security authentication.

Cheers,
shjung2


#4

shjung2,

The output listed includes hard-coded errors that are used to identify authentication failures (DEADF00D, in this case). That the design passed one test and failed the rest also indicates that the issue appeared after the board security kicked in.

To further investigate what is going wrong here, try this:
In Quartus, go to Processing->Update Memory Initialization File
If the process completes without errors, then try rebuilding the bitfile and running RAMTester with the new version. If you get an error, it’s a bit more difficult but it is entirely possible to get RAMTester to run properly.

Let us know how it goes. If you are still getting errors, we can proceed from there but this is our go-to solution for this issue.

Cheers,
okAlex


#5

Hi, okAlex.

( I recently update the FrontPanel SDK from 4.1 to v4.2. )

When I checked , I got errors as follows;
(This error messages are from the Quartus II 32-bit Web edition v13.1.4.)

Info: Running Quartus II 32-bit MIF/HEX Update
Info: Version 13.1.4 Build 182 03/12/2014 SJ Web Edition
Info: Processing started: Wed Sep 24 22:39:16 2014
Info: Command: quartus_cdb ramtest -c ramtest --update_mif
Warning (39023): Can’t find Memory Initialization File okNios_small_nios2_qsys_0_rf_ram_a.mif – skipped updates for this file
Warning (39023): Can’t find Memory Initialization File okNios_small_nios2_qsys_0_rf_ram_b.mif – skipped updates for this file
Critical Warning (127002): Can’t read Memory Initialization File or Hexadecimal (Intel-Format) File E:/My HW/Samples/RAMTester/ZEM4310-Verilog/okHostMicrocode.hex – setting all initial values to 0
Error (39022): Found no valid Memory Initialization File to process
Error: Quartus II 32-bit MIF/HEX Update was unsuccessful. 1 error, 3 warnings
Error: Peak virtual memory: 432 megabytes
Error: Processing ended: Wed Sep 24 22:39:19 2014
Error: Elapsed time: 00:00:03
Error: Total CPU time (on all processors): 00:00:03


And I have another problems.
When I recompile the ramtest sample with the Quartus II subscription edition (64bit) v13.1.4, I get some errors at timing analysis.
When I recompile it with the Quartus II Web edition (32bit) v13.1.4, there are no compilatrion errors. (But there are execution errors)
I don’t understand the reason.
Is the reason that the version of Altera’s DDR2 memory controller is different?

The error messages are :
<TimeQuest Timing Analyzer / Slow 1200mV 85C Model >
Timing Closure Recommendations
Slack From To Recommendations
1 -0.385 fifo_w32_1024_r32…s_brp|dffe13a[0] ddr2_test:ddr2_tb|local_address[12] Report recommendations for this path
2 -0.385 fifo_w32_1024_r32…s_brp|dffe13a[0] ddr2_test:ddr2_tb|local_address[11] Report recommendations for this path
3 -0.385 fifo_w32_1024_r32…s_brp|dffe13a[0] ddr2_test:ddr2_tb|local_address[20] Report recommendations for this path
4 -0.349 fifo_w32_1024_r32…s_brp|dffe13a[0] ddr2_test:ddr2_tb|local_addr_rd[10] Report recommendations for this path
5 -0.349 fifo_w32_1024_r32…s_brp|dffe13a[0] ddr2_test:ddr2_tb|local_addr_rd[11] Report recommendations for this path

Slow 1200mV 85C Model / Setup Summary
ddr2_interface_inst|ddr2_interface_controller_phy_inst|ddr2_interface_phy_inst|ddr2_interface_phy_alt_mem_phy_inst|clk|pll|altpll_component|auto_generated|pll1|clk[1]

How could I solve this errors?

I must use the ZEM4310’s DDR2 memory, so I need your help.
Thanks in advance.

Cheers,
shjung2


#6

I am sorry, I recently update the FrontPanel SDK from v4.4.1 to v4.4.2.

shjung2


#7

Hi, okAlex

Good news!!!

When I recompile the ramtest sample with the Quartus II subscription edition (64bit) v13.1.4, I got message “Timing requirements not meet”.
But the RamTester is O.K. with the regenerated ramtest.rbf file.
And the ‘Update Memory Initialzation File’ test is O.K.

For using ZEM4310 DDR2 ram, do I have to use the Quartus II subscription edition?
And why does the Quartus II subscription edition generates the message “Timing requirements not meet”?

Could you explane the reason?

Cheers,
shjung2


#8

Hi shjung2,

I’m glad you got something! When we do our tests, we use the web edition of Quartus II, not the Subscription edition. I’m interested to find out more about what may have been done differently between the Web edition and the Subscription edition. You should not have to use the Subscription edition to use the DDR2 RAM. I have recently tested this extensively and shown that it does work. The most likely cause of this error in 13.1 is that something is in the wrong directory, or a setting is wrong. Did you try a simpler example, like Counters or First, to make sure you knew which settings to change and that everything was going where it was supposed to go? In my experience, it only takes a small settings or location error to throw Quartus off.

At this point, my best recommendation is to try building a bitfile for Counters or First, following the README directions for Quartus exactly. There are fewer things that can go wrong with the simpler examples, so if you still have problems with them it will be easier to debug.

I look forward to hearing how it goes!

Cheers,
okAlex


#9

Hi akAlex,

Thank you very much for your advice.

The recompilaion of all other samples, such as First, Control, Counters, PipeTess, are O.K. with Quartus-II subscription edition. and Web edition.
And the execution with the regenerated bitfiles are O.K.

Only the ramtest sample has problems.
Maybe, I think the DDR2 memory controller of the RamTest sample is conflict with Quartus-II v13.1.4. But I am not sure.

I will study thoroughly the DDR2 memory controller and its interface.

Thanks.

shjung2