逻辑优化基础-rewrite
简介
逻辑综合中的rewrite算法是一种常见的优化算法,其主要作用是通过对逻辑电路的布尔函数进行等效变换,从而达到优化电路面积、时序和功耗等目的。本文将对rewrite算法进行详细介绍,并附带Verilog代码示例。
一、算法原理
rewrite算法的核心思想是通过布尔代数中的等价变换来达到电路优化的目的。具体而言,算法将电路的原始布尔函数通过一系列等价变换转化为更简单的布尔函数,从而达到优化的目的。
二、算法流程
rewrite算法的流程如下所示:
具体来说,rewrite算法通过一系列等价变换规则将布尔函数转化为其等效的形式,例如如下所示:
同一律: A+A=A; A*1=A;
零元素: A+0=A; A*0=0;
吸收律: A+AB=A; A(A+B)=A;
分配律: A*(B+C)=AB+AC;
德摩根定律: ~(A+B)=~A~B; ~(AB)=~A+~B;
布尔恒等式: A+~A=1; A*~A=0;
交换律: A+B=B+A; AB=BA;
结合律: A+(B+C)=(A+B)+C; A*(BC)=(AB)*C;
分配律的逆定理: (A+B)C=(AC)+(B*C);
吸收律的逆定理: A+(AB)=A; A(A+B)=A。
通过这些等价变换规则,rewrite算法可以将一个布尔函数化简为其最简形式,从而达到电路优化的目的。
3. 示例
假设我们有一个简单的逻辑电路,其功能等价于两个输入a和b做异或运算,输出结果为c:
module xor_gate(input a, b, output c);assign c = a ^ b;
endmodule
我们可以使用逻辑综合中的rewrite算法对这个电路进行优化,从而得到一个更为简单的电路。
具体来说,我们可以应用一个rewrite规则:将异或门替换为两个AND门、一个OR门和两个NOT门的等效电路。下面是应用这个规则后的Verilog代码:
module xor_to_and_or(input a, b, output c);wire not_a, not_b, and_a_b, and_not_a_not_b, or_a_b;assign not_a = ~a;assign not_b = ~b;assign and_a_b = a & b;assign and_not_a_not_b = not_a & not_b;assign or_a_b = and_not_a_not_b | and_a_b;assign c = ~or_a_b;
endmodule
然后,我们可以在原始的xor_gate模块中,使用新的xor_to_and_or模块来实现优化后的电路,如下所示:
module xor_gate(input a, b, output c);xor_to_and_or rule(.a(a), .b(b), .c(c));
endmodule
通过这个优化,我们将一个异或门转化为了两个AND门、一个OR门和两个NOT门的电路结构,从而实现了对电路的优化,事实上这是一个反向的 “优化”。
当然,这只是一个简单的例子,实际应用中rewrite算法的规则和应用方法可能会更加复杂和多样化,需要根据具体的设计需求和约束来确定。同时,需要注意电路优化可能会对电路的性能、功耗、可靠性等方面产生影响,需要进行综合分析和评估。
了解ABC中的rewriting,请参考博客:【逻辑综合知识点总结】
相关文章:
逻辑优化基础-rewrite
简介 逻辑综合中的rewrite算法是一种常见的优化算法,其主要作用是通过对逻辑电路的布尔函数进行等效变换,从而达到优化电路面积、时序和功耗等目的。本文将对rewrite算法进行详细介绍,并附带Verilog代码示例。 一、算法原理 rewrite算法的…...
案例27-单表从9个更新语句调整为2个
目录 一:背景介绍 二:思路&方案 三:过程 1.项目结构 2.准备一个普通的maven项目,部署好mysql数据库 3.在项目中引入pom依赖 5.编写MyBitis配置文件 6.编写Mysql配置类 7.编写通用Update语句 8.项目启动类 四:总…...
Wordpress paid-memberships-pro plugins CVE-2023-23488未授权SQLi漏洞分析
目录 1.漏洞概述 2.漏洞等级 3.调试环境 4.漏洞代码 5 POC 1.漏洞概述 WordPress插件paid-memberships-pro版本<2.9.8中,容易受到REST路由“/pmpro/v1/order”的“code”参数中未验证的SQL注入漏洞的影响。攻击者可进行SQLi盲注,从而获取数据库权限。 CVE:...
【JavaWeb篇】JSTL相关知识点总结
目录 为什么会有JSTL? 什么是JSTL? 如何理解JSTL标准标签库呢? 如何使用JSTL? 第一步:引入JSTL标签库对应的jar包。 第二步:在JSP中引入要使用标签库。(使用taglib指令引入标签库。&#x…...
【蓝桥杯刷题】坑爹的负进制转换
【蓝桥杯刷题】——坑爹的负进制转换😎😎😎 目录 💡前言🌞: 💛坑爹的负进制转换题目💛 💪 解题思路的分享💪 😊题目源码的分享Ƕ…...
react+antdpro+ts实现企业级项目二:Strapi及认证登陆模块
在上一章节中,我们已经成功创建并登陆了系统,现在需要为系统添加权限和登录认证,以提高系统的安全性、数据保护、个性化服务和用户体验。此外,添加权限和登录认证还可以方便管理员进行用户和授权管理。为了快速开发前端࿰…...
Android ANR trace日志如何导出
什么是ANR ?上网搜索,一搜一大片,我就说个很容易识别的字眼,XXXAPP无响应 ANR trace日志如何导出?使用ADB命令: adb pull data/anr/trace.txt 你要存放的路径。查看ANR报错位置全局搜索你APP的包名&#x…...
Windows SSH 配置和SCP的使用
使用用户界面安装 ssh 功能 要在 Windows 10/11 上启用 SSH 服务器,请按照以下步骤操作: 按“Windows 键 I”打开“设置”菜单,然后选择“应用程序”。在左侧菜单栏中选择“应用和功能”。从列表中选择“可选功能”。 点击“添加功能”按钮…...
liunx 安装redsi和连接
liunx 安装redsi和连接 下载 (https://download.redis.io/releases/) 上传到 /usr/local目录 解压 tar -xvf redis-5.0.14.tar.gz 切换到 cd ./redis-5.0.14 编译 make 安装 make install 默认安装目录 /usr/local/bin/ 修改 ./redis-5.0.14/reds…...
接口里面可以写实现方法吗【可以】 、接口可以多继承吗【可以】
比如下面这道题: 问: 接口里面可以写方法吗? 答: 当然可以啊,默认就是抽象方法。 . 问: 那接口里面可以写实现方法吗? 答: 不可以,所有方法必须是抽象的。 . 问: 你确定吗࿱…...
【YOLOv8/YOLOv7/YOLOv5/YOLOv4/Faster-rcnn系列算法改进NO.57】引入可形变卷积
文章目录前言一、解决问题二、基本原理三、添加方法四、总结前言 作为当前先进的深度学习目标检测算法YOLOv8,已经集合了大量的trick,但是还是有提高和改进的空间,针对具体应用场景下的检测难点,可以不同的改进方法。此后的系列…...
统计学习--三种常见的相关系数
1)Pearson积差相关系数:用于量度两个变量X和Y之间的线性相关。它具有1和-1之间的值,其中1是总正线性相关性,0是非线性相关性,并且-1是总负线性相关性。Pearson相关系数的一个关键数学特性是它在两个变量的位置和尺度的…...
基于Django4.1.4的入门学习记录
基于Django4.1.4的入门学习记录Django创建Django项目创建工程工程目录说明运行开发服务器settings.py配置文件应用的创建创建应用模块应用模块文件说明App应用配置注册安装子应用数据模型ORM概述定义模型类生成数据库表查看数据库文件Admin管理工具管理界面本地化创建管理员注册…...
C++ Butterworth N阶滤波器设计
介绍一个 Butterworth Nth 滤波器设计系数的函数,像 Matlab 函数一样的: [bl,al]butter(but_order,Ws); 和 [bh,ah]butter(but_order,2*bandwidth(1)/fs,high);rtfilter 在 Ububtu 中,容易找到: $ aptitude search ~dbutterwo…...
UXP下不用任何框架创建自己的插件并试运行
在上一篇文章中《Windows下vue框架下的UXP插件开发环境搭建及程序试运行》,搭建的是利用vue框架进行开发的UXP开发环境,而且是把官方的案例插件直接添加进UDT,下面要说的是不利用任何js的框架创建和试运行自己的UXP插件程序,这样来…...
mac修改国内源快速安装brew
我是参考了清华源官网,有任何困惑直接访问该网址即可。这里给出精简版。 1. 更改镜像到~/.zshrc 终端添加方式 echo export HOMEBREW_API_DOMAIN"https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles/api" >> ~/.zshrcecho export HOMEBREW_…...
Me-and-My-Girlfriend-1靶场通关
Me-and-My-Girlfriend-1靶场通关 靶机ip:192.168.112.135 信息收集 端口:22、80 还是从80WEB服务器端口入手 对服务器目录进行扫描,扫出以下目录 访问80端口WEB服务,显示一段文字只允许本地用户访问。 一眼伪造ip,查看页面…...
2.6 棋盘覆盖
在一个2*x2‘个方格组成的棋盘中,若怡有一个方格与其他方格不同,则称该方格为特殊方格,且称该棋盘为一特殊棋盘。显然,特殊方格在棋盘上出现的位置有 4种情形因而对任何k0,有4‘种特殊棋盘。图2-4 申的特殊棋益是12时 …...
JMU软件20 大数据技术复习(只写了对比18提纲的变动部分)
原博主 博客主页:https://xiaojujiang.blog.csdn.net/ 原博客链接:https://blog.csdn.net/qq_43058685/article/details/117883940 本复习提纲只适用于JMU软件工程大数据课程(ckm授课) 具体内容参考老师提纲的考纲,18和…...
MySQL底层存储B-Tree和B+Tree原理分析
1.B-Tree的原理分析 (1)什么是B-Tree B-树,全称是 Balanced Tree,是一种多路平衡查找树。 一个节点包括多个key (数量看业务),具有M阶的B树,每个节点最多有M-1个Key。 节点的key元素个数就是指这个节点能…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
