做网页网站,医院网址,环境建设公司网站,短视频seo询盘获客源码EDA技术
EDA指Electronic Design Automation#xff0c;翻译为#xff1a;电子设计自动化#xff0c;最早发源于美国的影像技术#xff0c;主要应用于集成电路设计、FPGA应用、IC设计制造、PCB设计上面。
而EDA技术就是指以计算机为工具#xff0c;设计者在EDA软件平台上…EDA技术
EDA指Electronic Design Automation翻译为电子设计自动化最早发源于美国的影像技术主要应用于集成电路设计、FPGA应用、IC设计制造、PCB设计上面。
而EDA技术就是指以计算机为工具设计者在EDA软件平台上用硬件描述语言Verilog HDL完成设计文件然后由计算机自动完成逻辑编译、化简、分割、综合、优化、布局布线、仿真。
EDA涵盖了电子设计、仿真、验证、制造全过程的所有技术诸如系统设计与仿真电路设计与仿真印制电路板PCB设计与校验集成电路IC版图设计、验证和测试数字逻辑电路设计模拟电路设计数模混合设计嵌入式系统设计软硬件协同设计芯片上系统SoC设计可编程逻辑器件PLD和可编程系统芯片SOPC设计专用集成电路ASIC和专用标准产品ASSP设计技术等。
EDA技术的出现极大提高了电路设计的效率和可操作性减轻了设计者的劳动强度。 硬件描述语言HDL
HDL指硬件描述语言即描述数字电路和系统的语言的统称。
例如要编写FPGA的代码即描述FPGA电路结构肯定得需要一种语言吧那C/C、Java、Python等一众软件语言可以吗那肯定不行啊软件语言无法描述出清楚的电路结构也没有办法约定时钟、走线、端口等。简单一句话它们没这个实力知道吧所以这时候就需要专用的硬件描述语言HDL了。不过不像软件语言那样枝繁叶茂经过近三十年的发展只有Verilog HDL和VHDL二者最终脱颖而出成为了公认的行业标准两者逻辑相通。 假如要实现计数器的一个逻辑功能可以通过编写Verilog语言对计数器的功能进行描述完成之后使用Quarter软件对代码进行分析综合、布局布线等一系列操作将生成的网表文件下载到FPGA开发板中。 那么在FPGA当中呢就会实际生成一个硬件电路其功能就是计数器的功能。 常见的HDL主要有以下4种
VHDLVerilog HDLSystem VerilogSystem C
其中VHDL和Verilog HDL在EDA设计中使用最多也得到几乎所有的主流EDA工具的支持。而Syatem Verilog是Verilog的扩展与延伸。
简要介绍一下Verilog语言的发展历史 1983年由由GDAGateWay Design Automation公司的Phil Moorby首创用作Verilog-XL仿真器的内部语言。 1989年GDA公司被Cadence公司收购Verilog HDL语言成为Cadence公司的私有财产。 1990年Cadence公司决定公开Verilog HDL语言于是成立了OVIOpen Verilog International组织负责促进Verilog HDL语言的发展。 2001年IEEE发布了Verilog HDL 1364-2001标准。在这个标准中加入了Verilog HDL-A标准使Verilog有了模拟设计描述的能力。 Verilog对VHDL的优势
相比于VHDLVerilog有更广泛的设计群体成熟的资源也远比VHDL丰富。并且Verilog是一种容易掌握的硬件编程语言而VHDL需要Ada编程基础。对于硬件语言学习首选Verilog。
【注意】无论是Verilog HDL还是VHDL不仅包含了结构描述的功能还包含仿真和验证的功能。对于Verilog HDL约30%的语句用来实现电路设计其余语句用于验证和仿真。 IP核简介
IP核全称知识产权核Intellectual Property core在集成电路设计领域中扮演着重要角色。通俗地解释IP核就是那些已经设计好、验证过并可以重复使用的电路功能模块或设计模块。它们就像是构建积木一样可以被设计师们用来快速搭建出复杂的集成电路系统从而大大缩短设计周期提高设计效率。
IP核主要分为3类软IPSoft IP Core、固IPFirm IP Core和硬IPHard IP Core。
软IP
软IP通常是用硬件描述语言如VHDL或Verilog编写的功能描述它只定义了电路的行为和功能而不涉及具体的电路实现细节例如实现加法器功能软核不在乎其内部是晶体管还是MOS管设计者可自己选择。这种形式的IP核具有高度的灵活性和可移植性但需要在后续的设计过程中进行综合和验证。 想象一下你是一位厨师想要制作一道复杂的菜肴比如法式炖鸡。在这道菜中有许多关键的步骤和成分比如腌制鸡肉、准备蔬菜、炖煮等。现在我们来用烹饪的步骤来类比软IP核软IP核就像是一份详细的食谱。这份食谱用文字就像硬件描述语言详细描述了制作法式炖鸡的每一个步骤包括需要哪些食材就像电路中的元件、食材的处理方式就像元件的连接和配置、以及烹饪的时间、温度等参数就像电路的时序和性能要求。但是这份食谱并没有直接给你提供已经切好的蔬菜、腌制好的鸡肉或者加热好的锅具——它只是告诉你应该怎么做。当你拿到这份食谱时你需要自己准备食材、工具并按照食谱上的指示一步步操作。这个过程中你可能会根据自己的口味和经验对食谱进行一些调整就像在设计过程中对软IP核进行一定程度的修改和优化。最终当你按照食谱完成所有步骤后你会得到一道美味的法式炖鸡。同样地在集成电路设计中当你使用软IP核并按照其描述完成电路设计后你会得到一个具有特定功能的电路模块。所以软IP核就像是一份详细的食谱它提供了实现某个功能所需的所有“配方”和“步骤”但具体的“食材”和“烹饪过程”还需要设计者自己去准备和实现。这种方式使得设计过程更加灵活可以根据不同的需求和条件进行调整和优化。 固IP
固IP在软IP的基础上进一步完成了门电路级综合和时序仿真等设计环节通常以门电路级网表的形式提供给用户。固IP比软IP更接近于物理实现但仍然保留了一定的灵活性。 固IP就像是半成品菜肴。想象一下你走进一家餐馆的后厨发现已经有人为你准备好了法式炖鸡的大部分工作鸡肉已经腌制好蔬菜也已经切好并部分烹饪过甚至连炖锅都已经加热到了适宜的温度并加入了适量的汤底。你只需要将这些半成品组合起来继续完成最后的炖煮过程并可能根据个人口味进行微调比如添加一些香料或调整火候。固IP核在集成电路设计中就像是部分预制的电路模块。这些模块已经完成了较为关键的设计比如核心的逻辑功能已经实现但可能还留有一些接口或参数供用户根据自己的需求进行配置或调整。这样用户既可以利用已经完成的设计工作又可以保持一定的设计灵活性和自定义能力。 硬IP
硬IP则提供了设计的最终阶段产品——掩膜Mask它经过了完全的布局布线并已经针对特定工艺或购买商进行了优化。硬IP具有极高的可预见性和可靠性但相对缺乏灵活性。 硬IP就像是即食菜肴或者已经做好的成品菜肴。在烹饪的类比中这就像是走进一家餐馆直接点了一份法式炖鸡餐馆的服务员直接把已经烹饪好的、热气腾腾的菜肴端到你的面前。你不需要再去做任何准备或加工只需要享受这道菜肴的美味即可。在集成电路设计中硬IP核就是经过完整设计和验证的、可以直接用于生产的电路模块。这些模块通常已经针对特定的工艺或性能要求进行了优化用户只需要将它们集成到自己的设计中并按照既定的接口进行连接即可。硬IP核提供了极高的可靠性和可预测性但相对而言设计灵活性较低不太容易进行大规模的修改或定制。 Verilog抽象层级
Verilog的5种模型类型分别代表了电路设计的不同抽象级别它们分别是系统级System Level、算法级Algorithmic Level、RTL级Register Transfer Level、门级Gate Level和开关级Switch Level。下面是对这五种模型类型的详细介绍
1. 系统级System Level
描述内容系统级模型使用语言提供的高级结构来实现待设计模块的外部性能。它主要关注系统的整体功能和行为而不深入到底层的硬件实现细节。 系统级模型就像城市规划师制定城市的发展蓝图。他们考虑的是整个城市的布局、交通网络、公共服务设施等宏观层面的设计而不深入到具体的建筑结构和材料选择。他们关注的是整个系统的功能性和协调性。 2. 算法级Algorithmic Level
描述内容算法级模型利用语言提供的高级结构来实现算法的运行。它关注于算法的逻辑和实现方式而不直接涉及硬件电路的具体实现。 算法级模型类似于烹饪食谱。食谱详细说明了制作一道菜所需的步骤和原材料但它不关注你使用什么样的锅碗瓢盆也不关心你是用电炉还是煤气灶。它专注于算法的逻辑和流程即如何达到最终的结果。 3. RTL级Register Transfer Level
描述内容RTL级模型描述数据在寄存器之间的流动和如何处理这些数据以及控制这些数据流动的机制。它是硬件电路设计与行为描述之间的桥梁与逻辑电路有明确的对应关系。 RTL级模型就像是组装家具的过程。在这个阶段你已经有了各个部件如木板、螺丝、连接件等并且知道它们是如何通过说明书上的步骤组装在一起的。这类似于在RTL级你知道了各个寄存器之间的数据流和控制信号以及如何通过这些寄存器来实现电路的功能。 4. 门级Gate Level
描述内容门级模型直接描述逻辑门以及逻辑门之间的连接关系。它关注于电路的基本构建块如与门、或门、非门等及其组合方式与逻辑电路有明确的连接关系。 门级模型就像是用积木搭建一个复杂的结构。在这个阶段你关注的是积木即逻辑门之间的连接方式和布局以构建出你想要的形状和功能。每个积木逻辑门都有它特定的功能如与、或、非等你需要通过合理的组合来实现你的设计目标。 5. 开关级Switch Level
描述内容开关级模型描述器件中三极管和存储节点以及它们之间的连接关系。它深入到电路的物理层面关注于晶体管级别的电路行为。 开关级模型则更像是深入到电子设备内部进行修理。在这个阶段你需要了解每个元件如晶体管、电阻、电容等的物理特性和它们之间的连接方式。你可能需要替换损坏的元件或者调整电路的连接方式以修复故障。这类似于在开关级你需要对电路的物理层面有深入的理解以便进行精确的修复和优化。 HDL综合
HDL综合Hardware Description Language Synthesis是电子设计自动化EDA中的一个关键步骤它涉及将硬件描述语言如Verilog或VHDL编写的较高层次设计描述行为级描述自动转化为较低层次的电路描述或网表门极形式的模块。在这个过程中综合工具会根据设计约束和优化目标将抽象的设计转化为可实现的硬件电路。 通过综合会产生由与门、或门、非门组成的加法器、比较器、三态门等组合逻辑。 HDL仿真
仿真是对电路模块进行动态的全面测试。
通过观察测试模块的输出信号是否符合要求可以调试和验证逻辑系统的设计和结构准确与否并发现问题及时修改。
1. 前RTL仿真
假设你正在设计一个简单的计数器模块使用Verilog HDL编写RTL代码。该计数器模块具有两个输入信号时钟clk和复位rst_n一个输出信号计数值count。在编写完RTL代码后你会使用仿真工具如ModelSim、VCS等进行前仿真。 仿真过程 1、加载RTL代码到仿真工具中。2、设置输入信号的波形例如时钟信号clk为周期性信号复位信号rst_n在开始时为低电平之后拉高。3、运行仿真观察输出信号count是否按照预期在每个时钟上升沿递增并在复位信号为低时重置为0。4、如果发现任何问题如计数错误、复位不生效等则回到RTL代码进行调试和修改。 2. 逻辑网表仿真
在RTL代码通过前仿真后你会将其提交给综合工具如Design Compiler进行综合生成逻辑网表。逻辑网表描述了电路的逻辑连接关系但尚未进行物理实现。 仿真过程 1、使用综合工具生成逻辑网表。2、将逻辑网表加载到仿真工具中。3、设置与前RTL仿真相同的输入信号波形。4、运行仿真验证综合后的逻辑网表是否仍然满足设计要求。特别注意检查任何由于综合优化而可能引入的问题。 3. 门级仿真
在门级仿真阶段你可能已经完成了电路的初步布局布线规划或者至少有了门级网表的详细描述。门级网表包含了具体的门级单元如与门、或门、触发器等及其连接关系。 仿真过程 1、加载门级网表到仿真工具中。2、设置输入信号的波形并考虑门级单元的时序特性。3、运行仿真观察输出信号的时序特性是否符合设计要求。特别注意检查时钟路径、关键路径等关键部分的时序违例。4、如果发现时序违例或其他问题则可能需要调整布局布线规划或回到RTL代码进行综合优化。 4. 布线后仿真后仿真
在芯片的物理布局布线完成后你会进行后仿真以验证芯片在实际物理环境下的性能。 仿真过程 1、加载布线后的门级网表到仿真工具中。该网表包含了实际的物理布局和布线信息。2、设置与实际工作环境相似的输入信号波形和条件如温度、电压等。3、运行仿真观察芯片在实际物理环境下的性能表现。特别注意检查时序、功耗、温度等关键参数是否符合设计要求。4、如果发现任何问题如时序违例、功耗过高、温度过高等则可能需要调整物理布局布线或重新进行综合优化。 层次化设计
数字电路中根据模块层次不同有两种基本的结构设计方法自底向上Bottom-Up和自顶向下Top-Down的设计方法。
自底向上
是一种传统的设计方法对设计进行逐次划分的过程是从存在的基本单元出发的由基本单元构建高层单元依次向上直至构建系统。 自顶向下
从系统级开始把系统分为基本单元然后再把每个单元划分为下一层次的基本单元一直这样做下去直到直接可以用EDA元件库的元件为止。 混合使用
在典型的设计方法中两种方法是混合使用的。