cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
vizziee
Participant
Participant
6,391 Views
Registered: ‎10-21-2009

Chipscope Pro shows ROM's output doubled

Jump to solution

Hello,

 

I have landed up in a rather strange problem: when I observe the output of a single-port ROM (Block Memory core) on Chipscope Pro, it is twice of the expected values. I recehced the init file, simulations, trigger settings etc several times but in vain. The .xco file of the core is attached here as also the outputs of the simulation and ChipscopePro. In the waveforms, rom_hv_sine and rom_hv_cosine are the signal names of the data output ports of the two instantiations of the core with two different initialization files.

 

Regards,

 

Kumar Vijay Mishra.

 
0 Kudos
1 Solution

Accepted Solutions
vizziee
Participant
Participant
7,578 Views
Registered: ‎10-21-2009

Hello All,

 

I could solve this problem by regenerating the memory core. Turns out if I update only the initialization file and don't regenerate the core, ISE would not automatically update the core. Seems to me a redundant step and ISE should be able to update the core if it detects a change in the initialization file.

 

Anyways, the ChipscopePro and ModelSim outputs do match now.

 

Regards,

 

Kumar Vijay Mishra.

View solution in original post

0 Kudos
4 Replies
ywu
Xilinx Employee
Xilinx Employee
6,373 Views
Registered: ‎11-28-2007

Double check that you grabbed the correct bits for rom_hv_sine and rom_hv_cosine buses in Chipscope. If the bit 0 of the bus happens to come from another signal with value=0, that effectively shifts the value to the left by 1 bit (or x2).

 

Cheers,
Jim
0 Kudos
gszakacs
Professor
Professor
6,360 Views
Registered: ‎08-14-2007

I don't think this is just a bit shift, since if you look at the simulation, the values

are not exactly twice the expected value, but also off by one or two counts.  You

didn't post the .coe file, so I couldn't look at what should be in the ROM.  Another

thing to check is whether the core was built in a directory outside of the project

directory and if the .mif file in the project directory is up to date (have you

changed the values since the original implementation of the core?).  You could

also do a post tanslate simulation and see if it matches the chipscope values

or the behavioral simulation values.  When all else fails you can clean up

the project files and re-build.

 

Regards,

Gabor

-- Gabor
0 Kudos
vizziee
Participant
Participant
6,354 Views
Registered: ‎10-21-2009

Thank you jimwu and gszakacs for your replies. gszakacs is right: the values are not exactly twice the expected value. The binary version of ChipscopePro and ModelSim outputs shows that there is nothing like a simple 1-bit left shift in the values. Rather the last 2-3 bits vary in the ChipscopePro waveform vis-a-vis ModelSim waveform.

 

The core is built in a directory outside the project directory and checking the .mif files of the older versions of the project revealed that, in one of the versions (the oldest one, to be precise), the values in the .mif files were exactly as shown on ChipscopePro. I did change the .mif file in the later versions.

 

However the .mif file residing in the folder which is referenced in the .xco file in Project Navigator does have correct values (checked by Show in the Core Generator Wizard of the ROM) Also, there is no .mif file (for any other memories as well) in the project directory that I should update. Curiously, several other memories give the correct output on both ChipscopePro and ModelSim and they don't have any .mif file residing in the project directory.

 

Why should ISE then reference .mif file from the oldest version? And despite specifying the correct file on the core, why wouldn't it accept it? I have done "CleanUp Project files" several times in subsequent revisions, but it appears to be ineffective as far as correct reference to .mif file is concerned.

 

 

Regards,

 

Kumar Vijay Mishra.

0 Kudos
vizziee
Participant
Participant
7,579 Views
Registered: ‎10-21-2009

Hello All,

 

I could solve this problem by regenerating the memory core. Turns out if I update only the initialization file and don't regenerate the core, ISE would not automatically update the core. Seems to me a redundant step and ISE should be able to update the core if it detects a change in the initialization file.

 

Anyways, the ChipscopePro and ModelSim outputs do match now.

 

Regards,

 

Kumar Vijay Mishra.

View solution in original post

0 Kudos