1///**************************************************************************************** 2// * Copyright (c) 2020-2021 Institute of Computing Technology, Chinese Academy of Sciences 3// * Copyright (c) 2020-2021 Peng Cheng Laboratory 4// * 5// * XiangShan is licensed under Mulan PSL v2. 6// * You can use this software according to the terms and conditions of the Mulan PSL v2. 7// * You may obtain a copy of Mulan PSL v2 at: 8// * http://license.coscl.org.cn/MulanPSL2 9// * 10// * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, 11// * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, 12// * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. 13// * 14// * See the Mulan PSL v2 for more details. 15// **************************************************************************************** 16// */ 17// 18// 19//package xiangshan.backend.fu.vector 20// 21//import org.chipsalliance.cde.config.Parameters 22//import chisel3._ 23//import utils._ 24//import yunsuan.vector.mac.VIMac 25//import yunsuan.VimacType 26//import xiangshan.{XSCoreParamsKey, FuType} 27// 28// 29// 30//class VIMacWrapper(implicit p: Parameters) extends VPUDataModule { 31// 32// needReverse := false.B 33// needClearMask := false.B 34// 35// // connect VIMac 36// val vImac = Module(new VIMac) 37// vImac.io.in.valid := io.in.valid 38// vImac.io.in.bits.opcode := VimacType.getOpcode(in.uop.ctrl.fuOpType).asTypeOf(vImac.io.in.bits.opcode) 39// vImac.io.in.bits.info.vm := in.uop.ctrl.vm 40// vImac.io.in.bits.info.ma := in.uop.ctrl.vconfig.vtype.vma 41// vImac.io.in.bits.info.ta := in.uop.ctrl.vconfig.vtype.vta 42// vImac.io.in.bits.info.vlmul := in.uop.ctrl.vconfig.vtype.vlmul 43// vImac.io.in.bits.info.vl := in.uop.ctrl.vconfig.vl 44// vImac.io.in.bits.info.vstart := vstart // TODO : 45// vImac.io.in.bits.info.uopIdx := in.uop.ctrl.uopIdx 46// vImac.io.in.bits.info.vxrm := vxrm 47// 48// val srcVdType = Wire(new Bundle{ 49// val srcType2 = UInt(4.W) 50// val srcType1 = UInt(4.W) 51// val vdType = UInt(4.W) 52// }) 53// srcVdType := VimacType.getSrcVdType(in.uop.ctrl.fuOpType, in.uop.ctrl.vconfig.vtype.vsew(1,0)).asTypeOf(srcVdType.cloneType) 54// vImac.io.in.bits.srcType(0) := srcVdType.srcType2 55// vImac.io.in.bits.srcType(1) := srcVdType.srcType1 56// vImac.io.in.bits.vdType := srcVdType.vdType 57// vImac.io.in.bits.vs1 := vs1 58// vImac.io.in.bits.vs2 := vs2 59// vImac.io.in.bits.old_vd := in.src(2) 60// vImac.io.in.bits.mask := mask 61// 62// // connect io 63// io.out.bits.data := vImac.io.out.bits.vd 64// vxsat := vImac.io.out.bits.vxsat 65// io.out.valid := vImac.io.out.valid 66//} 67// 68//class VIMacU(implicit p: Parameters) extends VPUSubModule(p(XSCoreParamsKey).VLEN) { 69// XSError(io.in.valid && io.in.bits.uop.ctrl.fuOpType === VimacType.dummy, "Vimac OpType not supported") 70// override val dataModule = Seq(Module(new VIMacWrapper)) 71// override val select = Seq( 72// io.in.bits.uop.ctrl.fuType === FuType.vimac 73// ) 74// connectDataModule 75//} 76