Added functional covers
This commit is contained in:
		| @@ -5,6 +5,8 @@ package freechips.rocketchip.tilelink | |||||||
| import Chisel._ | import Chisel._ | ||||||
| import freechips.rocketchip.config.Parameters | import freechips.rocketchip.config.Parameters | ||||||
| import freechips.rocketchip.diplomacy._ | import freechips.rocketchip.diplomacy._ | ||||||
|  | import freechips.rocketchip.util._ | ||||||
|  | import freechips.rocketchip.util.property._ | ||||||
| import scala.math.max | import scala.math.max | ||||||
|  |  | ||||||
| class TLFIFOFixer(policy: TLFIFOFixer.Policy = TLFIFOFixer.all)(implicit p: Parameters) extends LazyModule | class TLFIFOFixer(policy: TLFIFOFixer.Policy = TLFIFOFixer.all)(implicit p: Parameters) extends LazyModule | ||||||
| @@ -98,6 +100,31 @@ class TLFIFOFixer(policy: TLFIFOFixer.Policy = TLFIFOFixer.all)(implicit p: Para | |||||||
|         out.c.valid := Bool(false) |         out.c.valid := Bool(false) | ||||||
|         out.e.valid := Bool(false) |         out.e.valid := Bool(false) | ||||||
|       } |       } | ||||||
|  |  | ||||||
|  | //Functional cover properties | ||||||
|  |       | ||||||
|  |       cover(in.a.valid && stall, "COVER FIFOFIXER STALL", "Cover: Stall occured for a valid transaction") | ||||||
|  |  | ||||||
|  |       val SourceIdFIFOed = RegInit(UInt(0, width = edgeIn.client.endSourceId)) | ||||||
|  |       val SourceIdSet = Wire(init = UInt(0, width = edgeIn.client.endSourceId)) | ||||||
|  |       val SourceIdClear = Wire(init = UInt(0, width = edgeIn.client.endSourceId)) | ||||||
|  |  | ||||||
|  |       when (a_first && in.a.fire() && !a_notFIFO)  { | ||||||
|  |         SourceIdSet := UIntToOH(in.a.bits.source) | ||||||
|  |       } | ||||||
|  |       when (d_first && in.d.fire())  { | ||||||
|  |         SourceIdClear := UIntToOH(in.d.bits.source) | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       SourceIdFIFOed := SourceIdFIFOed | SourceIdSet | ||||||
|  |       val allIDs_FIFOed = SourceIdFIFOed===Fill(SourceIdFIFOed.getWidth, 1.U) | ||||||
|  |  | ||||||
|  |       cover(allIDs_FIFOed, "COVER all sources", "Cover: FIFOFIXER covers all Source IDs") | ||||||
|  |     //cover(flight.reduce(_ && _), "COVER full", "Cover: FIFO is full with all Source IDs") | ||||||
|  |       cover(!(flight.reduce(_ || _)), "COVER empty", "Cover: FIFO is empty") | ||||||
|  |       cover(SourceIdSet > 0.U, "COVER at least one push", "Cover: At least one Source ID is pushed") | ||||||
|  |       cover(SourceIdClear > 0.U, "COVER at least one pop", "Cover: At least one Source ID is popped") | ||||||
|  |  | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user