【Lattice FPGA 开发】Diamond在线调试Reveal逻辑乱跳的解决

在Vivado中在always块中写逻辑时如果出现always块中的异步复位敏感词在块内部未使用的情况,如下例的rst:

复制代码
always @(posedge clk or posedge rst)
begin 	
	if(~tx_sense_flag)
		o_rd_adr <= 'd1;
    else if((o_rd_adr == 'd94) & (bit_cnt == 'd7))
        o_rd_adr <= 'd1;
	else if(bit_clk_en)
		o_rd_adr <= o_rd_adr + 7'd1;
    else
        o_rd_adr <= o_rd_adr;
end 

综合时出现[Synth 8-91] ambiguous clock in event control。

解决办法是在begin end 中加入复位初始化条件,或者删除@()中的 or posedge rst即可。

而在Diamond中对该情况不会进行报错。

这导致在调试时遇到Reveal抓取的逻辑与预期的并不相符,出现不规律乱跳的情况,如下图:

o_rd_adr应该在bit_clk_en为1时自加一,其他情况下保持不变。而实际中o_rd_adr并不是预期的效果。

解决办法:删除掉or posedge rst(由于块中未使用rst故改成同步复位),再进行调试即正确。

相关推荐
Moonnnn.2 小时前
【FPGA】时序逻辑计数器——仿真验证
fpga开发
三贝勒文子4 小时前
Synopsys 逻辑综合之 ICG
fpga开发·eda·synopsys·时序综合
byte轻骑兵4 小时前
【驱动设计的硬件基础】CPLD和FPGA
fpga开发·cpld
dadaobusi4 小时前
看到一段SVA代码,让AI解释了一下
单片机·嵌入式硬件·fpga开发
G2突破手2594 小时前
FMC、FMC+ 详解
fpga开发
fpga和matlab4 小时前
FPGA时序约束分析4——Reg2Reg路径的建立时间与保持时间分析
fpga开发·reg2reg·建立时间·保持时间
高沉4 小时前
2025华为海思数字IC面经
华为·fpga开发
伊宇韵4 小时前
FPGA - GTX收发器-K码 以及 IBERT IP核使用
fpga开发
门外的兔子4 小时前
【FPGA】Quartus Prime Lite 23.1 最新版 安装教程 ModelSim_18.1 下载安装 + 联调仿真教程 + 详细安装教程 2025最新
嵌入式硬件·fpga开发·1024程序员节
NurDroid4 小时前
300个fpga练手项目推荐
fpga开发