cocotb icon indicating copy to clipboard operation
cocotb copied to clipboard

Introduce simulator support grades

Open ktbarrett opened this issue 5 years ago • 2 comments

We support a lot of simulators. Not all of them work all of the time. We should grade this support (school grades?) and make that available in the documentation. This will allow users who are interested in using cocotb to better select a simulator and implementation language for their design before going in. It will also set their expectations for when things inevitably fail on the simulators with lower grade, hopefully reducing their frustration.

The best way we have currently to judge this is how capable of completing the regression a simulator is. For example, Icarus can pass with no failures (A). Questa and Riviera both run, but there are a few things we have to skip to avoid failures (B). And finally GHDL and Verilator cannot complete the regression, both from severe crashes and exceptions and they fail many tests (C). And finally there is the theoretical grades of: fails to run successfully in any test (D) and completely unsupported (F).

If this is deemed appropriate, I can create a PR modifying the Simulator Support page.

I don't know either about the Synopsys and Cadence simulators to be able to grade them. Recommendations/analysis are welcome.

ktbarrett avatar Oct 04 '20 12:10 ktbarrett

We could extend our existing cocotb.test() decorator with attributes like description and related_issue (and sim_name, sim_version) for each of expect_error, expect_fail, skip which would (a) document the test better and (b) allow us to programmatically extract this information into a matrix with simulator name/version and test name as axes. This makes it easier for a user to judge whether a simulator is well-behaved in a certain functional area in cocotb or not (things like normalized number of expect_error could be shown in each simulator's subsection of "Simulator Support").

What remains to be solved is that

  • some tests are not even started by the Makefile depending on SIM and TOPLEVEL_LANG because the support is not there in general; and
  • within test code, we sometimes differentiate between simulators and their versions

cmarqu avatar Oct 17 '20 17:10 cmarqu

I think that crosses over with #1872.

ktbarrett avatar Oct 17 '20 20:10 ktbarrett