【DC简介--Part1】

DC简介-Part1

  • 1 overview
    • 1.1 DC操作步骤
    • 1.2 Steps
      • 1.2.1 Develop HDL files
      • 1.2.2 Specify libraries
      • 1.2.3 Read design
      • 1.2.4 Define design environment
      • 1.2.5 Set design constraints
      • 1.2.6 Select compile strategy
      • 1.2.7 Synthesize and optimize the design
      • 1.2.8 Analyze and resolve design problems
      • 1.2.9 Save the design database
  • 2 具体前期准备工作
    • 2.1 Specify librarys
      • 2.1.1 什么是库?
      • 2.1.12 进行库(libraries)指定
    • 2.2 Read design
      • 2.2.1 什么是转换(translation)
      • 2.2.2 读入文件进行转换
      • 2.2.3 转换后的gtech网表

1 overview

Designer Compiler(DC)就是对应着芯片设计流程中的synthesis(综合)。即:综合就是把行为级的RTL代码在工艺、面积和时序等约束下转换成相对应的门级网表;即对应着将RTL代码编译成实际电路的过程。
综合主要包括三个阶段:转换(translation)、优化(optimization)与映射(mapping)。
在这里插入图片描述

  • 转换阶段:综合工具即将高层语言描述的电路–>门级的逻辑实现;对于DC来说,就是使用gtech.db库中的门级单元来组成HDL语言描述的电路,从而构成初始的未优化的电路。
  • 优化阶段:综合工具对已有的初始电路进行分析,去掉电路中的冗余单元,同时会根据工程师提供的约束条件对初始电路进行优化,使得电路在满足逻辑功能的前提下,尽可能得往工程师约束的条件靠近(比如说面积最小等);
  • 映射阶段:综合工具将优化之后的电路映射到由制造商提供的工艺库上,这里的工艺库就是target_library,最后生成网表文件用于后端设计;
    在这里插入图片描述

1.1 DC操作步骤

下面是给出DC进行逻辑综合时的基本步骤;
在这里插入图片描述

1.2 Steps

1.2.1 Develop HDL files

1.Develop HDL files:即src/ 的module文件;

1.2.2 Specify libraries

Specify libraries:指定库文件,包括搜索路径-search_path、链接库-link library、目标库-target library、符号库-symbol library、综合库-synthetic library.

  • serach_path: 综合工具只会从该指定的路径去寻找各种库文件。

  • link library & target library: Link library 和 target library 统称为 technology library(即工艺库,习惯称之为综合库),technology library 由半导体制造商提供,包含相关 cell 的信息及设计约束标准,其中:
    Target library: 在门级优化及映射的时候提供生成网表的 cell,即DC用于创建实际电路的库。
    Link library: 提供设计网表中的 cell,可以跟target_library使用同一个库,但是 DC 不用 link library中的 cell 来综合设计。包含target_library,在此基础上再加上IO库文件,IP库文件等
    注意 :在 link_library 的设置中必须包含" * “,” * “表示 DC 在引用实例化模块 或者单元电路时首先搜索已经调进DC memory的模块和单元电路,如果在link library 中不包含” * ",DC 就不会使用 DC memory 中已有的模块,因此,会出现无法匹配的模块或单元电路的警告信息(unresolved design reference)。
    当 DC 读入设计时,它自动读入由 link library 变量指定的库。当连接设计时,DC 先搜寻其内存中已经有的库,然后在搜寻由 link library 指定的库。

  • Symbol library: 提供 Design Vision GUI 中设计实现的图形符号,如果使用脚本模式而不使用 GUI,可不指定 Symbol library.

  • Synthetic library: 虽然直译为综合库,但是常称为IP库,为Designware library。特殊的IP库需要授权(例如多级流水线乘法器),标准IP库由DC软件商提供,无需指定。
    这里只指定搜索路径(search_path)、链接库(link library)、目标库(target library)即可。

1.2.3 Read design

读入设计就是将编写好的HDL代码载入内存。

1.2.4 Define design environment

定义设计环境,定义对象包括工艺参数(温度、电压等)、I/O特性(负载、驱动、扇出);

1.2.5 Set design constraints

设置设计约束,包括设计规则约束(DRC,design rule constraints)和优化约束(optimization constraints),DRC由工艺库决定,在设计编译过程中必须要满足,用于使电路能按照功能要求正常工作。优化约束由工程师指定,为DC要达到的时序和面积优化目标。DC在不违反设计规则约束的前提下,尽可能满足优化约束。

1.2.6 Select compile strategy

选择编译策略。对于层次化设计,DC由top_down和bottom_up两种编译策略。
在top_down策略中,顶层模块和子模块一起编译,所有的环境和约束针对顶层设计,虽然此种策略自动考虑到相关的内部设计,但是此种策略中所有模块需要同时占用内存,硬件资源损耗打,不适合大型设计。
在bottom_up策略中,子模块单独约束,当子模块成功编译后,会被设置为dont_touch属性,不允许之后的编译过程修改,子模块编译完成后再向上编译父模块,直至顶层模块编译完成。由于该策略不需要所有模块同时占用内存,因此适用于大规模设计。

1.2.7 Synthesize and optimize the design

执行综合和优化,可以利用一些选项指导编译和优化过程。

1.2.8 Analyze and resolve design problems

分析及解决设计中存在的问题。DC在编译过程中会产生一系列报告,如时序、面积、约束、功耗等报告,工程师需要通过这些报告进行分析和解决设计中存在的问题。

1.2.9 Save the design database

保存设计数据。DC不会自动保存综合后的设计数据,因此需要手动保存网表、报告等数据文件。

2 具体前期准备工作

2.1 Specify librarys

DC会将我们的设计转换(translation)为一个中间格式——gtech网表;将gtech网表理解为FPGA中RTL Analysis之后得到的RTL级网表,它不与任何具体的FPGA相关,例如RTL级网表可能包含加法器,但是FPGA上只有LUT,并没有加法器。得到gtech网表之后,我们需要根据给定的约束,去选择真实的合适的器件,那么这个时候可以类比于将RTL级网表映射到某一块具体的FPGA上,类似于FPGA开发中的synthesis。
DC运行库中需要的几种库文件:

  • 目标库(target_library)
  • 链接库(link_library)
  • 符号库(symbol_library)
  • 综合库(synthetic_library)

2.1.1 什么是库?

  • 目标库: 是gtech网表要最终映射(mapping)到的库,库文件有两种格式,有以.lib结尾和.db结尾,.lib是可以阅读的。
    下图是具体的一个目标库文件-target_libray: 包含了各个单元cell的行为、引脚、面积、时序信息等,DC会根据用户给定的约束(例如时钟频率和面积等)去选择合适的单元,去掉冗余的单元,最后将优化之后的电路映射(mapping)到目标库(target_library)上。
    在这里插入图片描述

可以把这个目标库(target_library)理解为一个非常大switch语句,它的变量是各种时序要求等,映射(mapping)就是DC根据时序要求等去选择合适的cell,即选择合适的case

  • 链接库(link_library) 是设置模块或单元电路的引用,指定购买的付费IP、存储器、IO等,例如我们购买了Synopsys的某个IP,则需要在这个地方指定。
  • 符号库(symbol_library) 定义单元电路Schematic库,在design_vision图形化模式下查看综合图标需要设置,后缀是.sdb
  • IP库(synthetic_library) 也称模型库,DC综合时用来将HDL代码转化为相对应的元件时所参考的模型库,比如RTL中的符号“+”,可以通过查找模型库将生成某一类加法器。默认的synthetic library一般有:dw_foundation.sldb. 在design compiler的安装目录下可以找到。

2.1.12 进行库(libraries)指定

set_app_var target_library ../lib/smic18_ss.db //指定目标库  ff和ss代表不同的工艺角

set_app_var link_library ../lib/smic18_ss.db //指定链接库

在这里插入图片描述

2.2 Read design

specify libraries之后就是read_file,在前文,我们不断提到gtech网表,gtech网表是根据我们的设计转换而来,那我们首先介绍一下什么是转换以及怎么转换?

2.2.1 什么是转换(translation)

首先需要将设计HDL代码导入DC中,DC会使用内部的单元(cell)来替换我们的设计文件,也就是使用gtech.db库中的单元cell来组成一个中间的网表getch网表
经过转换(translation)RTL or gate or behavior ——> gtech
在这里插入图片描述

具体转换的过程:
在这里插入图片描述

转换的过程中:DC会进行结构级和逻辑级的优化;比如通过公用表达式,进行结构级优化;通过展平,把组合逻辑路径减少两级,变为乘积之和的电路进行逻辑优化;
在这里插入图片描述

2.2.2 读入文件进行转换

将设计载入DC中,具体是读入设计文件命令:


read_verilog ../rtl/clock.v  
read_verilog ../rtl/register.v
read_verilog ../rtl/cells-lib/dffr.v
read_verilog ../rtl/cells-lib/mux.v

逐条读入时默认指定最后一个为top模块,但建议在任何情况下都要单独指定top模块。

2.2.3 转换后的gtech网表

即将生成的gtech网表保存在unmapped文件夹之下/
在下方得到新的design_gtech_netlist.v来进行对比;

read_verilog ../rtl/cells-lib/dffr_RTL.v  

current_design dffr_RTL

write_file  -f verilog -hier -o ../unmapped/design_gtech_netlist.v

在这里插入图片描述

如果直接在elaborate或者read_file后导出gtech网表,生成的gtech网表会有很多cell不能map到gtech. 比如时序逻辑生成 SEQGEN来表示 \ 如果要生成完全可以map的gtech网表,需要综合compile,这要在设置完约束之后。

在compile前,gtech网表中不仅仅只有与非门、异或门这种门电路符号,还有时序器件符号SEQGEN,如果设计中使用加、减、乘和比较等运算,gtech 会将其提取出来并用以带有OP标识的符号表示,这方便后续进行高级别电路优化;另外,设计中避免不了使用选择逻辑,如不特别声明,DC在这一阶段对选择逻辑用SELECT_OP表示,且在后续的映射阶段并不一定将SELECT_OP映射成多路选择器,而是采用与非门电路来实现其功能,如果想要映射成多路选择器,那么需要在RTL中声明synopsys infer_mux。

未完待续…
[ref]
1.https://blog.csdn.net/qq_23958451/article/details/108189446
2.https://zhuanlan.zhihu.com/p/605629775

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Unity3D】ECS入门学习(十二)IJob、IJobFor、IJobParallelFor

IJob&#xff1a;开启单个线程进行计算&#xff0c;线程内不允许对同一个数据进行操作&#xff0c;也就是如果你想用多个IJob分别计算&#xff0c;将其结果存储到同一个NativeArray<int>数组是不允许的&#xff0c;所以不要这样做&#xff0c;如下例子就是反面教材&#…

HCIA-Access V2.5_7_1_XG(S)原理_系统概述

近年来&#xff0c;随着全球范围内接入市场的飞快发展以及全业务运营的快速开展&#xff0c;已有的PON技术标准在带宽需求&#xff0c;业务支撑能力以及接入节点设备和配套设备的性能提升等方面都面临新的升级需求&#xff0c;而GPON已经向10G GPON演示&#xff0c;本章将介绍1…

imgproxy图像处理的高效与安全

摘要 imgproxy作为一个高效且安全的独立服务器,为图像处理提供了全新的解决方案。它不仅简化了图像调整和转换的过程,还极大地提升了处理速度,确保了整个流程的安全性。通过集成imgproxy,用户可以轻松优化网页上的图像,提高加载速度,改善用户体验。本文将深入探讨imgpro…

CPT203 Software Engineering 软件工程 Pt.4 软件设计(中英双语)

文章目录 6. 设计概念6.1 Principle6.2 Concepts6.2.1 General design concepts&#xff08;常见的设计概念&#xff09;6.2.1.1 Abstraction&#xff08;抽象&#xff09;6.2.1.2 Modularity&#xff08;模块化&#xff09;6.2.1.3 Functional independence&#xff08;功能独…

MultiDiff 论文解读

一、CameraCtrl AnimateDiff->MotionCtrl->CameraCtrl CameraCtrl将多帧图像的Plucker射线输入到Camera Encoder&#xff0c;Plucker射线可以表示每个像素对应的光线方向。 Camera Encoder包括ResNet block和Temporal Attention&#xff0c;来提取每一帧相机位姿的时序…

OpenCV-Python实战(4)——图像处理基础知识

一、坐标 在 OpenCV 中图像左上角坐标为&#xff08;0&#xff0c;0&#xff09;&#xff0c;竖直向下为 Y&#xff08;height&#xff09; &#xff1b;水平向右为 X&#xff08;width&#xff09;。 二、生成图像 2.1 灰度图像 img np.zeros((h,w), dtype np.uint8) i…

【Compose multiplatform教程18】多平台资源的设置和配置

要正确配置项目以使用多平台资源&#xff0c;请执行以下操作&#xff1a; 添加库依赖项。 为每种资源创建必要的目录。 为限定资源创建其他目录&#xff08;例如&#xff0c;深色 UI 主题或本地化字符串的不同图像&#xff09;。 依赖项和目录设置 要访问多平台项目中的资源…

