S25FL512S vhdl model - issue reading preloaded data when in QUAD mode (QIOR4)

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
HG3
Level 1
Level 1
First reply posted First question asked Welcome!

I modified the vhdl model to default the Configuration Register to QUAD mode.  This bit is non-volatile.  So, i wanted to have the chip default to what it would be in my system after having programmed that bit.

 -- *** Configuration Register 1 ***
--SHARED VARIABLE Config_reg1 : std_logic_vector(7 downto 0) := (others => '0');
SHARED VARIABLE Config_reg1 : std_logic_vector(7 downto 0) := x"02";

I also modified the processes below to properly set the _pullup to a valid value if QUAD = '1' (not 0)

HOLD_PULL_UP : PROCESS(HOLDNegIn)
BEGIN
  IF (QUAD = '0') THEN
    IF (HOLDNegIn = 'Z') THEN
      HOLDNeg_pullup <= '1';
    ELSE
      HOLDNeg_pullup <= HOLDNegIn;
    END IF;
  ELSE
    HOLDNeg_pullup <= HOLDNegIn;
  END IF;
END PROCESS HOLD_PULL_UP;

WP_PULL_UP : PROCESS(WPNegIn)
BEGIN
  IF (QUAD = '0') THEN
    IF (WPNegIn = 'Z') THEN
      WPNeg_pullup <= '1';
    ELSE
      WPNeg_pullup <= WPNegIn;
    END IF;
  ELSE
    WPNeg_pullup <= WPNegIn;
  END IF;
END PROCESS WP_PULL_UP;

When I do a READ (QIOR4) the data that comes back is NOT what was preloaded in the memory.

I did set UserPreload to TRUE.  Everything works fine when operating in QUAD=0 mode and doing a FAST_READ4.  The proper data comes back.

I am using the s25fl512s.mem file and I am reading from address 0x0000000.

I should see 01 02 03 04 ... coming back.

From the .mem file:

@0000000
01
02
03
04
05

Instead I see:

10
01
32
22
FF

Any ideas what is going on?  The .docx file may be easier to view and zoom in on.

0 Likes
4 Replies
BushraH_91
Moderator
Moderator
Moderator
750 replies posted 50 likes received 250 solutions authored

Hello,

Thank you for contacting Infineon Technology.

I would like to know whether you are running the simulations with SDF or not.

Thank you

Regards,

Bushra

0 Likes

Hello,

We provide the testbench as is. The purpose is to demonstrate that the model is functional and can run tests. 

Thank you

Regards,

Bushra

0 Likes
HG3
Level 1
Level 1
First reply posted First question asked Welcome!

I am not exactly sure.  I do point to a sdf file via the generics though.

-- For FMF SDF technology file usage
TimingModel => "./mem_files/s25fl512s_vhdl.sdf"

0 Likes
HG3
Level 1
Level 1
First reply posted First question asked Welcome!

I believe I found the issue.

1) I was driving the chip select line via a pullup resistor. So the model was seeing 'H' and '0'.  It does not like the 'H' - I needed to change that to a '1'.   This still did not fix the the preloading issue though.

2) The model WILL NOT preload the user memory correctly when QUAD is defaulted to '1'.  I changed the configuration register back to x"00" instead of x"02".  It hen had to manually write the configuration register to have a value of x"02" (QUAD = 1).  When I did a QIOR4 quad read the data came back correctly.

Why the data will not preload correctly when QUAD=1 does not make sense. I did not see where that would matter in that portion of the VHDL code.

The SPI flash behavior model should be updated to allow for 'H' or '1' on the chip select line.  It should also be updated to allow for the preloading of the memory independent of the QUAD setting.

0 Likes