moving util out into Chisel standard library
This commit is contained in:
parent
6f2f1ba21c
commit
9b3161920f
@ -26,8 +26,8 @@ class MemSerdes extends Component
|
|||||||
|
|
||||||
val s_idle :: s_read_addr :: s_write_addr :: s_write_idle :: s_write_data :: Nil = Enum(5) { UFix() }
|
val s_idle :: s_read_addr :: s_write_addr :: s_write_idle :: s_write_data :: Nil = Enum(5) { UFix() }
|
||||||
val state = Reg(resetVal = s_idle)
|
val state = Reg(resetVal = s_idle)
|
||||||
val send_cnt = Reg(resetVal = UFix(0, log2up((max(abits, dbits)+MEM_BACKUP_WIDTH-1)/MEM_BACKUP_WIDTH)))
|
val send_cnt = Reg(resetVal = UFix(0, log2Up((max(abits, dbits)+MEM_BACKUP_WIDTH-1)/MEM_BACKUP_WIDTH)))
|
||||||
val data_send_cnt = Reg(resetVal = UFix(0, log2up(REFILL_CYCLES)))
|
val data_send_cnt = Reg(resetVal = UFix(0, log2Up(REFILL_CYCLES)))
|
||||||
val adone = io.narrow.req.ready && send_cnt === UFix((abits-1)/MEM_BACKUP_WIDTH)
|
val adone = io.narrow.req.ready && send_cnt === UFix((abits-1)/MEM_BACKUP_WIDTH)
|
||||||
val ddone = io.narrow.req.ready && send_cnt === UFix((dbits-1)/MEM_BACKUP_WIDTH)
|
val ddone = io.narrow.req.ready && send_cnt === UFix((dbits-1)/MEM_BACKUP_WIDTH)
|
||||||
|
|
||||||
@ -67,8 +67,8 @@ class MemSerdes extends Component
|
|||||||
send_cnt := UFix(0)
|
send_cnt := UFix(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
val recv_cnt = Reg(resetVal = UFix(0, log2up((rbits+MEM_BACKUP_WIDTH-1)/MEM_BACKUP_WIDTH)))
|
val recv_cnt = Reg(resetVal = UFix(0, log2Up((rbits+MEM_BACKUP_WIDTH-1)/MEM_BACKUP_WIDTH)))
|
||||||
val data_recv_cnt = Reg(resetVal = UFix(0, log2up(REFILL_CYCLES)))
|
val data_recv_cnt = Reg(resetVal = UFix(0, log2Up(REFILL_CYCLES)))
|
||||||
val resp_val = Reg(resetVal = Bool(false))
|
val resp_val = Reg(resetVal = Bool(false))
|
||||||
|
|
||||||
resp_val := Bool(false)
|
resp_val := Bool(false)
|
||||||
@ -98,8 +98,8 @@ class MemDessert extends Component // test rig side
|
|||||||
val rbits = io.wide.resp.bits.getWidth
|
val rbits = io.wide.resp.bits.getWidth
|
||||||
|
|
||||||
require(dbits >= abits && rbits >= dbits)
|
require(dbits >= abits && rbits >= dbits)
|
||||||
val recv_cnt = Reg(resetVal = UFix(0, log2up((rbits+MEM_BACKUP_WIDTH-1)/MEM_BACKUP_WIDTH)))
|
val recv_cnt = Reg(resetVal = UFix(0, log2Up((rbits+MEM_BACKUP_WIDTH-1)/MEM_BACKUP_WIDTH)))
|
||||||
val data_recv_cnt = Reg(resetVal = UFix(0, log2up(REFILL_CYCLES)))
|
val data_recv_cnt = Reg(resetVal = UFix(0, log2Up(REFILL_CYCLES)))
|
||||||
val adone = io.narrow.req.valid && recv_cnt === UFix((abits-1)/MEM_BACKUP_WIDTH)
|
val adone = io.narrow.req.valid && recv_cnt === UFix((abits-1)/MEM_BACKUP_WIDTH)
|
||||||
val ddone = io.narrow.req.valid && recv_cnt === UFix((dbits-1)/MEM_BACKUP_WIDTH)
|
val ddone = io.narrow.req.valid && recv_cnt === UFix((dbits-1)/MEM_BACKUP_WIDTH)
|
||||||
val rdone = io.narrow.resp.valid && recv_cnt === UFix((rbits-1)/MEM_BACKUP_WIDTH)
|
val rdone = io.narrow.resp.valid && recv_cnt === UFix((rbits-1)/MEM_BACKUP_WIDTH)
|
||||||
|
@ -19,7 +19,7 @@ class slowIO[T <: Data](val divisor: Int, hold_cycles_in: Int = -1)(data: => T)
|
|||||||
require((divisor & (divisor-1)) == 0)
|
require((divisor & (divisor-1)) == 0)
|
||||||
require(hold_cycles < divisor/2 && hold_cycles >= 1)
|
require(hold_cycles < divisor/2 && hold_cycles >= 1)
|
||||||
|
|
||||||
val cnt = Reg() { UFix(width = log2up(divisor)) }
|
val cnt = Reg() { UFix(width = log2Up(divisor)) }
|
||||||
cnt := cnt + UFix(1)
|
cnt := cnt + UFix(1)
|
||||||
val out_en = cnt === UFix(divisor/2+hold_cycles-1) // rising edge + hold time
|
val out_en = cnt === UFix(divisor/2+hold_cycles-1) // rising edge + hold time
|
||||||
val in_en = cnt === UFix(divisor/2-1) // rising edge
|
val in_en = cnt === UFix(divisor/2-1) // rising edge
|
||||||
@ -46,5 +46,5 @@ class slowIO[T <: Data](val divisor: Int, hold_cycles_in: Int = -1)(data: => T)
|
|||||||
io.in_slow.ready := in_slow_rdy
|
io.in_slow.ready := in_slow_rdy
|
||||||
io.out_slow.valid := out_slow_val
|
io.out_slow.valid := out_slow_val
|
||||||
io.out_slow.bits := out_slow_bits
|
io.out_slow.bits := out_slow_bits
|
||||||
io.clk_slow := cnt(log2up(divisor)-1).toBool
|
io.clk_slow := cnt(log2Up(divisor)-1).toBool
|
||||||
}
|
}
|
||||||
|
@ -120,7 +120,7 @@ class XactTracker(ntiles: Int, id: Int, co: CoherencePolicy) extends Component {
|
|||||||
val x_type_ = Reg{ Bits() }
|
val x_type_ = Reg{ Bits() }
|
||||||
val init_tile_id_ = Reg{ Bits() }
|
val init_tile_id_ = Reg{ Bits() }
|
||||||
val tile_xact_id_ = Reg{ Bits() }
|
val tile_xact_id_ = Reg{ Bits() }
|
||||||
val p_rep_count = if (ntiles == 1) UFix(0) else Reg(resetVal = UFix(0, width = log2up(ntiles)))
|
val p_rep_count = if (ntiles == 1) UFix(0) else Reg(resetVal = UFix(0, width = log2Up(ntiles)))
|
||||||
val p_req_flags = Reg(resetVal = Bits(0, width = ntiles))
|
val p_req_flags = Reg(resetVal = Bits(0, width = ntiles))
|
||||||
val p_rep_tile_id_ = Reg{ Bits() }
|
val p_rep_tile_id_ = Reg{ Bits() }
|
||||||
val x_needs_read = Reg(resetVal = Bool(false))
|
val x_needs_read = Reg(resetVal = Bool(false))
|
||||||
@ -128,9 +128,9 @@ class XactTracker(ntiles: Int, id: Int, co: CoherencePolicy) extends Component {
|
|||||||
val p_rep_data_needs_write = Reg(resetVal = Bool(false))
|
val p_rep_data_needs_write = Reg(resetVal = Bool(false))
|
||||||
val x_w_mem_cmd_sent = Reg(resetVal = Bool(false))
|
val x_w_mem_cmd_sent = Reg(resetVal = Bool(false))
|
||||||
val p_w_mem_cmd_sent = Reg(resetVal = Bool(false))
|
val p_w_mem_cmd_sent = Reg(resetVal = Bool(false))
|
||||||
val mem_cnt = Reg(resetVal = UFix(0, width = log2up(REFILL_CYCLES)))
|
val mem_cnt = Reg(resetVal = UFix(0, width = log2Up(REFILL_CYCLES)))
|
||||||
val mem_cnt_next = mem_cnt + UFix(1)
|
val mem_cnt_next = mem_cnt + UFix(1)
|
||||||
val mem_cnt_max = ~UFix(0, width = log2up(REFILL_CYCLES))
|
val mem_cnt_max = ~UFix(0, width = log2Up(REFILL_CYCLES))
|
||||||
|
|
||||||
io.busy := state != s_idle
|
io.busy := state != s_idle
|
||||||
io.addr := addr_
|
io.addr := addr_
|
||||||
@ -415,7 +415,7 @@ class CoherenceHubBroadcast(ntiles: Int, co: CoherencePolicy) extends CoherenceH
|
|||||||
val x_init = io.tiles(j).xact_init
|
val x_init = io.tiles(j).xact_init
|
||||||
val x_init_data = io.tiles(j).xact_init_data
|
val x_init_data = io.tiles(j).xact_init_data
|
||||||
val x_abort = io.tiles(j).xact_abort
|
val x_abort = io.tiles(j).xact_abort
|
||||||
val abort_cnt = Reg(resetVal = UFix(0, width = log2up(REFILL_CYCLES)))
|
val abort_cnt = Reg(resetVal = UFix(0, width = log2Up(REFILL_CYCLES)))
|
||||||
val conflicts = Vec(NGLOBAL_XACTS) { Bool() }
|
val conflicts = Vec(NGLOBAL_XACTS) { Bool() }
|
||||||
for( i <- 0 until NGLOBAL_XACTS) {
|
for( i <- 0 until NGLOBAL_XACTS) {
|
||||||
val t = trackerList(i).io
|
val t = trackerList(i).io
|
||||||
@ -438,7 +438,7 @@ class CoherenceHubBroadcast(ntiles: Int, co: CoherencePolicy) extends CoherenceH
|
|||||||
is(s_abort_drain) { // raises x_init_data.ready below
|
is(s_abort_drain) { // raises x_init_data.ready below
|
||||||
when(x_init_data.valid) {
|
when(x_init_data.valid) {
|
||||||
abort_cnt := abort_cnt + UFix(1)
|
abort_cnt := abort_cnt + UFix(1)
|
||||||
when(abort_cnt === ~UFix(0, width = log2up(REFILL_CYCLES))) {
|
when(abort_cnt === ~UFix(0, width = log2Up(REFILL_CYCLES))) {
|
||||||
abort_state_arr(j) := s_abort_send
|
abort_state_arr(j) := s_abort_send
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user