Skip to content

Nic30/hwtAxiPerfTester

Repository files navigation

hwtAxiPerfTester

CircleCI Coverage Status PyPI version Documentation Status

This repository contains a hardware AXI4/3 tester which can be exported to System Verilog/VHDL/SystemC and its control application. It was originally used on Xilinx Virtex Ultrascale+ and Intel Arria10 to test properties of DDR4 controllers for various access patterns. But it does not contain any vendor specifics and should run everywhere.

The top component of tester is hwtAxiPerfTester.axi_perf_tester.AxiPerfTester to see it in default configuration just download or install this repo and run python3 -m hwtAxiPerfTester.axi_perf_tester.

The tests are cosimulation, you can modify config in tests and see what it does.

Installation and usage

pip3 install --upgrade --no-cache\
    -r https://raw.githubusercontent.com/Nic30/hwtAxiPerfTester/master/doc/requirements.txt \
    git+https://github.com/Nic30/hwtAxiPerfTester#egg=hwtAxiPerfTester

Once you have a design you can start script the tests scenarios.

from hwtAxiPerfTester.runtime.data_containers import \
    AxiPerfTesterTestJob, AxiPerfTesterChannelConfig, AxiPerfTesterStatConfig, \
    AxiPerfTesterTestReport
from hwtAxiPerfTester.runtime.axi_perf_tester_ctl_devmem import AxiPerfTesterCtlDevmem
from hwtAxiPerfTester.rw_pattern_generator import RWPatternGenerator
from hwtAxiPerfTester.transaction_generator import TransactionGenerator
from hwtAxiPerfTester.time_duration_storage import TimeDurationStorage

job = AxiPerfTesterTestJob()
job.rw_mode = RWPatternGenerator.MODE.SYNC
for ch in job.channel_config:
    ch: AxiPerfTesterChannelConfig
    ch.pattern = [1 for _ in range(4)]
    ag = ch.addr_gen
    ag.ordering_mode = TimeDurationStorage.MODE.IN_ORDER
    ag.credit = 10
    ag.addr = 0
    ag.addr_step = 64
    ag.addr_mask = 0x1000 - 1
    ag.addr_mode = TransactionGenerator.MODE.MODULO
    ag.addr_offset = 0x0
    ag.trans_len = 0
    ag.trans_len_step = 0
    ag.trans_len_mask = 1
    ag.trans_len_mode = TransactionGenerator.MODE.MODULO

    st = ch.stat_config
    st: AxiPerfTesterStatConfig
    st.histogram_keys = [2, 4, 8]

db = AxiPerfTesterCtlDevmem(0x02000000)
rep = db.exec_test(job)

print("Output:")
print(rep.to_json())

About

Performance tester for AXI3 and AXI4 slaves (latency, throughput, various access patterns)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages