Software APIs
Functions | Variables
device_sim_qemu.c File Reference

(5aed670b4e)

Device-specific symbol definitions for the QEMU emulation. More...

#include <stdbool.h>
#include "dt/dt_rv_core_ibex.h"
#include "sw/device/lib/arch/device.h"
#include "sw/device/lib/base/macros.h"
#include "sw/device/silicon_creator/lib/drivers/ibex.h"
#include "sw/device/silicon_creator/lib/drivers/uart.h"
#include "rv_core_ibex_regs.h"
#include "uart_regs.h"

Go to the source code of this file.

Functions

uint64_t to_cpu_cycles (uint64_t usec)
 A platform-specific function to convert microseconds to cpu cycles. More...
 
uintptr_t device_test_status_address (void)
 An address to write to report test status. More...
 
uintptr_t device_log_bypass_uart_address (void)
 An address to write use for UART logging bypass. More...
 
void device_fpga_version_print (void)
 Prints the FPGA version. More...
 

Variables

const device_type_t kDeviceType = kDeviceSimQemu
 Indicates the device that this program has been linked for. More...
 
const uint64_t kClockFreqCpuMhz = 24
 
const uint64_t kClockFreqCpuHz = kClockFreqCpuMhz * 1000 * 1000
 The CPU clock frequency of the device, in hertz. More...
 
const uint64_t kClockFreqHiSpeedPeripheralHz = 24 * 1000 * 1000
 The high-speed peripheral clock frequency of the device, in hertz. More...
 
const uint64_t kClockFreqPeripheralHz = 6 * 1000 * 1000
 The peripheral clock frequency of the device, in hertz. More...
 
const uint64_t kClockFreqUsbHz = 48 * 1000 * 1000
 The USB clock frequency of the device, in hertz. More...
 
const uint64_t kClockFreqAonHz = 250 * 1000
 The always on clock frequency of the device, in hertz. More...
 
const uint64_t kUartBaudrate = 115200
 The baudrate of the UART peripheral (if such a thing is present).
 
const uint32_t kUartNCOValue
 The pre-calculated UART NCO value based on the Baudrate and Peripheral clock. More...
 
const uint32_t kUartBaud115K
 Additional pre-calculated UART NCO values. More...
 
const uint32_t kUartBaud230K
 
const uint32_t kUartBaud460K
 
const uint32_t kUartBaud921K
 
const uint32_t kUartBaud1M33
 
const uint32_t kUartBaud1M50
 
const uint32_t kUartTxFifoCpuCycles
 The time it takes to transmit the entire UART TX fifo in CPU cycles. More...
 
const uint32_t kAstCheckPollCpuCycles
 Maximum duration of the AST initialization check poll in CPU cycles. More...
 

Detailed Description

Device-specific symbol definitions for the QEMU emulation.

Definition in file device_sim_qemu.c.

Function Documentation

◆ device_fpga_version_print()

void device_fpga_version_print ( void  )

Prints the FPGA version.

This function is a NOP unless we are building for an FPGA.

Definition at line 76 of file device_sim_qemu.c.

◆ device_log_bypass_uart_address()

uintptr_t device_log_bypass_uart_address ( void  )

An address to write use for UART logging bypass.

If this is zero, there is no address to write to bypass UART logging.

See also
LOG

Definition at line 73 of file device_sim_qemu.c.

◆ device_test_status_address()

uintptr_t device_test_status_address ( void  )

An address to write to report test status.

If this is zero, there is no address to write to report test status.

Depending on the simulation environment and the value written to this address, the simulation may stop.

See also
#test_status_set

Definition at line 69 of file device_sim_qemu.c.

◆ to_cpu_cycles()

uint64_t to_cpu_cycles ( uint64_t  usec)

A platform-specific function to convert microseconds to cpu cycles.

This is primarily used for spin waits that use the cpu cycle counters. For platforms with clock periods slower than 1 us this will round up.

Definition at line 35 of file device_sim_qemu.c.

Variable Documentation

