2

这是我最好的猜测,但看起来生成的行为 Verilog 在合成时不会导致简单的透明锁存器:

// DXP Latch
val dxp = config(2) & config(0)
val latch = Reg( lut.io.out )
val out = Mux( dxp, latch, lut.io.out ) 

我很欣赏你对此的想法。

4

1 回答 1

1

Chisel 不支持闩锁。Reg()只会生成边沿触发的状态元素。

如果您真的想要闩锁,则必须修改 Chisel 的后端以了解新Latch()结构并生成适当的 Verilog。然而,这会让你陷入困境,首先你可能会抛弃同步的、边缘触发的时序模型(它允许像 C++ 仿真器这样的东西工作)。

根据我们的经验,任何需要锁存器某些属性的关键应用程序都将由综合工具自动处理(如时间借用)。

于 2015-10-20T20:29:18.687 回答