Design Compiler——综合及debug流程

文章目录

  • 前言
  • 一、什么是综合?
  • 二、综合的流程
    • 1. Develop HDL files
    • 2. Specify libraries
    • 3. Read design
    • 4. Define design environment
    • 5. Set design constraints
    • 6. Select compile strategy
    • 7. Synthesize and optimize the design
    • 8. Analyze and resolve design problems
    • 9. Save the design database
  • 三、综合debug timing问题的流程
    • 1. 启动DC
    • 2. 读入库文件
    • 3. 读入.ddc文件
    • 4. reset old sdc
    • 5. source new sdc
    • 6. report timing result
  • 总结


前言

Design Compiler 是由 Synopsys 公司开发的一款综合工具,用于将 RTL 代码转换成门级网表电路,同时还可以进行时序分析、时序优化、功耗优化、面积优化等功能。Design Compiler 基于综合和优化算法,可以实现快速和准确的综合和优化,同时支持多种逻辑综合约束和技术库。

一、什么是综合?

DC是芯片过程中的一个编译器,对应着芯片设计流程中的synthesis(综合)。综合就是把行为级的RTL代码在工艺、面积、时序等约束下转换成对应的门级网表,这无非就是将RTL代码编译成实际电路的过程。
综合主要包括三个阶段:转换(translation)、优化 (optimization)与映射(mapping)。Translation:将RTL代码转化成GTECH库元件组成的逻辑电路。
Gate Mapping:将GTECH库元件组成的逻辑图转换到目标工艺库上。
Logic Optimization:根据所需时延、功耗、面积等约束条件进行优化。
在这里插入图片描述

二、综合的流程

DC的流程如下图所示,图中还列出了流程各步骤常用的基本命令。
在这里插入图片描述

1. Develop HDL files

准备设计文件,DC的输入文件是HDL文件

2. Specify libraries

指定库文件,包括搜索路径(search_path)、链接库(link library)、目标库(target library) 、符号库(symbol library)、综合库(synthetic library)。

3. Read design

设计的读入过程是将设计文件载入内存,并将其转换为 DC 的中间格式,即GTECH 格式,GTECH 格式由“soft macros” 如 adders, comparators 等组成,这些组件来自 synopsys 的 synthetic lib,每种组件具有多种结构。
读入设计有两种实现方法实现方法:read 和 analyze & elaborate(实际上read 是 analyze 与 elaborate 的打包操作 )。

代码如下(示例):

analyze -format sverilog -vcs "-f flist.f" -define "SYNTHESIS"
elaborate $design
current_design $design
link
set_verification_top
uniquify -force
check_design

4. Define design environment

定义设计环境,定义对象包括工艺参数(温度、电压等)、I/O特性(负载、驱动、扇出)。
  在这里插入图片描述

5. Set design constraints

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

6. Select compile strategy

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

7. Synthesize and optimize the design

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

代码如下(示例):

compile_ultra -gate -scan -no_seq_output_inversion -no_autoungroup
compile_ultra -incremental -only_design_rule -no_autoungroup -no_boundary_optimization

8. Analyze and resolve design problems

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

9. Save the design database

保存设计数据。DC不会自动保存综合后的设计数据,因此需要手动保存网表、报告等数据文件。
  
DC综合的流程示例如下图,先通过将RTL代码转化为通用的布尔(Boolean)等式,即GTECH(Generic Technology)格式;然后执行compile命令,该命令按照设计的约束对电路进行逻辑综合和优化,使电路能满足设计的目标或约束,并且使用目标工艺库中的逻辑单元映射成门级网表。
在这里插入图片描述

三、综合debug timing问题的流程

如下图所示,如果综合结束后发现了timing问题,需要修改sdc然后再看一下使用新的sdc之后timing结果,直到最后timing没有问题。
在这里插入图片描述
综合debug timing问题的流程如下。

1. 启动DC

代码如下(示例):

dc_shell

2. 读入库文件

读入库文件,因为$design.ddc文件中不包含用到的库信息。

代码如下(示例):

set search_path [list . $search_path \${DC_PATH}/libraries/syn]
set synthetic_library [list dw_foundation.sldb standard.sldb]
set target_library [list class_ss.db \x_ss.db \y_ss.db]
set link_library [list * ${target_library} \${synthetic_library}]
set symbol_library [list class.sdb]

3. 读入.ddc文件

$design.ddc文件包含gate-level netlist和constraint.sdc。

代码如下(示例):

read_ddc ./ddc/$design.ddc

4. reset old sdc

代码如下(示例):

reset_path -from [get_cells -hier *]
reset_path -to [get_cells -hier *]
reset_path -th [get_ports *]
remove_case_analysis -all

5. source new sdc

代码如下(示例):

source -e -v ./sdc/new_sdc.tcl

6. report timing result

代码如下(示例):

report_timing -significant_digits 4 -trans -derate -cap -nets -path full_clock_expanded -max_paths 20 -nworst 1 -nosplit -delay max -slack_lesser_than 0.0
#write sdc and netlist
write_sdc -nosplit ./sdc/$design.sdc
write -f verilog -hie -o ./output/$design.v
exec gzip ./output/$design.v

总结

DC的HDL compiler把HDL代码转化成DC自带的GTECH格式,然后DC的library compiler 根据标准设计约束(SDC)文件、IP-DW库、工艺库、图形库、(使用拓扑模式时,还要加入ICC生成的DEF模式,加载物理布局信息)进行时序优化、数据通路优化、功耗优化(DC的power compiler进行)、测试的综合优化(DC的DFT compiler),最后得到优化后的网表。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea 中的properties文件中文乱码

如遇到以下类似的问题: 配置setting中-》Editor-》File Encodings 中,将以下三处位置的编码格式进行修改 Global Encoding GBK Project Encoding GBK Default encoding for properties files UTF-8 修改之后文件的中文显示正常

老友记台词 第一季 第十四集 Friends 114(全英版)

