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

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.exitOnSync

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

cycle

uint64_t

exitReason

int32_t

fcsr

uint32_t

fflags

uint64_t

freq

int64_t

Frequency in Hz

frm

uint64_t

gprs

[uint64_t; 32]

hcounteren

uint64_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

instret

uint64_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

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

mip

uint64_t

misa

uint64_t

miselect

uint64_t

mnstatus

uint64_t

mscratch

uint64_t

mstatus

uint64_t

mtinst

uint64_t

mtval

uint64_t

mtval2

uint64_t

mtvec

uint64_t

mvendorid

uint64_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

privilege

uint64_t

reservationSet

[uint64_t; 3]

satp

uint64_t

scause

uint64_t

scounteren

uint32_t

senvcfg

uint64_t

sepc

uint64_t

sireg

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.

stopei

uint64_t

stopi

uint64_t

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

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

ResetIface

ResetIface

VirtualMemAccessIface

MemAccessIface

Ports

Prop Iface Description

irqClient

IrqIface

interrupt controller interface

Registers

Register support is currently experimental!

Register Bank gpr

Register x0
Description

Constant Zero Register

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x1
Description

Return Address Register

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x2
Description

Stack Pointer Register

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x3
Description

Global Pointer Register

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x4
Description

Thread Pointer Register

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x5
Description

Temporary Register 0

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x6
Description

Temporary Register 1

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x7
Description

Temporary Register 2

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x8
Description

Saved Register 0 / Frame Pointer

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x9
Description

Saved Register 1

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x10
Description

Function Argument 0 / Return Value 0

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x11
Description

Function Argument 1 / Return Value 1

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x12
Description

Function Argument 2

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x13
Description

Function Argument 3

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x14
Description

Function Argument 4

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x15
Description

Function Argument 5

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x16
Description

Function Argument 6

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x17
Description

Function Argument 7

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x18
Description

Saved Register 2

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x19
Description

Saved Register 3

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x20
Description

Saved Register 4

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x21
Description

Saved Register 5

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x22
Description

Saved Register 6

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x23
Description

Saved Register 7

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x24
Description

Saved Register 8

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x25
Description

Saved Register 9

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x26
Description

Saved Register 10

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x27
Description

Saved Register 11

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x28
Description

Temporary Register 3

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x29
Description

Temporary Register 4

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x30
Description

Temporary Register 5

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register x31
Description

Temporary Register 6

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register Bank fpr

Register f0
Description

Double Precision Register 0

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f1
Description

Double Precision Register 1

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f2
Description

Double Precision Register 2

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f3
Description

Double Precision Register 3

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f4
Description

Double Precision Register 4

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f5
Description

Double Precision Register 5

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f6
Description

Double Precision Register 6

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f7
Description

Double Precision Register 7

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f8
Description

Double Precision Register 8

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f9
Description

Double Precision Register 9

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f10
Description

Double Precision Register 10

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f11
Description

Double Precision Register 11

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f12
Description

Double Precision Register 12

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f13
Description

Double Precision Register 13

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f14
Description

Double Precision Register 14

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f15
Description

Double Precision Register 15

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f16
Description

Double Precision Register 16

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f17
Description

Double Precision Register 17

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f18
Description

Double Precision Register 18

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f19
Description

Double Precision Register 19

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f20
Description

Double Precision Register 20

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f21
Description

Double Precision Register 21

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f22
Description

Double Precision Register 22

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f23
Description

Double Precision Register 23

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f24
Description

Double Precision Register 24

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f25
Description

Double Precision Register 25

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f26
Description

Double Precision Register 26

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f27
Description

Double Precision Register 27

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f28
Description

Double Precision Register 28

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f29
Description

Double Precision Register 29

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f30
Description

Double Precision Register 30

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register f31
Description

Double Precision Register 31

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register Bank spr

Register %mstatus
Description

Machine Status Register

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register %Mie
Description

Machine Interrupts Enabled

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register %Mip
Description

Machine Pending Interrupts

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register %Mtvec
Description

Trap Base Register

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register %fcsr
Description

Floating Point State Register

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

Register %hpmcounter3
Description

Performance Counter 0

Reset value

0x0000000000000000

Warm reset mask

0x0000000000000000

Field Mask Reset Description

-

-

-

-

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.