ASIC-WORLD Verilog(2)FPGA的设计流程

news2024/11/20 9:12:01

写在前面

        在自己准备写一些简单的verilog教程之前,参考了许多资料----asic-world网站的这套verilog教程即是其一。这套教程写得极好,奈何没有中文,在下只好斗胆翻译过来(加了自己的理解)分享给大家。

        这是网站原文:http://asic-world.com/verilog/veritut.html

        这是系列导航:Verilog教程系列文章导航

简介

        作为 Verilog初学者,您可能想尝试一些例子和新的东西。我列出了可用于实现此目的的工具流程。这个流程我亲自尝试过,它对我来说效果很好。在这里,我只采用了工具流程的前端设计部分和部分 FPGA 设计,这套流程无需在工具上花费大量资金即可完成。


ASIC/FPGA设计的各个阶段

        这是各个设计阶段可以使用的工具。

  • 规格书Specification ):文字处理器,如 Word、Kwriter、AbiWord、Open Office。
  • 高层级设计High Level Design):文字处理器,如 Word、Kwriter、AbiWord,用于绘制波形使用工具,如 waveformer 或 testbencher 或 Word,Open Office。
  • 低层级设计(Micro Design/Low level design): Word、Kwriter、AbiWord 等字处理器,用于绘制波形使用工具,如 waveformer 或 testbencher 或 Word。
  • RTL 编码RTL Coding): Vim、Emacs、conTEXT、HDL TurboWriter
  • 仿真Simulation ): Modelsim、VCS、Verilog-XL、Veriwell、Finsim、Icarus。
  • 综合(Synthesis):设计编译器、FPGA 编译器、Synplify、Leonardo Spectrum。您可以从 Altera 和 Xilinx 等 FPGA 供应商处免费下载。
  • 布局布线Place & Route):对于 FPGA,使用 FPGA 供应商的 P&R 工具。ASIC 工具需要像 Apollo 这样昂贵的 P&R 工具。学生可以使用LASI、Magic。
  • 后仿真(Post Si Validation):对于ASIC和FPGA,芯片需要在真实环境中进行测试。电路板设计,设备驱动需要到位。

   

        这是一张典型的设计流程图:

      

规格书

        这是定义您预期设计的系统/设计的重要参数的阶段。一个简单的例子是:我想设计一个计数器----它应该是 4 位宽,应该有同步复位,高电平有效使能;当复位激活时,计数器输出应变为“0”。

高层级设计

        这是您在设计中定义各种子模块以及它们如何通信的阶段。假设我们需要设计一个微处理器:高层级设计意味着根据功能将设计分成多个子模块---寄存器、ALU、指令解码、内存接口等。

 
低层级设计

        低层级设计是设计人员描述如何实现每个子模块的阶段。它包含状态机、计数器、多路复用器、解码器、内部寄存器的详细信息。在各种界面绘制波形是一个好主意。这是个人花费大量时间的阶段。

          
RTL编码

        在 RTL 编码中,使用设计语言的可综合结构将低层级设计转换为 Verilog/VHDL 代码。我们通常喜欢在开始验证或综合之前检查代码。

module addbit (
a      , // first input
b      , // Second input
ci     , // Carry input
sum    , // sum output
co       // carry output
);
//Input declaration
input a;
input b;
input ci;
//Ouput declaration
output sum;
output co;
//Port Data types
wire  a;
wire  b;
wire  ci;
wire  sum;
wire  co;
//Code starts here
assign {co,sum} = a + b + ci;

endmodule // End of Module addbit

仿真

        仿真是在任何抽象级别验证模型功能特性的过程。我们使用仿真工具来仿真硬件模型。要测试 RTL 代码是否满足规范的功能要求,我们必须查看所有 RTL 模块是否功能正确。为了实现这一点,我们需要编写一个testbench,它生成时钟、复位和所需的测试向量。计数器的示例testbench如下所示。通常我们将 60-70% 的时间花在设计验证上。      

        我们使用仿真工具的波形输出来查看 DUT(Device Under Test,被测设备)在功能上是否正确。大多数仿真工具都带有波形查看器。随着设计变得复杂,我们可以编写自检式testbench,自动将 DUT 的输出与预期值进行比较。

         还有一种仿真叫做时序仿真,是在综合之后或者布局布线之后进行的。此处包括门延迟和线延迟,以查看 DUT 是否能以额定时钟工作。这也称为SDF(Standard Delay Format,标准延迟格式) 仿真或门级仿真。

     

综合

        综合是综合工具将 Verilog 或 VHDL 中的 RTL、目标技术和作为输入的约束并将 RTL 映射到目标技术原语的过程。综合工具在将 RTL 映射到门之后,还会进行最少量的时序分析,以查看映射的设计是否满足时序要求。(需要注意的重要一点是,综合工具不知道线延迟,它们只知道门延迟)。

        综合之后,在将网表传递到后端(放置和布线)之前通常需要做几件事:    

  • 形式验证(Formal Verification):检查 RTL 到门的映射是否正确
  • 扫描插入(Scan insertion):在ASIC的情况下插入扫描链


          
布局布线

        来自综合工具的门级网表被提取并以 Verilog 网表格式导入到布局布线工具中。所有的门和触发器会被放置(布局);时钟树被综合和复位被布线。在此之后,每个子模块都被布线。P&R 工具输出是一个 GDS 文件,代工厂使用它来制造 ASIC。后端团队通常将 SPEF(标准寄生交换格式)/RSPF(减少寄生交换格式)/DSPF(详细寄生交换格式)从 ASTRO 等布局工具转储给前端团队,然后前端团队使用 Prime Time 等工具中的 read_parasitic 命令来写出 SDF(标准延迟格式)用于门级仿真目的。

后仿真

        芯片(硅)从晶圆厂返回后,需要将其置于真实环境中并进行测试,然后才能投放市场。由于 RTL 的仿真速度(每秒时钟数)非常慢,因此总是有可能在后仿真过程中发现错误。


  • 📣您有任何问题,都可以在评论区和我交流📃!
  • 📣本文由 孤独的单刀 原创,首发于CSDN平台🐵,博客主页:wuzhikai.blog.csdn.net
  • 📣您的支持是我持续创作的最大动力!如果本文对您有帮助,还请多多点赞👍、评论💬和收藏⭐!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/418728.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何在 DevOps 中进行 API 全生命周期管理?

随着 DevOps 理念在中国企业当中的普及和发展,中国企业 DevOps 落地成熟度不断提升,根据中国信通院的数据已有近 6 成企业向全生命周期管理迈进。 而在研发全生命周期管理之中,API 管理的地位愈发显得重要。随着 API 数量的大幅增长&#xf…

针对电商物流网络包裹应急调运与结构优化问题的解题【思路数据代码详解】

文章目录C 题 电商物流网络包裹应急调运与结构优化问题解题思路数据进行预处理将数据转换为 stationary 数据底部C 题 电商物流网络包裹应急调运与结构优化问题 (赛题出来以后第一时间在CSDN分享,文章底部) 最新进度在文章最下方卡片,加入获取思路数据代…

【Spring Cloud Alibaba】4.创建服务消费者

文章目录简介开始搭建创建项目修改POM文件添加启动类添加配置项添加Controller添加配置文件启动项目测试访问Nacos访问接口查看端点检查简介 接下来我们创建一个服务消费者,本操作先要完成之前的步骤,详情请参照【Spring Cloud Alibaba】Spring Cloud A…

深度学习代码,对coco数据集evaluate时,spice评估总是报错,解决如下:

在跑evaluate.py时,发现bleu,METEOR,ROUGE_L都能成功,就是spice评估总是报错,我的报错内容如下: 就找了好久,也问了chatgpt啥的,尝试很很多,最终发现是java版本太高了&am…

数字化转型导师坚鹏:金融机构数据治理政策解读及问题解决之道

金融机构数据治理政策解读及问题解决之道课程背景: 很多金融机构存在以下问题: 不知道如何准确理解银保监会数据治理相关政策及要求? 不清楚如何有效解决监管数据治理常见问题及提升之道? 不清楚如何有效落实银保监会数据治理相…

算法模板(2):数据结构(3) 复杂数据结构1

复杂数据结构(1) 1. Splay 基本概念 什么是 Splay Splay 是一种二叉查找树,它通过不断将某个节点旋转到根节点,使得整棵树仍然满足二叉查找树的性质,并且保持平衡而不至于退化为链. 旋转操作 为了使 Splay 保持平…

虚拟主持人是什么?有哪些应用场景?