◆ kAstCheckPollCpuCycles

const uint32_t kAstCheckPollCpuCycles
Initial value:

Maximum duration of the AST initialization check poll in CPU cycles.

This number depends on kClockFreqCpuHz and the resulting duration must be 100us.

Definition at line 66 of file device_sim_qemu.c.

◆ kClockFreqAonHz

const uint64_t kClockFreqAonHz = 250 * 1000

The always on clock frequency of the device, in hertz.

This is the operating clock used by the always on timer, power manager and other peripherals that continue to operate after the device is in sleep state.

Definition at line 43 of file device_sim_qemu.c.

◆ kClockFreqCpuHz

const uint64_t kClockFreqCpuHz = kClockFreqCpuMhz * 1000 * 1000

The CPU clock frequency of the device, in hertz.

This is the operating clock for the main processing host.

Definition at line 33 of file device_sim_qemu.c.

◆ kClockFreqHiSpeedPeripheralHz

const uint64_t kClockFreqHiSpeedPeripheralHz = 24 * 1000 * 1000

The high-speed peripheral clock frequency of the device, in hertz.

This is the operating clock used by the spi host

Definition at line 37 of file device_sim_qemu.c.

◆ kClockFreqPeripheralHz

const uint64_t kClockFreqPeripheralHz = 6 * 1000 * 1000

The peripheral clock frequency of the device, in hertz.

This is the operating clock used by timers, uarts, other peripheral interfaces.

Definition at line 39 of file device_sim_qemu.c.

◆ kClockFreqUsbHz

const uint64_t kClockFreqUsbHz = 48 * 1000 * 1000

The USB clock frequency of the device, in hertz.

This is the operating clock used by the USB phy interface and USB's software interface.

Definition at line 41 of file device_sim_qemu.c.

◆ kDeviceType

const device_type_t kDeviceType = kDeviceSimQemu

Indicates the device that this program has been linked for.

This can be used, for example, for conditioning an operation on the precise device type.

Indicates the device that this program has been linked for.

Definition at line 29 of file device_sim_qemu.c.

◆ kUartBaud115K

const uint32_t kUartBaud115K
Initial value:
=
CALCULATE_UART_NCO(115200, kClockFreqPeripheralHz)

Additional pre-calculated UART NCO values.

If the pre-calculated value is zero, then the corresponding baudrate is not supported.

Definition at line 50 of file device_sim_qemu.c.

◆ kUartBaud1M33

const uint32_t kUartBaud1M33
Initial value:
=
CALCULATE_UART_NCO(1333333, kClockFreqPeripheralHz)

Definition at line 58 of file device_sim_qemu.c.

◆ kUartBaud1M50

const uint32_t kUartBaud1M50
Initial value:
=
CALCULATE_UART_NCO(1500000, kClockFreqPeripheralHz)

Definition at line 60 of file device_sim_qemu.c.

◆ kUartBaud230K

const uint32_t kUartBaud230K
Initial value:
=
CALCULATE_UART_NCO(115200 * 2, kClockFreqPeripheralHz)

Definition at line 52 of file device_sim_qemu.c.

◆ kUartBaud460K

const uint32_t kUartBaud460K
Initial value:
=
CALCULATE_UART_NCO(115200 * 4, kClockFreqPeripheralHz)

Definition at line 54 of file device_sim_qemu.c.

◆ kUartBaud921K

const uint32_t kUartBaud921K
Initial value:
=
CALCULATE_UART_NCO(115200 * 8, kClockFreqPeripheralHz)

Definition at line 56 of file device_sim_qemu.c.

◆ kUartNCOValue

const uint32_t kUartNCOValue
Initial value:
=

The pre-calculated UART NCO value based on the Baudrate and Peripheral clock.

Definition at line 47 of file device_sim_qemu.c.

◆ kUartTxFifoCpuCycles

const uint32_t kUartTxFifoCpuCycles
Initial value:

The time it takes to transmit the entire UART TX fifo in CPU cycles.

Definition at line 63 of file device_sim_qemu.c.