【FPGA】ILA抓取inout类型失败问题

本来IIC读写模块以及通过编译。但是在测试的时候, 要写代码。 碰到了问题,

想在top.v里面用下面的ILA来抓取i2c_sdat的信号。结果报错 [Synth 8-5744]

wire xx ;
assign xx = i2c_sdat;
ila0 ila(
.probe0(wr),
.probe1(done),
.probe2(i2c_sclk),
.probe3(xx) // 报错–>[Synth 8-5744] Inout buffer is not created at top module top for the pin i2c_sdat, other connections may not have buffer connection
);

意思就是这样不可以。 没法用ILA在顶层抓取波形。

那么换另外一种写法

ila0 ila(
.probe0(wr),
.probe1(done),
.probe2(i2c_sclk),
.probe3(i2c_sdat) //DRC
);

endmodule

i2c_sdat接到了probe3 , 结果在实现的时候, 报下面错
[DRC REQP-1582] iobuf_io_loaded: IOBUF U1/i2c_sdat_IOBUF_inst pin IO drives one or more invalid loads.
意思是 i2c_sdat_IOBUF 驱动了一个或者多个无效的负载。
i2c_sdat_IOBUF驱动了一个或者多个无效的信号。i2c_sdat 接到了一个或者多个信号上。

后来经过询问高手 , 高手给我的解释是, IIC-sdat信号,因为他是inout类型,在任何其他的.v里面不能连接到。

最后总结一句,如果要ILA抓取i2c_sdta 和 i2c_sclk 波形, 那么要在最底层里面,用来抓取波形。

inout类型的 信号,需要一个IOBUF。一旦综合后的电路里面没有产生IOBuf, 那么当读取iic信号上的数据的时候, 读到的都是FF.

你可能感兴趣的:(fpga开发)