首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用FIRRTL注释连接多位线和引脚

使用FIRRTL注释连接多位线和引脚
EN

Stack Overflow用户
提问于 2019-10-07 11:50:51
回答 1查看 112关注 0票数 4

我正在编写一些firrtl转换,并使用注释连接引脚和连接线,例如:

代码语言:javascript
复制
 val named = ComponentName(inputWire.name, ModuleName(mod.name, CircuitName(top)))
 val anno = Traversable(SinkAnnotation(named, pinName))

inputWire是:

代码语言:javascript
复制
 val inputWire = DefWire(NoInfo,localNS.newTemp, con.expr.tpe)

pinName是一个字符串:

代码语言:javascript
复制
val pinName = namespace.newName(faultPinPrefix)

如果inputWire的类型是UIntType(IntWidth(2)),或者在其他一些情况下可能超过2。

在这个转换之后,我运行firrtl.passes.wiring.WiringTransform来发出连接,我现在面临的问题是verilog输出如下所示:

代码语言:javascript
复制
input       faultPin_0
//...
//Some code
//..
 assign _GEN_1 = {{1'd0}, faultPin_0};

这不是我所期望的行为。它只创建一个1位的输入端口,并将其连接起来,生成2位信号。可能问题是,我没有指定端口的类型,而是让编译器来决定它,它正在自动创建一个1位端口。是否有任何方法可以使用注释来建立这种连接,或者我应该集中精力寻找另一种更可行的方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-07 15:14:08

WiringTransform将连接多位组件并执行包括这方面的测试

然而,引脚的类型是源的函数而不是接收器的函数。你能证实你的源也是一个多位信号吗?

对于上面引用的测试,请使用以下FIRRTL:

代码语言:javascript
复制
circuit Top :
  module Top :
    input clk: Clock
    inst x of X
    x.clk <= clk
    reg r: UInt<5>, clk
  module X :
    input clk: Clock
    wire s: UInt<5>

以及以下说明:

  • SourceAnnotation(ComponentName("r", ModuleName("Top", CircuitName("Top"))), "pin")
  • SinkAnnotation(ComponentName("s", ModuleName("X", CircuitName("Top"))), "pin")

在运行WiringTransform时产生以下电路

代码语言:javascript
复制
circuit Top :
  module Top :
    input clk: Clock
    wire r_0 : UInt<5>
    inst x of X
    x.clk <= clk
    reg r: UInt<5>, clk
    x.pin <= r_0
    r_0 <= r
  module X :
    input clk: Clock
    input pin: UInt<5>
    wire s: UInt<5>
    s <= pin

这似乎是对的。但是,如果我把源设为1位信号(reg r: UInt<1>, clk),那么引脚也将是1位(input pin : UInt<1>).

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

https://stackoverflow.com/questions/58269003

复制
相关文章

相似问题

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