在Altium Designer中, 设计规则通常用来定义用户的设计需求。 这些规则涵盖了设计的方方面面, 从布线宽度, 对象的安全间距,内电层的连接风格, 过孔风格等等。 设计规则不仅能在PCB设计的过程中实时检测, 而且也能够在需要的时候进行统一的批量检测并生成错误报告。

Altium Designer的设计规则不是PCB对象的属性, 而是独立定义的。 每条规则需针对具体的PCB对象。对于PCB规则系统来说,它必须知道给定的规则应用于哪些对象,即规则的应用范围。可以在PCB Rules and Constraints Editor对话框中设定规则及规则的范围。其中采用撰写查询语句的方式来定义范围是经常需要用到的,并且非常重要的方式方法。

查询语句(Query)是对规则应用对象的描述。设计规则的约束对象可以直接手动输入查询语句, 或是在语言编辑区左侧的控制区选择,抑或是采用查询语句构造器来定义。

查询语句(Query)如何组织?

查询语句实际上是软件的一条指令,定义了一系列的目标设计对象。查询语句由查询的关键字组成。下面是一个查询语句的示例:
        InNet('GND') And OnLayer('TopLayer')
        如果在宽度规则中用该查询语句定义范围,那么设计者在切换到顶层对GND网络布线时,走线的宽度会自动转换到该规则指定的宽度值。如果执行设计规则检查(DRC),任何在顶层的GND网络必须满足这个宽度规则,否则就会被标记为违反设计规则。

使用PCB规则约束编辑器( PCB Rules and Constraints Editor)对话框中的选项可以创建查询语句。根据规则是一元的还是二元的,用户可能需要相应地定义一个或二个对象范围。在PCB规则约束编辑器中,简单的查询语句有如下几种类型的范围选项。

  • 所有的的设计对象

  • 指定网络中的所有对象

  • 指定网络类中的所有对象

  • 指定层上的所有对象

  • 指定层上且属于指定网络的所有对象

选择其中的任一选项,如果需要的话,可以使用右边的下拉菜单选定适当的目标,比如某个网络或某个层。查询语句会自动出现在Full Query区域的右方。如下图。

高级查询Advanced (Query)选项允许设计者撰写自己的更复杂但更为精确的查询语句。设计者可以在Full Query区域直接输入规则范围的定制查询语句。有两个工具(Query Builder和Query Helper)可帮助创建高级查询语句。当不确定查询语句的语法或者需要使用的关键字,这两个工具就会相当有用。

  1. Query Builder定义规则范围

       Query Builder是一种较简单的创建查询语句的方法,它允许设计者使用敏感的条 件类型和数值但只能使用相关的‘构件’。对于高级查询语句的创建,可以使用Query Helper来查询关键字的说明及操作符的语法。

点击Query Builder按钮可以打开Building Query from Board对话框, 该对话框使得用户通过AND或OR等符号连接构造字符串,从而可以创建指向设计文档中特定对象的查询语句。如下图所示。

      

       在对话框中的左边部分,用户可以为某组对象指定所需要的条件类型。当用户在对话框左半部分定义好条件后,在右半部分就可以预览显示当前创建的查询语句。根据需要用户可以继续添加更多的条件以缩小用户的设计对象目标范围。

  1. Query Helper获得帮助

       要使用Query Helper,先选择Advanced (Query) 选项,然后点击Query Helper按钮就可以打开Query Helper对话框。系统背后的查询引擎会分析PCB设计,然后列出所有可用的对象与查询语句中使用的通用关键字。如下图所示。

       使用对话框的Query区域,构造一个查询表达式语句。在默认情况下,当前有效规则范围的表达式会显示在这一区域。用户可以在该区域内直接输入。当用户输入时,智能感知功能将根据用户的输入提示给用户可能的关键字或对象列表。

对话框中的左下角红色圈出的Categories区域,提供了可以用来创建查询语句的PCB函数、PCB对象列表和系统函数。当用户点击此三个类别中的某个子类别,右方的区域将会显示对应的关键字或对象列表。找到查询语句需要用到的关键字或对象,然后双击该条目,该条目就会被插入到上方区域中查询表达式的当前光标处。

  1. 当Query语句有错误时

        如果你键入的查询语句的语法有错误,在PCB Rules and Constraints Editor对话框的左边区域,该规则会被用红色高亮出来。及时修正这样的错误非常重要,否则做在线实时检测会非常慢。因为一个有语法错误的规则范围会极大地降低在线或者批量DRC分析的速度。当你试图关闭规则设置框时系统也会弹出一个错误对话框。所以请确保所有规则范围的语法正确!

PCB Filter面板中使用查询语句(Query)

       同样的道理,可以在过滤器面板使用查询语句来查找指定的一系列对象,然后定义每个规则应用到的对象。

