zoukankan      html  css  js  c++  java
  • 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)
      }
    }
    
  • 相关阅读:
    clickhouse使用docker安装单机版
    nacos使用docker安装单机版
    第三周学习进度
    第二周学习进度
    二柱子四则运算定制版
    课堂测试小程序
    学习进度
    阅读计划
    自我介绍
    寻找水王
  • 原文地址:https://www.cnblogs.com/JamesDYX/p/10072892.html
Copyright © 2011-2022 走看看