仿真时需注意的设计点

信号展宽后做同步

        用高频时钟做了同步信号的展宽,然后用低频clk做同步,如果信号刚好展宽到低频的一个clk,这种可能发生沿打沿的情况,即展宽后的信号刚好和同步clk 同时变化,导致数据采到预期外的值。

        这种沿打沿在前仿或门仿时一般不会报出问题(当然如果报出来了问题,确不知道是哪儿的问题,也可以考虑是否是沿打沿导致的),在后仿时,由于会对同步寄存器做 notiming 设置,所以也不会报出问题,即能采到预期的值,所以数字仿真一般报不出来沿打沿的问题。如果模拟仿真出现了这个问题(就是用低频clk 采 高频clk 展宽 后的信号 出现沿打沿,由于信号刚好在时钟上升沿变化,低频clk就没有采到展宽后的信号),且无法修改了。。也没事儿,因为这次低频clk刚好是高频clk的降频(如果不是同源的高低频clk的话,可能就有问题了),这是因为模拟仿真约束的比较紧,这种不影响使用,但还是有风险。。。以后再遇到这种设计,可以建议设计人员多展宽一点,确保展宽的信号脉宽大于一个同步的clk周期。

分多次来采一个多bit的数据

        采模块端口上的多bit数据时,设计可能会先采低bit,再采高bit(或相反,总之就是不一次把数据取走用),如果模块端口上的数据在正在采的时候出现跳变,就可能出现用到的数据高低bit不属于同一个数据的场景。这种需要在做验证文档的时候和前后模块的设计者沟通清楚,保证他们对模块端口上的输入输出信号的变化理解是一致的。当然有时候模块设计者认为它不会变,但实际整体仿真的时候又有可能变,所以在整体仿真时,还需要对这些信号做一下检查,留意一下这类信号,可以的话,将前后设计模块中关于多bit端口信号的rtl代码拉通看下。

通过寄存器端口读 由多个寄存器组成的 状态/数据

        由于寄存器端口一次只能读一个寄存器,所以如果是由多个寄存器组成的状态/数据,在读的过程中,寄存器的值发生了变化,则可能导致最终读到的数据是前后数据的拼接。如果设计中存在这种读数据,需要和设计者确认好这些寄存器的读取方式和它们变化的频率,确保在使用上不会出现前述的问题,在验证时也应包含 以设计人员提供的方案 去造激励和读取 的场景。

PAD_IN绕回来是否会影响仿真

在顶层pad设计中,当pad被用作输出端的时候,pad_in端口上通常是把pad_out的值绕回来了,此时要注意检查pad_in有没有被做它用,以防影响正常功能。(可手动检查代码)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值