PCB Filter面板为用户提供了创建设计规则的途径,创建的设计规则的应用范围将使用当前在面板中央区域中定义的查询语句来定义。

      

       如上图所示。要添加一条新的设计规则,只要点击Create Rule 按钮,就会显示Choose Design Rule Type对话框。此对话框列出了PCB文档中所有可用的规则类别与规则种类。用户只需选择希望创建的规则种类然后点击OK即可(或直接双击该规则种类入口)。

这时就会显示PCB Rules and Constraints Editor对话框,在此对话框中系统已为用户创建了一个该种类的规则,并将该规则显示在主编辑窗口中,等待用户为此规则定义特定的约束条件。而来自PCB Filter面板的查询语句也已经显示在对话框中的Full Query区域中,作为此规则的应用范围。

采用Query Helper创建Query语句案例

      案例前因:某项目的PCB设计中有诸多规则设置,特别是间距方面,由于12V网络需要更大的间距规则,已为其设置了20mil安全距离。

      然后PCB完成之后,对其进行规则检查,出现了2条违规信息。如上图所示。两个电容C3和C4违反了规则,已绿色高亮显示。原因是这些电容的焊盘形状已经固定。没办法改变,我们只能修改规则的设置来适应这两个电容。打开12V网络的间距规则设置,我们来修改规则范围,使其排除这2个电容。操作如下。

  • 设置时,需要在第二个对象处“Where the second object matches”不选中C3和C4。即将C3和C4两个元件排除20mil间距的规则约束。点击自定义语句“Custom Query”,然后选择“Query Helper”。

  • 找到“Component membership”语句,将其添加到规则中。我们双击“In Component”条目,即可将其添加到语句对话框。

  • 然后移动到语句“Query” 对话框,在括号中键入一个单引号,将会弹出一个列表,选择C3。

  • 然后添加“Or”到语句中,然后继续,我们先键入“In”。然后选中需要的条目“In component”。这次选择C4。

  • 现在我们选中了C3或者C4。接下来要做的是,规则设置的范围不包含这两个电容。于是我们添加逻辑非“Not”。点击OK添加该条规则语句。

  • 然后将其应用到规则设置中。现在的12V间距规则,已经排除了这2个电容。重新运行间距规则的DRC检查,结果很干净。而且C3和C4也不再高亮。

采用PCB Filter面板生成Query语句案例

      大家都深有体会:让我们自己去输入一条条Query语句,熟练使用其语法条件,以及各条件之间的运算关系,这玩意对于非代码设计师来说,想想都头晕。能不碰就不碰,能有变通方法尽量绕开!

那么这里介绍一套生成Query语句的法宝。通过这个法宝我们可以方便地组织所需的Query语句。甚至还方便智能到根据所选对象自动生成Query语句的地步!废话少说,案例过一遍就都清楚了。

要熟练运用该法宝必须要与其左右两大护法搞好关系:查找相似对象(Find similar objects)和PCB过滤器(PCB Filter)。

案例前因:一PCB设计中,有几个连接器件,想让它们互相交叠挨在一起而不报错。那就需要设置这几个连接器件的元件之间间距(Component clearance)允许它们零距离亲密接触。

  • 首先第一步,用查找相似对象的方式,来创建自定义Query语句。即选定一个对象,然后右键点击,选择查找相似对象“Find similar object”。

  • 在封装“Footprint”条目后面,选择相同“Same” ,并确保创建表达式“Create expression”选项框被勾选。

  • 现在点击应用“Apply”来看看是否所有符合条件的目标元件被选中。结果如你所愿。

  • 然后打开PCB过滤器窗口“PCB filter”,这里看到生成的语句表达式。

  • 在过滤器窗口中,你可以拷贝并粘贴该表达式到规则设置中,或者直接点击创建规则“Create rule”按钮,来打开规则设置页面。让我们为“Anderson”连接器选择元件间距。我们想要将它们摆放在一起,而不会报错。点击OK打开该规则设置页面。

  • 让我们为该规则命名为“Anderson”。现在我们的新规则中,第一个对象匹配的Quuery语句是来自PCB Filter自动导过来的。代表的是黑色“Black”Anderson连接器,我们想让第二个对象匹配的语句是红色“Red” Anderson连接器。这里偷下懒,直接从第一个对象的语句表达式拷贝粘贴到第二个对象的语句表达式,然后编辑,将黑色改为红色。

  • 现在我们有了一个关于黑色连接器和红色连接器之间的元件间距的规则。将其水平方向的间距设置为-5 mil,以允许它们摆放连接在一起。

  • 定义好规则之后,现在我们要看一看,该规则的范围是不是恰好准确包含了想要涵盖的对象。要检查这个,我们需要用到测试语句“Test queries”的功能。它会打开一个测试语句的结果对话框,显示每个语句表达式的结果。点击每个不同的条目,会跳转并缩放到那些被选中的对象。点击OK。

       现在让我们放置一个红色和黑色的连接器,毗连在一起,看看它们有没有发生间距报错。并没有!这就是刚才的规则所起的作用。

所以,采用查找相似对象(Find Similar Objects)找到你关注的对象,然后勾选Creat Expressions,自动生成Query语句到PCB Filter面板,然后直接Creat Rule即可。So easy!干吗还哼哧哼哧去查去写Query语句呢?

