Software APIs
profile.c
1 // Copyright lowRISC contributors (OpenTitan project).
2 // Licensed under the Apache License, Version 2.0, see LICENSE for details.
3 // SPDX-License-Identifier: Apache-2.0
4 
5 #include "sw/device/lib/testing/profile.h"
6 
8 #include "sw/device/lib/testing/test_framework/check.h"
9 
10 uint64_t profile_start(void) { return ibex_mcycle_read(); }
11 
12 uint32_t profile_end(uint64_t t_start) {
13  uint64_t t_end = ibex_mcycle_read();
14  uint64_t cycles = t_end - t_start;
15  CHECK(cycles <= UINT32_MAX);
16  return (uint32_t)cycles;
17 }
18 
19 uint32_t profile_end_and_print(uint64_t t_start, char *name) {
20  uint32_t cycles = profile_end(t_start);
21  uint32_t time_ms = cycles / 100000;
22  LOG_INFO("%s took %u cycles or %u ms @ 100 MHz.", name, cycles, time_ms);
23  return cycles;
24 }