使用Cat运算符维护FIRRTL上的连接顺序

马库·卢拉吉

我想对以下问题提出任何想法:我想将名为dut块的输入端口连接到字节接口,该块的宽度为787:0位。我正在做如下:

val io = this.IO(new VerilatorHarnessIO(input_byte_count, output_byte_count*2))
val dut = Module(new DUT(dut_conf))

// inputs
val input_bytes = Cat(io.input_bytes)
val input_width = input_byte_count * 8
dut.io.inputs := input_bytes(input_width-1, input_width - dut_conf.inputBits)

我希望保留连接顺序,即:

字节_0 [7:0]->输入[7:0]

字节_1 [7:0]->输入[15:8]

但是我得到的是:

字节_0 [7:0]->输入[787:780]

字节_1 [7:0]->输入[779:772]

如果端口匹配,调试起来会容易得多。

有没有办法以正确的顺序进行此连接?谢谢

塞尔德里奇

reverseCat执行所需操作之前使用该方法

考虑以下凿子:

import chisel3._
import chisel3.stage.{ChiselStage, ChiselGeneratorAnnotation}
import chisel3.util.Cat

class Foo extends RawModule {
  val in = IO(Input(Vec(4, UInt(8.W))))
  val out = IO(Output(UInt(32.W)))

  out := Cat(in.reverse)
}

(new ChiselStage)
  .execute(Array.empty, Seq(ChiselGeneratorAnnotation(() => new Foo)))

这将产生以下Verilog,其字节顺序为您要寻找的:

module Foo(
  input  [7:0]  in_0,
  input  [7:0]  in_1,
  input  [7:0]  in_2,
  input  [7:0]  in_3,
  output [31:0] out
);
  wire [15:0] _T; // @[Cat.scala 29:58]
  wire [15:0] _T_1; // @[Cat.scala 29:58]
  assign _T = {in_1,in_0}; // @[Cat.scala 29:58]
  assign _T_1 = {in_3,in_2}; // @[Cat.scala 29:58]
  assign out = {_T_1,_T}; // @[<pastie> 25:7]
endmodule

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

列出java上布尔运算符的优先顺序

来自分类Dev

在对象上使用::运算符

来自分类Dev

使用 !Shell命令上的运算符

来自分类Dev

在packageVersion上使用比较运算符

来自分类Dev

在数组上使用->运算符

来自分类Dev

在Cloudkit谓词上使用OR运算符

来自分类Dev

在packageVersion上使用比较运算符

来自分类Dev

使用“:”时的运算符优先顺序(冒号)

来自分类Dev

在MongoDB中使用$ near运算符反转距离顺序

来自分类Dev

使用Unary运算符进行Pyparsing优先顺序中断

来自分类Dev

使用>>运算符

来自分类Dev

使用“ + =”运算符连接到可选数组

来自分类Dev

如何使用+运算符连接字符串

来自分类Dev

在C中使用##运算符连接字符串

来自分类Dev

使用日期宏的 SAS 连接运算符

来自分类Dev

连接查询中的列以使用“LIKE”运算符

来自分类Dev

何时在绑定运算符上使用相等运算符

来自分类Dev

Lambda上的运算符+

来自分类Dev

Java点运算符评估的顺序

来自分类Dev

按位运算符的优先顺序

来自分类Dev

运算符== C ++中的顺序

来自分类Dev

括号和赋值运算符顺序

来自分类Dev

比较运算符的评估顺序?

来自分类Dev

RxJS运算符执行顺序

来自分类Dev

调用运算符参数评估顺序

来自分类Dev

布尔运算符评估顺序

来自分类Dev

C ++中点运算符的求值顺序

来自分类Dev

操作顺序对增量运算符的影响

来自分类Dev

网格运算符上的最小运算符