虚拟主持人是一种通动作捕捉技术或人工智能等技术,来驱动虚拟形象模拟真实主持人的动作、声音和表情,为各种场合提供主持服务的数字化角色。虚拟主持人的外貌、服装、发型、口音等都可以根据客户的需求和喜好进行定制,甚至可以创建出具有明星…

冶炼金属(十四届蓝桥杯B组)(超级详细)

目录 1、冶炼金属 解法一:(二分算法) 解法二:(数学公式推导) 2、永远不要试图用拖延来期待事情发生改变!!! 1、冶炼金属 小蓝有一个神奇的炉子用于将普通金属 O冶炼成为一种特殊金属 X。 这…

OceanBase 4.1 发版 | 一个面向开发者的里程碑版本

欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/ 2022 年 8 月,OceanBase发布了 4.0 版本(小鱼),作为业内首个单机分布式一体化架构,兼顾了分布式架构的扩展性和集中式架构的性能优势&…

Iptables安全防火墙企业实战

1. IPtables入门简介 Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的完全自由的基于包过滤的防火墙工具,它的功能十分强大,使用非常灵活,可以对流入和流出服务器的数据包进行很精细的控制。Iptables主要工作…

用通俗易懂的话来解释什么是Socket

前言 我在去年就学习过Java中Socket的使用,但对于Socket的理解一直都是迷迷糊糊的。看了网上很多关于Socket的介绍,看完还是不太理解到底什么是Socket,还是很迷。直到最近在学习计算机网络,我才对Socket有了一个更深地理解。之前…

sqoop数据导出、脚本使用

目录 准备表与数据 数据导出 脚本调用 准备表与数据 mysql表 CREATE TABLE user (id int(20),name varchar(20) )ENGINEINNODB DEFAULT CHARSETutf8; hive表 create table users( id bigint, name string ) row format delimited fields terminated by "\t";…

消息中间件RabbitMQ---Docker安装RabbitMQ、以及RabbitMQ的基本使用【二】

1、安装 1.1 拉取镜像 docker pull rabbitmq:management1.2 查看镜像 docker images1.3 创建容器 docker run -d --name rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15671:15671 -p 15672:15672 rabbitmq:management1.4 浏览器访问 登录进去后的效…

【C++】16.红黑树

1.红黑树 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或B lack。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路 径会比其他路径长出俩倍,因而…

UNIAPP实战项目笔记60 前端使用token来验证是否已经登录

UNIAPP实战项目笔记60 前端使用token来验证是否已经登录 获取数据库中用户是否有token值,并存入 store.user.token中,有值代表已经登录 detail页面 通过验证token拦截未登录用户bin跳转到登录页面 实际案例图片 后端接口文件 index.js var express require(express); var rou…

Python-入门基础篇(1)

这里使用的编译器是pycharm 打开pycharm 新建项目 选择一个文件路径(文件名字不要带中文) 新建一个.py 文件 这里就要编写代码啦 Python入门最基础的一些函数 print() 该函数可以输出内容到控制台。在括号中输入要输出的内容,用逗号隔开…

RocketMQ延迟消息源码分析

写作目的 第一个原因:最近玩哔哩哔哩遇到一个RocketMQ的Contributor,一开始不知道他是Contributor,后来问到延迟消息的时候这块还不是很了解,他告诉我学习要系统,你既然了解事务消息那我理解应该也了解延迟消息&#…

BGP路由实验

要求1 使用 Preval 策略 [r4]ip ip-prefix PV permit 192.168.10.0 24 [r4]route-policy PV permit node 10 [r4-route-policy]if-match ip-prefix PV [r4-route-policy]apply preferred-value 100 [r4]route-policy PV permit node 20 [r4-bgp]peer 24.0.0.2 route-policy…

redis网络模型

用户空间和内核空间IO五种IO模型阻塞IO非阻塞IOIO多路复用selectpollepollweb服务流程信号驱动IO异步IOIO模型比较redis网络模型redis为什么是单线程redis单线程网络模型流程用户空间和内核空间 为安全,将用户应用和系统应用分隔开,产生用户空间和内核空…

thanos prometheus 的高可用、长期存储二进制部署

1.简介 http://thanos.io/ thanos 是具有长期存储功能的开源、高可用性 Prometheus的集群组件。 全局查询视图 跨多个 Prometheus 服务器和集群查询指标 无限保留 使用对象存储扩展系统,不限时间保留指标。 Prometheus兼容 兼容 Prometheus api,用于…