概述
module,interface认为是硬件;program,class认为是软件
过程块:1)always(可综合)
2)initial(不可综合)
always:
可用于module和interface中
always @ (posedge clk)----时序逻辑 " <= "
always @ ( * )----组合逻辑 " = "
eg:上文提到了always具备描述硬件电路行为和核心要素,你认为下列选项哪些是正确使用always的方式?
A. 由时钟驱动 B. 由其他非时钟信号驱动 C. 不同always语句块之间是并行执行的 D. 可以在always中初始化变量
答案:A B C
解析:由时钟驱动就是时序逻辑,由其他非时钟信号驱动就是组合逻辑,所以AB对。
always是并行执行,C对。可以对变量进行复位(rst_n),而不能初始化。D错
initial:(多用于testbench)
initial非常符合软件的执行方式,即只执行一次。
initial和always一样,无法被延迟执行,即在仿真一开始它们都会同时执行,执行时没有先后顺序之分。
initial内部是按时间顺序进行的。
eg:
initial begin
rst_n = 0 //先复位
#201
rst_n = 1 //延时201ns,复位结束
#2000
a = 1;
b = 1;
#20
a = 0;
b = 0;
#200
$stop;
end
initial过程块可以用在module、interface和program中。
最后
以上就是迷你书本为你收集整理的SV过程块(always、initial)的全部内容,希望文章能够帮你解决SV过程块(always、initial)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复