关于仿真这东西给笔者很纠结。在笔者的眼里,笔者把仿真看成是学习Verilog HDL语言之后的功课。网上常有的一套学习方法就是一边学习用Verilog HDL语言建立模块,一边使用modelsim观察输出,这样的学习方法看是很有道理,而且初期也有很大的帮助 ... 笔者在这里说老实话这样的学习方法仅限与前期而已。如果读者反问笔者为什么呀,其中又要扯出很久很久以前的故事 ......
我们知道Verilog HDL 语言又分为两套,综合部分和验证部分。综合部分就是在我们常常用来建模,然而验证部分就如命名它的功能就是用来验证模块。笔者在接触Verilog HDL语言一段时间后,有一种奇怪的感觉一直驱着笔者思考关于“综合语言与验证语言和仿真之间的关系”。
笔者看到很多的激励文本都是使用验证的方式在书写,笔者一直反问自己“难道仿真就是等于验证?”但是根据笔者的记忆,笔者看过那么多有关Verilog HDL的资料,它们都没有说过仿真一定要使用验证语言。正是如此笔者萌生出这样的想法“是否综合语言也可以用于仿真?”。先把这个话题暂停一下,我们先来探讨“什么是仿真?”。
在仿真的世界里,仿真唯一的工作就是建立一个“虚拟的环境”去观察一个建模的输出,同时间也要有“虚拟的输入”以达到激励的效果。既然仿真只是建立虚拟环境来观察输出而已,而且Verilog HDL语言也没有强制性一定要使用验证的方式,那么“是否一套用在综合的方法就也可以用在仿真呢?”
当笔者察觉到上述的问题后,笔者尝试使用建模的方法去完成仿真的工作。在笔者的眼里,仿真工作就如同我们建立模块,然后将模块下载到“虚拟的黑金开发板”上而已。但是这个“虚拟的黑金开发板”比较单调,输入输出只有逻辑和数据而已。仿真的重点就是“如何去建立这个虚拟的环境”,其中激励是关键。(初学者们常常误认激励就是“虚拟的输入”,但是这一点笔者却保留。关于激励的故事,我们往后有机会再谈。)
笔者曾经是初学者过,当笔者一边用综合来建立模块,一边用验证来仿真模块,笔者的头简直就要爆开来。那时候的学习一点也开心不起来,为了应付两种不同性质的Verilog HDL 语言,结果都是两头不到岸,学习以“徘徊边缘”告终。当笔者掌握建模技巧以后,笔者重新接触仿真 ... 咦!笔者发现到,一套用在建模的方法,既然也适合用在仿真上。但是,同时间也伴随着许多问题 ...
其实一直一来,笔者对仿真始终保留自己的一套方法和想法。笔者不是故意要和现有的一套方法唱反调,笔者也不是说验证语言不可以用于仿真。笔者只是希望找到一条更平坦的道路,好让更多初学者或者新手可以轻松上路。
我们知道初学者们接触Verilog HDL语言除了建模这个大问题以外,还有另一个大问题!
它就是“如何区分Verilog HDL语言的可综合和可验证”。如果,一套用在建模的方法也可以用在仿真身上的话,那么初学者只要掌握一种,然后轻松的上路。毕竟验证部分在早期的学习也不常露脸。
嗯,笔者也不多话了,因为上述的内容更多的更多充其量不过是笔者一厢情愿的想法而已,单单用文字来表达,感觉太抽象了,给人一种摸不到的感觉。如果有耐性和笔者一起探讨“笔者心目中的仿真”的话,那么请绷紧神经,全神贯注接聆听,笔者接下来要说的故事。
==================================
用户1609127 2011-1-6 12:24
ilove314_323192455 2011-1-6 11:47