with want_cmds=1 and want_activates=0, ACTIVATE commands will still be considered, because they have both is_write=0 and is_read=0 (and we have both want_reads=0 and want_writes=0), so read and write are true, and thus (read & write) is true, even though command is false
all want_* are 0, then both read and write are 1 for requests with request.is_cmd == 1 so the command is considered valid
with want_writes=1 and want_reads=1, both write and read commands will be considered invalid (but we never want both at the same time, so it is probably a minor problem)
This behaviour can be observed in the following tests from test_command_chooser.py that fail:
This has been initially mentioned in https://github.com/enjoy-digital/litedram/pull/173.
When writing tests for
core.multiplexer._CommandChooser
I've noticed that the request selection defined here:https://github.com/enjoy-digital/litedram/blob/b06e946d09807f3ab9b2e72f9c599851ab8221b4/litedram/core/multiplexer.py#L42-L47
seems to work wrong in some cases, e.g.
This behaviour can be observed in the following tests from test_command_chooser.py that fail: