网站建设绵阳,电商网站开发怎么样,源码建网站,网页设计与制作实用教程电子资源说明#xff1a;该专栏RTL建模笔记是《RTL Modeling with SystemVerilog for Simulation and Synthesis》的翻译#xff1b;该笔记略过了第一章第一小节中背景介绍内容#xff0c;以及第二小节前面部分的门级、RTL级建模介绍#xff0c;对于后续学习不影响。
…说明该专栏RTL建模笔记是《RTL Modeling with SystemVerilog for Simulation and Synthesis》的翻译该笔记略过了第一章第一小节中背景介绍内容以及第二小节前面部分的门级、RTL级建模介绍对于后续学习不影响。
1.行为级和事务级建模 SystemVerilog过程块可用于在比RTL更高的抽象层次上进行建模这种抽象层次的模型通常被称为行为级模型(也称为总线功能模型或算法模型)。由于RTL级和行为级模型都使用过程块因此它们的外观可能非常相似。 行为级模型与RTL级模型的区别在于两个方面或者两者兼而有之 RTL过程块会在一个时钟周期内执行其编程语句如果是组合逻辑则可能在零个时钟周期内完成。而行为过程块可能需要任意数量的时钟周期来执行其语句。RTL模型必须遵循严格的语言限制以便能够被RTL综合编译器所综合。而行为模型则可以充分利用完整的System-Verilog语言。 高层次的抽象是事务级建模。事务模型通常用于验证代码并且通常使用 SystemVerilog 的面向对象编程结构进行建模。 行为和事务的抽象级别无法由RTL综合编译器进行综合。
2.定义SystemVerilog可综合子集 由于缺乏 SystemVerilog综合标准不同综合编译器支持 SystemVerilog 标准的子集不同这意味着在设计阶段需要针对不同的编译器进行适配。工程师在编写用于综合的模型时需格外小心要参考将要使用的综合编译器的文档并遵循该编译器的语言子集。在一种综合编译器编写的模型可能需要进行修改才能与另一种综合编译器配合使用。 本书定义了SystemVerilog的一个子集该子集可与市面上大多数的SystemVerilog RTL综合编译器兼容。设计工程师可以放心只要遵循本书中所述的语言限制和编码准则模型便可在任何主要的SystemVerilog综合编译器上得到综合。
3.ASIC和FPGA建模 ASIC和FPGA技术的完整定义超出了本书的范围本书的主题是与SystemVerilog语言相关的正确数字逻辑建模风格。
3.1 标准ASIC元件 ASIC是Application Specific Integrated Circuit的首字母缩写IC包含不同的功能ASIC 的设计宗旨是执行特定任务(因此得名“应用专用芯片”控制器、音频格式转换和视频处理是适合由 ASIC执行的特定应用任务示例。为了执行一般性操作以及其特定任务ASIC还可包含一个或多个嵌入式处理器。带有嵌入式处理器的 ASIC通常被称为片上系统(SoCsystem on chip)。 大多数ASIC技术采用标准单元即预先设计好的逻辑块由一到数个逻辑门组成。一个SIC单元库可能包含数百个标准单元例如AND、NAND、OR、NOR、异或、异或非、二选一多路复用器、D型触发器、锁存器等。每个单元都具有明确的电气特性如传播延迟、设置时间和保持时间以及电容。 设计ASIC的流程包括从库中选取合适的单元并将它们连接起来以实现所需的性能。在整个过程中会用到软件工具。ASIC设计的典型流程如下图所示。 上图的步骤是 第一步指定设计的预期功能。所需的功能在模型的抽象RTL级别上进行建模。在这个阶段重点是功能而非物理实现。仿真用于验证功能。该书第1.5节(第17页)详细讨论了仿真的内容。综合过程用于将RTL功能映射到目标ASIC类型的相应标准单元上。综合的输出称为门级网表。综合过程将在第1.6节(第31页)中作更详细的描述。通过仿真逻辑等价检查器(一种形式验证方法)可以验证门级实现在功能上等同于RTL功能。-- 现在常用形式验证工具做等价验证常用工具为s家fmt和c家lec。时钟树综合用于将时钟驱动器均匀地分布到整个设计中。通常会使用扫描链(scan chain)插入工具来增强设计的可测试性。布局和布线软件会计算如何在实际的硅芯片上布局单元并规划互连走线。布局和布线软件的输出是一个图形数据系统文件(GDSII)文件。GDSII是一种二进制格式其中包含有关几何形状(多边形)和其他数据的信息这些信息对于在硅芯片上实际构建IC是必要的。通过执行设计规则检查(DRC)确保将由该代工厂制造的ASIC所遵循的所有规则都已得到遵守例如栅极扇出负载。进行静态时序分析(STA)以确保设置/保持时间得到满足同时考虑到互相作用的net和时钟树偏移的延迟影响。最后将GDSII文件和其他数据发送给负责制造ASIC的代工厂。将这些文件交给代工厂的过程被称为“tapeout” ASIC因为在ASIC设计的早期阶段人们使用磁带将文件发送给代工厂。 3.2 FPGA FPGA 是现场可编程 门阵列(Field Programmable Gate Array)的缩写FPGA是一种集成电路包含一定数量的逻辑块这些逻辑块在IC制造完成后可以进行配置(而ASIC的内容和布局必须在制造之前确定)。FPGA所包含的功能性无法与 ASIC 相媲美且运行时钟速度较慢这在 RTL级别的设计中是重要的考量因素。但FPGA技术的最新进展显著缩小了 FPGA和 ASIC 之间的差距。总的来说FPGA 可以用于实现与ASIC 相同的功能。 FPGA包含许多称为可配置逻辑块(CLB)的小型逻辑组件的阵列。一些FPGA厂商将这些块称为逻辑阵列块(LAB)一个典型的CLB可能包含一个或多个查找表(LUT)和一些选择器(MUX)和一个存储元素例如D型触发器。大多数FPGA中的查找表是小型RAM编程时使用逻辑运算如AND、OR和XOR。从LUT中选择所需的操作允许CLB以多种方式使用从简单的与或异门到更复杂的组合功能。某些FPGA中的CLB可能还具有其他功能例如加法器。MUX可使组合结果直接由CLB输出(异步输出)或存储在存储单元中((同步输出)。 FPGA的制造过程中会包含一个由数百或数千个CLB单元组成的阵列以及可配置的互连结构这些互连结构可以被“编程”成所需的CLB单元配置。FPGA还包含I/O端口这些端口可以配置为连接到CLB阵列的任意一列或一行。 下图显示了一个复杂FPGA的典型设计流程。 FPGA设计流程的前端与ASIC类似但后端有所不同。与ASIC设计流程相比FPGA设计流程后端的主要区别在于FPGA的放置和布线。对于ASIC放置和布线软件决定了IC的制造方式。而对于FPGA综合放置和布线软件则决定了预先制造的IC将如何进行编程。本书将重点介绍前端步骤2和3即RTL建模和模拟这是ASIC和FPGA设计之间差异最小的部分。
3.3 适用于ASIC和FPGA的RTL编码风格 理想情况下相同的RTL代码可以用于针对ASIC或FPGA进行开发在RTL级别进行工作时工程重点在于设计和验证功能而无需考虑具体的实现细节。综合编译器的职责是将RTL功能映射到特定的ASIC或FPGA技术上。 大多数(但不是全部)RTL代码都能在ASIC和FPGA上得到同样良好的综合。但这一概括性结论也存在例外。RTL模型的某些方面需要考虑设计是将在ASIC还是FPGA上实现。这些方面包括
reset大多数ASIC单元库都包含同步和异步复位触发器。设计工程师可以使用被认为最适合设计的复位类型来编写RTL模型一些FPGA的灵活性较差仅具备一种类型的复位触发器(通常是同步的)。虽然综合编译器可以将具有异步复位的RTL模型映射到门级同步复位或者反之但需要额外的逻辑门。许多FPGA还支持全局复位功能和上电复位触发器状态这是ASIC所不具备的。第8章第8.1.5节(第286 页)更详细地讨论了建模复位。Vector sizes矢量大小对于最大矢量宽度和矢量操作ASIC具有相当程度的灵活性处理大型矢量时复杂的操作将需要大量的逻辑门但大多数ASIC中使用的标准单元架构能够支持这些操作。FPGA在这方面则较为受限。预定义的CLB数量及其在FPGA内的布局可能限制了对大型矢量进行复杂操作的能力这要么是因为可用的CLB数量有限要么是因为在CLB之间进行互连的布线复杂性所致。ASIC和FPGA之间的这种差异确实意味着即使是在RTL级别的抽象层面设计工程师也必须考虑到设备的局限性以确保实现的功能与之相匹配。 本书中所提供的多数示例、编码风格和指南同样适用于ASIC和 FPGA 设计。对于针对 ASIC或 FPGA 时可能影响 RTL编码风格的少数特殊情况书中有所特别说明。