Hi Nitin,
thanks for the quick response.
I am not using SystemC myself an I thought SystemC would be typically connected through DPI. Apparently it's not, thanks for poiting that out.
As for your idea. The problem is that the transactor has been implemented is working fine under Modelsim at the moment. I was just trying to use NC (to balance out the license usage), so I don't really want to re-write the thing from scratch.
But even if I would, I have trouble understanding your approach, perhaps I need to explain a little better what I'm doing.
I am running system level verification and HW/SW co-simulation. I run the actual target code, compiled under Linux. All register accesses are wrapped and talk through the DPI to the hardware. In the DPI transactor, I import a function ("c_main()") from C, and this one I call from an initial statement. At this point all the control is passed to the C side, and the drivers and code is executed over there. Whenever the SW writes to a register, it calls (through a couple of layers) a task that is exported from the dpitransactor. So the imported function is calling exported (time consuming) tasks, this is - to my knowledge - valid.
Now, and this is where I cannot follow you anymore, if I were to communicate the transactions in zero time, and send them over to the RTL side, at what point could I, from the C side, make simulation time pass, so that the transactions are actually executed?
Thinking about it, I don't think it's possible. I would need to have the c_main() return for time to proceed, right?
Originally posted in cdnusers.org by chm