html转PDF

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 在项目中会有一些需要页面转成PDF的情况&#xff0c;这里需要配合一些插件可以完成 使用html2canvas将使用canvas将页面转为base64图片流&#xff0c;并插入jspdf插件中&#xff0c;保存并下载pdf。…

32132132123

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…

微服务保护-sentinel

为什么要有微服务保护&#xff1f; 微服务保护是为了避免微服务雪崩而出现的&#xff0c;每个微服务能处理的请求是有限的&#xff0c;如果一个微服务出现问题导致一个请求进入微服务的时间太久&#xff0c;就会导致大量去请求停滞在微服务内部&#xff0c;这样就会过分占用系统…

深入浅出 MyBatis | CRUD 操作、配置解析

3、CRUD 3.1 namespace namespace 中的包名要和 Dao/Mapper 接口的包名一致&#xff01; 比如将 UserDao 改名为 UserMapper 运行发现抱错&#xff0c;这是因为 UserMapper.xml 中没有同步更改 namespace 成功运行 给出 UserMapper 中的所有接口&#xff0c;接下来一一对…

【LLM综述】29种大模型Prompt Engineering技术

note 从零样本&#xff08;Zero-shot&#xff09;提示到最新进展的各种提示技术&#xff0c;包括推理和逻辑链&#xff08;Chain-of-Thought, CoT&#xff09;提示、自动链式思考&#xff08;Auto-CoT&#xff09;提示、自我一致性&#xff08;Self-Consistency&#xff09;提…

【Java基础-29】深入理解Java中的super关键字:用法、场景与最佳实践

在Java编程中&#xff0c;super关键字是一个非常重要的概念&#xff0c;尤其在继承和多态的上下文中。它用于访问父类的成员&#xff08;属性、方法或构造函数&#xff09;&#xff0c;帮助开发者在子类中更好地管理和扩展父类的功能。本文将深入探讨super关键字的用法、适用场…

linux-软硬链接

我们今天再来聊一下这个"软硬链接"的问题. 目录 1. 软硬链接长什么样?2. 软连接和硬链接的特征 和 应用2.1 软连接特征 及其 应用?①软连接是什么?②软连接的应用1: 快捷方式③软连接的应用2: 方便维护库文件 2.2 硬连接特征 及其 应用?①硬链接是什么?②引用计…

学习threejs,THREE.CircleGeometry 二维平面圆形几何体

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.CircleGeometry 圆形…

ISO/IEC 25012:2008 系统和软件的质量模型(数据质量模型)

本文是对GBT 25000.12-2017《软件产品系统与软件质量要求与评价&#xff08;SQuaRE&#xff09;第12部分&#xff1a;数据质量模型》一文的转载&#xff0c;此外还参考了ISO/IEC 25012:2008(en) Software engineering — Software product Quality Requirements and Evaluation…

鸿蒙开发工程师成长的五个阶段

在科技日新月异的今天&#xff0c;鸿蒙&#xff08;HarmonyOS&#xff09;作为华为自主研发的操作系统&#xff0c;正以其独特的魅力和广阔的应用前景吸引着越来越多的开发者加入。鸿蒙不仅承载着华为对未来智能设备互联互通的愿景&#xff0c;也为开发者提供了一个充满挑战与机…

torch.nn.LSTM介绍

torch.nn.LSTM 是 PyTorch 提供的一个高级封装,用于构建长短时记忆网络(LSTM)。相比手动实现,torch.nn.LSTM 更高效且支持批量处理、双向 LSTM、多层 LSTM 等功能,适合大多数实际应用。 LSTM基本原理 门控机制(Gating Mechanism)是深度学习中常见的一种设计,用于控制信…

termux-boot安卓开机自动启动应用

termux安装 github 蓝奏云 v119.1 termux-boot安装 github 蓝奏云 v0.8.1 安装 给权限运行加锁后台 am启动应用命令 am start -n 包名/启动项获取包名和启动入口&#xff08;图中app为爱玩机工具箱&#xff09; 例 简黑时钟蓝奏云 包名com.hm.jhclock 桌面启动项com.hm.jh…

【畅购商城】购物车模块之查看购物车

目录 分析 接口 后端实现 前端实现&#xff1a;显示页面 前端实现&#xff1a;显示购物车信息 分析 用户如果没有登录&#xff0c;购物车存放在浏览器端的localStorage处&#xff0c;且以数组的方式进行存储。用户如果登录了&#xff0c;购物车存放在redis中&#xff0c…