我得到了下面的io.out(i) := Cat(io.in1(0) ,io.in2)行的凿错误。什么意思?我该如何纠正这个问题呢?请帮帮忙。
type mismatch;
[error] found : chisel3.core.UInt
[error] required: T
[error] io.out(i) := Cat(io.in1(0) ,io.in2)
type mismatch;
[error] found : chisel3.core.Vec[chisel3.core.UInt]
[error] required: T
[error] io.o
我得到了以下错误。但我无法从打印的错误消息中理解问题。
run
[info] Running HyperCell.SwitchTopMain
[info] [0.340] // COMPILING < (class HyperCell.SwitchTop)>(9)
[error] switchTop.scala:28: := not defined on class Chisel.UInt and class Chisel.Vec in class HyperCell.SwitchTop$$anonfun$2
[error] switchTop.scala:28: := not d
下面的代码行val mod_subexp_array = Vec(9, Module(new SubTaylor(fepar)).io)会产生以下错误:
chisel3.package$ExpectedChiselTypeException: vec type 'AnonymousBundle(IO io in SubTaylor)' must be a Chisel type, not hardware
模块SubTaylor是我编写的一个模块,我通过IO端口与它进行接口。我的目标是创建这些SubTaylor模块的9个实例,并使用它们的IOs将它们链接在一起。为了解决上面的问
在编写Chisel代码时,如何将重置信号添加到生成的Verilog代码中的灵敏度列表中,例如D触发器下面的代码:
val x = Reg(init = UInt(0, width = 1))
x := io.D
io.Q := x
将生成Verilog代码如下:
always @(posedge clk) begin
if(reset) begin
x <= 1'h0;
end else begin
x <= io_D;
end
end
正如所看到的,重置与时钟是同步的,如何编写Chisel代码以生成如下内容
sbt无法识别捆绑包。错误如下: [error] /home/xxx/src/main/scala/NoC.scala:12:8: value Grant is not a member of chisel3.Bundle
[error] io.Grant := io.Req & !io.Rls
[error] ^
[error] /home/xxx/src/main/scala/NoC.scala:12:20: value Req is not a member of chisel3.Bundle
[error] io.Grant := io.Req
有人能解释一下这个结构的问题是什么吗?我有一个具有IO Vec的子模块,我正尝试将其附加到父模块中的等效IO。 这只适用于Seq,但在精化过程中,当包装在Vec中时,我会得到一个异常。Vec是必需的,因为在我的实际案例中,它是以子模块中的硬件信号为索引的。 错误: [error] chisel3.internal.ChiselException: Connection between left (MyBundle[3](Wire in Lower)) and source (MyBundle[3](Wire in Upper)) failed @(0).out: Left or Right
当我想转换代码凿到verilog与黑盒,我有错误。我怎么才能修复它?
[error] /data/workspace/chisel/chisel3-3.1.8/src/main/scala/tap/dti_bypass_register.scala:45:18: overloaded method value execute with alternatives:
import chisel3._
import chisel3.util._
class dti_bypass_register extends BlackBox with HasBlackBoxResource {
val
chisel2和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中,我希望创建一个具有参数化类型的泛型Bundle ParamsBus。然后,我学习了Chisel3网站上的例子:
class ParamBus[T <: Data](gen: T) extends Bundle {
val dat1 = gen
val dat2 = gen
override def cloneType = (new ParamBus(gen)).asInstanceOf[this.type]
}
class TestMod[T <: Data](gen: T) extends Module {
val io = IO(new
我试图把一个操作符传递给一个模块,这样模块就可以泛化构建了。我传递一个双输入操作符参数,然后使用它在一个缩减操作。如果我用一个具体的运算符替换传递的参数,这是可以的。
传递Chisel/UInt/Data运算符作为模块参数的正确方法是什么?
val io = IO(new Bundle {
val a = Vec(n, Flipped(Decoupled(UInt(width.W))))
val z = Decoupled(UInt(width.W))
})
val a_int = for (n <- 0 until n) yield DCInput(io.a
我正在寻找一个简单的如何转换一个简单的Chisel3模块在Verilog。
我把官方网页上给出的Gcd源代码放在chisel上。
import chisel3._
class GCD extends Module {
val io = IO(new Bundle {
val a = Input(UInt(32.W))
val b = Input(UInt(32.W))
val e = Input(Bool())
val z = Output(UInt(32.W))
val v = Output(Bool()
对于让一些Chisel2代码在Chisel3均衡中工作感兴趣,我成功地获得了Chisel2 chisel教程示例(如FullAdder )。
class FullAdder extends Module {
val io = new Bundle {
val a = UInt(INPUT, 1)
val b = UInt(INPUT, 1)
val cin = UInt(INPUT, 1)
val sum = UInt(OUTPUT, 1)
val cout = UInt(OUTPUT, 1)
}
// Gen
从现有的Chisel代码生成Verilog代码的最简单方法是什么?
我需要创建我自己的构建文件吗?
例如,来自独立scala文件 (AND.scala),如下所示。
import Chisel._
class AND extends Module {
val io = IO(new Bundle {
val a = Bool(INPUT)
val b = Bool(INPUT)
val out = Bool(OUTPUT)
})
io.out := io.a & io.b
}
我在ubuntu16.4下安装了完整的Chisel3工具链。
我正在为SoC开发一个简单的片上存储器,它是基于Sodor划痕存储器的。所以,首先,我要把这个设计的一个稍微修改的版本转换成凿子3。现在,我得到了一个我无法理解的有界类型的异常。
[info] - should correctly write and read data *** FAILED ***
[info] chisel3.core.Binding$BindingException: Error: Cannot set as output .M_WR: Already bound to LitBinding()
[info] at chisel3.core.Binding$.bi
我试图为我的IO定义Vector of Vector,但是我得到了一个错误,它说:
vec element 'Vec(chisel3.util.DecoupledIO@2b57)' must be hardware, not a bare Chisel type
我写的代码如下所示:
//Module's argument
,val ArgsOut: Array[Int]
...
...
val Args = for (i <- 0 until ArgsOut.length) yield {
val arg = Vec(ArgsOut(i),
我正在尝试将BlackBox连接到任意的Bundle,但是宽度推断似乎不适用于fromBits函数。下面的代码可以正常编译:
class testBundle extends Bundle {
val io1 = Bool(INPUT)
val io2 = UInt(INPUT,10)
}
class testBox extends BlackBox {
val io = new Bundle {
val in = Bits(INPUT) # Width inference works fine here
val out = Bits(OUTPUT,(new te
考虑以下代码:
import chisel3._
import chisel3.util._
import chisel3.iotesters._
class Inverter extends Module {
val io = IO(new Bundle {
val a = Input(UInt(4.W))
val s = Output(UInt(4.W))
})
io.s := ~io.a
}
class InverterTester(c: Inverter) extends PeekPokeTester(c) {
poke(c.io.a, 8)
s
我想测试寄存器向量( registerFile)。下面是一个读取寄存器文件索引值的函数:-
class ViewRegFile(regnum: Int, size: Int) extends Module {
val io = IO(new Bundle {
val registers = Input(Reg(Vec(regnum,UInt(size.W))))
val inputs = Input(UInt(size.W))
val ok = Input(UInt(1.W))
val values = Output(UInt(size.W))
})
请考虑以下代码:
import chisel3.experimental.ChiselEnum
object MyEnum extends ChiselEnum {
val A, B = Value
}
class UseEnumIO extends Module {
val io = IO(new Bundle {
val in = Input(UInt(1.W))
val out = Output(Bool())
})
io.out := MuxLookup(io.in, false.B, Array(
MyEnum.A -> true.
我有一个用Chisel编写的复杂模块。我正在使用chiseltest来验证它的操作。测试失败。我希望能够检查模块的内部连接值,以调试哪里出了问题。由于PeekPokeTester只允许我检查io信号的值,我如何检查内部导线? 下面是一个示例: import chisel3._
class MyModule extends Module {
val io = IO(new Bundle {
val a = Input(Bool())
val b = Input(Bool())
val c = Input(Bool())
val d = Output(Boo
我在我的chiselMainTest列表中添加了“-后端”和"v“,虽然我得到了verilog输出,但我也得到了一个构建错误:
In file included from ./vpi.cpp:1:
./vpi.h:4:10: fatal error: 'vpi_user.h' file not found
#include "vpi_user.h"
^
1 error generated.
sbt运行的完整列表如下:
BigKiss:chisel mykland$ sbt run
[info] Set current project t
我是新接触Chisel HDL的,我发现Chisel HDL确实提供了定点重新表示。(我找到了这个链接:)
当我在chisel hdl中尝试它时,它实际上不起作用:
import Chisel._
class Toy extends Module {
val io = new Bundle {
val in0 = SFix(4, 12).asInput
val in1 = SFix(4, 12).asInput
val out = SFix(4, 16).asOutput
chisel代码(如下所示)通过测试并得到编译,但是在试图生成verilog文件时会出现错误。
凿子码:
import chisel3._
import chisel3.core.VecInit
import chisel3.util._
//A n-bit adder with carry in and carry out
class AdderNbit(val n: Int) extends Module {
val io = IO( new Bundle {
val A = Input(UInt(n.W))
val B = Input(UInt(n.W))
val
我有一个带有数据总线IO的chisel3模块,可以使用bundle (在模块中)将其重新解释为某些指令/命令:
......
//io.data is for example UInt(64.W)
val cmdInterface = new CommandInterface() // this is a bundle of signals
val cmd = io.data.asTypeof(cmdInterface)
......
我可以在模块定义中进行重新解释,但这在PeekPokeTester中是不可能的:
//using the tester:
poke(c.io.data.a
这是我想要完成的:我有一个Chisel加速器,它调用另一个Chisel加速器并传入一个值。我希望第二个函数中有一个while循环,其中的条件部分基于输入值。下面是一些示例代码:
class Module1 extends Module {
val in = 0.U
val Module2Module = Module2()
Module2Module.io.in := in
}
class Module2 extends Module {
val io = IO(new Bundle {
val in = Input(Reg(UInt))
我创建了一个名为SaturatingCounter的CHISEL (扩展)模块(如果相关的话,下面的代码)。
我希望在另一个模块中有一个这些计数器的数组/Seq。
编辑:我找到了。但当我尝试
val vec_of_elements = Vec.fill(10) {Module(SaturatingCounter(4)).io}
我犯了个错误
Error:(72, 29) value fill is not a member of object chisel3.Vec
val vec_of_elements = Vec.fill(10) {Module(SaturatingCounter(