google / google/xls

Extend ModuleSimulator and ModuleTestbench to handle procs

Open
#694 0 comments 0 reactions 0 assignees View on GitHub
codegen
Dominant language
C++
Stars
1.9k
Forks
283
Avg merge
2d 10h
Merged PRs (30d)
135

Description

Currently the ModuleSimulator and ModuleTestbench only handle functions. They should be extended to handle procs and channels.

For ModuleTestbench this will require support for multiple independent blocks (which might lower to always blocks) which each feed values or consume values to/from a single channel. The current implementation only supports a single "thread" of execution which make it impossilble to independently feed/consume data for than one channel. To exercise control logic more deeply, the testbench should be able to randomize the timing ready/valid signals on the input or output channels.

Similar to the other proc evaluators, ModuleSimulator would need to have some notion of time. It could accept a number of cycles (or proc ticks) to run, or run until a certain number of outputs are written to outputs channels.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.