【问题标题】:Printing UInt and SInt values in CHISEL在 CHISEL 中打印 UInt 和 SInt 值
【发布时间】:2020-07-02 05:56:19
【问题描述】:

是否可以在 CHISEL 中打印 UInt 和 SInt 值?

我在一个模块中有下面的代码。

  val foo = 0.S(2.W)
  var min : SInt = -2.S 
  println(s"DEEEEBUG Values of foo: $foo min: ${min.toString()}")
  min= min + 1.S
  println(s"min: ${min.toString()}") 

但是最后一行没有打印出正确的 min 值。这是输出

DEEEEBUG Values of foo: SInt<2>(0) max: SInt<2>(-2)
min: SInt<2>(OpResult in TwoLevelBpred)

加法后如何打印min的值?

【问题讨论】:

    标签: chisel


    【解决方案1】:

    简单的答案是你应该做这样的事情。

    class MyCircuit extends MultiIOModule {
      val foo = 0.S(2.W)
      var min : SInt = -2.S
      printf(s"DEEEEBUG Values of foo: %d min: %d\n", foo, min)
      val sum = min + 1.S
      printf(s"sum: %d\n", sum) 
    }
    

    Chisel 是一个电路发生器。当你的代码被编译和运行时,电路就建立起来了。 Println 是仅在电路构建期间发生的 scala 构造。然后必须由某种模拟器执行构建的电路。 Printf 可用于在仿真期间打印电路中的值。我建议您通过Chisel Bootcamp 了解更多关于凿子的工作原理。

    我在您的示例中引入了新的变量/线路总和,因为min = min + 1.S 的含义与您在普通软件程序中所期望的不同。再次检查训练营

    【讨论】:

    • 谢谢。我确实经历了大部分训练营。但由于我是新手,有时我会忘记什么是 CHISEL 变量以及什么是 SCALA 变量。当我使用 printf 时工作。我需要在测试仪中执行步骤 (1) 才能进行打印
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    • 2023-03-04
    相关资源
    最近更新 更多