Changed label for DCache and ICache error covers + take away exclusio… (#1155)
* Changed label for DCache and ICache error covers + take away exclusion that shouldn't be there * rocket: add d-channel error to I$
This commit is contained in:
		| @@ -803,8 +803,8 @@ class DCacheModule(outer: DCache) extends HellaCacheModule(outer) { | |||||||
|   if (usingDataScratchpad) { |   if (usingDataScratchpad) { | ||||||
|     val data_error_cover = Seq( |     val data_error_cover = Seq( | ||||||
|       CoverBoolean(!data_error, Seq("no_data_error")), |       CoverBoolean(!data_error, Seq("no_data_error")), | ||||||
|       CoverBoolean(data_error && !data_error_uncorrectable, Seq("correctable_data_error")), |       CoverBoolean(data_error && !data_error_uncorrectable, Seq("data_correctable_error")), | ||||||
|       CoverBoolean(data_error && data_error_uncorrectable, Seq("uncorrectable_data_error"))) |       CoverBoolean(data_error && data_error_uncorrectable, Seq("data_uncorrectable_error"))) | ||||||
|     val request_source = Seq( |     val request_source = Seq( | ||||||
|       CoverBoolean(s2_isSlavePortAccess, Seq("from_TL")), |       CoverBoolean(s2_isSlavePortAccess, Seq("from_TL")), | ||||||
|       CoverBoolean(!s2_isSlavePortAccess, Seq("from_CPU"))) |       CoverBoolean(!s2_isSlavePortAccess, Seq("from_CPU"))) | ||||||
| @@ -815,11 +815,10 @@ class DCacheModule(outer: DCache) extends HellaCacheModule(outer) { | |||||||
|       "MemorySystem;;Scratchpad Memory Bit Flip Cross Covers")) |       "MemorySystem;;Scratchpad Memory Bit Flip Cross Covers")) | ||||||
|   } else { |   } else { | ||||||
|  |  | ||||||
|     val data_error_cover = Seq(CoverBoolean(s2_valid_data_error, Seq("data_error"))) |  | ||||||
|  |  | ||||||
|     val data_error_type = Seq( |     val data_error_type = Seq( | ||||||
|       CoverBoolean(!s2_data_error_uncorrectable, Seq("correctable")), |       CoverBoolean(!s2_valid_data_error, Seq("no_data_error")), | ||||||
|       CoverBoolean(s2_data_error_uncorrectable, Seq("uncorrectable"))) |       CoverBoolean(s2_valid_data_error && !s2_data_error_uncorrectable, Seq("data_correctable_error")), | ||||||
|  |       CoverBoolean(s2_valid_data_error && s2_data_error_uncorrectable, Seq("data_uncorrectable_error"))) | ||||||
|     val data_error_dirty = Seq( |     val data_error_dirty = Seq( | ||||||
|       CoverBoolean(!s2_victim_dirty, Seq("data_clean")), |       CoverBoolean(!s2_victim_dirty, Seq("data_clean")), | ||||||
|       CoverBoolean(s2_victim_dirty, Seq("data_dirty"))) |       CoverBoolean(s2_victim_dirty, Seq("data_dirty"))) | ||||||
| @@ -832,10 +831,10 @@ class DCacheModule(outer: DCache) extends HellaCacheModule(outer) { | |||||||
|       } |       } | ||||||
|     val tag_error_cover = Seq( |     val tag_error_cover = Seq( | ||||||
|       CoverBoolean( !metaArb.io.in(1).valid, Seq("no_tag_error")), |       CoverBoolean( !metaArb.io.in(1).valid, Seq("no_tag_error")), | ||||||
|       CoverBoolean( metaArb.io.in(1).valid && !s2_meta_error_uncorrectable, Seq("correctable_tag_error")), |       CoverBoolean( metaArb.io.in(1).valid && !s2_meta_error_uncorrectable, Seq("tag_correctable_error")), | ||||||
|       CoverBoolean( metaArb.io.in(1).valid && s2_meta_error_uncorrectable, Seq("uncorrectable_tag_error"))) |       CoverBoolean( metaArb.io.in(1).valid && s2_meta_error_uncorrectable, Seq("tag_uncorrectable_error"))) | ||||||
|     cover(new CrossProperty( |     cover(new CrossProperty( | ||||||
|       Seq(data_error_cover, data_error_type, data_error_dirty, request_source, tag_error_cover), |       Seq(data_error_type, data_error_dirty, request_source, tag_error_cover), | ||||||
|       Seq(), |       Seq(), | ||||||
|       "MemorySystem;;Cache Memory Bit Flip Cross Covers")) |       "MemorySystem;;Cache Memory Bit Flip Cross Covers")) | ||||||
|   } |   } | ||||||
|   | |||||||
| @@ -180,6 +180,8 @@ class ICacheModule(outer: ICache) extends LazyModuleImp(outer) | |||||||
|   when (refill_done) { |   when (refill_done) { | ||||||
|     val enc_tag = tECC.encode(Cat(tl_out.d.bits.error, refill_tag)) |     val enc_tag = tECC.encode(Cat(tl_out.d.bits.error, refill_tag)) | ||||||
|     tag_array.write(refill_idx, Vec.fill(nWays)(enc_tag), Seq.tabulate(nWays)(repl_way === _)) |     tag_array.write(refill_idx, Vec.fill(nWays)(enc_tag), Seq.tabulate(nWays)(repl_way === _)) | ||||||
|  |  | ||||||
|  |     ccover(tl_out.d.bits.error, "D_ERROR", "I$ D-channel error") | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   val vb_array = Reg(init=Bits(0, nSets*nWays)) |   val vb_array = Reg(init=Bits(0, nSets*nWays)) | ||||||
| @@ -411,8 +413,8 @@ class ICacheModule(outer: ICache) extends LazyModuleImp(outer) | |||||||
|   val mem_active_valid = Seq(CoverBoolean(s2_valid, Seq("mem_active"))) |   val mem_active_valid = Seq(CoverBoolean(s2_valid, Seq("mem_active"))) | ||||||
|   val data_error = Seq( |   val data_error = Seq( | ||||||
|     CoverBoolean(!s2_data_decoded.correctable && !s2_data_decoded.uncorrectable, Seq("no_data_error")), |     CoverBoolean(!s2_data_decoded.correctable && !s2_data_decoded.uncorrectable, Seq("no_data_error")), | ||||||
|     CoverBoolean(s2_data_decoded.correctable, Seq("correctable_bit_error")), |     CoverBoolean(s2_data_decoded.correctable, Seq("data_correctable_error")), | ||||||
|     CoverBoolean(s2_data_decoded.uncorrectable, Seq("uncorrectable_bit_error"))) |     CoverBoolean(s2_data_decoded.uncorrectable, Seq("data_uncorrectable_error"))) | ||||||
|   val request_source = Seq( |   val request_source = Seq( | ||||||
|     CoverBoolean(!s2_slaveValid, Seq("from_CPU")), |     CoverBoolean(!s2_slaveValid, Seq("from_CPU")), | ||||||
|     CoverBoolean(s2_slaveValid, Seq("from_TL")) |     CoverBoolean(s2_slaveValid, Seq("from_TL")) | ||||||
| @@ -431,8 +433,6 @@ class ICacheModule(outer: ICache) extends LazyModuleImp(outer) | |||||||
|     Seq( |     Seq( | ||||||
|       // tag error cannot occur in ITIM mode |       // tag error cannot occur in ITIM mode | ||||||
|       Seq("tag_error", "ITIM_mode"), |       Seq("tag_error", "ITIM_mode"), | ||||||
|       // tag is only parity check |  | ||||||
|       Seq("tag_error", "uncorrectable_bit_error"), |  | ||||||
|       // Can only respond to TL in ITIM mode |       // Can only respond to TL in ITIM mode | ||||||
|       Seq("from_TL", "cache_mode") |       Seq("from_TL", "cache_mode") | ||||||
|     ), |     ), | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user