ggorman
02-29-2008, 01:13 PM
I can see the reasoning that an ovm_transaction is usually a small data type that is instantiated so many times throughout a test that you might not want the overhead of ovm_report. But what if I want an ovm_tansaction with report capability?
A transaction to my dut is much more than simply an address and data, for instance. My class to represent a transaction has over 50 properties -- and one of those properties is another class that has 35 properties.
We have a .print() method for this class which will need ovm_report, but it doesn't have access to that. I know that the workaround is to have the class return a string for the caller to pass to ovm_report; but the print() result for the 50+ properties is many lines long.
Also 85 properties to randomize is cumbersome. We've changed some of the randomizing to occur in post_randomize because it was too much for the constraint solver. This post_randomize routine has error and debug messages to print; butcanno because it doesn't have access to ovm_report.
I could make this an ovm_component instead, but it really is a transaction and I'll want to make a sequence of these, and an ovm_sequence is not an ovm_component.
Maybe we need an ovm_report_transaction ?
George Gorman
A transaction to my dut is much more than simply an address and data, for instance. My class to represent a transaction has over 50 properties -- and one of those properties is another class that has 35 properties.
We have a .print() method for this class which will need ovm_report, but it doesn't have access to that. I know that the workaround is to have the class return a string for the caller to pass to ovm_report; but the print() result for the 50+ properties is many lines long.
Also 85 properties to randomize is cumbersome. We've changed some of the randomizing to occur in post_randomize because it was too much for the constraint solver. This post_randomize routine has error and debug messages to print; butcanno because it doesn't have access to ovm_report.
I could make this an ovm_component instead, but it really is a transaction and I'll want to make a sequence of these, and an ovm_sequence is not an ovm_component.
Maybe we need an ovm_report_transaction ?
George Gorman