Chisel 学习笔记(三)

Chisel 学习笔记(三)

Chisel example、测试、verilog生成

样例模块

package Passthrough
import chisel3._
class MAC extends Module{
  val io = IO(new Bundle{
    val in_a = Input(UInt(4.W))
    val in_b = Input(UInt(4.W))
    val in_c = Input(UInt(4.W))
    val out = Output(UInt(8.W))
  })

  io.out := io.in_a * io.in_b + io.in_c

}

对模块进行测试

package Passthrough
import chisel3._
import chisel3.iotesters.{Driver, PeekPokeTester}

//测试样例如下所示
class MACTester(c: MAC) extends PeekPokeTester(c) {
  val cycles = 100
  import scala.util.Random
  for (i <- 0 until cycles) {
    val in_a = Random.nextInt(16)
    val in_b = Random.nextInt(16)
    val in_c = Random.nextInt(16)
    poke(c.io.in_a, in_a)
    poke(c.io.in_b, in_b)
    poke(c.io.in_c, in_c)
    expect(c.io.out, in_a*in_b+in_c)
  }

}

//测试类如下所示
class test{
	assert(Driver(() => new MAC) {c => new MACTester(c)})
	println("SUCCESS!!")
}

//运行测试
object RunAppDemo {
  def main(args:Array[String]) {
    new test
  }
}

转换成verilog

经过测试后,将上述模块转换生成verilog的代码如下

object Main {
  def main(args: Array[String]): Unit = {
    println("Generating the Adder hardware")
    chisel3.Driver.execute(Array("--target-dir", "generated"), () => new MAC)
  }
}

转载于:https://www.cnblogs.com/JamesDYX/p/10072892.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值