当前位置: 首页 > 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数字设计与综合》第二版。 

http://www.lryc.cn/news/489476.html

相关文章:

  • tomcat 后台部署 war 包 getshell
  • 网络云计算】2024第47周-每日【2024/11/21】周考-实操题-RAID6实操解析1
  • 前端面试题大汇总:React 篇
  • 【prism】遇到一个坑,分享!
  • Python+Selenium+Pytest+Allure+ Jenkins webUI自动化框架
  • 智象未来(HiDream.ai)技术赋能,开启AR眼镜消费时代
  • element dialog 2层弹窗数据同步问题
  • 向量数据库FAISS之五:原理(LSH、PQ、HNSW、IVF)
  • 要素市场与收入分配
  • Web3的核心技术:区块链如何确保信息安全与共享
  • 2025蓝桥杯(单片机)备赛--扩展外设之UART1的原理与应用(十二)
  • Js中的常见全局函数
  • MySQL连接查询之自连接
  • Python 爬虫 (1)基础 | 基础操作
  • JAVA八股与代码实践----如何为springboot设置Servlet容器为jetty,jetty的优点是什么?
  • idea怎么打开两个窗口,运行两个项目
  • wend看源码-APISJON
  • 堆外内存泄露排查经历
  • SpringBoot Task
  • 学习路之压力测试--jmeter安装教程
  • 大模型部署,运维,测试所需掌握的知识点
  • ECharts柱状图-带圆角的堆积柱状图,附视频讲解与代码下载
  • java 并发编程 (2)Thread 类和 Runnable 接口详解
  • 人工智能之数学基础:线性代数在人工智能中的地位
  • PostgreSQL WITH 子句:提高查询效率和可读性
  • TransFormer--解码器:前馈网络层、叠加和归一组件
  • 2024亚太杯国际赛C题参考文章50页+完整解题思路+数据处理+最终结果
  • Kafka 分区分配及再平衡策略深度解析与消费者事务和数据积压的简单介绍
  • useEffect、useCallback、useMemo和memo的区别
  • layui树形组件点击树节点后高亮的解决方案