Reply To: Merging coverage databases
Why OSVVM™? › Forums › OSVVM › Merging coverage databases › Reply To: Merging coverage databases
![](https://osvvm.wpenginepowered.com/wp-content/uploads/avatars/11/4f2d90293ce57ed989d616466bef786b-bpfull.jpg)
Hi Lyle,
One use model is to write out the coverage database file from separate simulation runs into separate files. And hence, at the end of test1 we do:
... UartRx_RxCov.WriteCovDb("Test1_CovDb.txt") ;
Likewise for test2 and so on:
... UartRx_RxCov.WriteCovDb("Test2_CovDb.txt") ;
Then accumulate the coverage using a separate VHDL program:
UartRx_RxCov.ReadCovDb("Test1_CovDb.txt") ; for i in 2 to NUM_TESTS_TO_MERGE loop UartRx_RxCov.ReadCovDb("Test" & to_string(i) & "_CovDb.txt", MERGE =>TRUE) ; end loop ; ... -- do stuff with the merged database
With the current implementation, there is no practical usage of having multiple databases written to the same file. The append_mode was added to WriteCovDb for symmetry with WriteBin (with very little thought about its application – which is unfortunate and in your case misleading). Your use model of allowing ReadCovDb to merge a set of databases from the same file is interesting – it just was not implemented that way in this version. I just looked at ReadCovDb, I don’t think it would take too much to modify it to make your use model work. It may be:
------------------------------------------------------------ procedure ReadCovDb (FileName : string; Merge : boolean := FALSE) is ------------------------------------------------------------ file CovDbFile : text open READ_MODE is FileName ; begin ReadCovDb(CovDbFile, Merge) ; if Merge then while not EndFile(CovDbFile) loop ReadCovDb(CovDbFile, Merge) ; end loop ; end if; end procedure ReadCovDb ;
I have not tried this, so there may be subtle issues. Let me know if you try it.
Jim