Skip to content

Commit e7e2828

Browse files
authored
refactor(Sram): refactor SRAM DFT io ports (#115)
1 parent d28afa3 commit e7e2828

File tree

5 files changed

+21
-56
lines changed

5 files changed

+21
-56
lines changed

src/main/scala/utility/mbist/MbistClockGateCell.scala

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ class CgDftBundle extends Bundle {
2525
val ram_aux_ckbp = Input(Bool())
2626
val cgen = Input(Bool())
2727
def fromBroadcast(brc: SramBroadcastBundle): Unit = {
28-
ram_aux_clk := brc.mbist.ram_aux_clk
29-
ram_aux_ckbp := brc.mbist.ram_aux_ckbp
30-
ram_mcp_hold := brc.mbist.ram_mcp_hold
31-
cgen := brc.mbist.cgen
28+
ram_aux_clk := brc.ram_aux_clk
29+
ram_aux_ckbp := brc.ram_aux_ckbp
30+
ram_mcp_hold := brc.ram_mcp_hold
31+
cgen := brc.cgen
3232
}
3333
}
3434

src/main/scala/utility/sram/SRAMTemplate.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ class SRAMTemplate[T <: Data](
367367
}
368368

369369
private val ramRdata = SramProto.read(array, singlePort, ramRaddr, ramRen)
370-
private val finalRamWen = ramWen && !brcBd.mbist.ram_hold
370+
private val finalRamWen = ramWen && !brcBd.ram_hold
371371
when(finalRamWen) {
372372
SramProto.write(array, singlePort, ramWaddr, ramWdata, ramWmask)
373373
}

src/main/scala/utility/sram/SramCtl.scala

Lines changed: 0 additions & 31 deletions
This file was deleted.

src/main/scala/utility/sram/SramHelper.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ object SramHelper {
143143
template: RawModule
144144
): (Ram2Mbist, Instance[SramArray], String) = {
145145

146-
val (array, vname) = SramProto(rclk, !dp, set, sp.sramDataBits, sp.sramMaskBits, setup, hold, latency, wclk, bist || broadcast.isDefined, hasSramCtl || broadcast.isDefined, suffix)
146+
val (array, vname) = SramProto(rclk, !dp, set, sp.sramDataBits, sp.sramMaskBits, setup, hold, latency, wclk, bist, hasSramCtl, suffix)
147147
val bdParam = Ram2MbistParams(
148148
sp,
149149
set,
@@ -164,12 +164,12 @@ object SramHelper {
164164
mbist.we := false.B
165165
mbist.re := false.B
166166
mbist.wmask := Fill(sp.mbistMaskWidth, true.B)
167-
if(broadcast.isDefined || bist) {
168-
array.mbist.get.dft_ram_bp_clken := broadcast.get.mbist.ram_bp_clken
169-
array.mbist.get.dft_ram_bypass := broadcast.get.mbist.ram_bypass
167+
if(bist) {
168+
array.mbist.get.dft_ram_bp_clken := broadcast.get.ram_bp_clken
169+
array.mbist.get.dft_ram_bypass := broadcast.get.ram_bypass
170170
}
171-
if(broadcast.isDefined || hasSramCtl) {
172-
array.sramCtl.get := broadcast.get.sramCtl
171+
if(hasSramCtl) {
172+
array.ram_ctl.get := broadcast.get.ram_ctl
173173
}
174174
if(bist) {
175175
dontTouch(mbist)

src/main/scala/utility/sram/SramProto.scala

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,19 +28,15 @@ class SramMbistIO extends Bundle {
2828
val dft_ram_bp_clken = Input(Bool())
2929
}
3030

31-
class SramMbistBundle extends Bundle {
32-
val ram_hold = Bool()
33-
val ram_bypass = Bool()
34-
val ram_bp_clken = Bool()
35-
val ram_aux_clk = Bool()
36-
val ram_aux_ckbp = Bool()
37-
val ram_mcp_hold = Bool()
38-
val cgen = Bool()
39-
}
40-
4131
class SramBroadcastBundle extends Bundle {
42-
val mbist = Input(new SramMbistBundle)
43-
val sramCtl = Input(new SramCtlBundle)
32+
val ram_hold = Input(Bool())
33+
val ram_bypass = Input(Bool())
34+
val ram_bp_clken = Input(Bool())
35+
val ram_aux_clk = Input(Bool())
36+
val ram_aux_ckbp = Input(Bool())
37+
val ram_mcp_hold = Input(Bool())
38+
val ram_ctl = Input(UInt(64.W))
39+
val cgen = Input(Bool())
4440
}
4541

4642
@instantiable
@@ -57,8 +53,8 @@ abstract class SramArray(
5753
require(width % maskSegments == 0)
5854
@public val mbist = if(hasMbist) Some(IO(new SramMbistIO)) else None
5955
mbist.foreach(dontTouch(_))
60-
@public val sramCtl = Option.when(hasSramCtl)(IO(Input(new SramCtlBundle)))
61-
sramCtl.foreach(dontTouch(_))
56+
@public val ram_ctl = Option.when(hasSramCtl)(IO(Input(UInt(64.W))))
57+
ram_ctl.foreach(dontTouch(_))
6258

6359
@public val RW0 = if(singlePort) {
6460
Some(IO(new Bundle() {

0 commit comments

Comments
 (0)