描述
关键字:RTL、RAMB4、RAMB16、违反、尊敬、Verilog、VHDL、BRAM、块RAM
当运行RTL仿真时,双端口块RAM发生以下类型的错误:
ISI.62i和更高的消息
对于VHDL和Verilog
“RAMB16S3636S36内存冲突错误:lt;StaseNo.No.gt;
在RAM的端口A和Port B同时请求写入相同的地址。在端口A的地址位置&地址> gt;(HEX)和端口B的地址位置&地址(gx;(HEX))写入RAM的内容是未知的。
ISE中的消息在62I之前发布
Verilog
“定时违反错误:在仿真时间α时,设置时间为违反RAMB实例和LT;StimeNyNo.Gt..DistPrime0在ClKB端口上的仿真时间。预计安装时间为100。
VHDL语言
“* * *警告:*/RAMB在CKA上对CKKB设置高度违反;
期望值:=0.1纳秒;观察到:=αns;AT:α-ns
时间:πππ迭代:1实例:<
当我在一个端口上写入一个地址并从另一个端口上的地址读取时,就会发生这些违规行为。这是一个违规,因为读取端口上读取的数据无效。在硬件中,读取的值可能是旧数据、新数据或旧与新的组合。在仿真中,输出是“x”,因为读取的值是未知的。欲了解更多信息,请参阅ViTEX II平台FPGA用户指南:
HTTP://www. xLimx.COM/XLNX/XWeb/XILIPu外宣SyDePas.jSP?SGulalNavPox&=;SdiaLaNavaPoice=&类别=-1209831和iLangaGID=1
进入设计考虑-&块;StEICAM存储器-冲突解决。
解决方案
一
你应该尽可能避免碰撞。当一个地址写入一个端口时,您的设计不应该允许从另一个端口上的相同地址读取。然而,在某些应用中,这是不能避免的。只要在设计中不使用第二个端口上读取的值,就可以安全地忽略这些违规行为。
注意:对于IS7.7.1i和更高,请参阅(赛灵思解答21239).
二
VHDL工作
注意:仿真中的碰撞警告是有效的!只有当您确信可以安全地忽略警告时,才应禁用冲突检查。只有当您不使用在发生违规时读取的数据时,才可以忽略这些警告。例如,在FIFO应用程序中,读取端口总是由于时序原因而启用,每当FIFO为空且写入数据时,就会发生违规。在这种情况下,违反是有效的,但是在设计中不使用读取的值,因此可以忽略该违反。使用下面的方法来处理类似的情况:
1。将配置语句添加到TestBoobe中,将块RAM模型中的设置更改为“0”,如下面的示例所示:
实例配置语句:
测试平台的配置MyICONFIG
为行为
UUT:顶部
为行为
对于RAM1,RAM2,RAM3:RAMB4S1S1使用实体UNISIM.RAMB4S1S1
通用映射(StuuPuthALL=& 0 ns);
结束;
结束;
结束;
结束;
结束MyIn配置;
此配置语句将设置时间设置为RAM1、RAM2和RAM3实例的“0”。所有其他BRAM在设计中仍有安装时间,并将标记碰撞警告。这三个RAM不再标记碰撞警告。
2。根据设计层次结构和设计中的实体、体系结构和实例名称更改配置语句。一般格式如下:
TestStand &;;
TestStand & GT中的架构名称;
在TestStudio&Gt中给予顶层的实例名称:顶层实体名称& GT;
顶级建筑名称;
对于下一级层次结构的实例名>:lt;层次结构的下一级的实体名称>
层次结构下一级的体系结构名称& GT;
:
:
对于和BLAM实例名称><bram实例名>& BLAM模型名称& Gt;使用实体UNISIM.&;BRAM模型名称& GT;
通用映射(StuuPuthALL=& 0 ns);
结束;
:
:
结束;
结束;
结束;
配置名称;
三。在加载设计时,必须加载TestBead中的配置语句,而不是架构。
三
Verilog工作
如果您确信碰撞违规可以被安全地忽略,那么您可以通过禁用在选定的块RAM上的碰撞警告来解决这个问题,如下所述。
ISE 61I方法论
表演一下列内容:
-编译您正在使用的单个RAM模型,并定义Dabable SurrimyOnCurror。
-设置一个配置选项,以便COMPXILB将禁用对其编译的RAM模型的冲突检查。为仿真器使用适当的方法如下:
MTI
命令行:VLog+Deal+Deable
– COMPXLIB的COMPXIL.CFG:选项:MTiSeS:Verilog:-源- 93 +定义+ Deable
风险投资公司
命令行:VCS+定义+ DISABLE
-COMPXLIB的COMPXIL.CFG:选项:VCS:Verilog:-MUpUp++定义+ DeabeLySurrimyOnChina
数控仿真
-命令行:NCVLoop-定义Dababy-ReavyIn检查
命令行:NCVILIOG++定义+ DISABLE
-COMPXLIB的COMPXIL.CFG:选项:NCSIM:Verilog:-消息-nOLog -定义Dababy-ReavyIn检查
您可以访问位于“综合”和“验证”设计中的“COMPXLIB .CFG”文件的信息:
HTTP://www. xLimx.COM/Spurp/SWIMANALS/XILIX6/DIXX.HTM
ISI.61I之前的方法论
将分配语句添加到测试台,如下所示。
例子:
初始开始
分配Uut.RAMi St.DATAY冲突=0;
分配Uut.RAMi St.MeMyYyBuffic=0;
分配Uut.RAMI.St.DATAYCurrimixAyb=0;
分配Uut.RAMIN。
分配Uut.RAMI.St.DATAYCROSENIONBYA=0;
分配Uut.RAMIN StUnyYORACIONIONBYA=0;
分配Uut.RAMi St. AdvrsSReulyNyAAB=0;
分配UUT.RAMIN STATEADESRSSYCROSENIONBYA=0;
分配Uut.RAMi St.AddiSsx碰撞=0;
结束
这就禁用了RAMMIN块RAM实例上的时钟之间的安装冲突。设计中的所有其他块RAM保留时钟之间的设置检查。(必须根据设计的层次结构更改“Uut.RAMixNST”。为了实现这一变化,从TestBooad开始,使用实例名称:St..n..n.l.lt;Reg >
RAMMyNST应该匹配顶级文件中RAMB实例化的名称。
此更改仍将产生消息,但块RAM的输出将不再是XS。
没有回复内容