首页 > 其他分享 >@符号在DC等过滤器表达式中的用途

@符号在DC等过滤器表达式中的用途

时间:2024-06-17 15:58:03浏览次数:11  
标签:脚本 name DC 变量 logic 过滤器 ref 表达式 属性

在TCL脚本中,特别是在使用电子设计自动化(EDA)工具(如Synopsys Design Compiler、Cadence Innovus等)时,@符号在过滤器表达式中有特定的用途。

用途和解释

  • @ref_name@符号在过滤表达式中用于明确指示属性名称。属性是指对象的特定特征或信息(如ref_name)。
  • *:通配符,用于匹配任何字符串。
  • @ref_name==**logic_0** || @ref_name==**logic_1**:这是一个逻辑表达式,用于过滤出ref_namelogic_0logic_1的单元。

加与不加 @ 的区别

  • @ 的情况:明确指出在过滤条件中使用的名称是一个属性。这在某些情况下是必须的,尤其是当属性名称可能与脚本中的其他变量或关键字混淆时。
  • 不加 @ 的情况:如果没有歧义或混淆,工具可能默认理解为属性名。

必须加 @ 的情况

  1. 避免歧义:当属性名称与TCL脚本中的变量或关键字名称相同时,使用 @ 可以避免歧义。例如,如果你有一个TCL变量也叫ref_name,使用 @ref_name 可以确保脚本解释为属性而非变量。

  2. 工具的特定要求:有些EDA工具或其特定版本可能强制要求在过滤表达式中使用 @ 来引用属性。

示例对比

假设有一个脚本变量 ref_name 和对象属性 ref_name

set ref_name "some_variable_value"

使用 @ 符号

get_cells -hierarchical * -filter "@ref_name==**logic_0** || @ref_name==**logic_1**"

这里明确表明 ref_name 是属性,不会与脚本变量 ref_name 混淆。

不使用 @ 符号

get_cells -hierarchical * -filter "ref_name==**logic_0** || ref_name==**logic_1**"

如果没有脚本变量 ref_name 或其他关键字冲突,结果可能是一样的。但如果有同名变量或工具要求明确指示,则可能会出错或产生意外结果。

结论

在许多情况下,加不加 @ 可能不会影响结果,因为工具能够智能地解析过滤表达式。然而,为了避免潜在的歧义和确保脚本的可读性和正确性,特别是在复杂脚本和项目中,建议明确使用 @ 来引用属性名称。这不仅提高了脚本的可靠性,还增强了代码的可维护性。

标签:脚本,name,DC,变量,logic,过滤器,ref,表达式,属性
From: https://blog.csdn.net/hzmscut/article/details/139746437

相关文章

  • BOSHIDA DC/AC电源模块:提升光伏发电系统的能源利用率
    BOSHIDADC/AC电源模块:提升光伏发电系统的能源利用率随着环境保护意识的提高和能源需求的增加,光伏发电系统作为一种清洁能源的代表,受到了越来越多的关注。然而,光伏发电系统在实际应用中还存在一些问题,如发电效率低、能源利用率不高等。为了解决这些问题,DC/AC电源模块应运而生。......
  • python中常见re正则表达式(整数、小数、邮箱、号码、车牌、x开头y结尾)大合集(值得收
    目录专栏导读库的介绍库的安装1、匹配整数2、匹配某几位整数3、匹配小数4、匹配电话格式1:11位数字格式2:187-12341234或者187-1234-1234格式3:(123)456-7890,或者+86123-456-78905、匹配邮箱6、匹配车牌7、xx为开头yy为结尾9、匹配中文10、匹配非中文总结专栏导读......
  • django 接入OIDC认证登录(django admin后台使用OIDC 或github账号登录) django 使用p
    参考文档模块文档:https://python-social-auth.readthedocs.io/en/latest/接入github账号登录参考:https://blog.csdn.net/yannanxiu/article/details/112622781;测试项目地址:https://github.com/AngelLiang/django-social-auth-demo/tree/main--创建githubOAuth应用:https:/......
  • 正则表达式合集
    //身份证正则表达式(15位) isIDCard1=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/; //身份证正则表达式(18位) isIDCard2=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/; 地区、性别和身份证进行判断的正则表达式: <script> va......
  • 过滤器和拦截器的区别
    一、拦截器和过滤器的区别1、过滤器和拦截器触发时机不一样,过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前。2、拦截器可以获取IOC容器中的各个bean,而过滤器就不行,因为拦截器是spring提供并管理的,spring的功能......
  • 【flink实战】flink-connector-mysql-cdc导致mysql连接器报类型转换错误
    文章目录一.报错现象二.方案二:重新编译打包flink-connector-cdc1.排查脚本2.重新编译打包flink-sql-connector-mysql-cdc-2.4.0.jar3.测试flink环境三.方案一:改造flink连接器一.报错现象flinksql任务是:mysql到hdfs的离线任务,flink在消费mysql时报如上错误......
  • Python爬虫之路(12)--re正则表达式
    正则表达式认识正则正则表达式,又称规则表达式,(RegularExpression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a到z之间的字母)和特殊字符(称为"元字符"),是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个语法规则的......
  • 业务流程外包(BPO)、IDC驻场运维以及IDC工程实施
    在信息技术日新月异的今天,企业对于信息技术服务外包(ITO服务)的需求日益增加。联通作为领先的通信服务提供商,凭借其在信息技术领域的深厚积累,为客户提供了一站式的ITO服务,涵盖了业务流程外包(BPO)、IDC驻场运维以及IDC工程实施等三大类别,旨在帮助企业降低运营成本,提高业务效率。一、......
  • C#开发-集合使用和技巧(二)Lambda 表达式介绍和应用
    C#开发-集合使用和技巧Lambda表达式介绍和应用C#开发-集合使用和技巧介绍简单的示例:集合查询示例:1.基本语法从主体语句上区分:1.主体为单一表达式2.主体是代码块(多个表达式语句)从参数上区分1.带输入参数的Lambda表达式2.不带输入参数的Lambda表达式特殊用法:2.......
  • 【图像隐写】基于Jsteg算法实现JPEG图像信息隐藏,可设置DCT系数 嵌入率附Matlab代码
     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。......