2017-07-18 17 views
0

似乎是凿子2和凿子3之间的按位否定运算符的错误或未记录的更改。Chisel3:按位否定运算符

Chisel3代码不工作的线含有生成

import chisel3._ 

class bitwise_neg extends Module { 
    val io = new Bundle { 
     val in = Input(UInt(4.W)) 
     val out = Output(UInt(4.W)) 
    } 
    io.out := ~io.in 
} 

错误消息 “〜”:

type mismatch; found :()chisel3.core.Bits required: chisel3.core.Data 

Chisel2工作​​代码

import Chisel._ 

class bitwise_neg extends Module { 
    val io = new Bundle { 
     val in  = UInt(INPUT, 4) 
     val out  = UInt(OUTPUT, 4) 
    } 

    io.out := ~io.in 
} 

在新Chisel3语法任何意见或如果这是一个错误?

+0

您提供的chisel3代码应工作,我有运行你的例子(1种小的变化没有问题,在chisel3你需要用你的IO包用'IO(.. 。)')。你能分享更多关于你的构建环境吗? – jkoenig

+0

我在Windows上使用Scala IDE。我使用SBT来使用scalaVersion 2.11.8生成Eclipse项目。和凿子3.0-SNAPSHOT – plenn08

+0

适用于我在MacOS上使用该scala版本和凿子3快照,我无法想象IDE或Windows如何在这里产生影响。你能分享完整的错误信息和堆栈跟踪吗? – jkoenig

回答

0

该问题与~无关,即使您删除了~,也会得到相同的错误。正如jkoenig说,chisel3要求您缠绕IO束在IO()这样的:

class bitwise_neg extends Module { 
    val io = IO(new Bundle { 
    val in = Input(UInt(4.W)) 
    val out = Output(UInt(4.W)) 
    }) 
    io.out := ~io.in 
} 

如果你想要的(但我不会推荐它),你可以使用兼容使用chisel2符号层chisel3资本凿import import Chisel._

import Chisel._ 

class bitwise_neg extends Module { 
    val io = new Bundle { 
    val in = UInt(INPUT, 4.W) 
    val out = UInt(OUTPUT, 4.W) 
    } 
    io.out := io.in 
} 
+0

我仍然使用IO()包装器获得相同的行为。也许问题出在Eclipse解释器上? Chisel3在Eclipse中产生这个警告,我使用〜值unary_〜不是()chisel3.core.UInt的成员 – plenn08