IC验证学霸笔记2——Verilog基本语法之结构语句(七)

always语句

包含一个或一个以上的声明语句(如:过程赋值语句,任务调用,条件语句和循环语句等),在仿真运行的全过程中,在定时控制下被反复执行
在always块中被赋值的只能是register型变量(如reg,integer,real,time)。
每个always块在仿真一开始便开始执行,当执行完块中最后一个语句,继续从always块的开头执行。
格式:always<时序控制> <语句>
注1:如果always块中包含一个以上的语句,则这些语句必须放在begin...end和fork...join块中。
注2:always语句必须与一定的时序控制结合在一起才有用!如果没有时序控制,易形成仿真死锁。
例: always areg = ~areg; (仿真死锁)
例:在测试文件中,用于生成一个无限延续的信号波形——时钟信号
例:用always块语句产生T'FFh和8位二进制计数器
 always块语句模板:


敏感信号表达式又称事件表达式,当其值发生改变时,则执行一遍块内语句
在敏感信号表达式中应列出影响块内取值的所有信号;(一般为输入信号)
敏感信号可以为单个信号,也可以为多个信号,中间需要用关键字or连接
敏感信号不要为x或者z,否则会阻挡进程。 
always 的时间控制可以为边沿触发(用于时序逻辑),也可为电平触发(用于组合逻辑)
关键字posedge表示上升沿,negedge表示下降沿。
可综合性问题:
always块语句是用于综合过程的最有用的语句之一,但又常常是不可综合的(内部有不可综合语句时)。为得到最好的综合结果,always块程序应严格按一下的模板来编写:
注意:1.当always块有多个敏感信号时,一定要采用if..else if语句,而不能采用并列语句!否则易造成一个寄存器有多个时钟驱动,则出现编译错误。
2.通常采用异步清零,只有在时钟周期很小或清零信号为电平信号时(容易捕捉到清零信号)采用同步清零。

initial语句

用途:
在仿真的初始状态对变量进行初始化
在测试文件中生成激励波形作为电路的仿真信号;
例:对各变量进行初始化:
注:优秀验证学员随堂笔记,已经征求到学生的同意,会持续给牛友们分享!
大家看完记得 一键三连!多多支持

#不去互联网还可以去硬件行业##数字芯片设计##芯片IC验证工程师##做项目##你为什么选择硬件行业#
全部评论
最近就在学这个吗,正好用到了,感谢分享
点赞 回复 分享
发布于 2022-08-06 20:05

相关推荐

12-19 22:04
武汉大学 Java
点赞 评论 收藏
分享
给🐭🐭个面试机会...:我擦seed✌🏻
点赞 评论 收藏
分享
评论
1
5
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务