Skip to content
STIMSMITH

Vienna Architecture Description Language (VADL)

Concept

Vienna Architecture Description Language (VADL) is an architecture description language used in OpenVADL to specify instruction set architectures, registers, instruction formats, instruction semantics, and encodings. In the OpenVADL flow, a VADL specification is processed by a frontend into the VADL Intermediate Architecture Model (VIAM), which can then be used for synthesis of tooling such as a QEMU-based instruction set simulator frontend.

First seen 5/29/2026
Last seen 5/29/2026
Evidence 1 chunks
Wiki v1

WIKI

Overview

Vienna Architecture Description Language (VADL) is an architecture description language shown in OpenVADL material as a way to describe an instruction set architecture and its instructions. A VADL example for RV64I defines a register file X, an instruction format Itype, the ADDI instruction semantics, and the instruction encoding for ADDI.

instruction set architecture RV64I = {
  register X : Bits<5> -> Bits<64>
  format Itype : Bits<32> =
  { imm    : Bits<12>
  , rs1    : Bits<5>
  , rd     : Bits<5>
  , opcode : Bits<7>
  , ...
  , immS = imm as SInt<32>
  }
  instruction ADDI : Itype = X(rd) := X(rs1) + immS
  encoding ADDI = {opcode = 0b001'0011, funct3 = 0b000}
}
READ FULL ARTICLE →

NEIGHBORHOOD

No graph connections found for this entity yet. It may appear in future ingestion runs.

explore full graph →

RELATIONSHIPS

2 connections
OpenVADL ← uses 100% 1e
OpenVADL uses the Vienna Architecture Description Language as its specification input.
VADL Intermediate Architecture Model (VIAM) ← derived from 90% 1e
VIAM is derived from the VADL specification through the OpenVADL frontend.

CITATIONS

6 sources
6 citations — click to expand
[1] VADL can describe an instruction set architecture, registers, instruction formats, instruction semantics, and encodings, as illustrated by the RV64I ADDI example. Generation of a QEMU-Based Instruction Set Simulator from a Processor Description in OpenVADL
[2] In the OpenVADL overview, a VADL specification is processed by a frontend into a VIAM Architecture and is part of a flow that targets tools such as assemblers/linkers, compilers, simulators, QEMU, and hardware. Generation of a QEMU-Based Instruction Set Simulator from a Processor Description in OpenVADL
[3] The QEMU-generation flow uses VIAM, TCG transformation, lowered VIAM, and C-code generation to produce a QEMU frontend. Generation of a QEMU-Based Instruction Set Simulator from a Processor Description in OpenVADL
[4] VIAM represents the RISC-V 64 ADDI behavior corresponding to the VADL expression X(rd) := X(rs1) + immS, including field accesses, register reads/writes, and addition. Generation of a QEMU-Based Instruction Set Simulator from a Processor Description in OpenVADL
[5] OpenVADL enables automatic generation of QEMU frontends from VADL specifications by lowering VIAM to TCG operations. Generation of a QEMU-Based Instruction Set Simulator from a Processor Description in OpenVADL
[6] The presentation reports that the generated QEMU frontend achieved up to 44% lower runtime than upstream in the reported evaluation. Generation of a QEMU-Based Instruction Set Simulator from a Processor Description in OpenVADL