removing wires
This commit is contained in:
		| @@ -26,12 +26,12 @@ class rocketMemArbiter(n: Int) extends Component { | |||||||
|     xi_rdy = xi_rdy && !io.requestor(i).xact_init.valid |     xi_rdy = xi_rdy && !io.requestor(i).xact_init.valid | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   var xi_bits = Wire() { new TransactionInit } |   var xi_bits = new TransactionInit | ||||||
|   xi_bits := io.requestor(n-1).xact_init.bits |   xi_bits := io.requestor(n-1).xact_init.bits | ||||||
|   xi_bits.tile_xact_id := Cat(io.requestor(n-1).xact_init.bits.tile_xact_id, UFix(n-1, log2up(n))) |   xi_bits.tile_xact_id := Cat(io.requestor(n-1).xact_init.bits.tile_xact_id, UFix(n-1, log2up(n))) | ||||||
|   for (i <- n-2 to 0 by -1) |   for (i <- n-2 to 0 by -1) | ||||||
|   { |   { | ||||||
|     var my_xi_bits = Wire() { new TransactionInit } |     var my_xi_bits = new TransactionInit | ||||||
|     my_xi_bits := io.requestor(i).xact_init.bits |     my_xi_bits := io.requestor(i).xact_init.bits | ||||||
|     my_xi_bits.tile_xact_id := Cat(io.requestor(i).xact_init.bits.tile_xact_id, UFix(i, log2up(n))) |     my_xi_bits.tile_xact_id := Cat(io.requestor(i).xact_init.bits.tile_xact_id, UFix(i, log2up(n))) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -96,7 +96,7 @@ abstract class IncoherentPolicy extends CoherencePolicy { | |||||||
|   // UNIMPLEMENTED |   // UNIMPLEMENTED | ||||||
|   def newStateOnProbeRequest(incoming: ProbeRequest, state: UFix): Bits = state |   def newStateOnProbeRequest(incoming: ProbeRequest, state: UFix): Bits = state | ||||||
|   def newProbeReply (incoming: ProbeRequest, state: UFix): ProbeReply = {  |   def newProbeReply (incoming: ProbeRequest, state: UFix): ProbeReply = {  | ||||||
|     val reply = Wire() { new ProbeReply() } |     val reply = new ProbeReply() | ||||||
|     reply.p_type := UFix(0) |     reply.p_type := UFix(0) | ||||||
|     reply.global_xact_id := UFix(0) |     reply.global_xact_id := UFix(0) | ||||||
|     reply |     reply | ||||||
| @@ -209,7 +209,7 @@ class MICoherence extends CoherencePolicyWithUncached { | |||||||
|   def getTransactionInitTypeOnWriteback(): Bits = getTransactionInitTypeOnCacheControl(M_INV) |   def getTransactionInitTypeOnWriteback(): Bits = getTransactionInitTypeOnCacheControl(M_INV) | ||||||
|  |  | ||||||
|   def newProbeReply (incoming: ProbeRequest, state: UFix): ProbeReply = { |   def newProbeReply (incoming: ProbeRequest, state: UFix): ProbeReply = { | ||||||
|     val reply = Wire() { new ProbeReply() } |     val reply = new ProbeReply() | ||||||
|     val with_data = MuxLookup(incoming.p_type, probeRepInvalidateData, Array( |     val with_data = MuxLookup(incoming.p_type, probeRepInvalidateData, Array( | ||||||
|       probeReqInvalidate -> probeRepInvalidateData, |       probeReqInvalidate -> probeRepInvalidateData, | ||||||
|       probeReqCopy       -> probeRepCopyData |       probeReqCopy       -> probeRepCopyData | ||||||
| @@ -336,7 +336,7 @@ class MEICoherence extends CoherencePolicyWithUncached { | |||||||
|   def getTransactionInitTypeOnWriteback(): Bits = getTransactionInitTypeOnCacheControl(M_INV) |   def getTransactionInitTypeOnWriteback(): Bits = getTransactionInitTypeOnCacheControl(M_INV) | ||||||
|  |  | ||||||
|   def newProbeReply (incoming: ProbeRequest, state: UFix): ProbeReply = { |   def newProbeReply (incoming: ProbeRequest, state: UFix): ProbeReply = { | ||||||
|     val reply = Wire() { new ProbeReply() } |     val reply = new ProbeReply() | ||||||
|     val with_data = MuxLookup(incoming.p_type, probeRepInvalidateData, Array( |     val with_data = MuxLookup(incoming.p_type, probeRepInvalidateData, Array( | ||||||
|       probeReqInvalidate -> probeRepInvalidateData, |       probeReqInvalidate -> probeRepInvalidateData, | ||||||
|       probeReqDowngrade  -> probeRepDowngradeData, |       probeReqDowngrade  -> probeRepDowngradeData, | ||||||
| @@ -475,7 +475,7 @@ class MSICoherence extends CoherencePolicyWithUncached { | |||||||
|   def getTransactionInitTypeOnWriteback(): Bits = getTransactionInitTypeOnCacheControl(M_INV) |   def getTransactionInitTypeOnWriteback(): Bits = getTransactionInitTypeOnCacheControl(M_INV) | ||||||
|  |  | ||||||
|   def newProbeReply (incoming: ProbeRequest, state: UFix): ProbeReply = { |   def newProbeReply (incoming: ProbeRequest, state: UFix): ProbeReply = { | ||||||
|     val reply = Wire() { new ProbeReply() } |     val reply = new ProbeReply() | ||||||
|     val with_data = MuxLookup(incoming.p_type, probeRepInvalidateData, Array( |     val with_data = MuxLookup(incoming.p_type, probeRepInvalidateData, Array( | ||||||
|       probeReqInvalidate -> probeRepInvalidateData, |       probeReqInvalidate -> probeRepInvalidateData, | ||||||
|       probeReqDowngrade  -> probeRepDowngradeData, |       probeReqDowngrade  -> probeRepDowngradeData, | ||||||
| @@ -614,7 +614,7 @@ class MESICoherence extends CoherencePolicyWithUncached { | |||||||
|   def getTransactionInitTypeOnWriteback(): Bits = getTransactionInitTypeOnCacheControl(M_INV) |   def getTransactionInitTypeOnWriteback(): Bits = getTransactionInitTypeOnCacheControl(M_INV) | ||||||
|  |  | ||||||
|   def newProbeReply (incoming: ProbeRequest, state: UFix): ProbeReply = { |   def newProbeReply (incoming: ProbeRequest, state: UFix): ProbeReply = { | ||||||
|     val reply = Wire() { new ProbeReply() } |     val reply = new ProbeReply() | ||||||
|     val with_data = MuxLookup(incoming.p_type, probeRepInvalidateData, Array( |     val with_data = MuxLookup(incoming.p_type, probeRepInvalidateData, Array( | ||||||
|       probeReqInvalidate -> probeRepInvalidateData, |       probeReqInvalidate -> probeRepInvalidateData, | ||||||
|       probeReqDowngrade  -> probeRepDowngradeData, |       probeReqDowngrade  -> probeRepDowngradeData, | ||||||
|   | |||||||
| @@ -359,7 +359,7 @@ class rocketCtrl extends Component | |||||||
|   val id_reg_xcpt_ma_inst = Reg(resetVal = Bool(false)); |   val id_reg_xcpt_ma_inst = Reg(resetVal = Bool(false)); | ||||||
|   val id_reg_icmiss       = Reg(resetVal = Bool(false)); |   val id_reg_icmiss       = Reg(resetVal = Bool(false)); | ||||||
|   val id_reg_replay       = Reg(resetVal = Bool(false)); |   val id_reg_replay       = Reg(resetVal = Bool(false)); | ||||||
|   val id_load_use         = Wire(){Bool()}; |   val id_load_use         = Bool(); | ||||||
|    |    | ||||||
|   val ex_reg_br_type     = Reg(){Bits()} |   val ex_reg_br_type     = Reg(){Bits()} | ||||||
|   val ex_reg_btb_hit     = Reg(){Bool()}; |   val ex_reg_btb_hit     = Reg(){Bool()}; | ||||||
| @@ -418,8 +418,8 @@ class rocketCtrl extends Component | |||||||
|   val wb_reg_fp_val          = Reg(resetVal = Bool(false)); |   val wb_reg_fp_val          = Reg(resetVal = Bool(false)); | ||||||
|   val wb_reg_fp_sboard_set   = Reg(resetVal = Bool(false)); |   val wb_reg_fp_sboard_set   = Reg(resetVal = Bool(false)); | ||||||
|  |  | ||||||
|   val take_pc = Wire(){Bool()} |   val take_pc = Bool() | ||||||
|   val take_pc_wb = Wire(){Bool()} |   val take_pc_wb = Bool() | ||||||
|  |  | ||||||
|   when (!io.dpath.stalld) { |   when (!io.dpath.stalld) { | ||||||
|     when (io.dpath.killf) { |     when (io.dpath.killf) { | ||||||
|   | |||||||
| @@ -70,7 +70,7 @@ class rocketDpath extends Component | |||||||
|   val ex_reg_ctrl_div_val   = Reg(resetVal = Bool(false)); |   val ex_reg_ctrl_div_val   = Reg(resetVal = Bool(false)); | ||||||
|   val ex_reg_ctrl_div_fn    = Reg() { UFix() }; |   val ex_reg_ctrl_div_fn    = Reg() { UFix() }; | ||||||
|   val ex_reg_ctrl_sel_wb    = Reg() { UFix() }; |   val ex_reg_ctrl_sel_wb    = Reg() { UFix() }; | ||||||
|  	val ex_wdata						  = Wire() { Bits() }; 	 |  	val ex_wdata						  = Bits(); 	 | ||||||
|  |  | ||||||
|   // memory definitions |   // memory definitions | ||||||
|   val mem_reg_pc             = Reg() { UFix() }; |   val mem_reg_pc             = Reg() { UFix() }; | ||||||
| @@ -93,9 +93,9 @@ class rocketDpath extends Component | |||||||
|   val wb_reg_raddr1         = Reg() { UFix() }; |   val wb_reg_raddr1         = Reg() { UFix() }; | ||||||
|   val wb_reg_raddr2         = Reg() { UFix() }; |   val wb_reg_raddr2         = Reg() { UFix() }; | ||||||
|   val wb_reg_ll_wb          = Reg(resetVal = Bool(false)); |   val wb_reg_ll_wb          = Reg(resetVal = Bool(false)); | ||||||
|   val wb_wdata              = Wire() { Bits() }; 	 |   val wb_wdata              = Bits(); 	 | ||||||
|  |  | ||||||
|   val dmem_resp_replay      = Wire() { Bool() } |   val dmem_resp_replay      = Bool() | ||||||
|   val r_dmem_resp_replay    = Reg(resetVal = Bool(false)); |   val r_dmem_resp_replay    = Reg(resetVal = Bool(false)); | ||||||
|   val r_dmem_fp_replay      = Reg(resetVal = Bool(false)); |   val r_dmem_fp_replay      = Reg(resetVal = Bool(false)); | ||||||
|   val r_dmem_resp_waddr     = Reg() { UFix() }; |   val r_dmem_resp_waddr     = Reg() { UFix() }; | ||||||
|   | |||||||
| @@ -25,8 +25,8 @@ class rocketDpathBTB(entries: Int) extends Component | |||||||
|   val repl_way = LFSR16(io.wen)(log2up(entries)-1,0) // TODO: pseudo-LRU |   val repl_way = LFSR16(io.wen)(log2up(entries)-1,0) // TODO: pseudo-LRU | ||||||
|  |  | ||||||
|   var hit_reduction = Bool(false) |   var hit_reduction = Bool(false) | ||||||
|   val hit = Wire() { Bool() } |   val hit = Bool() | ||||||
|   val update = Wire() { Bool() } |   val update = Bool() | ||||||
|   var update_reduction = Bool(false) |   var update_reduction = Bool(false) | ||||||
|   val mux = (new Mux1H(entries)) { Bits(width = VADDR_BITS) } |   val mux = (new Mux1H(entries)) { Bits(width = VADDR_BITS) } | ||||||
|  |  | ||||||
| @@ -118,7 +118,7 @@ class rocketDpathPCR extends Component | |||||||
|   val r_irq_timer = Reg(resetVal = Bool(false)); |   val r_irq_timer = Reg(resetVal = Bool(false)); | ||||||
|   val r_irq_ipi   = Reg(resetVal = Bool(true)) |   val r_irq_ipi   = Reg(resetVal = Bool(true)) | ||||||
|    |    | ||||||
|   val rdata = Wire() { Bits() }; |   val rdata = Bits(); | ||||||
|  |  | ||||||
|   val raddr = Mux(io.r.en, io.r.addr, io.host.pcr_req.bits.addr) |   val raddr = Mux(io.r.en, io.r.addr, io.host.pcr_req.bits.addr) | ||||||
|   io.host.pcr_rep.valid := io.host.pcr_req.valid && !io.r.en && !io.host.pcr_req.bits.rw |   io.host.pcr_rep.valid := io.host.pcr_req.valid && !io.r.en && !io.host.pcr_req.bits.rw | ||||||
|   | |||||||
| @@ -214,10 +214,10 @@ class rocketFPIntUnit extends Component | |||||||
|   val d2i = hardfloat.recodedFloatNToAny(io.in1, io.rm, ~io.cmd(1,0), 52, 12, 64) |   val d2i = hardfloat.recodedFloatNToAny(io.in1, io.rm, ~io.cmd(1,0), 52, 12, 64) | ||||||
|  |  | ||||||
|   // output muxing |   // output muxing | ||||||
|   val (out_s, exc_s) = (Wire() { Bits() }, Wire() { Bits() }) |   val (out_s, exc_s) = (Bits(), Bits()) | ||||||
|   out_s := Cat(Fill(32, unrec_s(31)), unrec_s) |   out_s := Cat(Fill(32, unrec_s(31)), unrec_s) | ||||||
|   exc_s := Bits(0) |   exc_s := Bits(0) | ||||||
|   val (out_d, exc_d) = (Wire() { Bits() }, Wire() { Bits() }) |   val (out_d, exc_d) = (Bits(), Bits()) | ||||||
|   out_d := unrec_d |   out_d := unrec_d | ||||||
|   exc_d := Bits(0) |   exc_d := Bits(0) | ||||||
|  |  | ||||||
| @@ -292,10 +292,10 @@ class rocketFPUFastPipe extends Component | |||||||
|   val minmax = Mux(isnan2 || !isnan1 && (min === lt), io.in1, io.in2) |   val minmax = Mux(isnan2 || !isnan1 && (min === lt), io.in1, io.in2) | ||||||
|  |  | ||||||
|   // output muxing |   // output muxing | ||||||
|   val (out_s, exc_s) = (Wire() { Bits() }, Wire() { Bits() }) |   val (out_s, exc_s) = (Bits(), Bits()) | ||||||
|   out_s := Reg(hardfloat.floatNToRecodedFloatN(io.fromint, 23, 9)) |   out_s := Reg(hardfloat.floatNToRecodedFloatN(io.fromint, 23, 9)) | ||||||
|   exc_s := Bits(0) |   exc_s := Bits(0) | ||||||
|   val (out_d, exc_d) = (Wire() { Bits() }, Wire() { Bits() }) |   val (out_d, exc_d) = (Bits(), Bits()) | ||||||
|   out_d := Reg(hardfloat.floatNToRecodedFloatN(io.fromint, 52, 12)) |   out_d := Reg(hardfloat.floatNToRecodedFloatN(io.fromint, 52, 12)) | ||||||
|   exc_d := Bits(0) |   exc_d := Bits(0) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -56,8 +56,8 @@ class rocketICache(sets: Int, assoc: Int, co: CoherencePolicyWithUncached) exten | |||||||
|   val r_cpu_req_ppn    = Reg { Bits() } |   val r_cpu_req_ppn    = Reg { Bits() } | ||||||
|   val r_cpu_req_val    = Reg(resetVal = Bool(false)); |   val r_cpu_req_val    = Reg(resetVal = Bool(false)); | ||||||
|  |  | ||||||
|   val rdy = Wire() { Bool() } |   val rdy = Bool() | ||||||
|   val tag_hit = Wire() { Bool() } |   val tag_hit = Bool() | ||||||
|    |    | ||||||
|   when (io.cpu.req_val && rdy) { |   when (io.cpu.req_val && rdy) { | ||||||
|     r_cpu_req_val   := Bool(true) |     r_cpu_req_val   := Bool(true) | ||||||
|   | |||||||
| @@ -803,7 +803,7 @@ class HellaCache(co: CoherencePolicy) extends Component { | |||||||
|   val r_req_read  = r_req_load || r_req_amo |   val r_req_read  = r_req_load || r_req_amo | ||||||
|   val r_req_write = r_req_store || r_req_amo |   val r_req_write = r_req_store || r_req_amo | ||||||
|   val r_req_readwrite = r_req_read || r_req_write || r_req_prefetch |   val r_req_readwrite = r_req_read || r_req_write || r_req_prefetch | ||||||
|   val nack_hit = Wire() { Bool() } |   val nack_hit = Bool() | ||||||
|  |  | ||||||
|   val wb = new WritebackUnit(co) |   val wb = new WritebackUnit(co) | ||||||
|   val prober = new ProbeUnit(co) |   val prober = new ProbeUnit(co) | ||||||
|   | |||||||
| @@ -281,20 +281,20 @@ class CoherenceHubBroadcast(ntiles: Int, co: CoherencePolicy) extends CoherenceH | |||||||
| { | { | ||||||
|   val trackerList = (0 until NGLOBAL_XACTS).map(new XactTracker(ntiles, _, co)) |   val trackerList = (0 until NGLOBAL_XACTS).map(new XactTracker(ntiles, _, co)) | ||||||
|  |  | ||||||
|   val busy_arr           = Vec(NGLOBAL_XACTS){ Wire(){Bool()} } |   val busy_arr           = Vec(NGLOBAL_XACTS){ Bool() } | ||||||
|   val addr_arr           = Vec(NGLOBAL_XACTS){ Wire(){Bits(width=PADDR_BITS-OFFSET_BITS)} } |   val addr_arr           = Vec(NGLOBAL_XACTS){ Bits(width=PADDR_BITS-OFFSET_BITS) } | ||||||
|   val init_tile_id_arr   = Vec(NGLOBAL_XACTS){ Wire(){Bits(width=TILE_ID_BITS)} } |   val init_tile_id_arr   = Vec(NGLOBAL_XACTS){ Bits(width=TILE_ID_BITS) } | ||||||
|   val tile_xact_id_arr   = Vec(NGLOBAL_XACTS){ Wire(){Bits(width=TILE_XACT_ID_BITS)} } |   val tile_xact_id_arr   = Vec(NGLOBAL_XACTS){ Bits(width=TILE_XACT_ID_BITS) } | ||||||
|   val x_type_arr         = Vec(NGLOBAL_XACTS){ Wire(){Bits(width=X_INIT_TYPE_MAX_BITS)} } |   val x_type_arr         = Vec(NGLOBAL_XACTS){ Bits(width=X_INIT_TYPE_MAX_BITS) } | ||||||
|   val sh_count_arr       = Vec(NGLOBAL_XACTS){ Wire(){Bits(width=TILE_ID_BITS)} } |   val sh_count_arr       = Vec(NGLOBAL_XACTS){ Bits(width=TILE_ID_BITS) } | ||||||
|   val send_x_rep_ack_arr = Vec(NGLOBAL_XACTS){ Wire(){Bool()} } |   val send_x_rep_ack_arr = Vec(NGLOBAL_XACTS){ Bool() } | ||||||
|  |  | ||||||
|   val do_free_arr        = Vec(NGLOBAL_XACTS){ Wire(){Bool()} } |   val do_free_arr        = Vec(NGLOBAL_XACTS){ Bool() } | ||||||
|   val p_rep_cnt_dec_arr  = VecBuf(NGLOBAL_XACTS){ Vec(ntiles){ Wire(){Bool()} } } |   val p_rep_cnt_dec_arr  = VecBuf(NGLOBAL_XACTS){ Vec(ntiles){ Bool()}  } | ||||||
|   val p_req_cnt_inc_arr  = VecBuf(NGLOBAL_XACTS){ Vec(ntiles){ Wire(){Bool()} } } |   val p_req_cnt_inc_arr  = VecBuf(NGLOBAL_XACTS){ Vec(ntiles){ Bool()}  } | ||||||
|   val sent_x_rep_ack_arr = Vec(NGLOBAL_XACTS){ Wire(){ Bool()} } |   val sent_x_rep_ack_arr = Vec(NGLOBAL_XACTS){  Bool() } | ||||||
|   val p_data_tile_id_arr = Vec(NGLOBAL_XACTS){ Wire(){ Bits(width = TILE_ID_BITS)} } |   val p_data_tile_id_arr = Vec(NGLOBAL_XACTS){  Bits(width = TILE_ID_BITS) } | ||||||
|   val p_data_valid_arr   = Vec(NGLOBAL_XACTS){ Wire(){ Bool()} } |   val p_data_valid_arr   = 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 | ||||||
| @@ -410,13 +410,13 @@ class CoherenceHubBroadcast(ntiles: Int, co: CoherencePolicy) extends CoherenceH | |||||||
|   // Nack conflicting transaction init attempts |   // Nack conflicting transaction init attempts | ||||||
|   val s_idle :: s_abort_drain :: s_abort_send :: Nil = Enum(3){ UFix() } |   val s_idle :: s_abort_drain :: s_abort_send :: Nil = Enum(3){ UFix() } | ||||||
|   val abort_state_arr = Vec(ntiles) { Reg(resetVal = s_idle) } |   val abort_state_arr = Vec(ntiles) { Reg(resetVal = s_idle) } | ||||||
|   val want_to_abort_arr = Vec(ntiles) { Wire() { Bool()} } |   val want_to_abort_arr = Vec(ntiles) { Bool() } | ||||||
|   for( j <- 0 until ntiles ) { |   for( j <- 0 until ntiles ) { | ||||||
|     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) { Wire() { 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 | ||||||
|       conflicts(i) := t.busy && x_init.valid && co.isCoherenceConflict(t.addr, x_init.bits.address) |       conflicts(i) := t.busy && x_init.valid && co.isCoherenceConflict(t.addr, x_init.bits.address) | ||||||
|   | |||||||
| @@ -208,7 +208,7 @@ class RRArbiter[T <: Data](n: Int)(data: => T) extends Component { | |||||||
|     last_grant := choose |     last_grant := choose | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   val dvec = Vec(n) { Wire() { data } } |   val dvec = Vec(n) { data }  | ||||||
|   (0 until n).map(i => dvec(i) := io.in(i).bits ) |   (0 until n).map(i => dvec(i) := io.in(i).bits ) | ||||||
|  |  | ||||||
|   io.out.valid := foldR(io.in.map(_.valid))(_||_) |   io.out.valid := foldR(io.in.map(_.valid))(_||_) | ||||||
| @@ -226,8 +226,8 @@ class LockingArbiter[T <: Data](n: Int)(data: => T) extends Component { | |||||||
|   val io = new ioLockingArbiter(n)(data) |   val io = new ioLockingArbiter(n)(data) | ||||||
|   val locked = Vec(n) { Reg(resetVal = Bool(false)) } |   val locked = Vec(n) { Reg(resetVal = Bool(false)) } | ||||||
|   val any_lock_held = (locked.toBits & io.lock.toBits).orR |   val any_lock_held = (locked.toBits & io.lock.toBits).orR | ||||||
|   val valid_arr = Vec(n) { Wire() { Bool() } } |   val valid_arr = Vec(n) { Bool() }  | ||||||
|   val bits_arr = Vec(n) { Wire() { data } } |   val bits_arr = Vec(n) { data }  | ||||||
|   for(i <- 0 until n) { |   for(i <- 0 until n) { | ||||||
|     valid_arr(i) := io.in(i).valid |     valid_arr(i) := io.in(i).valid | ||||||
|     bits_arr(i) := io.in(i).bits |     bits_arr(i) := io.in(i).bits | ||||||
| @@ -270,7 +270,7 @@ object PriorityEncoderOH | |||||||
| { | { | ||||||
|   def apply(in: Bits): UFix = doApply(in, 0) |   def apply(in: Bits): UFix = doApply(in, 0) | ||||||
|   def doApply(in: Bits, n: Int = 0): UFix = { |   def doApply(in: Bits, n: Int = 0): UFix = { | ||||||
|     val out = Vec(in.getWidth) { Wire() { Bool() } } |     val out = Vec(in.getWidth) { Bool() } | ||||||
|     var none_hot = Bool(true) |     var none_hot = Bool(true) | ||||||
|     for (i <- 0 until in.getWidth) { |     for (i <- 0 until in.getWidth) { | ||||||
|       out(i) := none_hot && in(i) |       out(i) := none_hot && in(i) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user