集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
楼主: lcytms

FPGA名师讲堂之 至芯科技带你领略FPGA(2017.6.20李凡老师)课程回顾

[复制链接]
 楼主| lcytms 发表于 2017-7-13 09:31:07 | 显示全部楼层
40
        当这些建模发生的时候呢,验证成为一个问题。
        什么是verification?
        什么是test?
        什么是验证?
        什么是测试呢?
        验证在HDL时代,验证只需要有抽象的平台,抽象的代码,形成一段代码,我就可以验证。
        验证时序,验证功能,验证方方面面。
        验证是在什么地方做的呢?
        验证不是综合,验证仍然在电脑上做。
        验证仍然要执行。
        正是由于这一点,使得原本Verilog的那些C语言的过程、处理的方法,得到了新生。
        如果在验证的时候,非阻塞并不好用,阻塞反而起作用。
        所以说到验证的时候,System Verilog继承了Verilog。
        System Verilog支持新的验证工具、验证方法学。
 楼主| lcytms 发表于 2017-7-13 09:35:14 | 显示全部楼层
41
        这个时候呢,严谨的VHDL就远不如Verilog方便了,所以这个时候Verilog反转了。
        从它当初的不经意的缺陷,反转为现在的一些优点,成为System Verilog的继承。
        2012年以后,新的语言体系,是一种HDVL,hardware description and verification language,既有描述,又有验证,这个时候原本Verilog从C体系里面脱胎的阻塞尽然起作用了,因为阻塞就有先来后到。
        这个时候用于验证就非常合理了。
 楼主| lcytms 发表于 2017-7-13 09:36:12 | 显示全部楼层
42
        我们来看一下验证的过程,形成的电路模型,我们称之为抽象的一个电路模型。
        如果我们绘制在图纸上的电子系统的话,它是绘制在纸上的,代表的是一个符号,不必要把它说成是抽象的。
        而写在电脑里面的软件,它不一定是抽象的。
        它可能是可以执行的。现在我们用HDL语言写的这段代码,我们就必须把它声明成抽象的,因为它是描述的,它描述的是一段电路。
        经典的米德体系强调的是描述,描述的是这段电路。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2017-7-14 09:14:17 | 显示全部楼层
43
        FPGA的构成是由许多单元组成的,包括四输入查找表、输入输出单元、存储器资源、乘加器资源等等。
        EDA会用HDL语言你构成的这个模型,来转变成基本的门级网表。
        所谓你构成的电路模型,就是你描述的这个抽象的电路模型,称之为RTL,寄存器传输级。
        算法语言总是对不同存储器的单元进行操作。
        HDL语言当你写成人机交互的语言的时候,你也看成是对不同寄存器的操作来实现的这种描述。
        称之为RTL级的描述。
        RTL级的描述,首先EDA会转换成基本的门级的描述的一个电路,它的抽象层次更具体了。
        之后呢,EDA会为这些基本的门的描述,分配具体的地址。
 楼主| lcytms 发表于 2017-7-14 09:15:41 | 显示全部楼层
44
        因为在一个FPGA的平面上,可能有20k、200k,甚至是数百万个逻辑门,或者是LE,每个LE都有具体的地址。
        每个资源都有具体的地址。
        当分配了具体地址的过程,就称之为映射的一个过程。
        或者说,称之为一个装配的过程。我们通常在说的约束的过程,就在这个装配上。
        我们马上就会来说到,如何学习EDA?
        因为在学习EDA的过程之中,也有很多一些可以讨论的问题。
        比方说,我们的速度上不去,我们该怎么解决?
        简单的就是做时序的约束吗?
        约束就是通过映射分配不同网表来进行。
 楼主| lcytms 发表于 2017-7-14 09:16:39 | 显示全部楼层
45
        仅仅是分配不同路由的路径,或者是装配的地址,调换地址,调换路由的路径,能够实现极大的提速吗?
        这显然是很可笑的。
        所以说我们要知道约束是需要的,但是却不是唯一的。
        映射得到了具体的电路之后呢,就可以通过网表下载到电路的器件,FPGA下载到具体的电路器件进行实现。
        我们有了抽象的电路模型之后,在实现之前就可以对它进行评估,进行检测,它是否实现了我们的目标?
        这个过程称之为验证。
        如何做验证呢?
        验证的过程,就是对已有的电路模型,进行评估的过程。
        这个过程必须像真的那样进行。
 楼主| lcytms 发表于 2017-7-15 13:46:50 | 显示全部楼层
46
        现在全世界大多数的学术机构、学校、企业,采用的方法称之为用Testbench来验证的方法。
        Testbench本身也是一段抽象的电路模型。
        将你描述的抽象电路模型置于其中,然后为它的输入加以激励,观测它的输出和中间信号。
        这个过程有点像真实的电路。
        我们把真实的电路板放在我们实验室的测试平台上,给它通上电,给它的输入端加上测试激励信号,测试台上可能有信号发生器,调试到我们所需要的测试用例。
        我们可以用万用表、示波器、逻辑分析仪来观测它的输出端口,或者说它的内部的测试点。
 楼主| lcytms 发表于 2017-7-15 13:48:13 | 显示全部楼层
本帖最后由 lcytms 于 2017-7-15 14:00 编辑

47
        由此来判断这个电路是否符合我们设计的意图。
        如果真实电路里面发生了错误,有可能是一个全盘推翻的一个过程,也有可能是局部的修改。
        但是呢,如果是一个抽象的电路模型,这一切仅仅都是在电脑上,当然效率就提升了。
        所以验证称为EDA的发展方向的一个主流方向。
        我们现在看见的是EDA建模和验证的一个流程,左图我们会得到模块的一个功能设计,这个时候,EDA主要是做描述,强调的是综合。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2017-7-15 13:49:45 | 显示全部楼层
48
        你要在你描述之前,编写代码之前,你要明白三件事。
        第一,你要描述的电路,它的功能如何?
        它要做什么?
        What to do?
        第二,它要实现它的功能,它是通过端口来实现的,既然是电路,就一定是通过电路的端口来实现。
        这一点和算法语言大相径庭。
        算法语言你可以用各种各样的方法来描述你的算法,HDL不是。
        它一定是一个电路,它一定是通过电路的端口来实现。
        用哪些端口?
        端口的命名如何?
        这是第二步。
        第三步,既然有了端口,有了输入输出端口,那么端口和端口之间就一定有确定的逻辑时序关系。
        这三者都要确定下来。
 楼主| lcytms 发表于 2017-7-15 13:52:55 | 显示全部楼层
49
        这三者确定下来,你才能展开设计。
        所以说我们也是作为EDA学习的一个要点。
        我学过C语言,学过C++,学过JAVA,现在有了一个Verilog,一种新的语言体系。
        像学C语言那样学,对不对呢?
        FPGA也是,我有一块开发板,边上是一个单片机51的开发板,又有一个Altera的开发板,这两个开发板我都能做流水灯,都能做7段数码管的驱动。
        看起来是一样的。
        无非是换一种语言。
        如果你这样想,那就大错特错。
        当你写代码的时候,你要有硬件的概念,有硬件的基础,有硬件设计的概念。
        这是三部曲。
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-4-26 03:18 , Processed in 0.075174 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表