Ember Parameters

During elaboration, the EmberParams object is passed down through the hierarchy and used to control how the hardware is generated.


class ember.param.RiscvParams

RISC-V ISA parameters.

reset_vector

The program counter value on reset

class ember.param.InstructionBusParams

Memory interface parameters.

class ember.param.L1ICacheTLBParams(num_entries: int, **kwargs)

L1 iTLB parameters.

  • num_entries - Number of TLB entries

class ember.param.L1ICacheParams(rv: RiscvParams, word_width: int, num_sets: int, num_ways: int, line_depth: int)

L1 instruction cache parameters.

Parameters:
  • num_sets – Number of sets

  • num_ways – Number of ways

  • word_width – Number of bits in a cache word

  • line_depth – Number of words in a cache line

class ember.param.FetchParams(rv: RiscvParams, width: int)

Instruction fetch parameters.

Parameters:

width – Number of instructions fetched per cycle

class ember.param.DecodeParams(rv: RiscvParams, width: int)

Instruction decode parameters.

Parameters:

width – Number of instructions decoded per cycle

class ember.param.EmberParams

Top-level parameters.

For now, users are expected to manually change values in this class. At some point, we ideally want this to be an object that a user can construct and override while elaborating the design.

superscalar_width

The width of the instruction pipeline (in number of instructions).

inst

The set of supported RISC-V instructions

Type:

RvInstGroup

mops

The set of supported macro-ops

Type:

EmberMopGroup

vaddr

The layout for a virtual address.

Type:

VirtualAddress

paddr

The layout for a physical address.

Type:

PhysicalAddress