Dinglei_hello · 3月1日

​设计如何使用FPV提前发现BUG

(一)一个交通灯控制器示例

在开始以交通灯控制器为例介绍FPV对于designer的用途之前,首先引入这个设计模块的规格。

3e6ab49c365b733105fb2343174b3ba5.png

上图是设计的应用场景:一个状态机控制四向路口的交通灯灯光。以下是一个简单的规格要求:

• 在任何给定时间,恰好一个方向必须有非红灯。(从那个方向来的汽车有直行和左转的通行权。)
• 如果一辆车正在等待,它最终会获得绿灯。
• 从救护车发出的“紧急”信号会迫使特定方向的交通灯在两个周期内变绿。

我们将使用一组状态机来实现这个系统,每个状态机控制一个红绿灯,有一个顶层模块实例化四个这样的交通灯状态机。

d2cf6a0a84a971b32b274f634d1fa159.png

98a777dc9bf05a52e821daa9dd11be99.png

从上图可以看出,这个系统包含四个状态机,并且进行轮询(round-robin)。当next direction方向有车要过(有请求)并且current direction没有车(不在占用)时,next direction的交通灯会变绿。

尽管这是一个相对较小的设计,但有多个状态机之间相互通信,通常很容易产生bug。

这是一个小但复杂的设计。

因此,designer在开发这个模块的早期就应该进行一定程度的验证。

使用FPV,可以指定你想看到的特定交通灯状态组合,FPV工具就会帮你找到相应的输入激励。而使用仿真simulation,你可能很难精确地找到合适的激励覆盖到这个场景。

(二)设计早期探索PLAN

首先设计使用FPV进行早期设计探索肯定是比较粗糙的,不需要芯片验证交付那个高标准。基于前文提到的交通灯,我们首先确认这样一个大概的探索或者验证需求:这几个交通灯状态机是否都能够到达所有的状态。

另外,还可以考虑看看设计中典型的流程,例如规格描述的波形图,可以使用FPV确认RTL模型符合这些明确的规格。

所以进行设计的早期探索,我们首先确认正常的行为的波形是否符合预期,即能够将规格中的行为流程描述在FPV环境中复现。

53107ae6593065a741c0d77047d28bf8.png

最后,designer要确保早期的RTL模型能够遵守每一个规格中的要求。在这个例子中就例如:同一个时刻只有一个非红灯;在某个方向等待的汽车总会等到绿灯状态;紧急状态方向具有转向绿灯的高优先级。

当然,对于更加复杂的设计,早期designer进行设计探索只能够聚焦其中某个设计空间的子集了

请记住,早期designer进行设计探索的目标不是达到验证交付的目的,而是让自己具有基本的交付信息

保证基本的通路没有问题,而不是交付给验证人员一个乱七八糟的东西。

END

作者:验证哥布林
原文链接:
​设计如何使用FPV提前发现BUG(一):一个交通灯控制器示例
设计如何使用FPV提前发现BUG(二):设计早期探索PLAN
微信公众号:
 title=

推荐阅读

更多IC设计技术干货请关注IC设计技术专栏)
2 阅读 336
推荐阅读
关注数
8914
内容数
839
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息