当前位置: 首页 > news >正文

SDC命令详解:使用uniquify命令进行唯一化

相关阅读

SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html?spm=1001.2014.3001.5482


唯一化简介

        在了解uniquify命令前,首先需要知道唯一化的定义:唯一化指的是在综合过程中Design Compiler会自动检测当前设计层次结构中对同一设计(或者说模块)的多次引用(例化),并为每个实例生成一个独立的设计副本。

        该过程首先复制(已设置的约束也会进行复制和调整)并重命名被多次引用的设计(不包括有dont_touch属性的实例和设计),命名规则由uniquify_naming_style变量(默认为%s_%d,其中%s指的是原设计名,%d是一个确保名称唯一所需的最小整数)控制。原始设计将不再可访问,原始设计或其中对象的将从包含它们的集合中删除。复制后Design Compiler可以针对每个唯一副本基于其所在环境进行单独优化,如图1所示。

图1 唯一化的结果

uniquify命令

        除了使用综合类命令(如compile和compile_ultra命令)外,用户可以使用uniquify命令显式进行唯一化(其实它并不是一个SDC命令,归为此类只是为了方便管理)。

        本文针对Design Compiler,但该命令同样存在于IC Compiler等工具中,它们大致相同,略有差别。uniquify命令的BNF范式(有关BNF范式,可以参考以往文章)为:

uniquify[-base_name base_name][-force | -cell cell_list [-new_name new_design_name]| -reference design_name][-dont_skip_empty_designs]//注:该命令的选项和参数顺序任意

指定基名字

        -base_name选项用于指定一个基名字,以取代uniquify_naming_style变量中%s代表的原设计名。

强制唯一化

        -force选项用于指定即使实例已唯一或带有dont_touch属性,也强制重命名(顶层设计不受影响)。

        -force选项、-cell选项和-reference选项是互斥的,只能使用其中一个。

指定单元列表

        -cell选项指定一个列表/集合,包含层次单元对象,为其中每个层次单元进行唯一化(即使实例已唯一或带有dont_touch属性)。对于列表而言,如果有多于一个对象,需要使用引号或大括号包围(对使用集合无效),关于列表和集合的区别,可以参考下面的博客。

SDC命令详解:使用集合(Collection)而不是字符串(String)/列表(List)作为命令参数https://chenzhang.blog.csdn.net/article/details/147144571        需要注意的是,如果层次单元对象的父实例尚未唯一化,则也会进行唯一化。如果使用了-cell选项,则原始设计在复制后不会删除。

        -force选项、-cell选项和-reference选项是互斥的,只能使用其中一个。

指定单元名字

        只有当使用了-cell选项且只指定了一个层次单元才能使用该选项,指定一个设计名作为该单元唯一化后的名字(若该设计名已被使用,则该选项失效)。

指定设计名

        -reference选项用于指定一个设计名,为当前设计中引用此设计的实例进行唯一化(即使设计已唯一或带有dont_touch属性)。

        如果使用了-reference选项,则原始设计在复制后不会删除。

        -force选项、-cell选项和-reference选项是互斥的,只能使用其中一个。

指定不跳过空设计

        -dont_skip_empty_designs选项指定即使是黑盒设计也会进行唯一化;默认情况下黑盒设计保持不变。

简单使用

        以图2所示的层次结构为例。

图2 层次结构

综合时的唯一化

        首先使用list_designs命令查看内存中的所有设计。

dc_shell> list_designs
leaf_module    middle_module    top_module (*)

        随后使用compile命令(如果使用compile_ultra命令需要添加-no_autoungroup选项防止自动解组)进行综合并再次使用list_designs命令查看内存中的所有设计,可以发现此时进行了唯一化。

dc_shell> compile
dc_shell> list_designs
leaf_module_0    leaf_module_1    middle_module_0    middle_module_1    top_module (*)

用户显式进行唯一化

        首先使用list_designs命令查看内存中的所有设计。

dc_shell> list_designs
leaf_module    middle_module    top_module (*)

        随后使用uniquify命令进行唯一化并再次使用list_designs命令查看内存中的所有设计,可以发现此时进行了唯一化。 

dc_shell> uniquify
dc_shell> list_designs
leaf_module_0    leaf_module_1    middle_module_0    middle_module_1    top_module (*)
http://www.xdnf.cn/news/962101.html

相关文章:

  • 菲尔斯特传感器,超声波风速风向传感器助力绿色能源发展
  • idea中黄色感叹号打开
  • RPC调用三 使用代理进行服务自动注册
  • CppCon 2015 学习:RapidCheck Property based testing for C++
  • 计算机基础(一):ASCll、GB2312、GBK、Unicode、UTF-32、UTF-16、UTF-8深度解析
  • 记录chrome浏览器的一个bug
  • 零基础入门 线性代数
  • 上位机开发过程中的设计模式体会(2):观察者模式和Qt信号槽机制
  • 经典的多位gpio初始化操作
  • 基于FPGA的PID算法学习———实现PI比例控制算法
  • React Native 基础语法与核心组件:深入指南
  • 篇章三 论坛系统——环境搭建
  • 如何将数据从 iPhone 传输到笔记本电脑
  • ACM70V-701-2PL-TL00
  • CPP基础(2)
  • Linux 删除登录痕迹
  • rapidocr v3.1.0发布
  • 什么样的登录方式才是最安全的?
  • 高频交易技术:订单簿分析与低延迟架构——从Level 2数据挖掘到FPGA硬件加速的全链路解决方案
  • Numpy7——数学2(矩阵基础,线性方程基础)
  • 看板会议如何高效进行
  • 设计模式和设计原则回顾
  • React动态渲染:如何用map循环渲染一个列表(List)
  • VsCode 离线插件下载
  • 第十三章 RTC 实时时钟
  • 从离散控制到集成管理:Modbus TCP转CANopen网关重构烟丝膨胀生产线
  • 如何使用 IP 地址修改 Android 的 Captive Portal 校验 URL
  • 关于Android camera2预览变形的坑
  • 《高等数学》(同济大学·第7版)第四章第二节换元积分法
  • 在GIS 工作流中实现数据处理