systemverilog中的final begin end
final过程语句
final过程类似于initial过程,它定义了一个语句过程块,不同的是它发生在仿真时间的末尾,并且执行时没有延迟。finial通常用于显示有关仿真的统计信息。
final过程中允许的语句只有函数声明中允许的语句,以便它们在一个单独仿真循环执行。与initial过程不同,final过程并不作为单独的进程执行;相反,它在零时间内执行,作为来自单个进程的一系列函数调用。所有final程序应以任意顺序执行。在所有final程序执行完毕后,将不再执行剩余的计划事件。
当仿真结束时,由于对$finish的显式或隐式调用,执行final过程。
final
begin
$display("Number of cycles executed %d",$time/period);
$display("Final PC = %h",PC);
end
Initial语句块和final语句块之间的区别从命名上可以明显看出,即Initial语句块在仿真时间t=0期间开始执行,而final语句块在仿真完成时开始执行。
这两个顺序执行的代码块之间有一个相似之处,即它们在仿真过程中只执行一次。
而对于initial语句块final语句块的差异,initial语句块可以包含一些#延迟或wait语句等消耗时间的进程,而final语句块不应该包含任何此类内容。final语句块就是一个在仿真工具调用$finish时自动执行的一个函数。
针对final block的这些特性,可以用于在测试用例中打印一些报告或者对用例执行结束后的RTL状态或者验证环境状态做一些检查。
浙公网安备 33010602011771号