Chisel Language II
本文归纳总结于Chisel的官方tutorial:https://mybinder.org/v2/gh/freechipsproject/chisel-bootcamp/master 3 Generators 3.1 Parameters Chisel提供了一个非常强大的自定义硬件生成器的功能,这一节的主要知识便是如何去正确传递参数值来实现自定义hardware。 3.1.1 参数传递 import chisel3._ import chisel3.util._ class ParameterizedWidthAdder ( in0Width : Int , in1Width : Int , sumWidth : Int ) extends Module { require(in0Width >= 0 ) require(in1Width >= 0 ) require(sumWidth >= 0 ) val io = IO ( new Bundle { val in0 = Input ( UInt (in0Width. W )) val in1 = Input ( UInt (in1Width. W )) val sum = Output ( UInt (sumWidth. W )) }) // a +& b includes the carry, a + b does not io.sum := io.in0 +& io.in1 } object ParameterizedWidthAdder extends App { ( new chisel3.stage. ChiselStage ).emitVerilog( new ParameterizedWidthAdder ( 1 , 4 , 6 )) println(getVerilogString ( new ParameterizedWidthAdder ( 1 , 4 , 6 ) )) } 以上代码可以生成一个自定义的位数的adder,如在生产的verilog中使用了1位的io.in0,4位的io.in1和6位的sum。其中+&