NOEL-V

The NOEL-V models the NOEL-V RISC-V processor core of the same name. This includes the following instruction set extensions:

  • RV64I: 64-bit base instruction set

  • RV32I: 32-bit base instruction set

  • M: Multiply and Divide

  • A: Atomics

  • FD: Single/Double precision floating point

  • B: Bit-manipulation

  • C: Compressed Instructions

  • H: Hypervisor

  • Zicntr: Counters

  • Zicsr: Control and status register

  • Zifencei: Instruction-fetch fence

The model is validated against the RISC-V conformance test suite.

@NOELV Reference

Properties

Name Type Description

Class

*void

Class object

Component

*void

Pointer to component object if part of component

LocalName

*char

Local name (in component, if applicable)

LogMessageFlags

uint64_t

Per-object log message suppression flags

LoggingFlags

uint64_t

Flags for logging info

Name

*char

Object name

ObjectID

uint64_t

Unique ObjectID.

ReplayLoggingFlags

uint64_t

Replay-time category logging flags

TimeSource

*void

Time source object

Commands

Name Description

delete

Dispose instance of @NOELV

new

Create new instance of NOELV

Command new Arguments

Name Type Required Description

hartid

int

no

Hart ID (mhartid) in multiprocessor config

name

string

yes

Name of object to create

NOELV Reference

Properties

Name Type Description

CPUId

uint32_t

CPUType

int32_t

Class

*void

Class object

Component

*void

Pointer to component object if part of component

HostFlags

uint64_t

LocalName

*char

Local name (in component, if applicable)

LogMessageFlags

uint64_t

Per-object log message suppression flags

LoggingFlags

uint64_t

Flags for logging info

Name

*char

Object name

ObjectID

uint64_t

Unique ObjectID.

ReplayLoggingFlags

uint64_t

Replay-time category logging flags

TimeSource

*void

Time source object

aclintCsrClient

temu_IfaceRef/ <unknown>

Aclint Csr interface

aiaCsrClient

temu_IfaceRef/ <unknown>

Interrupt controller Csr interface

config.MMULogging

uint8_t

Enable MMU-related logging

config.PMPLogging

uint8_t

Enable PMP-related logging

config.assemblerAliases

uint8_t

config.exitOnSync

uint8_t

config.handleEventWithinBlock

uint8_t

config.logTrampolines

uint8_t

config.measureExecTime

uint8_t

config.numPMPEntries

uint8_t

Number of PMP entries (0, 16 or 64).

cpi

double

Cycles per instruction

currentContextId

uint64_t

currentContextValid

uint8_t

currentThreadContextId

uint64_t

currentThreadContextValid

uint8_t

exitReason

int32_t

fcsr

uint32_t

freq

int64_t

Frequency in Hz

gprs

[uint64_t; 32]

hcounteren

uint32_t

hedeleg

uint64_t

henvcfg

uint64_t

hgatp

uint64_t

hgeie

uint64_t

hgeip

uint64_t

hideleg

uint64_t

hie

uint64_t

hip

uint64_t

hstatus

uint64_t

htinst

uint64_t

htval

uint64_t

hvip

uint64_t

idleSteps

int64_t

ipc

double

Instructions per cycle

irqClient

temu_IfaceRef/ <unknown>

Interrupt controller (for ACKs)

marchid

uint64_t

mcause

uint64_t

mconfigptr

uint64_t

mcounteren

uint32_t

mcountinhibit

uint32_t

mcycle

uint64_t

medeleg

uint64_t

memAccess

temu_IfaceRef/ <unknown>

Level 1 memory access interface (MMU)

memAccessL2

temu_IfaceRef/ <unknown>

Level 2 memory access interface (physical)

memReset

temu_IfaceRef/ <unknown>

Memory space reset interface

memSpace

*void

Memory space.

menvcfg

uint64_t

mepc

uint64_t

mhartid

uint64_t

mhpmcounter

[uint64_t; 29]

mhpmevent

[uint64_t; 29]

mideleg

uint64_t

mie

uint64_t

mimpid

uint64_t

minstret

uint64_t

mip

uint64_t

misa

uint64_t

miselect

uint64_t

mncause

uint64_t

mnepc

uint64_t

mnscratch

uint64_t

mnstatus

uint64_t

mscratch

uint64_t

mstatus

uint64_t

mtinst

uint64_t

mtval

uint64_t

mtval2

uint64_t

mtvec

uint64_t

mvendorid

uint32_t

nextEvent

int64_t

Next event

parentTimeSource

*void

Parent time source

pc

