26.02.2020 8:44, Paul Selkirk пишет:
Well, try as I might, I can't get the design to build with ModExpNG at
180MHz. It consistently fails with 2 timing errors on
TS_clkmgr_mmcm_inst_mmcm_clkout2 (the 180MHz clock line). I sent Pavel
the timing report last week, but I've attached it here in case anyone
else has some other insight.

Ehm, I believe I did answer that mail you sent me last week. Maybe it ended up in your spam folder or something? Anyways, I'll just forward it to the list after I finish writing this one.

OTOH, cutting ModExpNG back to 90MHz, I was able to build and test.
Overall it ran faster than the previous test, because cores were clocked
at 90MHz vs 60MHz.

The only place it ran slower was in hal_ks_fetch, because the FMC bus is
now clocked at 45MHz vs. 60MHz previously, and hal_aes_keyunwrap spends
most of its time sending data back and forth over the FMC bus. This may
be a good time to integrate Joachim's keywrap core into the mainline.

                                         modexpa7        modexpng
hal_rpc_pkey_sign                       104.947          79.515
   hal_ks_fetch                           19.089          19.089
   pkey_local_sign_rsa                    85.778          60.344
     hal_rsa_decrypt                      85.078          59.641
       rsa_crt                            81.328          55.897
         modexp2/ng                       55.007          44.409
           hal_modexp2/ng                 44.497          17.557

I don't understand why the FMC bus can't be clocked at 90MHz, since
that's its documented max.

Yes, but there's errata, see the first bullet under item 2.3.14:

https://www.st.com/content/ccc/resource/technical/document/errata_sheet/38/e6/37/64/08/38/45/67/DM00068628.pdf/files/DM00068628.pdf/jcr:content/translations/en.DM00068628.pdf

When the FMC clock divider is 2, the clock itself only becomes active when you read or write something over the FMC, and then stops after a very short period of time. This manifests itself in a very weird way: if you constantly read/write over FMC, everything seems to work fine, because the clock either doesn't stop at all or only stops for very short periods of time (the PLL in the FPGA can tolerate short intervals of missing reference clock and not lose lock, but that's unreliable and must not be used in production). Whenever you break STM32 and start debugging, everything inside of the FPGA gets reset, since the FMC clock stops, the clock manager detects this and asserts sys_rst_n. I did initially try 90 MHz FMC, of course, and spent quite some time banging against the wall to figure out, wht it was not workable for our design.

Alternately, is it possible to clock the cores at 120MHz, and FMC at
60MHz? I remember we did some work on the cores at some point, but I'm
really not the FPGA guy.

The ultimate restriction is that the system clock must be an integer multiple of the FMC clock, so say 60/90 doesn't work, but 45/90 and 60/120 are feasible. I'm not sure all the cores can meet timing at 120 MHz though, this would need further investigation.


                                paul


_______________________________________________
Tech mailing list
Tech@cryptech.is
https://lists.cryptech.is/listinfo/tech



--
With best regards,
Pavel Shatov
_______________________________________________
Tech mailing list
Tech@cryptech.is
https://lists.cryptech.is/listinfo/tech

Reply via email to