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

Verilog HDL可综合与不可综合语句

目录

什么是逻辑综合

可综合语句

不可综合语句

逻辑综合建模建议

综合流程


什么是逻辑综合

所谓逻辑综合就是在标准单元库和特定的设计约束的基础上,把设计的高层次描述转换成优化的门级网表的过程。

标准单元库(工艺库)可以包含简单的单元,例如与门,或门和或非门等基本逻辑门,也可以包含宏单元,例如加法器,多路选择器和特殊的触发器。

自动化的逻辑综合工具有效减少了高层次设计到门级网表的转化时间。 

可综合语句

结构类型

关键字或描述

注释

端口 ports

input,output,inout

参数

parameter

模块定义

module endmodule

信号和变量

wire,reg,tri

允许使用向量表示

实例引用

instantiation

module instance

primitive instance

gate instance

例如:

mymux m1 (out, i0, i1, s);

函数和任务

function,task

不考虑时序结构

逻辑综合忽略所有 #delay延迟

过程

always,if,then,else,case,casex,casez

不支持 initial

使用复位机制进行电路信号初始化

过程块

begin end,named block,disable

命名块的禁止是允许的

数据流

assign

不考虑延时信息

循环

for,while,forever

while和forever必须包含

@(posedge clk) 或 @(negedge clk) 终止

操作符:几乎所有操作符都可综合。

只有 === 和 !== 这种与 x 和 z 相关的操作符不能用于逻辑综合。

避免在代码中与 x 或 z 比较。

操作类型

操作符

操作

算数

*

/

+

-

%

取模

+

单目加

-

单目减

逻辑

!

逻辑反

&&

逻辑与

||

逻辑非

关系

>

大于

<

小于

>=

大于等于

<=

小于等于

等价

==

相等

!=

不相等

按位逻辑

~

Bitwise NOT

&

Bitwise AND

~&

Bitwise NAND

|

Bitwise OR

~|

Bitwise NOR

^

Bitwise XOR

^~ 或 ~^

Bitwise XNOR

移位

>>

右移

<<

左移

>>>

算数右移

<<<

算数左移

拼接

{ }

拼接

条件

?

条件

不可综合语句

关键字或描述

注释

initial

只能在测试文件中使用

events

在测试中使用

real

不可综合

time

不可综合

force and release

不可综合

assign and deassign

assign 用于reg不支持

fork join

使用非阻塞赋值同样效果

table

UDP and table不可综合

逻辑综合建模建议

1.使用有意义的信号和变量名称,增强可读性

2.避免混合使用上升沿和下降沿触发的触发器

3.不要一个always块中混合使用电平和边沿敏感的单元

4.使用圆括号优化逻辑结构

5.再简单组合逻辑中使用连续赋值语句assign

6.对组合逻辑使用阻塞赋值,对时序逻辑使用非阻塞赋值

7.不要混合使用阻塞和非阻塞语句在一个always块里

8.不要对同一个变量多重赋值

9.显式定义if-else或者case语句,可能的条件分支不全,可能产生锁存器。

10.使用基本构造模块比连续赋值语句效率高,使用的门数少,但仿真需要时间长。

综合流程

参考:

 1.Verilog Synthesis Tutorial (asic-world.com)

2.《Verilog HDL数字设计与综合》第二版。 

相关文章:

Verilog HDL可综合与不可综合语句

目录 什么是逻辑综合 可综合语句 不可综合语句 逻辑综合建模建议 综合流程 什么是逻辑综合 所谓逻辑综合就是在标准单元库和特定的设计约束的基础上&#xff0c;把设计的高层次描述转换成优化的门级网表的过程。 标准单元库&#xff08;工艺库&#xff09;可以包含简单的…...

tomcat 后台部署 war 包 getshell

1. tomcat 后台部署 war 包 getshell 首先进入该漏洞的文件目录 使用docker启动靶场环境 查看端口的开放情况 访问靶场&#xff1a;192.168.187.135:8080 访问靶机地址 http://192.168.187.135:8080/manager/html Tomcat 默认页面登录管理就在 manager/html 下&#xff0c…...

网络云计算】2024第47周-每日【2024/11/21】周考-实操题-RAID6实操解析1

文章目录 1、RAID6配置指南&#xff08;大致步骤&#xff09;2、注意事项3、截图和视频 网络云计算】2024第47周-每日【2024/11/21】周考-实操题-RAID6实操 RAID6是一种在存储系统中实现数据冗余和容错的技术&#xff0c;其最多可以容忍两块磁盘同时损坏而不造成数据丢失。RAID…...

前端面试题大汇总:React 篇

基础知识 1. 什么是 React&#xff1f;它的主要特点是什么&#xff1f; React 是一个用于构建用户界面的 JavaScript 库&#xff0c;由 Facebook 开发并维护。它主要用于构建单页应用程序&#xff08;SPA&#xff09;和复杂的用户界面。React 的主要特点包括&#xff1a; 组件…...

【prism】遇到一个坑,分享!

背景 我通用prism的方式写了一个弹窗,弹窗绑定一个 Loaded 事件,但是Loaded事件一直不触发!!! 具体过程 我的loaded事件也是通过命令的方式绑定的: <i:Interaction.Triggers><i:EventTrigger EventName="Loaded...

Python+Selenium+Pytest+Allure+ Jenkins webUI自动化框架

Python+Selenium+Pytest+Allure+ Jenkins webUI自动化框架 WebUI接口框架使用的工具...

智象未来(HiDream.ai)技术赋能,开启AR眼镜消费时代

