Poor OVM Packer Performance

I’m using the OVM field automation macros and finding that the performance of the OVM packer is very poor.

First of all, the maximum packed size appears to be limited to OVM_STREAMBITS = 6000. This seems small for many common applications - (jumbo) ethernet frames or sonet frames to name a few. If you exceed this limit your packed output appears to be silently truncated.

Taking a quick look at the code I see that the pack_bytes method first packs to bits, then it manuallyconstructs bytes from there.

Is there a reason why the streaming capabilities of sv aren’t being used here? Am I wrong in thinking that this would be a more efficient implementation?

I suppose I can get around this by writing my own pack function, but that defeats the purpose of the macros.

Thanks,
Ryan

See Thread [thread]532[/thread] for an explanation.

Dave

Thanks for the response Dave. I scanned that thread earlier but missed the most important part. Never thought I’d find myself pining for the good old days of vendor specific methodologies!

Dave -

I’ve also noticed that the compare() method is very slow when operating on static arrays. If I use dynamic arrays instead, performance improve dramatically.

Any idea why this is?

Thanks,
Ryan