-
Notifications
You must be signed in to change notification settings - Fork 83
Manually set a bus signal as optional even if present #54
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Ultimately the solution here is to have a better container type that can be passed in to cocotbext-axi. Ideally, something that replaces/supersedes the Bus object from cocotb-bus, but is more flexible and supports things like manual deletion and renaming of signals to deal with non-standard interfaces, as well as operating on parts of signals. But, I suppose another thing to think about is perhaps better handling of X and Z. This unfortunately ties into the screwed up BinaryValue object in cocotb, which I think they're planning on replacing/reworking at some point. Not sure what would make the most sense here necessarily, but it's possible that some adjustments to better deal with Z might be sufficient for your particular use case. |
Thanks for the possible solution ideas. I might have a look at what is been done on the Bus and BinaryValue object. For now, with a Verilog wrapper, it is easy to workaround this by hardcoding the missing signal values. But indeed, an integrated solution in the long term would be nice. |
Hi, I think we've run into a similar problem. We like to connect cocotbext-axi transactors from prefix: self.axi_byp = AxiMasterWrite(AxiWriteBus.from_prefix(self.dut, "s_axi"), self.dut.clk, self.dut.rst) Some of the IP we test have no ID (arid, awid, rid, bid) busses defined and this errors due to those missing signals. We have hacked cocotbext/axi/axi_channels.py to make the IDs optional. For example: Write response channelAxiBBus, AxiBTransaction, AxiBSource, AxiBSink, AxiBMonitor = define_stream("AxiB", But it seems like there should be a cleaner way that we can do this locally without having to hack the cocotb install. Are we missing something? Thanks! Steve Haynal |
Making more signals optional is something that I would like to do upstream at some point. I think the current setup is such that making the ID signals optional should be straightforward; I'll take a look at that. Probably the same goes for rlast/wlast. Are there any other signals that should be optional? |
For us it was mainly the ID signals. Thanks! |
Hi, this is a usecase I believe may be useful to have for SystemVerilog interfaces. Some designs have an interface that defines many signals, but with modules that may not be using all of those signals. An example below is a AXI Stream interface with tdata and tid, but with a module that does not assign tid.
Since tid is present on the bus, AxiStreamSink will try to resolve the value to an integer which won't work because it remains at 'x'. Would it make sense to have a way to specify that a signal should not be used/resolved for such cases?
Module:
Testcase:
Log:
The text was updated successfully, but these errors were encountered: