What’s inside

Contains general SystemC models (no-TLM) with (Semi) Accurate Timing representation. Currently we have models for:

basic_blocks

General FPGA building blocks:

  • a D Flip-Flop model in SystemC version <models/basic_blocks/FDPE.hpp> and Verilog <models/basic_blocks/FDPE.v>

  • a Tristate <models/basic_blocks/tristate.hpp component, mainly needed for input/output pins

clocking

Blocks for clock generation, buffering etc:

  • [clockgen](models/basic_blocks/clockgen.hpp), a SystemC clock generator (divider/multiplier)

memories

Memory blocks (hardware models):

  • flash-N25QX. A quad-spi flash model. Memory is represented as a map to allow data sparsity. Content can be configured via configure_region.

  • generic_sdram <models/memories/sdram/generic_sdram.hpp>. A simple sdram model with additional backdoor interface. The backdoor allows for copy and movement of data intra-memory. Content can be preloaded via configure_region.

network

Various blocks related to GMII interfacing:

  • mock_gmii <models/network/mock_gmii.hpp>. Provides a fake GMII interface for unit-testing

  • ethbridge <models/network/ethbridge.hpp>. A bridge for the MAC layer of the ethernet protocol

  • network_helpers <models/network/network_helpers.hpp>. Helpers and utilities

wishbone

Models of wishbone components:

  • network_helpers <models/wishbone/wbram.hpp>. The model of an internal FPGA memory block (BRAM).

  • ork1_instruction_tracer. A SystemC component that converts raw instruction bus accesses (wishbone) back into or1k instructions.

  • ork1_data_tracer <models/wishbone/or1k/or1k_data_tracer.hpp>. A SystemC component that traces raw (wishbone) data transactions.

tlms

Transaction Level Models (TLMs) are in general time-agnostic. Some of them support backpressure to bridge from Timing Accurate to Timing Agnostic approach.

tlm_adapters

Logic that bridges tlm to other buses and vice-versa:

  • tlm2wishbone.hpp <tlms/tlm_adapters/tlm2wishbone.hpp>.

Block that converts TLM requests into Wishbone transactions

tlm_common

Contains common reusable blocks, like initiators and glue logic

tlm_memories

Contains memories that support the tlm protocol:

  • tlm_rom <tlms/tlm_memories/tlm_rom.hpp>: implements a read-only memory

tlm_router

Contains routing logic for tlm messages:

  • tlm_router <tlms/tlm_router/tlm_router.hpp>: a router with configurable number of initiators and targets. Address mapping can be configured during initialization.