Skip to main content

Generate RAL tests from systemRDL.

Project description

peakrdl-cocotb-ralgen

A SystemRDL to raltest converter for cocotb.

This VIP confirms to sysrdl 1.2 and ral 1.0 format.

Installation

pip3 install peakrdl-cocotb-ralgen

Usage

peakrdl cocotb_ralgen <SystemRDL File> -o <output folder>
peakrdl python <SystemRDL File> -o <output folder>

Then in your cocotb test file

...
from peakrdl_cocotb_ralgen.callbacks.bsv import Callback
from peakrdl_cocotb_ralgen.testcases import rw_test, reset_test
from <AddrMap Name>_RAL import <AddrMap_Name>_RAL_Test as RAL
...

To read and check the value of all registers at Reset.

@cocotb.test
async def test_ral_reset(dut):
    """Ral test reset."""
    env = Env(dut)
    ral = RAL(env.reg, callback=Callback(dut))
    env.start()
    await FallingEdge(dut.rst_n)
    await ReadOnly()
    await reset_test.reset_test(ral, verbose=True)

To perform read write checks:

@cocotb.test
async def test_ral_readwrite(dut):
    """Ral test reset."""
    env = Env(dut)
    ral = RAL(env.reg, callback=Callback(dut))
    await RisingEdge(dut.rst_n)
    await ReadOnly()
    await rw_test.rw_test(ral,
    verbose=True
        foreground_read=True,
        foreground_write=False,
        count=1,
        verbose=True,
    )
...

Supporting different RTL generators.

For interfacing your RTL Generator generated code, ralgen needs to know the pattern used by you for signal naming. You can provide this information by passing a Callback function which maps the signal from systemRDL to RTL and provides methods to read & write to it.

Adding new tests.

New tests can be added to the testcases folder.

Contribution

PR's for supporting different RTL generators or test strategies are welcome.

Example

For a complete working example check the tests folder.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

peakrdl_cocotb_ralgen-0.1.7a1.post1.tar.gz (57.2 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file peakrdl_cocotb_ralgen-0.1.7a1.post1.tar.gz.

File metadata

File hashes

Hashes for peakrdl_cocotb_ralgen-0.1.7a1.post1.tar.gz
Algorithm Hash digest
SHA256 dadf80bd5f3242e6b3d6531d2b9a68b9152b5824e7952d0e84c66f85be4e3280
MD5 e3fc2203ea69641d228e421823935364
BLAKE2b-256 979d93c75d6cbb30312733820fa4326306b032578064fa8ce1148b5a8cdad6b6

See more details on using hashes here.

File details

Details for the file peakrdl_cocotb_ralgen-0.1.7a1.post1-py3-none-any.whl.

File metadata

File hashes

Hashes for peakrdl_cocotb_ralgen-0.1.7a1.post1-py3-none-any.whl
Algorithm Hash digest
SHA256 13923ada0dea73b5ece8d514328f825c8d562a7c127f932f06fcaa444ccf71bb
MD5 279165ac66f5104e16502ba9eb8b1680
BLAKE2b-256 b98af4c9d57b8676866f28a468dd5671fcac4cf5a46caaa84f72aa949dea0cea

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page