我是靠谱客的博主 迷你书本,最近开发中收集的这篇文章主要介绍SV过程块(always、initial),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部