FPGA学习笔记---Verilog HDL 可综合语句和不可综合语句汇总
作为HDL语言,有两种基本的用途:系统仿真和设计实现。所有的HDL描述都可用于仿真,但并非所有的HDL描述都可综合。
一般综合工具支持的Verilog HDL结构
Verilog HDL结构 | 可综合性说明 |
module,macromodule | √ |
wire,reg,integer 数据类型 | √ |
parameter | √ |
端口类型说明 input,output,inout |
√ |
运算符 +,-,*,% &,~&,|,~|,^,^~ ==,!=,&&,||,! ~,&,|,^,^~ >>,<<,?:,{} |
大部分可综合: 全等运算符(=== !==)不支持: 多数工具对除法(/)和求模(%)有限制; 如对除法操作,只有当除数是常数,且是2的指数时才支持; |
基本门元件 and,nand,nor,or,xor,xnor,buf,not, bufif0,bufif1,notif0,notif1,pullup,pulldowm |
全部可综合 但某些工具对取值x和z有所限制 |
持续赋值 assign | √ |
过程赋值: 阻塞赋值( = ) 非阻塞赋值( <= ) |
支持,但对同一reg型变量只能采样阻塞和非阻塞赋值的其中一种进行赋值 |
条件语句: if-else,case,casex,casez,endcase |
一般支持,但有的综合不支持casex,casez |
for循环语句 | √ |
always 过程语句 begin-end 块语句 |
√ |
function,endfunction | √ |
task,endtask | 一般支持,少数综合器不支持 |
编译向导: `include,`define,`ifdef,`else,`endif | √ |
一般综合工具忽略的Verilog HDL结构
Verilog HDL结构 | 这些结构和语句在综合时全被忽略 |
延时控制 #xxx | |
scalared, vectored | |
specify | |
small, large, medium | |
weak0,weak1,highz0,highz1,pull0,pull1 | |
time | |
wait |
一般综合工具不支持的Verilog HDL结构
Verilog HDL结构 | 可综合性说明 |
在assign持续赋值中,等式左边含有变量的位选择 |
多数综合器对这些结构和语句不支持,这些语句描述的程序代码不能转换为具体的电路网表结构,但这些结构都能够被仿真工具(如ModeSim等)所支持 |
全等运算符===,!== | |
cmos,nmos,rcmos,rnmos,pmos,rpmos | |
deassign,defparam,event | |
force,release | |
fork,join | |
forever,while,repeat | |
rtran,tran,tranif0,tranif1,rtranif0,rtranif1 | |
initial | |
table,endtable,primitive,endprimitive |
可综合设计的要点
- 不使用初始化语句。
- 不使用带有延时的描述。
- 不使用循环次数不确定的循环语句,如forever、while等。
- 尽量采用同步方式设计电路
- 除非是关键路径设计,一般不采用调用门级元件来描述设计的方法,建议采用行为语句来完成设计。
- 用always过程块描述组合逻辑,应在敏感信号列表中列出所有的输入信号。
- 所有的内部寄存器都应该能够被复位,应尽量使用器件的全局复位端作为系统总的复位。
- 用户自定义原语(UDP元件)是不可综合的,它只能用来建立门级元件的仿真模型。
FPGA学习笔记---Verilog HDL 可综合语句和不可综合语句汇总相关推荐
- FPGA学习笔记---Verilog延迟语句分析比较
在Verilog语言中经常要用到延时语句,延时语句添加的位置不同,输出的结果就会不同.今天就来分析比较一下延时语句在不同位置时,对赋值语句的影响. 一.阻塞式左延时赋值 文件代码: `timescal ...
- FPGA学习笔记(1)简单的时序逻辑电路——流水灯
FPGA学习笔记(1)简单的时序逻辑电路--流水灯 编程语言为Verilog HDL 原理 (1)设计一个计数器,使开发板上的4个LED状态每500ms翻转一次.开发板上的晶振输出时钟频率为50MHz ...
- FPGA学习笔记_ROM核调用与调试
FPGA学习笔记 ROM核调用与调试 1. ROM存储器IP核的使用 2. 创建.mif文件 3. In system memory content editor内存查看工具的使用 4. Signal ...
- 小梅哥FPGA学习笔记
小梅哥FPGA学习笔记 一.38译码器 功能: 译码器其任一时刻的稳态输出,仅仅与该时刻的输入变量的取值有关,它是一种多输入多输出的组合逻辑电路,负责将二进制代码翻译为特定的对象(如逻辑电平等).38 ...
- FPGA 学习笔记:Vivado 2018.2 MicroBlaze Uartlite 配置
前言 Vivado 版本: Vivado 2018.2 + Vivado HLS 2018.2, Vivado HLS 2018.2 用于 SDK 开发,C语言开发 创建基于MicroBlaze的 [ ...
- FPGA学习笔记(五)Testbench(测试平台)文件编写进行Modelsim仿真
系列文章目录 一.FPGA学习笔记(一)入门背景.软件及时钟约束 二.FPGA学习笔记(二)Verilog语法初步学习(语法篇1) 三.FPGA学习笔记(三) 流水灯入门FPGA设计流程 四.FPGA ...
- FPGA学习笔记(八)同步/异步信号的打拍分析处理及亚稳态分析
系列文章目录 一.FPGA学习笔记(一)入门背景.软件及时钟约束 二.FPGA学习笔记(二)Verilog语法初步学习(语法篇1) 三.FPGA学习笔记(三) 流水灯入门FPGA设计流程 四.FPGA ...
- FPGA学习笔记(十二)IP核之FIFO的学习总结
系列文章目录 一.FPGA学习笔记(一)入门背景.软件及时钟约束 二.FPGA学习笔记(二)Verilog语法初步学习(语法篇1) 三.FPGA学习笔记(三) 流水灯入门FPGA设计流程 四.FPGA ...
- FPGA学习笔记_UART串口协议_串口接收端设计
FPGA学习笔记 1. UART串口协议以及串口接收端设计 1 原理图 2 Verilog 代码 3 Modelsim仿真 4. FPGA板级验证 1.1 串口协议接收端设计 目标:FPGA接收其他设 ...
最新文章
- oracle删除表中数据_Excel工作表中,删除重复数据的2种方法解读,高效且实用!...
- linux lvm uuid绑定,LVM:“找不到具有uuid的设备”但是blkid找到了UUID
- AJAX中的跨域问题:什么是跨域?如何解决跨域问题?
- win7上安装mysql数据库_mysql-windows系统安装mysql数据库
- UOJ #206. 【APIO2016】Gap
- Atitit web httphandler的实现 java python node.js c# net php 目录 1.1. Java 过滤器 servelet	1 1.2. Python的
- glibc2.31下的新double free手法/字节跳动pwn题gun题解
- 非常逆天的六款Photoshop插件!
- 达梦数据库SQL语句执行
- Excel:带有相关单元格引用的Python xlwings复制粘贴公式
- Cortex m0+笔记
- 相关系数(Correlation)
- biosrecovery什么意思_卡刷和线刷手机什么意思 Recovery使用方法
- html炫酷在线,html单页炫酷
- Java static关键字与静态块
- 霸屏综艺,牵手明星,扩列神器皮皮APP的出圈始末
- Palindromic Tree——回文树(回文自动机)
- EU Long-term Dataset with Multiple Sensors for Autonomous Driving
- 可微可导连续可积的关系
- 中兴OLT C300 enable密码
热门文章
- 设计模式之----------适配器模式
- Grow heap (frag case) to 6.437MB for 1114126-byte allocation
- 网络知识和交换机的基本配置知识培训
- Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析(5)...
- 《Django实战系列》
- HBase 学习(三) JavaAPI的使用
- JavaScript实现继承的方式和各自的优缺点
- 递归和对面对象编程初步
- csu 最优对称路径(bfs+记忆化搜索)
- Today's Progress