verilog RTL编程实践 笔记 十一课 十二课

第十一课

 

  • Verilog simulation event queue

与VCS视频教程第一课的内容相同。

补充:SV的队列有三个模块:oop,rtl,assertion,interface会隔离oop和rtl(?)

 

lab04

  • scheduler.v 

模块当中包含了一些testbench,用来描述阻塞语句和非阻塞语句的区别

**在大型电路(如CPUGPU等)用RTL代码跑是非常慢的,这时需要一些软件辅助加速

如果是做验证,clock生成可以用更专业的写法

write和display的效果是完全一样的,只是display会自动换行

display,strobe和monitor的区别参看这篇文章:https://blog.csdn.net/a389085918/article/details/79924564

  • 用$display()系统任务来显示当前变量的值。
  • 用$strobe()系统任务来显示用非阻塞赋值的变量值。
  • 用$monitor()监控和输出参数列表中的表达式或变量值。

 

阻塞赋值发生在active区,非阻塞赋值在non-blocking区;strobe/monitor在monitor区因此得到的值是不一样的。

图形化界面中,View -> Data Cycle -> Expand Time 可以看到边沿处的时间顺序(需要打开选项)

总的来说display的观察结果比strobe/monitor更接近实际情况。

 

  • system_functions.v

!==为不全等,在验证当中是比较有用的判断条件,如果语句中含有x则判断结果也是x

断言(assertion)是用作仿真的,不可综合

可以异步置位和异步复位的flipflop

always @(*)和always @(所有信号)的选择?两个视频说法不同

 

**后面另外介绍了flip-flop、latch和MUX的电路,包含同步复位、异步复位、同步置位等不同功能。

 

  • serial_shift

 

  • 电路设计步骤:

0.优化算法

1.构建架构图(框图)

2.针对小功能考虑接口、功能、核心控制逻辑、状态机、数据path 

3.写代码


第十二课

一种三输出MUX,用default简化逻辑并避免latch:

行为级移位寄存器的写法:

是否可综合只取决于语法,与用什么级别的描述语言无关。

 

  • JTAG

JTAG属于DFT(design for test)的范畴

触发器要用可扫描的触发器,MUX+FF可以组成边界扫描寄存器,也是经常用于芯片测试的结构。

可以看到在端口中专门提供了四个input用作JTAG测试

**DFT设计之后,拿到芯片时会用专门的设备对其测试,设备会按照时间收费。对于芯片来说不可能遍历所有的信号,因此会要求尽量压缩测试信号向量

以下是在.sct文件中的设置:

DC软件将综合功能和DFT功能集成在一起

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值