UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Visitor cmehring3
Visitor
281 Views
Registered: ‎05-25-2018

ICAP RBCRC_HW, RBCRC_SW, RBCRC_LIVE Configuration Register Access

Hello,

I am unable to fully understand or access the ICAP configuration registers containing CRC data. These registers are accessed with the following addresses (IDCODE register provided for reference):

IDCODE: 0x28018001
RBCRC_SW: 0x28026001
RBCRC_HW: 0x28024001
RBCRC_LIVE: 0x28028001

There is no mention of the CRC registers in UG470 but their existence appears to be proven by viewing the SIM_CONFIGE2.vhd file included with a Vivado installation.

I am able to use the ICAPE2 primitive correctly and access the IDCODE register. The word read out from this register matches the IDCODE of our device as we expect.

I am unable to use the ICAPE2 primitive to read any of the CRC registers. When I expect the data in the same fashion as IDCODE data is read, I receive all zeroes on the data output.

My question is, how do these CRC registers become populated? Are they actually accessible via the ICAPE2 primitive? What information is contained in them? Furthermore, are their contents affected by property and bitstream settings such as:

set_property bitstream.general.crc enable/disable [current_design]
set_property POST_CRC enable/disable [current_design]
set_property POST_CRC_SOURCE pre_computed/first_readback [current_design]?

Thank you for your help.

13 Replies
Xilinx Employee
Xilinx Employee
194 Views
Registered: ‎03-07-2018

Re: ICAP RBCRC_HW, RBCRC_SW, RBCRC_LIVE Configuration Register Access

Hello @cmehring3 

Please provide your FPGA device details.

How reading CRC can help your application/Project?

Regards,
Bhushan

-------------------------------------------------------------------------------------------------------------------------------------------------
Kindly note- Please mark the Answer as "Accept as solution" if information provided is helpful.
Give Kudos to a post which you think is helpful and reply oriented.
-------------------------------------------------------------------------------------------------------------------------------------------------
0 Kudos
Visitor cmehring3
Visitor
190 Views
Registered: ‎05-25-2018

Re: ICAP RBCRC_HW, RBCRC_SW, RBCRC_LIVE Configuration Register Access

Thank you for responding @bpatil

The FPGA we are targeting is a 7-series device. This specifically is a Spartan 7S50.

Capturing the device bitstream CRC will help to verify the correct version of our design is installed on target hardware.

Do you have any details on the function and use of these three CRC configuration registers?

Thanks,

Cole

0 Kudos
178 Views
Registered: ‎09-17-2018

Re: ICAP RBCRC_HW, RBCRC_SW, RBCRC_LIVE Configuration Register Access

Cole,

The bitstream when created has a CRC to check it gets read in correctly (DONE will not go high if this CRC is wrong).

Once loaded, if enabled, the device calculates a golden CRC that is used to tell if an upset (fault, or attack) happens.  This is used by the logic that pulls INIT_b low if flipped:  RBCRC, and also by the SEM IP core.

So, if you wish to know if the bitstream loaded correctly, did DONE go high?

If you wish to know if at any time an upset occurs, set it for RBCRC scans and asserts INIT_b, or better, use the SEM IP to find, fix (and notify).

l.e.o.

 

0 Kudos
Visitor cmehring3
Visitor
169 Views
Registered: ‎05-25-2018

Re: ICAP RBCRC_HW, RBCRC_SW, RBCRC_LIVE Configuration Register Access

Thank you for your response, L.E.O.

I am handling SEUs separately from this operation. Additionally, my intent isn't to understand if the device golden CRC and calculated CRC match. If they don't match then the device is configured to not boot similar to your description.

My intent is to read the device bitstream CRC during runtime (i.e. after boot). Being in runtime necessarily precludes a CRC mismatch having happened. I identified these three CRC registers, accessible with the ICAP, as perhaps holding that bitstream CRC value.

I can see in a bitstream .bit file where a CRC value is placed, both early in the .bit file and late in the .bit file. I am trying to find a solution that doesn't involve fetching that value from our flash device during runtime.

My question remains; what are these three CRC registers? How are they populated? Are they accessible with the ICAP?

Cole

0 Kudos
161 Views
Registered: ‎09-17-2018

Re: ICAP RBCRC_HW, RBCRC_SW, RBCRC_LIVE Configuration Register Access

c,

The three CRC will not match.  They represent different things.  The bitstream is a data file.  It is static.  The RBCRC is all the static CRAM bits (it ignores BRAM, SRL, LUTRAM, anything dynamic).  Sure, you can figure it all out yourself, but why bother?  Just use what is provided for free.

I strongly caution you from attempting your own SEU monitor -- the SEM IP is beam tested, extremely well characterized.To get to this point, the SEM IP has gone through > 10 years of releases, fixes.  Why suffer discovering all the foibles of trying to do it yourself
?

 

0 Kudos
Visitor cmehring3
Visitor
153 Views
Registered: ‎05-25-2018

