博客
关于我
Verilog基础知识10(verilog中的综合与不可综合 )
阅读量:248 次
发布时间:2019-02-28

本文共 1317 字,大约阅读时间需要 4 分钟。

Verilog设计

一、Verilog中的综合与不可综合

  • 综合工具支持的结构:

    always、assign、begin、end、case、wire、tri、aupply0、supply1、reg、integer、default、for、function、and、nand、or、nor、xor、xnor、buf、not、bufif0、bufif1、notif0、notif1、if、inout、input、instantiation、module、negedge、posedge、operators、output、parameter

  • 综合工具不支持的结构:

    time、defparam、$finish、fork、join、initial、delays、UDP、wait

  • 部分工具支持的结构:

    casex、casez、wand、triand、wor、trior、real、disable、forever、arrays、memories、repeat、task、while

  • 二、Verilog可综合设计

  • 可综合模型的原则:
    (1)不使用initial
    (2)不使用#10
    (3)不使用循环次数不确定的循环语句,如forever、while等
    (4)不使用用户自定义原语(UDP元件)
    (5)尽量使用同步方式设计电路
    (6)除非是关键路径的设计,一般不采用调用门级元件描述设计,建议采用行为语句完成设计
    (7)用always过程块描述组合逻辑,应在敏感信号列表中列出所有输入信号
    (8)所有内部寄存器都应能被复位,在FPGA实现时,应尽量使用器件全局复位端作为系统总复位
    (9)对时序逻辑描述建模,尽量使用非阻塞赋值方式;对组合逻辑描述建模,可以用阻塞赋值或非阻塞赋值,但同一过程块中不应混合使用
    (10)一个以上always过程块不能对同一个变量进行赋值,且同一变量不能同时使用阻塞式和非阻塞式赋值
    (11)如果不打算将变量推导为锁存器,必须在if语句或case语句的所有条件分支中对变量进行明确赋值
    (12)避免同时使用上升沿和下降沿触发的触发器
    (13)同一个变量不能受多个时钟控制,也不能受两种不同的时钟条件或时钟沿控制
    (14)避免在case语句的分支项中使用x值或z值
  • 不可综合语句:

  • initial
  • events
  • real
  • time
  • force和release
  • assign和deassign(对reg数据类型)
  • fork和join
  • primitives(非门级原语)
  • table
  • 同时在敏感列表中包含posedge和negedge
  • 同一个reg变量被多个always块驱动
  • 延时(以#开头)
  • 与X、Z进行比较
  • 三、RTL级建模

  • 可综合RTL建模要求逻辑语句能被综合工具识别
  • 组合逻辑描述:
    使用assign直接描述逻辑结构或表达式,或使用always语句块描述复杂逻辑
    组合逻辑单元包括:与门、或门、非门、异或门、多路器、缓冲器、加法器等,均可引用标准单元库
  • 时序逻辑描述:
    使用always语句块描述时序逻辑,确保所有敏感信号列出
  • 注:本文旨在提供Verilog可综合设计的基本原则和实践,具体实现需根据项目需求进行调整。

    转载地址:http://focj.baihongyu.com/

    你可能感兴趣的文章
    Progress Kemp LoadMaster 远程命令执行漏洞复现(CVE-2024-1212)
    查看>>
    Project configuration is not up-to-date with pom.xml. Run Maven->Update Project
    查看>>
    Project Euler 15 Lattice paths
    查看>>
    Project Euler 48 Self powers( 大数求余 )
    查看>>
    Project Euler Problem 12: Highly divisible triangular number
    查看>>
    ProjectEuler 2
    查看>>
    projection介绍及EPSG:4326和EPSG:3857的投射转换
    查看>>
    project打开文件时,显示无法识别此文件格式?
    查看>>
    Prometheus + Grafana on Kubernetes部署
    查看>>
    prometheus + grafana进行服务器资源监控
    查看>>
    Prometheus Alertmanager 告警配置详解
    查看>>
    Prometheus Grafana 展示平台
    查看>>
    Prometheus pushgateway使用详解
    查看>>
    Prometheus 云原生 - Prometheus 数据模型、Metrics 指标类型、Exporter 相关
    查看>>
    Prometheus 云原生 - 基于 file_sd、http_sd 实现 Service Discovery
    查看>>
    Prometheus 云原生 - 微服务监控报警系统 (Promethus、Grafana、Node_Exporter)部署、简单使用
    查看>>
    Prometheus 云原生 - 监控 Linux、MySQL、Redis、RabbitMQ、Docker、SpringBoot 3.x
    查看>>
    Prometheus 介绍
    查看>>
    Prometheus 安全配置详解
    查看>>
    prometheus 安装node_exporter, node_exporter 安装最新版 普罗米修思安装监控服务器client
    查看>>