Skip to content

Developer Documentation

This section provides technical documentation for developers contributing to Revizor.

Development Guidelines

  • Guide to Contributing: Overview of the contribution process and resources
  • General Guidelines: Development environment setup, testing procedures, contribution workflow
  • Code Style: Formatting conventions for Python and C code, naming conventions
  • Git Workflow: Branch management, commit message format, merge procedures

Architecture and Modules

  • Code Structure: Organization of the source code directory and key modules
  • Overview: High-level system architecture and component interaction
    • Orchestration: Main fuzzing loop and coordination between components
    • ISA Specification: Instruction set architecture definitions and JSON-based specification format
    • Test Case Code Generation: Program generation algorithm and relevant classes
    • Test Case Data Generation: Data generation algorithm and relevant classes
    • Hardware Tracing: Execution of test cases on the target HW and hardware trace collection
    • Contract Tracing: Leakage modeling and contract trace generation (high-level overview; implementation details in backend-specific pages)
    • Trace Analysis: Comparison of contract and hardware traces to detect violations
    • Minimization: Post-detection reduction of test cases to minimal reproducing examples
    • Logging: Logging infrastructure and debugging facilities

Contract Modeling Backends

Revizor supports two different backends for contract-based leakage modeling. They are documented in the following pages: