Modelsim仿真报错

#Modelsim仿真报错求助
用的是别人的代码,但是仿真报错是:Warning: read_during_write_mode_mixed_ports is assumed as OLD_DATA

Time: 0 Instance: tb_main.c1.d1.altsyncram_component.m_default.altsyncram_inst

有用到Ip核,不知道是什么原因。

TechWhizKid参考GPT回答:

  • 该警告是在使用ModelSim进行VHDL或Verilog仿真时,Altera IP核(在这种情况下是altsyncram)的一部分产生的。在这种情况下,RAM的读写时间模式冲突,即在同一时钟周期内,同时在同一个端口进行读写操作。

“read_during_write_mode_mixed_ports”参数定义了同步RAM在同一时钟周期内同时读取和写入时的行为。参数可以设为:

  1. "new_data":当写入新数据时,同步读取操作会读取新写入的数据。
  2. "old_data":当写入新数据时,同步读取操作会读取旧数据。

这个警告通常表明未明确设置这个参数,所以ModelSim假定其值为"old_data"。这不一定会导致仿真结果错误,但可能会影响其准确性。

如果你想消除这个警告,你可以在创建RAM实例时,明确设置"read_during_write_mode_mixed_ports"参数的值。具体设置方法取决于你使用的是VHDL还是Verilog,也取决于你的RAM实例如何创建。

如果你使用的是VHDL,你可能需要在RAM实例创建时设置这个参数,如下:

ram_inst : altsyncram
    generic map (
        ...
        read_during_write_mode_mixed_ports => "old_data",  -- or "new_data"
        ...
    )
    port map (
        ...
    );

如果你使用的是Verilog,设置方法可能如下:

altsyncram ram_inst (
    ...
)
#(
    ...
    .read_during_write_mode_mixed_ports("old_data"),  // or "new_data"
    ...
);

上述代码只是示例,并不一定完全符合你的代码。

一般是由于在时序逻辑中同时读写同一端口引起的。检查代码中是否有在时序逻辑中同时读写同一端口的情况,如果有需要进行修改。

这个仿真报错信息表明在模拟过程中发现了一些读写数据不一致的情况,并且这些情况是通过mix_ports模式引入的。

从报错信息来看,这是在使用altsycnram组件进行仿真时出现的问题,有可能是该组件的实例化参数不正确,或者与IP核的连接方式存在问题。

其中,Warning: read_during_write_mode_mixed_ports is assumed as OLD_DATA 是提醒信息,告诉你该组件的mix_ports模式的数据读写方式可能不符合现在的要求,但是仍然默认使用了OLD_DATA的数据。

建议您先检查该组件的实例化参数以及与IP核的连接方式是否正确。如果确认这些参数没有问题,您可以尝试更改组件的mix_ports模式,使数据的读写方式符合当前的要求。

ModelSim仿真失败解决办法
https://blog.csdn.net/qq_36665989/article/details/123083453

Warning: read_during_write_mode_mixed_ports is assumed as OLD_DATA这个只是一个警告不是一个错误,应该与你的错误关系不大。这个警告的意识大概意思就是i说,如果读写同一个地址时,读出的数据是写之前的数据,就是old_data。
你需要看下具体的错误信息是什么,你提供的这个错误'tTime: 0 Instance:还不够详细,这个错误可能是由于参数设置是否正确,特别是关于存储器容量、读写时序等参数。检查该组件的实例是否正确连接到其他组件,如时钟、数据总线等。

试试在IP核设置中将“读时写”模式设置为“写时读”