Marlon James
Marlon James
@ktbarrett It gets complicated if `_initialize_testbench` is just another startup routine in a list, because it needs to be called last (as things are currently).
The cause is the `await ReadOnly()` before getting the value: https://github.com/cocotb/cocotb-bus/blob/a3e22f787ac1f63c84dcdcee7303d75d26c9f38f/src/cocotb_bus/drivers/avalon.py#L135-L148 I don't understand why this is in the bus drivers. As noted it doesn't match the behavior of HDL.
I think I have a better understanding of what is happening now. The handles being found via iteration are using `vpi_iterate(vpiReg, root_module_handle)`. But `vpi_handle_by_name("test_axis.axis_tvalid", NULL)` hits a special case where...
I also found something different with the cocotb setup relating to the TOP scope as detailed here: --- https://github.com/cocotb/cocotb/issues/2346#issuecomment-760369843 For the `t_vpi_module` Verilator test, `Vt_vpi_module__Syms.cpp` sets up the scopes and...
I'm not positive about other internal signals, but the ports on the root module always get the values from the TOP wrapper. Example: ```cpp // top->eval() will call this: VL_INLINE_OPT...
I would be satisfied if iterating over the root module would return handles to the top-level objects that aren't overwritten by `eval()`. That way at least the top-level can be...
See [the wiki](https://github.com/cocotb/cocotb/wiki/cocotb-Internals#pseudo-regions) for some details on pseudo-regions.
For VPI, there are actual differences between an instance array and gen scope array. We need a way to distinguish hierarchy arrays like `vpiInterfaceArray` from things like `vpiRegArray`, rather than...
Conceptually `GPI_GENARRAY` is as you say, an array of scopes. But GPI code uses it only for pseudo-regions. In fact, `vpiGenScopeArray` handles are thrown away in favor of pseudo-region objects...
`sample_module.inout_if` happens to be a packed struct here, but unpacked structures and unpacked unions cannot be set in their entirety with `vpi_put_value()`. This type of feature would at minimum require...