verilog 写rtl注意事项_Verilog:笔试面试常考易错点整理

欢迎大家关注“数字IC剑指offer”公众号!

1.Verilog为什么适合描述硬件设计?always块间是并行的,符合硬件中电路并行计算的特性

always时钟触发的特性,符合寄存器的行为

Verilog是一种自顶向下的层次化设计方法,能够将复杂的大型数字系统划分为规模较小且功能相对简单的单元电路,从而加速大型数字系统的设计、调试等工作

Verilog的行为级描述方法可以简化硬件电路的设计,可借助于高级语言的精巧结构

Verilog支持开关级、门级、RTL级、算法级、系统级设计

2.阻塞赋值和非阻塞赋值的区别?阻塞赋值的操作符为=,阻塞的概念是指在同一个always块中,其后面的赋值语句从概念上是在前一句赋值语句结束后在开始赋值的,阻塞赋值在语句结束后立即完成赋值操作,可以认为是顺序执行,用于组合逻辑的设计;

非阻塞赋值的操作符为<=< span="">,非阻塞赋值的操作可以看作为两个步骤的过程:1)在赋值时刻开始时,计算非阻塞赋值RHS表达式,2)在赋值时刻结束时,更新非阻塞赋值LHS表达式。是一个同时赋值的操作,并行执行,用于时序逻辑的设计

3.为什么用于综合的verilog不建议使用for循环?DC无法优化for循环的逻辑,只是单纯进行展开和复制,可能增大电路的面积,降低性能

4.如何防止综合出Latch?在if-else和case中判断所有条件分支

在组合逻辑进程中,敏感向量列表要包含所有要读取的信号(包括RHS和判断语句中的信号)(注意:对仿真有影响,但是综合工具会自动补全敏感向量列表,所以在综合之后的电路中是不会有latch的)

不要出现自己给自己赋值的情况

不要出现组合逻辑环路

5.verilog可综合风格?时序逻辑用非阻塞赋值,组合逻辑用阻塞赋值,同一个always块中既有时序逻辑又有组合逻辑时用非阻塞赋值,不要在同一个always块中混合使用,不要在两个及以上always块中对同一个变量赋值

所有内部寄存器都能复位,通过复位使信号初始状态可预测

不混合使用上升下降沿(可以考虑使用倍频时钟来设计)

不使用initial,不要使用延时,不使用循环次数不确定的循环语句

防止出现Latch(除非目的性的Latch)

6.verilog可综合、不可综合语句汇总?所有综合工具都支持的结构

always,assign,begin,end,case,wire,tri,aupply0,supply1,reg,integer,default,for,function,and,nand,or,nor,xor,xnor,buf,not,bufif0,bufif1,notif0,notif1,if,inout,input,instantitation,module,negedge,posedge,operators,output,parameter

所有综合工具都不支持的结构

time,defparam,$finish,fork,join,initial,delays,UDP,wait

有些工具支持有些工具不支持的结构

casex,casez,wand,triand,wor,trior,real,disable,forever,arrays,memories,repeat,task,while。

注:while在某些情况下是可以综合的,例如while(posedge clk)这和always@(posedge clk)作用一样。

7.function和task区别?可综合的任务和函数都只能实现组合逻辑

8.一段式、两段式、三段式状态机?一段式(要避免):将整个状态机

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值