微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 我也来问个后仿出现x态的问题

我也来问个后仿出现x态的问题

时间:10-02 整理:3721RD 点击:

做的是个视频编码器,目前功能仿真都没问题了,后仿的时候发现很多x态,并且x态扩散严重,编码器根本没法正常工作。看了一下后仿的波形,感觉是和分布式ram有关的,ram输入的数据都正常,但是输出来却有好多x态。
比如定义一个分布式ram

  1. reg [WIDTH-1:0] mem [DEPTH-1:0];

复制代码

输入是一个周期输入一个数据,
输出是这样用的

  1. assign dout = mem[addr];

复制代码

貌似问题就出在这个输出上,但是我也不知道为什么这样就会出错,是不是得把dout改成reg类型的,还望个位大牛指点迷津啊。

1. mem有无初始化?
2. addr是不是出现了x?如果是,要跟踪 addr为啥会变x



  1.mem没有初始化(难道是因为这个原因?)  2.addr没有出现x

块ram有异步的么?
试着换下同步ram试试看



   没有异步复位,没有用到复位端,只有使能端

初始化问题....mem都没给值.....



   可是我是先写数据再读数据,并且保证读的地址是已经写过数据的

你这种直接assign过去,那dout肯定会出现一些不定态吧。但是只要后面在正确的用应该功能没问题才对。

mem 初始化,后者控制addr值,或者使用en控制dout

加了一个no_notifier选项,好像好了

是用vcs仿的?先加选项+delay_mode_distributed +notimingcheck,看看能不能过。
你的后仿是layout后的?还是综合后的?

    两种可能吧,我以前在FIFO中遇到过这种情况,数据取出以后就是X了,貌似你说的不属于这种,还有一种就是,dout输出的时候是异步的,这样导致毛刺很多,在ncverilog下面仿真就是X,在VCS下是毛刺。你这个问题太抽象了,没波形没代码,不好debug。



   我用的是modelsim,是布局布线后仿真,综合工具用的ISE,place & route后生成一个.v仿真模型和一个.sdf延时文件,我就是用这两个文件来进行仿真的。你所说的layout,我现在还没什么概念,不太懂

应该是时序问题,写RAM的时候没有满足时序要求,寄存器没有锁住数据,造成寄存器亚稳态。所以读出来的数据都是x。
建议看看写操作时候的波形,数据是否正确写入RAM。

    reg [WIDTH-1:0] mem [DEPTH-1:0];
在代码中使用这样的语句是不太好的做法,你应该例化一个ram,然后根据ram的端口时序进行读写。
这样可能会被综合成寄存器,当你的ram比较大时,会导致面积大,timing差等问题。

如果没有初始化,初始化一下,再看看是不是有timing的问题;

功能没问题,应该time问题吧

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top