文章目录 V114 The One With the Candy Hearts[Scene: Central Perk, Ross is eyeing a beautiful woman at the counter, and Joey and Chandler are egging him on to go talk to her. No pun intended. I mean it.][Scene: Central Perk, Monica, Rachel, Phoebe, Joey, Cha…

从源码到应用:医疗陪诊系统与在线问诊小程序开发详解

在数字化医疗时代,医疗陪诊系统与在线问诊小程序的开发成为了医疗机构和技术公司关注的焦点。接下来,小编将与您一同深入了解。 一、医疗陪诊系统的核心功能 医疗陪诊系统旨在为患者提供更贴心的医疗服务,通过专业人员陪同患者完成就医过程。…

【C语言篇】C语言常考及易错题整理DAY1

文章目录 C语言常考及易错题整理选择题全局、局部和静态变量#define与typedef转义字符操作符循环其他 编程题计算日期到天数转换柯尼希定理旋转数组的最小数字描述错误的集合整数转换密码检查 C语言常考及易错题整理 选择题 全局、局部和静态变量 执行下面程序,正…

[000-01-030].第3节 :搭建Zookeeper集群环境

1.搭建Zookeeper集群环境 1.1.集群安装: a.集群规划: 在 hadoop103(192.168.2.3)、hadoop104(192.168.2.4) 和 hadoop105((192.168.2.5) 三个节点上都部署 Zookeeper b.解压安装: 1.下载zookeeper压缩版本&#x…

微软披露Office最新零日漏洞,可能导致数据泄露

近日,微软披露了 Office 中一个未修补的零日漏洞,如果被成功利用,可能导致敏感信息在未经授权的情况下泄露给恶意行为者。 该漏洞被追踪为 CVE-2024-38200(CVSS 得分:7.5),被描述为一个欺骗漏洞…

AI安全-文生图

1 需求 2 接口 3 示例 大模型图像安全风险探析 - 先知社区 前言 文生图模型是一种新兴的人工智能技术,它通过对大规模文本数据的学习,能够生成逼真的图像。这种模型包含两个主要组件:一个文本编码器和一个图像生成器。 文本编码器接收文本输入,并将其转换为一种数字化的表示…

Allegro如何更改过孔的网络

Allegro如何更改过孔网络 在用Allegro进行PCB设计过程中,有时候需要改变过孔的网络。 如果用删除再重新打过孔的方式就显的比较慢;这时如果使用skill操作就可以大大提高PCB设计的效率。 下面介绍具体操作方法: (1)首先点击属性查看过孔的网络,此时过孔网络为DGND。如下…

【Python-办公自动化】1秒比较出2张表格之间的不同并标黄加粗

欢迎来到"花花 Show Python",一名热爱编程和分享知识的技术博主。在这里,我将与您一同探索Python的奥秘,分享编程技巧、项目实践和学习心得。无论您是编程新手还是资深开发者,都能在这里找到有价值的信息和灵感。 自我介…

Raspberry Pi Pico 家族的进化 —— RP2040、RP2350与RP2354性能比较

随着树莓派Pico系列的不断扩展,其背后的芯片也得到了升级和改进。从最初的RP2040到最新的RP2354,每一次迭代都带来了新的功能和性能提升。本文将详细对比RP2040、RP2350和RP2354三款芯片的关键特性,帮助开发者了解它们的差异,并选…

three.js 几何体、材质和网格模型

场景Scene、相机Camera、渲染器Renderer初始化完成之后,可以向场景中添加一个简单的模型进行展示。在此之前需要了解三个概念:几何体、材质、网格模型。 几何体:表示物体的几何形状。材质:表示物体的外观效果。网格模型&#xff…

YoloV8改进策略:Block改进|LeYOLO,一种用于目标检测的新型可扩展且高效的CNN架构|复现LeYolo,轻量级Yolo改进

摘要 LeYOLO是在YOLO系列,特别是可能受到YOLOv8启发的基础上进行的一系列改进,旨在提升目标检测模型的高效性、可扩展性和精度。其主要特点包括: 高效骨干网络缩放方法: LeYOLO借鉴了倒置瓶颈(Inverted Bottleneck&am…

大模型学习方法之——大模型技术学习路线

“ 技术学习无非涵盖三个方面,理论,实践和应用**”** 大模型技术爆火至今已经有两年的时间了,而且大模型技术的发展潜力也不言而喻。因此,很多人打算学习大模型,但又不知道该怎么入手,因此今天就来了解一下…

Spring——IOC/DI思想

1、IOC(Inversion of Control)控制反转 何为控制反转? 在业务层中我们如果要调用数据层的方法那么必然牵扯到对象的创建,如果我想要改变上述数据层的方法中的内容,那么我就要改变业务层的代码,重新创建对…

RedisTempate序列化的json字符串,如何反序列化

待转换的字符串 常见工具 Gson json new Gson(); 无法解析,只能有Josn的反序列化来实现 public void onMessage(final Message message, final byte[] pattern) { // RedisMessage redisMessage json.fromJson(message.toString(), RedisMessage.class);//…

从0开始搭建vue + flask 旅游景点数据分析系统(十二)【完结篇】:用户管理之增删改查、用户信息更新

这一期继续完成用户管理的增删改查和登录用户修改自己信息的功能,首先完成后端接口的功能。 1 后端接口 这边有查询列表接口、查询单个接口、新增接口、修改接口、删除接口这5个接口: #** 用户信息的增删改查 *** # 用户列表 main.route(/users, meth…

第36讲:使用Prometheus监控系统全方面监控Ceph集群

文章目录 1.启用Manager组件的Prometheus模块2.部署并配置Prometheus2.1.部署Prometheus服务端2.2.配置Prometheus添加Ceph集群的监控信息2.3.观察Prometheus监控系统中是否能浏览Ceph集群的监控数据 3.部署Grafana用于展示Prometheus的监控数据3.1.部署Grafana仪表盘3.2.Grafa…

开发工具及框架分享

文章目录 前言一、IDEA 开发工具知识分享1.1 功能特点介绍1.2 常见插件使用1.3 快捷键设置1.4 代码调试 二、Maven项目依赖管理介绍2.1 Maven 介绍2.2 Maven 安装及配置2.3 Maven 功能与特性2.4 打包测试 三、Springboot框架介绍3.1 核心特征概述3.2 常用注解介绍3.3 自动装配原…

yolov8/yolov10 MLU370 实现推理/单多卡训练!

文章目录 前言一、平台环境配置二、基础环境配置1.代码下载2.环境安装3.模型下载4.代码修改 三.单卡推理四、单/多卡训练 前言 本章主要操作以yolov8为主,但是yolov10用该操作也能直接适用,开干! 一、平台环境配置 镜像选择:v2…

Python Django 框架 01

1. 以新闻内容为主的网站-Django。CMS 查看django官方网站。查看django源码。查看中文文档。对于Django框架遵循MVC设计,并且有个专用名字:MVT。 model 只适用于关系型数据库。 建议使用谷歌浏览器。 Django环境配置 python 环境 因为Django是需要Py…