来源

【转】如何应用Query语句进行规则的语法设置?的更多相关文章

  1. 8.2 Query 语句优化基本思路和原则

    在分析如何优化MySQL Query 之前,我们需要先了解一下Query 语句优化的基本思路和原则.一般来说,Query 语句的优化思路和原则主要提现在以下几个方面: 1. 优化更需要优化的Query ...

  2. query语句的拼接.

    在外网服务器上的网页,不能排序了,原因是query语句拼接时,sort没有能拼上,. 小小的思路: 1.是不是网页请求出了问题: 和我本机上的的请求一一对比,并没有发现什么问题. 2.代码除了问题吗: ...

  3. 在Eclipse中用图形界面的方式获取Salesforce中Object的Query语句

    对Salesforce中的Object进行相应的Query是必不可少的操作,大家可以去这个链接去看看官网的解读  http://docs.database.com/dbcom/en-us/db_sos ...

  4. SQLite中7(8)形参的query语句的用法

    SQLite中7(8)形参的query语句的用法 我们先来看看这种7形参的query语句的形参列表: public Cursor query(String table, String[] column ...

  5. Drools 规则文件语法概述

    概述(Overview) 以.drl为扩展名的文件,是Drools中的规则文件,规则文件的编写,遵循Drools规则语法.下面详细介绍一下Drools规则文件语法.具体参考官方文档: https:// ...

  6. Destoon 模板存放规则 及 语法参考

    模板存放规则及语法参考 一.模板存放及调用规则 模板存放于系统 template 目录,template 目录下的一个目录例如 template/default/ 即为一套模板 模板文件以 .htm ...

  7. With语句以及@contextmanager的语法解析

    with 语句以及@contextmanager的语法解析   with语句可以通过很简单的方式来替try/finally语句. with语句中EXPR部分必须是一个包含__enter__()和__e ...

  8. JavaScript中if语句优化和部分语法糖小技巧推荐

    前言 在前端日常开发过程中,if else判断语句使用的次数应该是比较频繁的了,一些较为复杂的场景,可能会用到很多判断,在某个代码块使用很多if else时,代码会显得较为冗余,阅读起来不够清晰. 除 ...

  9. 53个Oracle语句优化规则详解(转)

    Oracle sql 性能优化调整  1. 选用适合的ORACLE优化器        ORACLE的优化器共有3种:a. RULE (基于规则)   b. COST (基于成本) c. CHOOSE ...

随机推荐

  1. 搭建Hadoop的HA高可用架构(超详细步骤+已验证)

    一.集群的规划 Zookeeper集群: 192.168.182.12 (bigdata12)192.168.182.13 (bigdata13)192.168.182.14 (bigdata14) ...

  2. 一个有趣的异步时序逻辑电路设计实例 ——MFM调制模块设计笔记

    本文从本人的163博客搬迁至此. MFM是改进型频率调制的缩写,其本质是一种非归零码,是用于磁介质硬盘存储的一种调制方式.调制规则有两句话,即两个翻转条件: 1.为1的码元在每个码元的正中进行一次翻转 ...

  3. Huploadify V2.1+ SpringMVC上传文件的实现

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  4. 20155237 《JAVA程序设计》实验二(JAVA面向对象程序设计)实验报告

    20155237 <JAVA程序设计>实验二(JAVA面向对象程序设计)实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S ...

  5. 20155301 Exp6 信息搜集与漏洞扫描

    20155301 Exp6 信息搜集与漏洞扫描 实践内容 (1)各种搜索技巧的应用 (2)DNS IP注册信息的查询 (3)基本的扫描技术:主机发现.端口扫描.OS及服务版本探测.具体服务的查点 (4 ...

  6. EZ 2018 01 14 2018noip第四次膜你赛

    这次惨烈的炸了个精光(只有20),然后对我的OI想法造成了巨大的转折. (以上有点作,其实我只是再也不用vector存图了而已(用邻接表)) 难度很不均匀,而且题型很狗(还有结论题???) T1 坑人 ...

  7. 4、Docker数据管理

    一.挂载类型 1.volumes Docker管理宿主机文件系统的一部分(/var/lib/docker/volumes).保存数据的最佳方式. 使用场景:将容器中的数据持久化到宿主机,比如容器是my ...

  8. 浅谈 iOS 中的 Activity Indicator

    Activity Indicator 是iOS开发中必不可少的一个视图.本文就简单地总结一下这个Activity Indicator 的使用方法. 默认 Activity Indicator 以下的函 ...

  9. unity ray和line射线检测

    RaycastHit 光线投射碰撞 Struct Structure used to get information back from a raycast. 用来获取从raycast函数中得到的信息 ...

  10. Final发布——视频博客

    1.视频链接 视频上传至优酷自频道,地址链接:http://v.youku.com/v_show/id_XMzk1OTIwNTUwMA==.html?spm=a2h0j.11185381.listit ...