Forum Discussion

KCMurphy's avatar
KCMurphy
Icon for Occasional Contributor rankOccasional Contributor
4 years ago
Solved

LPDDR3 Simulation using example design

I'm having some issues with the LPDDR3 IP in my project. See attached lpddr3.ip file in the ZIP

As a sanity test, I create the Intel LPDDR3 example design via Platform Designer, using the attached IP file without change.

(Hard Controller/PHY, LPDDR3-1600 4Gb (128Mbx32) from the presets, 800MHz mem clock with 200Mhz ref, autopch control ON (or OFF), Verilog, no board)

I then simulate with Modelsim-AE 2021.1 version. I get some very strange results with all kinds of warnings and complaints. The load itself has a number of warnings involving items in the protected portion of the design. Running the test for 100uS gives the attached transcript.

Note: I have also run this with the abbreviated calibration option and these messages persist after calibration "succeeds." Note that for the most part the control and data wires to the memory are not moving.

(Win10Pro 21H1 19043, QPP 21.2, AMD Ryzen 7 5800x)

  • Never mind. I rebuilt the project from source and paid careful attention to sequences, and it works fine now. Apparently there was a build problem somewhere along the line and things were unhappy.

4 Replies

  • KCMurphy's avatar
    KCMurphy
    Icon for Occasional Contributor rankOccasional Contributor

    From the transcript in the above zip file, the simulation RUN results in a constant stream of messages like the following:

    # [14747638000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: Initiating Read operation from [0x2106]
    # [14747638000] 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.
    # [14747638000] 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.
    # [14747638000] 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.
    # [14767734000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: READ:  [0x2106] => 0x00000001 (         31 cycles)
    # [14807926000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: Initiating Read operation from [0x6106]
    # [14807926000] 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.
    # [14807926000] 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.
    # [14807926000] 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.
    # [14828022000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: READ:  [0x6106] => 0x00000001 (         31 cycles)
    # [17380214000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x2200] <= 0x000001fc
    # [17440502000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x6200] <= 0x000001ff
    # [17460598000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x3a0] <= 0x000001f9
    # [17480694000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0xba0] <= 0x000001f9
    # [17520886000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x13a0] <= 0x000001f8
    # [17540982000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x1ba0] <= 0x000001f8
    # [17561078000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x43a0] <= 0x000001f8
    # [17581174000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x4ba0] <= 0x000001f8
    # [17641462000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: Initiating Read operation from [0x13a8]
    # [17641462000] 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.
    # [17661558000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: READ:  [0x13a8] => 0x00000000 (         31 cycles)
    # [17701750000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x13a8] <= 0x00000002
    # [17762038000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: Initiating Read operation from [0x13a8]
    # [17762038000] 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.
    # [17782134000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: READ:  [0x13a8] => 0x00000002 (         31 cycles)
    # [17802230000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x13a8] <= 0x00000006
    # [17822326000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: Initiating Read operation from [0x13a9]
    # [17842422000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: READ:  [0x13a9] => 0x00000000 (         31 cycles)
    # [17862518000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x13a9] <= 0x00000004
    # [17922806000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: Initiating Read operation from [0x13a8]
    # [17922806000] 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.
    # [17942902000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: READ:  [0x13a8] => 0x00000006 (         31 cycles)
    # [17962998000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x13a8] <= 0x0000000e
    # [18023286000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: Initiating Read operation from [0x13a8]
    # [18023286000] 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.
    # [18043382000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: READ:  [0x13a8] => 0x0000000e (         31 cycles)
    # [18063478000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x13a8] <= 0x0000004e
    # [18083574000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: Initiating Read operation from [0x13a9]
    # [18103670000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: READ:  [0x13a9] => 0x00000004 (         31 cycles)
    # [18123766000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x13a9] <= 0x00000044
    # [18184054000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: Initiating Read operation from [0x13a8]
    # [18184054000] 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.
    # [18204150000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: READ:  [0x13a8] => 0x0000004e (         31 cycles)
    # [18224246000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x13a8] <= 0x000000ce
    # [18284534000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: Initiating Read operation from [0x13a8]
    # [18284534000] 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.
    # [18304630000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: READ:  [0x13a8] => 0x000000ce (         31 cycles)
    # [18324726000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x13a8] <= 0x000001ce
    # [18344822000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: Initiating Read operation from [0x13a9]
    # [18364918000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: READ:  [0x13a9] => 0x00000044 (         31 cycles)
    # [18385014000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x13a9] <= 0x00000144
    # [18445302000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: Initiating Read operation from [0x13a8]
    # [18445302000] 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.
    # [18465398000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: READ:  [0x13a8] => 0x000001ce (         31 cycles)
    # [18485494000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x13a8] <= 0x000003ce
    # [18545782000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: Initiating Read operation from [0x13a8]
    # [18545782000] 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.
    # [18565878000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: READ:  [0x13a8] => 0x000003ce (         31 cycles)
    # [18585974000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x13a8] <= 0x000007ce
    # [18606070000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: Initiating Read operation from [0x13a9]
    # [18626166000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: READ:  [0x13a9] => 0x00000144 (         31 cycles)
    # [18646262000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x13a9] <= 0x00000544
    # [18706550000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: Initiating Read operation from [0x1ba8]
    # [18706550000] 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.
    # [18726646000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: READ:  [0x1ba8] => 0x00000000 (         31 cycles)
    # [18746742000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x1ba8] <= 0x00000002
    # [18807030000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: Initiating Read operation from [0x1ba8]
    # [18807030000] 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.
    # [18827126000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: READ:  [0x1ba8] => 0x00000002 (         31 cycles)
    # [18847222000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x1ba8] <= 0x00000006
    # [18867318000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: Initiating Read operation from [0x1ba9]
    # [18887414000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: READ:  [0x1ba9] => 0x00000000 (         31 cycles)
    # [18907510000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x1ba9] <= 0x00000004
    # [18967798000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: Initiating Read operation from [0x1ba8]
    # [18967798000] 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.
    # [18987894000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: READ:  [0x1ba8] => 0x00000006 (         31 cycles)
    # [19007990000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x1ba8] <= 0x0000000e
    # [19068278000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: Initiating Read operation from [0x1ba8]
    # [19068278000] 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.
    # [19088374000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: READ:  [0x1ba8] => 0x0000000e (         31 cycles)
    # [19108470000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x1ba8] <= 0x0000004e
    # [19128566000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: Initiating Read operation from [0x1ba9]
    # [19148662000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: READ:  [0x1ba9] => 0x00000004 (         31 cycles)
    # [19168758000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x1ba9] <= 0x00000044
    # [19229046000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: Initiating Read operation from [0x1ba8]
    # [19229046000] 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.
    # [19249142000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: READ:  [0x1ba8] => 0x0000004e (         31 cycles)
    # [19269238000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x1ba8] <= 0x000000ce
    # [19329526000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: Initiating Read operation from [0x1ba8]
    # [19329526000] 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.
    # [19349622000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: READ:  [0x1ba8] => 0x000000ce (         31 cycles)
    # [19369718000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x1ba8] <= 0x000001ce
    # [19389814000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: Initiating Read operation from [0x1ba9]
    # [19409910000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: READ:  [0x1ba9] => 0x00000044 (         31 cycles)
    # [19430006000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: WRITE: [0x1ba9] <= 0x00000144
    # [19490294000] IOAux instance ed_sim.emif_0.emif_0.arch.arch_inst.io_aux_inst.io_aux.inst.<protected>.<protected>: Initiating Read operation from [0x1ba8]
    # [19490294000] 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.
    
  • AdzimZM_Altera's avatar
    AdzimZM_Altera
    Icon for Regular Contributor rankRegular Contributor

    Hi KCMurphy,


    I think you have to run the simulation until it's finished.

    There should be a lot of processes that have been done before the memory is ready to use.

    The important thing is the calibration must be succeed.


    Regards,

    Adzim


  • KCMurphy's avatar
    KCMurphy
    Icon for Occasional Contributor rankOccasional Contributor

    Never mind. I rebuilt the project from source and paid careful attention to sequences, and it works fine now. Apparently there was a build problem somewhere along the line and things were unhappy.