Reference Card#
coro: a coroutine; task: a concurrently-running coroutine; trigger: a trigger
Assign |
|
|||||
Assign immediately |
|
|||||
Assign metavalue |
dut.mysignal.value = Logic("X") dut.mysignal.value = LogicArray("01XZ") |
|||||
Read |
val = dut.mysignal.value (
mysig = dut.mysignal creates an alias/reference) |
|||||
Bit slice |
mybit = dut.mysignal.value[0] mybits = dut.mysignal.value[3:1] |
|||||
Convert |
val = dut.mysignal.value.to_unsigned() val = dut.mysignal.value.to_signed() val = dut.mysignal.value.to_bytes(byteorder="little") val = str(dut.mysignal.value) |
|||||
Vector length |
|
|||||
Check |
|
|||||
Access Extended / Escaped Identifiers |
|
|||||
Logging |
|
|||||
Wait time |
|
|||||
Wait for signal edge |
await cocotb.triggers.RisingEdge(dut.mysignal) await cocotb.triggers.FallingEdge(dut.mysignal) await cocotb.triggers.Edge(dut.mysignal) |
|||||
Run coros concurrently |
task_0 = await cocotb.start(coro_0()) (start coro now)task_1 = cocotb.start_soon(coro) result = await task_0 |
|||||
Cancel task |
|
|||||
Wait for task to finish |
|
|||||
Resume on any Task or Trigger |
|
|||||
Resume on all Task or Trigger |
|
|||||
Generate clock |
|
|||||
Queue write |
await cocotb.queue.Queue.put(item) cocotb.queue.Queue.put_nowait(item) |
|||||
Queue read |
item = await cocotb.queue.Queue.get() item = cocotb.queue.Queue.get_nowait() |
|||||
Queue attributes |
queue.maxsize (None == unlimited)queue.qsize() queue.empty() queue.full() |
|||||
Specialized queues |
|
|||||
Set up event |
|
|||||
Wake up waiters |
|
|||||
Wait until |
|
|||||
Reset after |
|
|||||
Timeout |
|
|||||
Force value |
|
|||||
Keep value |
|
|||||
Release Force/Freeze |
|
|||||
Normal assignment is a “deposit” ( |
||||||
Mark as test |
|
|||||
Set up TestFactory |
|
|||||
Add test option |
|
|||||
Generate tests |
|
|||||
Parametrize test |
@cocotb.parametrize(arg1=[1, 2], arg2=["yes", "no"]) @cocotb.parametrize(("arg1", "arg2"), [(1, "a"), (3, "b")]) |