Rokid Jungle 2024合作伙伴暨新品发布会于近日隆重举行&#xff0c;标志着AR眼镜跑步进入消费时代&#xff0c;更预示着ARAI技术融合的新篇章。智象未来&#xff08;HiDream.ai&#xff09;&#xff0c;作为多模态生成式人工智能技术的领跑者&#xff0c;与Rokid的深度合作&…...

element dialog 2层弹窗数据同步问题

注意&#xff1a;本帖为公开技术贴&#xff0c;不得用做任何商业用途 element dialog 2层弹窗数据同步问题 如果嵌套dialog&#xff0c;也就是多层dialog嵌套 2个input&#xff0c;key用同样的值 会导致内外2层dialog&#xff0c;用相同key值的input会数据同步 原因如下&a…...

向量数据库FAISS之五:原理(LSH、PQ、HNSW、IVF)

1.Locality Sensitive Hashing (LSH) 使用 Shingling MinHashing 进行查找 左侧是字典&#xff0c;右侧是 LSH。目的是把足够相似的索引放在同一个桶内。 LSH 有很多的版本&#xff0c;很灵活&#xff0c;这里先介绍第一个版本&#xff0c;也是原始版本 Shingling one-hot …...

要素市场与收入分配

生产要素与家庭收入 生产要素&#xff1a;企业用于生产产品或劳务的最初投入&#xff0c;主要分为三类&#xff1a; 劳动&#xff1a;工人的时间和技能 土地&#xff1a;代指自然资源 资本&#xff1a;指的是货币形式的资本&#xff0c;可以供企业用来购置厂房、设备等资本品…...

Web3的核心技术:区块链如何确保信息安全与共享

在互联网不断迭代的进程中&#xff0c;Web3被视为下一代互联网的核心发展方向&#xff0c;其目标是构建更加开放、安全、去中心化的数字生态。在这一过程中&#xff0c;区块链作为核心技术&#xff0c;为信息安全与共享提供了全新解决方案。本文将深入探讨区块链如何在Web3中实…...

2025蓝桥杯(单片机)备赛--扩展外设之UART1的原理与应用(十二)

一、串口1的实现原理 a.查看STC15F2K60S2数据手册: 串口一在590页,此款单片机有两个串口。 串口1相关寄存器: SCON:串行控制寄存器(可位寻址) SCON寄存器说明: 需要PCON寄存器的SMOD0/PCON.6为0,使SM0和SM1一起指定工作模式,这里选择工作模式1,REN位置1,允许接受, …...

Js中的常见全局函数

文章目录 1、encodeURI、decodeURI2、encodeURIComponent、decodeURIComponent3、parseInt4、parseFloat5、String6、Number7、Boolean8、isNaN、Number.isNaN()9、JSON10、toString Js内置了一些函数和变量&#xff0c;全局都可以获取使用&#xff08;本文归纳非构造函数作用的…...

MySQL连接查询之自连接

自连接 相当于等值连接,只不过是自己连接自己,不像等值连接是两个不同的表之间的 案例 查询员工名和他的上司的名字 select e.last_name,m.last_name from employees e, employees m #把同一张表当成两张不同表 where e.manager_id m.employee_id;...

Python 爬虫 (1)基础 | 基础操作

一、基础操作 1、快速构建一个爬虫 ConvertCurl&#xff1a; https://curlconverter.com/选择URL&#xff0c;点击右键&#xff0c;选择 Copy >> Copy as cURL(bash) 安装JS环境&#xff1a;https://www.jb51.net/python/307069k7q.htm...

JAVA八股与代码实践----如何为springboot设置Servlet容器为jetty,jetty的优点是什么?

1、实践 排除原来的springboot-web依赖&#xff08;默认是tomcat&#xff09;&#xff0c;加入jetty的依赖 <dependencies><!-- Spring Boot Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-s…...

idea怎么打开两个窗口,运行两个项目

今天在开发项目的时候&#xff0c;前端希望运行一下以前的项目&#xff0c;于是就需要开两个 idea 窗口&#xff0c;运行两个项目 这里记录一下如何设置&#xff1a;首先依次点击&#xff1a; File -> Settings -> Appearance & Behavior ->System Settings 看到如…...

wend看源码-APISJON

项目地址 腾讯APIJSON官方网站 定义 APIJSON 可以定义为一个面向HTTP 协议的JSON 规范&#xff0c;一个面向数据访问层的ORM 框架。其主要工作流程包括&#xff1a;前端按照既定格式组装 JSON 请求报文&#xff0c;通过 APIJSON-ORM 将这些报文直接转换为 SQL 语句&#xff0c…...

堆外内存泄露排查经历

优质博文&#xff1a;IT-BLOG-CN 一、问题描述 淘宝后台应用从今年某个时间开始docker oom的量突然变多&#xff0c;确定为堆外内存泄露。 后面继续按照上一篇对外内存分析方法的进行排查(jemalloc、pmap、mallocpmap/mapsNMTjstackgdb)&#xff0c;但都没有定位到问题。至于…...

SpringBoot Task

相关文章链接 定时任务工具类&#xff08;Cron Util&#xff09;SpringBoot Task 参数详解 Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE}) Retention(RetentionPolicy.RUNTIME) Documented Repeatable(Schedules.class) public interface Scheduled {String C…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...

Python实现简单音频数据压缩与解压算法

Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中&#xff0c;压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言&#xff0c;提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...

鸿蒙HarmonyOS 5军旗小游戏实现指南

1. 项目概述 本军旗小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;采用DevEco Studio实现&#xff0c;包含完整的游戏逻辑和UI界面。 2. 项目结构 /src/main/java/com/example/militarychess/├── MainAbilitySlice.java // 主界面├── GameView.java // 游戏核…...