1 // Copyright 2020 Espressif Systems (Shanghai) PTE LTD
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 
7 //     http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #pragma once
16 
17 // AES-CBC hardware throughput (accounts for worst-case performance with PSRAM workaround)
18 #define IDF_PERFORMANCE_MIN_AES_CBC_THROUGHPUT_MBSEC                            8.2
19 
20 // SHA256 hardware throughput at 240MHz, threshold set lower than worst case
21 #define IDF_PERFORMANCE_MIN_SHA256_THROUGHPUT_MBSEC                             8.0
22 // esp_sha() time to process 32KB of input data from RAM
23 #define IDF_PERFORMANCE_MAX_TIME_SHA1_32KB                                      5000
24 #define IDF_PERFORMANCE_MAX_TIME_SHA512_32KB                                    4500
25 
26 #define IDF_PERFORMANCE_MAX_RSA_2048KEY_PUBLIC_OP                               19000
27 #define IDF_PERFORMANCE_MAX_RSA_2048KEY_PRIVATE_OP                              190000
28 #define IDF_PERFORMANCE_MAX_RSA_3072KEY_PUBLIC_OP                               33000
29 #define IDF_PERFORMANCE_MAX_RSA_3072KEY_PRIVATE_OP                              360000
30 #define IDF_PERFORMANCE_MAX_RSA_4096KEY_PUBLIC_OP                               90000
31 #define IDF_PERFORMANCE_MAX_RSA_4096KEY_PRIVATE_OP                              870000
32 
33 #define IDF_PERFORMANCE_MAX_SPI_PER_TRANS_NO_POLLING                            30
34 #define IDF_PERFORMANCE_MAX_SPI_PER_TRANS_NO_POLLING_NO_DMA                     27
35 
36 #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_RD_4B
37 #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_RD_4B               50600
38 #endif
39 #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_WR_2KB
40 #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_WR_2KB              (695*1000)
41 #endif
42 
43 #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_WR_4B
44 #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_WR_4B                      24300
45 #endif
46 #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_RD_4B
47 #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_RD_4B                      50300
48 #endif
49 #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_ERASE
50 #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_ERASE                      44300
51 #endif
52 
53 #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_WR_4B
54 #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_WR_4B                 23100
55 #endif
56 
57 #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_WR_4B
58 #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_WR_4B                  68900
59 #endif
60 #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_RD_4B
61 #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_RD_4B                  (338*1000)
62 #endif
63 
64 #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_RD_2KB
65 #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_RD_2KB                 (1697*1000)
66 #endif
67 
68 #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_ERASE
69 #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_ERASE                  76600
70 #endif
71 
72 // floating point instructions per divide and per sqrt (configured for worst-case with PSRAM workaround)
73 #define IDF_PERFORMANCE_MAX_CYCLES_PER_DIV                                      70
74 #define IDF_PERFORMANCE_MAX_CYCLES_PER_SQRT                                     140
75