Re: ICAP RBCRC_HW, RBCRC_SW, RBCRC_LIVE Configuration Register Access

L.E.O.,

I was thinking they likely would not match - in fact, I was thinking that RBCRC_HW was the hardware-generated golden CRC, RBCRC_SW was another form of a "golden" CRC, and that CRC_LIVE is a user-enabled generated CRC probably from the RBCRC mechanism.

Thank you for your caution - the SEM IP is absolutely under consideration for our SEU mitigation approach. 

My original, still unanswered, question has no concern with the SEM IP or SEU mitigation. I want to read out the bitstream "golden" crc with the ICAP and I found these registers. As I said before, trying to read the registers only provides zeroes. I am trying to find out what the registers are for, what populates them, and if I can read their values with the ICAP post-configuration.

Thanks,

Cole

0 Kudos
141 Views
Registered: ‎09-17-2018

Re: ICAP RBCRC_HW, RBCRC_SW, RBCRC_LIVE Configuration Register Access

c,

I believe it is internal to the configuration manager and is not observable.  Xilinx prefers not to tell you what you do not really need to know.  If you wish to get to that level of detail, you will have to convince them to spend the time (money).  I know their answer will be what I advised you (that is why I invented the SEM IP 15 years ago while at Xilinx -- lessen the support costs by doing what was needed, and guaranteeing it).

l.e.o.

 

 

0 Kudos
Visitor cmehring3
Visitor
134 Views
Registered: ‎05-25-2018

Re: ICAP RBCRC_HW, RBCRC_SW, RBCRC_LIVE Configuration Register Access

l.e.o.,

The reason we need to know the CRC is that this project will be certified to a particular standard and there are requirements for design assurance, programming assurance, and identification. In a past certified project an Intel/Altera FPGA was used that allowed for a primitive to be instantiated that gave direct access to the device-calculated CRAM CRC. This CRC in conjunction with the reported digital version are used to verify a programming update was successful.

For this reason we would like to see the CRAM CRC. These registers seemed like candidates to get that computed CRC value.

Pretty neat that you are the SEM IP designer - cool!

Cole

0 Kudos
120 Views
Registered: ‎09-17-2018

Re: ICAP RBCRC_HW, RBCRC_SW, RBCRC_LIVE Configuration Register Access

OK,

So, I would ask that exactly to Xilinx (or your Xilinx authorized distributor).  Given Altera/Intel does not allow readback (interface is proprietary), their only choice was to make their registers visible (and for you to believe them).  As Xilinx is open for the bitstream, one can examine it at any time.  Another approach is to use the encryption (AES) and authentication (SHA256).  That, and the SEM IP guarantees what you put in is exactly what you are running.

You do not have to write any code, or use anything untested or unproven.

l.e.o.

0 Kudos
Visitor cmehring3
Visitor
89 Views
Registered: ‎05-25-2018

Re: ICAP RBCRC_HW, RBCRC_SW, RBCRC_LIVE Configuration Register Access

L.E.O.,

Thank you for your input. It is sounding like there is not a user-accessible register (at least one whos accessibility is publicly available info) containing the golden CRC similar to Intel parts; that is useful to know. We would need to do readback and CRC calculation ourselves for that.

Thank you as well for trying to answer my question as to what the three CRC registers I identified are for. Unless there is a Xilinx employee forum user who would like to enlighten more on their purpose, how they are populated, and their accessibility. I'm guessing the registers are reset to zero following successful configuration.

Cole

0 Kudos
Moderator
Moderator
72 Views
Registered: ‎06-05-2013

Re: ICAP RBCRC_HW, RBCRC_SW, RBCRC_LIVE Configuration Register Access

Hi Cole,
You can refer to following blog on these three post crc constraints https://forums.xilinx.com/t5/Design-and-Debug-Techniques-Blog/How-to-do-error-testing-using-POST-CRC-in-7-Series-FPGAs/ba-p/978877
As above suggested that SEM IP should be the recommended solution for US/US+ series.
Thanks
Harshit
-------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
0 Kudos
Visitor cmehring3
Visitor
46 Views
Registered: ‎05-25-2018

Re: ICAP RBCRC_HW, RBCRC_SW, RBCRC_LIVE Configuration Register Access

Hello Harshit,

Thank you for the link - the blog post is helpful in understanding the CRC constraints and properties more clearly.

Can you shed any light on the three CRC registers I asked about in the original post - RBCRC_HW, RBCRC_SW, and RBCRC_LIVE - that are apparently accessible via the ICAP interface? As in, how are they populated? What information do they actually represent? Are actually accessible with the ICAP?

Thanks,

Cole

0 Kudos
Moderator
Moderator
39 Views
Registered: ‎06-05-2013

Re: ICAP RBCRC_HW, RBCRC_SW, RBCRC_LIVE Configuration Register Access

Hi Cole,

I don't have much information on these. But I will check internally to see what can be shared. I will update the thread once I have more information.

Thanks
Harshit
-------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
0 Kudos