特权FPGA学习-笔记11-testbench学习(1)

最近学习了特权同学的《深入浅出玩转fpga》书中的testbench写法,下面梳理和总结一下:


笔记10 

1、首先是testbench的整体的概念,理解为与设计v文件的输入输出形成一个环路。

2、搭建简单的testbench:可分为3个步骤;关于input要改为reg,output变为wire。理解为驱动下一级由一个d触发器打一拍增加扇出能力。接受到的信号进来后变成wire型。initial和always同时执行,但initial只执行一次。关于始终产生有多种写法。


当然,上面讲的testbench中的很多语法都是不可综合的!


笔记11

1、使用task进行封装,比如显示用的多种task,里面还有verilog语言中的系统任务$display等,可以参照夏宇闻的书去查怎么用

2、关于变量的定义,有个小地方需要注意,在2个always块中都有相同变量的时候,需要通过注明块名来消除影响。比如for语句中的i

3、结构化testbench,作者给了个例子,多个module封装,有了函数的概念,顶层直接例化即可

4、读写紊乱状态:testbench2个always块中既读又写,这样就会有问题,可以非阻塞赋值。或者延时?

5、防止同时调用task:pc是顺序式的,testbench的verilog语法却是基于并行的。要注意,不要用c语言的思维去写testbench,虽然最后可能在pc上就是按代码的流程在仿真


笔记12

1、作者写了关于串口的一个仿真的例子,网页上也有。也比较好懂。

2、关于乘法器全覆盖,里面有关于文件的操作,后面准备自己时间一下这个例子。(int常用在testbench中定义for中的i)

3、可重用mcu设计,还没有认真看,明天会去实践这几个。



感受:

1、看只是看,具体还得通过例子自己去跑modelsim分析每条线是否这样变

2、自己接触过很牛逼完整成熟的c代码,但是对于verilog代码和testbench是否可以做到这样呢?没人带,自己还没有见识到那一层

3、对modelsim这个工具的使用很受限,明天得好好研究下这个软件。光是软件学习就很费工夫!!!

4、特权给的串口的例子还是很简单,自己仿真出了些问题,并且有些细节没有想清楚,需通过仿真来深挖。等各个常见的部件学完了准备看下开源的or1200,看这些个部件是怎么集成在总线上的。

5、道法术,自己还在术的层面上爬行,需要时间投入才能从质变到量变


后面会写一篇关于testbench及modelsim的文章。然后是串口分析(是各种功能完整的串口而不是特权简单的即收即发的串口)的文章。

你可能感兴趣的:(FPGA)