gpt4 book ai didi

if-statement - always_comb 'if' 错误中的 SystemVerilog 'not purely combinational logic' 语句

转载 作者:行者123 更新时间:2023-12-02 00:57:34 25 4
gpt4 key购买 nike

我很困惑!有点沮丧。我花了很多时间在 Modelsim 中处理一些 SystemVerilog。我已经到了可以在我的硬件上测试它的某个阶段,但是在 Quartus 中编译是不成功的。我确实知道这可能会发生,但在这种情况下,我的错误似乎没有意义。

下面的代码在 always_comb block 中。编译时出现以下错误:

Error (10166): SystemVerilog RTL Coding error at fifo_interface.sv(80): always_comb construct does not infer purely combinational logic.

我真的不明白。这是代码,它只是一个多路复用器。

always_comb
if(fifo_select == 0)
begin
fifo0_data_in = data_in;
fifo0_in_clk = in_clk;
fifo0_in_dn = in_dn;
in_rdy = fifo0_in_rdy;

fifo1_in_clk = 0; //Prevent 'in_clk' entering fifo1
end

else
begin
if(fifo_select == 1)
begin
fifo1_data_in = data_in;
fifo1_in_dn = in_dn;
fifo1_in_clk = in_clk;
in_rdy = fifo1_in_rdy;

fifo0_in_clk = 0; //Prevent 'in_clk' entering fifo0
end
end
end

当我将 block 更改为键入“always”时,Modelsim 会表现得很奇怪。它会破坏代码或与退出代码 211 一起崩溃。将类型改回“always_comb”并不能解决问题,因此我必须重新启动 modelsim 才能成功模拟 HDL。

我想知道错误的来源是什么?

感谢您的帮助。

最佳答案

您没有在多路复用器的所有分支中分配所有输出。例如,如果 fifo_select == 0,则会分配 fifo0_data_in。但是如果 fifo_select == 1 那么它就没有值(value)。这意味着如果 fifo_select 发生变化,fifo0_data_in 需要记住它的值。因此,综合将推断出该输出的锁存器。

这是我认为你想要的:

always_comb
if(fifo_select == 0)
begin
fifo0_data_in = data_in;
fifo1_data_in = '0;
fifo0_in_clk = in_clk;
fifo1_in_clk = '0;
fifo0_in_dn = in_dn;
fifo1_in_dn = '0;
in_rdy = fifo0_in_rdy;
end

else
begin
fifo1_data_in = data_in;
fifo0_data_in = '0;
fifo1_in_clk = in_clk;
fifo0_in_clk = '0;
fifo1_in_dn = in_dn;
fifo0_in_dn = '0;
in_rdy = fifo1_in_rdy;
end
end

而且,由于您似乎将时钟门控到未使用的 FIFO,您可以进一步简化,如下所示:

assign fifo0_data_in = data_in;
assign fifo1_data_in = data_in;
assign fifo0_in_dn = in_dn;
assign fifo1_in_dn = in_dn;

always_comb
if(fifo_select == 0)
begin
fifo0_in_clk = in_clk;
fifo1_in_clk = '0;
in_rdy = fifo0_in_rdy;
end

else
begin
fifo0_in_clk = '0;
fifo1_in_clk = in_clk;
in_rdy = fifo1_in_rdy;
end
end

关于if-statement - always_comb 'if' 错误中的 SystemVerilog 'not purely combinational logic' 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32851475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com