uint64_t

Program counter register (pc)

pdcManager

temu_IfaceRef/ <unknown>

Pre-decode cache manager (normally memory space)

pmpaddr

[uint64_t; 64]

PMP Address CSRs

pmpcfg

[uint64_t; 16]

PMP Config Entry CSRs

powerState

uint32_t

Power State property (deprecated)

privilege

uint8_t

RISC-V Mode: 0=U, 1=S, 3=M

reservationSet

[uint64_t; 3]

satp

uint64_t

scause

uint64_t

scounteren

uint32_t

senvcfg

uint64_t

sepc

uint64_t

siselect

uint64_t

skipIdleTags

uint64_t

sscratch

uint64_t

startSteps

int64_t

Start steps of the time source

state

int32_t

steps

int64_t

Steps of the time source

stickyFlags

uint32_t

Set bit 0 to 1 to not exit CPU on halted mode.

stval

uint64_t

stvec

uint64_t

targetExec

temu_IfaceRef/ <unknown>

Target execution interface

targetSteps

int64_t

Target steps of the time source

virtualization

uint8_t

RISC-V Mode: 0=U, 1=S, 3=M

vsatp

uint64_t

vscause

uint64_t

vsepc

uint64_t

vsie

uint64_t

vsip

uint64_t

vsscratch

uint64_t

vsstatus

uint64_t

vstval

uint64_t

vstvec

uint64_t

Interfaces

Name Type Description

AhbIface

AhbIface

AssemblerIface

temu::AssemblerIface

Assembler interface

BinaryTranslationIface

temu::BinaryTranslationControlIface

ClockIface

ClockIface

CodePatternIface

temu::CodePatternIface

CpuIface

temu::CpuIface

ExecIface

temu::TargetExecutionIface

InvalidMemAccessIface

MemAccessIface

IrqIface

IrqCtrlIface

PhysicalMemAccessIface

MemAccessIface

PowerIface

PowerIface

RegisterIface

temu::RegisterIface

Auto-generated Register Interface Impl.

ResetIface

ResetIface

VirtualMemAccessIface

MemAccessIface

Ports

Prop Iface Description

irqClient

IrqIface

interrupt controller interface

Commands

Name Description

assemble

Assemble instruction

delete

Dispose instance of NOELV

disable-dbt

Disable binary translation.

disable-dbt-logging

Disable logging when translating code.

disable-dbt-validation

Disable validation of emitted machine code.

disable-hard-code-reset

Disable hard resets of DBT emitter cache.

disable-stats

Disable statistics

disable-translation-logging

Disable jit-logging.

disassemble

Disassemble code

disassemble-block

Disassemble binary translated code block.

enable-dbt

Enable binary translation.

enable-dbt-logging

Enable logging when translating code.

enable-dbt-validation

Enable validation of emitted machine code.

enable-hard-code-reset

Enable hard resets of DBT emitter cache.

enable-stats

Enable statistics

enable-translation-logging

Enable jit-logging.

enableHpm

Enable performance monitor

enableTraps

Enable traps.

pregs

Print registers for CPU

pstat

Print CPU stats

setPC

Set PC

setReg

Set register

translate-block

Translate block.

translate-func

Translate function.

Command assemble Arguments

Name Type Required Description

inst

string

yes

Instruction to assemble.

pa

int

no

Physical address

va

int

no

Virtual address

Command disable-stats Arguments

Name Type Required Description

stat

string

yes

Name of statistics (executed-translated-instructions, executed-translated-blocks)

Command disassemble Arguments

Name Type Required Description

count

int

no

Number of instructions

pa

int

no

Physical address

va

int

no

Virtual address

Command disassemble-block Arguments

Name Type Required Description

pa

int

no

Physical address of block

va

int

no

Virtual address of block

Command enable-stats Arguments

Name Type Required Description

stat

string

yes

Name of statistics (executed-translated-instructions, executed-translated-blocks)

Command enableHpm Arguments

Name Type Required Description

hpm-id

int

no

HPM index

Command setPC Arguments

Name Type Required Description

pc

int

yes

New %pc

Command setReg Arguments

Name Type Required Description

reg

string

yes

Register name

value

int

yes

Value

Command translate-block Arguments

Name Type Required Description

count

int

no

Number of instructions, omit for automatic.

pa

int

no

Physical address of block

va

int

no

Virtual address of block

Command translate-func Arguments

Name Type Required Description

pa

int

no

Physical address of block

va

int

no

Virtual address of block

Limitations

  • The NOEL-V model is not yet validated against hardware.