Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HyperRAM: Add variable latency and configuration support. #1926

Merged
merged 18 commits into from
Apr 15, 2024

Conversation

enjoy-digital
Copy link
Owner

Previous version of the core was very minimal and was not allowing enabling variable latency support or latency configuration for low HyperRAM clock frequencies.

This PR adds:

  • Registers Read/Write support.
  • Variable latency support to core.
  • Configurable core latency.
  • Software initialization to configure HyperRAM Chip and Core with variable latency and mininal latency based on SoC's sys_clk_freq.

CoreMark on Ti60 F225 with 200MHz sys_clk_freq and previous version of the core:

coremark built on Apr 10 2024 12:00:23
test 1...done
test 2...done
test 3...done
test 4...done
2K performance run parameters for coremark.
CoreMark Size    : 666
Total ticks      : 2594810342
Total time (secs): 12
Iterations/Sec   : 166
Iterations       : 2000
Compiler version : GCC10.1.0
Compiler flags   : mem:main_ram -MD -MP -O2 -march=rv32i2p0_ma -mabi=ilp32 -D__vexriscv__ -DUART_POLLING  
Memory location  : stack
seedcrc          : 0xe9f5
[0]crclist       : 0xe714
[0]crcmatrix     : 0x1fd7
[0]crcstate      : 0x8e3a
[0]crcfinal      : 0x4983
Correct operation validated. See README.md for run and reporting rules.

CoreMark on Ti60 F225 with 200MHz sys_clk_freq and current version of the core:

 coremark built on Apr 15 2024 15:54:24
test 1...done
test 2...done
test 3...done
test 4...done
2K performance run parameters for coremark.
CoreMark Size    : 666
Total ticks      : 2697812194
Total time (secs): 13
Iterations/Sec   : 307
Iterations       : 4000
Compiler version : GCC10.1.0
Compiler flags   : mem:main_ram -MD -MP -O2 -march=rv32i2p0_ma -mabi=ilp32 -D__vexriscv__ -DUART_POLLING  
Memory location  : stack
seedcrc          : 0xe9f5
[0]crclist       : 0xe714
[0]crcmatrix     : 0x1fd7
[0]crcstate      : 0x8e3a
[0]crcfinal      : 0x65c5
Correct operation validated. See README.md for run and reporting rules.

So 307 vs 166 Iterations/Sec so a gain of 85%.

Will be used to get HyperRAM characteristics and also to configure latency and enable varialble latency.

Untested yet.
Seems OK:
Identification Register 0 : 00000e76
Identification Register 1 : 00000009
Configuration Register 0  : 00008f2f
Configuration Register 1  : 0000ffc1
reg_control: 302
reg_status:  2
reg_debug:   8
…art testing latency cycles re-configuration.
@enjoy-digital enjoy-digital merged commit 576ab24 into master Apr 15, 2024
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant