首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >firrtl_interpreter.InterpreterException:错误: ConcreteSInt(303,9)宽度9需要10

firrtl_interpreter.InterpreterException:错误: ConcreteSInt(303,9)宽度9需要10
EN

Stack Overflow用户
提问于 2019-09-18 14:57:56
回答 1查看 30关注 0票数 2

我有一个生成以下FIRRTL的模块

代码语言:javascript
复制
module Deep_1 : 
    input clock : Clock
    input reset : UInt<1>
    output io : {in : {flip data : SInt<8>[4]}, constIn : {flip data : SInt<8>[4]}, ...}
    ...
    ... (elided)
    ...
    wire inputData : SInt<8>[4] @[Deep.scala 32:23]
    wire constInputData : SInt<8>[4] @[Deep.scala 33:28]
    reg outputData : SInt<8>[4], clock @[Deep.scala 34:23]
    inputData[2] <= io.in.data[2] @[Deep.scala 37:18]
    constInputData[2] <= io.constIn.data[2] @[Deep.scala 38:23]
    node _T_209 = add(inputData[2], constInputData[2]) @[package.scala 32:44]
    node _T_210 = tail(_T_209, 1) @[package.scala 32:44]
    node _T_211 = asSInt(_T_210) @[package.scala 32:44]
    outputData[2] <= _T_211 @[Deep.scala 39:19]
    ...
    ... (elided)
    ...

但是当我尝试通过firrtl解释器运行我的测试时,我得到

代码语言:javascript
复制
Exception during evaluation: error: ConcreteSInt(303, 9) bad width 9 needs 10  @[package.scala 32:44:@82.4]
Expression Evaluation stack
   0 dut.outputData_2:Reg -> dut._T_211
   1 dut._T_211:Node -> asSInt(dut._T_210)
   2 dut._T_210:Node -> tail(dut._T_209, 1)
   3 dut._T_209:Node -> add(dut.inputData_2, dut.constInputData_2)

如果我理解正确的话,它是说outputData[2]的宽度是9,但需要10。但是,在我看来,outputData[2]_T_211的宽度都应该是8,根据定义,第一个宽度应该是8,第二个宽度是应用了add()tail()操作的结果。

我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-19 00:59:36

你的软件有多新?我不能用当前版本的解释器重现这个问题。我在gist Attempt to reproduce firrtl-interpreter width error中使用了下面的firrtl测试,但没有省略。正如@Kamyar所说,你可以尝试使用Treadle后端吗?在这一点上,它比解释器更现代,也更受支持。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57986755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档