2017-01-11 6 views
2

チゼルで次のコードが詳しく説明されない理由について、誰かに教えてもらえますか?私はUIntの個々のビットに割り当てることができないようです。これは設計によるものですか?UIntの個々のビットに割り当てられるチゼル

私は、同様の質問に対するJackの反応を見ましたが、ストランドのビット間で次のタイプのロジックが一般的であり、SVなどで簡単にパラメータ化されました.Boolsのベクトルと個々のビット、それでも中

def ffo(pwidth:Int, in:UInt) : UInt = { 
    val rval = Wire(UInt(width=pwidth)) 
    rval(0) := in(0) 
    for(w <- 1 until pwidth) { 
     rval(w) := in(w) & !(in(w-1,0).orR()) 
    } 
    rval 
    } 

結果...バックUINTに取得する方法の問題:

firrtl.passes.CheckGenders$WrongGender: @[Misc.scala 21:13:@5808.4]: [module IuIrRename] Expression T_1824 is used as a FEMALE but can only be used as a MALE. 
firrtl.passes.CheckGenders$WrongGender: @[Misc.scala 23:15:@5815.4]: [module IuIrRename] Expression T_1826 is used as a FEMALE but can only be used as a MALE. 
firrtl.passes.CheckGenders$WrongGender: @[Misc.scala 23:15:@5822.4]: [module IuIrRename] Expression T_1834 is used as a FEMALE but can only be used as a MALE. 
firrtl.passes.CheckGenders$WrongGender: @[Misc.scala 23:15:@5829.4]: [module IuIrRename] Expression T_1842 is used as a FEMALE but can only be used as a MALE. 
firrtl.passes.CheckGenders$WrongGender: @[Misc.scala 21:13:@5834.4]: [module IuIrRename] Expression T_1851 is used as a FEMALE but can only be used as a MALE. 

答えて

1

(および生成されたVerilogを見た後に)継続的な実験をした後、次のコードは同等です私が探していたもの:

def ffo(pwidth:Int, in:UInt) : UInt = { 
    val ary = Wire(Vec(pwidth, Bool())) 
    ary(0) := in(0) 
    for(w <- 1 until pwidth) { 
     ary(w) := in(w) && !(in(w-1,0).orR()) 
    } 
    val rval = Reverse(Cat(ary)) 
    rval 
    } 
関連する問題