Forum Discussion
simulate AN812
- 4 years ago
Hi David,
I think the mem_bfm should be the Intel BFM.
I'm not usually use the AN812 design to test the DDR4 and EMIF interface.
The EMIF IP can generate the example design to simulate and test the IP itself.
You can refer to Arria 10 EMIF Design Example User Guide: https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/ug/ug-20118.pdf
By simulating the example design, you can see all EMIF signals interaction from the memory initialization ,calibration flow and user accesses.
I'm not sure if this something that you trying to get but I'm sure this can give you a good understanding on how the DDR4 and EMIF interface simply work.
Thanks,
Adzim
Hi David,
I think the mem_bfm should be the Intel BFM.
I'm not usually use the AN812 design to test the DDR4 and EMIF interface.
The EMIF IP can generate the example design to simulate and test the IP itself.
You can refer to Arria 10 EMIF Design Example User Guide: https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/ug/ug-20118.pdf
By simulating the example design, you can see all EMIF signals interaction from the memory initialization ,calibration flow and user accesses.
I'm not sure if this something that you trying to get but I'm sure this can give you a good understanding on how the DDR4 and EMIF interface simply work.
Thanks,
Adzim
- dsun014 years ago
Contributor
Hi Adzim
Thank you for your prompt response, really appreciate your help.
I will read the document and give it a try.
David
- dsun014 years ago
Contributor
Hi Adzim
I may be happy too early. the document is good, but in Quartus 21.3, to follow it step by step doesn't work. I guess there is a very minor variation between the tools revisions.
here are the error message. I got this error message, could you please have a look and give me some suggestion, I guess just one step away from it.
Thank you
Error: (vsim-8345) Unable to find original top-level design units for optimized design "_opt".
# ** Warning: $MODEL_TECH/../intel/verilog/src/mentor/twentynm_atoms_ncrypt.v(40): (vopt-2958) Implicit wire '<protected>' does not have any driver.
# ** Warning: $MODEL_TECH/../intel/verilog/src/mentor/twentynm_atoms_ncrypt.v(40): (vopt-2958) Implicit wire '<protected>' does not have any driver.
# ** Warning: $MODEL_TECH/../intel/verilog/src/mentor/twentynm_atoms_ncrypt.v(40): (vopt-2958) Implicit wire '<protected>' does not have any driver.
# ** Warning: $MODEL_TECH/../intel/verilog/src/mentor/twentynm_atoms_ncrypt.v(40): (vopt-2958) Implicit wire '<protected>' does not have any driver.
# ** Warning: $MODEL_TECH/../intel/verilog/src/mentor/twentynm_atoms_ncrypt.v(40): (vopt-2958) Implicit wire '<protected>' does not have any driver.
# ** Warning: $MODEL_TECH/../intel/verilog/src/mentor/twentynm_atoms_ncrypt.v(40): (vopt-2958) Implicit wire '<protected>' does not have any driver.
# ** Warning: $MODEL_TECH/../intel/verilog/src/mentor/twentynm_atoms_ncrypt.v(40): (vopt-2958) Implicit wire '<protected>' does not have any driver.
# ** Warning: $MODEL_TECH/../intel/verilog/src/mentor/twentynm_atoms_ncrypt.v(40): (vopt-2958) Implicit wire '<protected>' does not have any driver.
# ** Warning: $MODEL_TECH/../intel/verilog/src/mentor/twentynm_atoms_ncrypt.v(40): (vopt-2958) Implicit wire '<protected>' does not have any driver.
# ** Warning: C:/FPGA/EMIF_SIM/emif_0_example_design/sim/ip/ed_sim/ed_sim_mem/altera_emif_mem_model_core_ddr4_191/sim/altera_emif_ddrx_model_rank.sv(1196): (vopt-2697) MSB 19 of part-select into 'address' is out of bounds.
# ** Error: (vsim-8345) Unable to find original top-level design units for optimized design "_opt".
# ** Note: (vsim-12126) Error and warning message counts have been restored: Errors=1, Warnings=333.
# Error loading design
# End time: 08:36:23 on Feb 17,2022, Elapsed time: 0:00:28
# Errors: 1, Warnings: 333 - dsun014 years ago
Contributor
Hi Adzim
Sorry, I should use Questa-Intel. now it is running. and I got the waveform looks very reasonable. but the transcript windows dump a lot of information like this.
why it kept warning. is there a parameter can turn it off, if it now important.
READ Warning: IOAux detected dirty input data.
----------------------------------------
[2238863560] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: Initiating Read operation from [0x9aab]
# [2238863560] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: READ Warning: IOAux detected dirty input data.
# It is possible that your read operation may contain invalid data.
# [2239014600] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: READ: [0x9aab] => 0x0000000a ( 31 cycles)
# [2241129160] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0xfc420] <= 0x00000000
# [2241280200] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0xfc421] <= 0x00001f00
# [2241431240] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0xfc4a0] <= 0x00000000
# [2241582280] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0xfc4a1] <= 0x00001f00
# [2241733320] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0xfc380] <= 0x00000000
# [2242035400] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x6080] <= 0x00000008
# [2242186440] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: Initiating Read operation from [0x60c0]
# [2242255860] [DWR=000]: PRECHARGE - C [ 0 ] - ALL BANKS
# [2242337480] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: READ: [0x60c0] => 0x00000013 ( 31 cycles)
# [2242790600] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x6080] <= 0x00000008
# [2242941640] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: Initiating Read operation from [0x60c0]
# [2243011060] [DWR=000]: PRECHARGE - C [ 0 ] - ALL BANKS
# [2243092680] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: READ: [0x60c0] => 0x00000013 ( 31 cycles)
# [2245056200] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x5240] <= 0xffff0000
# [2245509320] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x5280] <= 0x00000000
# [2246113480] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x52c0] <= 0xffff0000
# [2246566600] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x4000] <= 0x00000000
# [2247170760] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x4800] <= 0x00000000
# [2247623880] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x4840] <= 0x00000000
# [2248228040] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x4880] <= 0x00000000
# [2248832200] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x48c0] <= 0x00000000
# [2249436360] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x4900] <= 0x00000000
# [2250040520] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x4940] <= 0xffff0000
# [2250644680] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x4980] <= 0x00000000
# [2251097800] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x49c0] <= 0x00000000
# [2251701960] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x4a00] <= 0x00000000
# [2252306120] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x4a40] <= 0x00000000
# [2252910280] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x4a80] <= 0xffff0000
# [2253363400] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x4ac0] <= 0x00000000
# [2253967560] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x50c0] <= 0xffff0000
# [2254571720] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x5100] <= 0x00000000
# [2255024840] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x51c0] <= 0x00000f0f
# [2255326920] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0xfe091] <= 0x01000020
# [2255477960] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0xfe090] <= 0x7c7f0001