首页 > 其他分享 >SAT 在集成电路领域上的应用

SAT 在集成电路领域上的应用

时间:2023-01-23 16:00:24浏览次数:54  
标签:EDA 求解 公式 算法 集成电路 应用 子句 SAT

SAT 求解器 在EDA的各个环节都有广泛应用,比如:逻辑综合、物理实现、中间验证、仿真测试。

电路的形式化验证方面,形式化验证工具主要有两类:模型检测工具和等价性验证工具。

模型检测工具主要用于证明一个电路是否满足某个属性,而等价性验证用来证明两个电路是否等价。

计算机解决问题的时候有两类思路:

一是:把问题清楚的用数学语言描述出来,再设计算法求解,这是约束求解的思路,典型场景包括定理证明等等。

二是:机器学习,用户提供例子,计算机解决问题,比如各种模式识别。

对于需要严格证明的场景,更适合使用约束求解来解决。

 

SAT(布尔可满足性问题),给定一个布尔公式或者命题逻辑公式,即 用与、或、非 等逻辑联接起来的公式,判断是否能给公式里的变量赋值使得公式为真。

如果存在这样的赋值,则说明这个公式是可满足的,否则就是不可满足的。

SAT涉及到的基本概念包括:变量,文字、子句(子句是文字的析取)、合取范式(简称CNF,子句的合取,即子句集合)。SAT的求解一般采用合取范式输入,也有针对电路的SAT问题。

注意:析取范式(j简称DNF,子句的析取)的逻辑并不是SAT问题,而是K- DNF问题

合取可称为逻辑与,析取则可称为逻辑或,用符号∧表示 。符号∧读作“并且”。

 

SAT在EDA中的典型应用举例

 

 

 

Step1 将电路转换为CNF(SAT可接受的输入形式)

比如 与 门电路

C=A*B

转为CNF 为

(非A V 非B V C) ∧ (A  V 非C)  ∧ (B V 非C)

 

可以将其翻译成一条 SAT 公式,如果这条公式用 SAT 求解器来判定,它是可满足的,就意味着它存在一个反例,并且可以对应地将这条反例构造出来。如果这个公式是不可满足的,就是说不存在反例,这个属性是被验证满足的了。

 

 

 

如图,假设 d 这条线断了,它为 0,要找到一个输入使得正常设计的情况下输出和在另一边输出不一样,从而发现出现断路的情况。

由此,要产生一个满足两个条件的测试向量:一是错误的激活,二是错误要传播,将两个条件编码为一个 CNF 公式,合起来其实也是 SAT 求解问题。

SAT 求解器在 EDA 中如此重要,那么,它目前做得怎么样?

SAT 是一个逻辑问题,很容易会采用逻辑推理的方法思考,比如说归结原理。但把它看作在搜索空间找赋值,判断它是否存在合法的解,因此搜索的方法也可行。

SAT 求解方法可以分为两类:完备算法和不完备算法。完备算法是指算法只要给足时间,肯定会产生正确答案,Yes or No,但这个时间在理论上没有保证;不完备算法是指争取短时间内找到解。

 

 

参照:中国科学院研究员蔡少伟:SAT 求解器 EDA 基础引擎|GAIR 2021 (baidu.com)

 

标签:EDA,求解,公式,算法,集成电路,应用,子句,SAT
From: https://www.cnblogs.com/oceaning/p/17065244.html

相关文章

  • 单体应用产生的痛苦,微服务并不能解决……
    本文作者通过分析微服务的常见优点能解决的问题,提出如何使用单体应用来缓解这些问题,最终指出采用微服务还是单体架构要根据团队实际情况,而不是为了微服务而微服务。作者......
  • Python语言基础—元组的应用与常见操作
    希望本阶段内容可以帮助大家学好Python基础,详情可以关注上方Python专栏!文章目录​​系列文章目录​​​​一、元组的应用场景​​​​二、定义元组​​​​三、元组的常见操......
  • 【Java应用服务体系】「序章入门」全方位盘点和总结调优技术专题指南
    专题⽬标本系列专题的目标是希望可以帮助读者们系统和全访问掌握应⽤系统调优的思路与方案以及相关的调优工具的使用,虽然未必会覆盖目前的所有的问题场景,但是还是提供了较......
  • python桌面应用自动化,uiautomation模块的Depth和searchDepth心得
    最近在学习yinkaisheng大神写的uiautomation模块,Depth和searchDepth一直使用不好,明明Depth=3,居然可以用searchDepth=1找到,网上也没找到答案,就自己试验了多次,终于发现了问题......
  • Powerbuilder练级攻略001_无窗口应用
    新建一个目录,如D:\pb_project\tutorial\p002_cmdFile-New-Workspace-OK,选中D:\pb_project\tutorial\p002_cmd,打开,文件名输入p002_cmd,保存File-New-Target-Applicat......
  • 应用部署架构:如何降低云网络时延?
     导读:什么是时延?在电信系统中,不同应用对时延的要求是怎样的?如何通过部署架构降低网络传输时延?本文通过介绍云网络时延的构成,并对其进行量化分析,分享......
  • 部署Bookinfo案例应用
    1.部署案例应用部署Bookinfo的案例应用$kubectlapply-fsamples/bookinfo/platform/kube/bookinfo.yaml当每个pod准备就绪后,Istiosidecar也会随之展开。$ku......
  • redis数据类型应用场景
    Redis总共有8种数据类型,前5种为常用(基本)数据类型Redis五种基本数据类型String字符串概述Redis最基本的类型,默认最大能存储512MB数据。String类型的Value中可以存......
  • 如何快速将应用程序提交到appStore?这篇文章告诉你
    作者简介:有iOS方面3年经验,移动端领域专家,csdn/掘金等平台优质作者,就职于广东省东莞市华勤科技技术有限公司iOS开发岗位,有过的iOS各方面的成就,擅长iOS方面的iOS上架技术等。......
  • Java零基础06篇:流程控制语句应用篇
    文章目录​​前言​​​​一、流程控制语句分类​​​​二、顺序结构​​​​三、分支结构之if语句​​​​if语句格式1:​​​​if语句格式2:​​​​if语句案例:奇偶数​​​......