好的问题:希望高人说下自己的见解,多多留言,一同学习!
问题2:做验证的过程中,前仿和后仿不同有哪些?如果前仿RTL通过了后,在后仿中出现了问题,最有可能出现在哪些地方?这些需要有流片工作经验的人才能准确地回答。希望高人不惜留言!先谢谢了~~
外加一个问题:PMU模块主要是实现时钟的关断和唤醒,我想问下它支持的几种模式:normal、idle、sleep、deepsleep之间的区别是什么?尤其是sleep和idle,sleep和deep sleep之间,描述的越详细越好!谢谢帮忙~相信回帖的人今年交好运!
function 和 task 的区别
1.函数
只能在0时刻开始执行(生效),函数只能与主模块共用一个仿真时间单位,
不能含有任何延迟,事件或者时序控制声明语句
函数能调用另一个函数,但不能调用另一个任务,
至少有一个输入变量,可以有多个输入变量
只能有一个返回值,不能有输出(output)或者双向(inout)变量
2.任务
可以在非0时刻执行,可以 定义自己的仿真时间单位。
可以包含延迟,事件或者时序控制声明语句
任务能调用另一个任务,也能调用另一个函数
可以没有或者有多个输入(input)、输出(output)和双向(inout)变量
不能返回任何值,但可以通过output和inout变量传递多个值
学习学习
very good
(1)在SV中吗?task 和function的主要区别是: task中可以有时延和事件等待,无返回值;function有返回值,不能有时延和事件等待,但可以用fork...join_none的方式实现延时和事件等待。
(2)前仿主要是功能验证,RTL级;后仿是netlist级,主要检查setup和hold time,包括best和worst两种验证。setup和hold time不满足工艺库的要求,时钟频率不满足需求,低功耗设计需求等在前仿很难解决。主要出现的地方有:触发器间的大量组合逻辑、异步时钟域问题、双口memory、低功耗设计、时钟和电源管理等。
(3)时钟管理部分,主要区别是通过时钟控制,达到省电目的。一般来说,normal和idle有时钟;sleep无主时钟,采用辅助时钟或主时钟降频;deepsleep无任何时钟。各个状态之间的切换一般需要依次进行,即从normal不能直接切换到deepsleep。当然,不同的团队的设计是有差异的。
楼上的经典!