如何删除chisel3 top模块上的时钟信号?

How to delete clock signal on chisel3 top module?

我有一个使用差分时钟输入(xilinx AC701 套件)的闪烁 LED 设计。 如 jkoening :

所述,为了实例化 Xilinx 差分缓冲器,我使用了一个 BlackBox
class Top extends Module {
  val io = IO(new Bundle{
    val clock_p = Input(Clock())
    val clock_n = Input(Clock())
    val led = Output(Bool())
  })

  val ibufds = Module(new IBUFDS)
  ibufds.io.I := io.clock_p
  ibufds.io.IB:= io.clock_n

  val blink = Module(new Blink)
  blink.clock := ibufds.io.O
  io.led := blink.io.led  

}

可以,但是在 Top verilog 模块上我有一个无用的时钟输入:

module Top(
  input   clock,
  input   reset,
  input   io_clock_p,
  input   io_clock_n,
  output  io_led
);
...

然后在目标上只有io_clock_pio_clock_n用于时钟输入。 clock 信号没用。有没有合适的方法隐藏它?

目前无法删除甚至重命名 Chisel 模块上的 clockreset。他们总是在那里。由于 Chisel 使用上升沿时钟,您可以考虑删除 io_clock_p 并改用 clock

这是一个经常被请求的功能,因此将来可能会添加,但目前不支持。

在 Chisel3 团队 discussion 之后,添加了一个功能来支持这一点。

解决方案是使用 RawModule:

class Top extends RawModule {
  val clock_p = IO(Input(Clock()))
  val clock_n = IO(Input(Clock()))
  val led = IO(Output(Bool()))

  val ibufds = Module(new IBUFDS)
  ibufds.io.I := clock_p
  ibufds.io.IB:= clock_n

  withClockAndReset(ibufds.io.O, false.B) {
    val blink = Module(new Blink)
    led := blink.io.led
  }
}

原始模块没有隐式信号,名称在 verilog 生成的文件中反映为“有它”,前缀中没有“io_”。

this github project 上提供了完整闪烁 LED 项目的源代码(闪烁 LED 项目:blp)。

Here 是关于如何操作的法语描述。要使用此功能,必须使用 chisel3 的最后一个 git master 版本。