Delete GCD.scala
This commit is contained in:
parent
5e73c9b102
commit
a39dfaabdf
|
@ -1,123 +0,0 @@
|
|||
package lib
|
||||
|
||||
import chisel3._
|
||||
import chisel3.util._
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
class rvdff(val Width:Int = 1, val short:Int = 0) extends Module with RequireAsyncReset {
|
||||
val io = IO(new Bundle {
|
||||
val in = Input(UInt(Width.W))
|
||||
val out = Output(UInt())
|
||||
})
|
||||
val inter = if(short==0) RegNext(io.in, init =0.U) else io.in
|
||||
io.out := inter
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////
|
||||
class caller extends Module {
|
||||
val io = IO(new Bundle {
|
||||
val in = Input(UInt(32.W))
|
||||
val out = Output(UInt())
|
||||
})
|
||||
val u0 = Module(new rvdff(32))
|
||||
io <> u0.io
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
class reg1 extends Module with RequireAsyncReset{
|
||||
val io = IO(new Bundle{
|
||||
val in = Input(Bool())
|
||||
val out = Output(Bool())
|
||||
})
|
||||
|
||||
io.out := RegNext(io.in, init = 0.U)
|
||||
}
|
||||
|
||||
class top extends Module with RequireAsyncReset{
|
||||
val io = IO(new Bundle{
|
||||
val in = Input(Bool())
|
||||
val out = Output(Bool())
|
||||
})
|
||||
val negReset = (~reset.asBool).asAsyncReset
|
||||
val r0 = Module(new reg1)
|
||||
r0.io<>io
|
||||
r0.reset := negReset
|
||||
}
|
||||
///////////////////////////////////////////////////////////////
|
||||
class rvbradder() extends Module {
|
||||
val io = IO(new Bundle {
|
||||
val pc = Input(UInt(31.W))
|
||||
val offset = Input(UInt(12.W))
|
||||
val dout = Output(UInt())
|
||||
})
|
||||
val inter = io.pc(11,0) +& io.offset
|
||||
val cout = inter(inter.getWidth-1)
|
||||
val pc_inc = io.pc(io.pc.getWidth-1, 12) + 1.U
|
||||
val pc_dec = io.pc(io.pc.getWidth-1, 12) - 1.U
|
||||
val sign = io.offset(io.offset.getWidth -1)
|
||||
|
||||
io.dout:= Cat(Fill(19,(sign ^(~cout))) & io.pc(io.pc.getWidth-1,12) |
|
||||
(Fill(19,(~sign & cout)) & pc_inc) |
|
||||
(Fill(19,(sign & ~cout)) & pc_dec) , inter(inter.getWidth-2,0))
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
class encoder_generator(val width:Int=4) extends Module {
|
||||
val io = IO (new Bundle {
|
||||
val in = Input (UInt(width.W))
|
||||
val out = Output (UInt(log2Ceil(width).W))
|
||||
})
|
||||
var z:Array[UInt] = new Array[UInt](width)
|
||||
for(i<- 0 until width){
|
||||
z(i) = i.U
|
||||
}
|
||||
io.out := Mux1H(io.in , z)
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
class rvrangecheck(val CCM_SADR:Int = 0, val CCM_SIZE:Int = 128) extends Module {
|
||||
val io = IO(new Bundle {
|
||||
val addr = Input(UInt(32.W))
|
||||
val in_range = Output(Bool())
|
||||
val in_region = Output(Bool())
|
||||
//val test = Output(UInt())
|
||||
})
|
||||
val start_addr = (CCM_SADR.U)(32.W)
|
||||
val region = start_addr(31,28)
|
||||
val MASK_BITS = 10+log2Ceil(CCM_SIZE)
|
||||
io.in_region := io.addr(31,28) === region
|
||||
val inter = if(CCM_SIZE == 48) io.addr(31, MASK_BITS) === start_addr(31, MASK_BITS) & ~(io.addr(MASK_BITS-1,MASK_BITS-2).andR)
|
||||
else (io.addr(31,MASK_BITS)===start_addr(31,MASK_BITS))
|
||||
io.in_range := inter
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
class tocopy extends Module{
|
||||
val io = IO(new Bundle {
|
||||
val in1 = Input(UInt(1.W))
|
||||
val in2 = Input(UInt(1.W))
|
||||
val out = Output(UInt())
|
||||
})
|
||||
io.out := io.in1 +& io.in2
|
||||
}
|
||||
class exp extends Module{
|
||||
val io = IO(new Bundle{
|
||||
val in1 = Input(UInt(1.W))
|
||||
val in2 = Input(UInt(1.W))
|
||||
val out = Output(UInt())
|
||||
})
|
||||
|
||||
val mod_array= new Array[tocopy](2)
|
||||
mod_array(0) = Module(new tocopy)
|
||||
mod_array(0).io.in1:=io.in1
|
||||
mod_array(0).io.in2:=io.in2
|
||||
mod_array(1) = Module(new tocopy)
|
||||
mod_array(1).io.in1:=io.in1
|
||||
mod_array(1).io.in2:=io.in2
|
||||
io.out:= mod_array(0).io.out +& mod_array(1).io.out
|
||||
}
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
//println((new chisel3.stage.ChiselStage).emitVerilog(new exp))
|
Loading…
Reference in New Issue