0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Verilog UDPs的语法说明

ruikundianzi ? 来源: IC的世界 ? 2023-09-13 14:02 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1、UDP的使用场景

User-defined primitives (UDPs) 翻译过来就是用户自定义原语,常常用于构建组合逻辑模型和时序逻辑模型。

我们编写Verilo代码时,定义寄存器使用的是reg 和always@(*clk*),运行VCS RTL仿真时,VCS能够识别此类信号是寄存器,能够模拟其行为模型。

然而在使用VCS进行网表仿真时,此时网表中寄存器名称是这样的SDFF*_XXXX,其中SDFF_XXXX是每个寄存器类型对应的标准Cell的名称。

SDFF_XXXX是每个Fab厂家独有的名称,且在Verilog规范中并没有相关术语,那么VCS等EDA仿真工具是如何识别并且模拟其器件行为的呢?

实际上进行网表仿真时,EDA工具会读取对应SDFF_XXXX的UDPs模型,从而进行SDFF_XXXX的行为模拟。

2、UDPs的语法说明

2.1. 2种类型

UDPs的分为combinational UDP(组合逻辑)和 sequential UDP(时序逻辑)。

combinational UDP用于构建组合逻辑模型,常见有mux模块.

sequential UDP用于构建寄存器和Latch模型,sequential UDP可以是边沿触发,也可以是电平触发。

2.2.基本语法规范

UDP建模使用primitive表示建模开始,类似module,endprimitive表示建模结束,类似endmodule。

UDP模型在描述层级上与module/endmodule属于同一等级,因此primitive/endprimitive不能出现在module/endmodule内部,就像不能在一个模块里出现module~module~endmodule~endmodule.

//语法错误
modulexxx();


primitive


  endprimitive


endmodule

每个UDP有且只有一个输出,并且输出只有三种状态,0, 1, or x,不支持Z状态。

每个UDP可以由多个输入信号,如果输入信号为z,则当做X对待。时序UDP至少允许9个输入信号,组合UDP至少允许10个输入信号。

每个UDP不支持定义inout类型的信号

时序UDP的输出信号应该使用reg申明。

组合UDP的输出信号不能使用reg申明。

时序UDP可以使用initial语句定制仿真开始前output信号的初始值

2.3.UDP state table(状态表)

UDP模型使用状态表来描述模型的行为,

状态表中使用的各类变量见表40。例如r表示上升沿,f表示下降沿。*表示数值改变。

状态表中的每行以分号结束。

状态表本质上就是一个输入信号/输出信号组合的列表。

组合UDP状态表中有一个冒号“:”,用于隔离输入和输出信号。

时序UDP状态表中有当前状态,还有下一个状态,因此有2个冒号“:”,用于隔离输入、输出(当前状态)和下一个状态。

组合UDP模型中,如果输入信号状态组合在状态表中没有指定,则输出会是X。

b5a10bb2-51ea-11ee-a25d-92fbcf53809c.png

2.4.UDP结构

本节可忽略,直接看案例

b5bf3164-51ea-11ee-a25d-92fbcf53809c.png

3、组合UDP案例

如下案例为2选1的mux,sel为1时,out为in1;sel为0时,out为in0。

请注意:信号列表中,输出信号out在第一个。状态表中,out处于最后一列。

b5def18e-51ea-11ee-a25d-92fbcf53809c.png

4、电平触发时序UDPs

如下案例为一个低电平触发的latch。

使用reg申明了一个内部变量,表示当前状态q,即当前udp的输出状态。

table中的q+代表的是下一个有效周期的输出状态。

b5f31588-51ea-11ee-a25d-92fbcf53809c.png

5、边沿触发时序UDP

如下所示为一个上升沿触发寄存器的模型。

其中NOTIFIER信号用于建立时间和保持时间检查,通过建立时间和保持时间检查,则NOTIFIER不变,时序检测不通过则NOTIFIER翻转,udp_dff输出为x态。

b60f79e4-51ea-11ee-a25d-92fbcf53809c.png

6、小技巧

将primitive类比成module,将endprimitive类比成endmodule,将table 类比成case,将endtable类比成endcase,你就知道该怎么写UDP模型了。

7、总结

虽然使用UDP能够构建网表时序逻辑和组合的逻辑的行为模型,但是仿真终究是仿真,无法做到与实际芯片行为完全一致,特别是在部分信号为X态时。因此网表仿真中如果X态的出现导致仿真出现问题,此时不代表电路真的存在问题,需要仔细分析原因,其中需要重点分析UDP模型是怎么写的。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5448

    浏览量

    125501
  • 仿真
    +关注

    关注

    52

    文章

    4316

    浏览量

    136301
  • Verilog
    +关注

    关注

    30

    文章

    1368

    浏览量

    112597
  • RTL
    RTL
    +关注

    关注

    1

    文章

    392

    浏览量

    61398

原文标题:Verilog语法: 必须掌握的User-defined primitives (UDPs)

文章出处:【微信号:IP与SoC设计,微信公众号:IP与SoC设计】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Verilog HDL的基本语法

    Verilog HDL的基本语法 .pdf
    发表于 08-15 15:06

    Verilog HDL语法

    Verilog HDL语法,要的拿
    发表于 01-24 22:53

    verilog HDL语法总结

    verilog HDL语法总结
    发表于 03-16 14:26

    Verilog基础语法

    Verilog基础语法
    发表于 05-27 08:00

    verilog是什么?基本语法有哪些?

    verilog是什么?基本语法有哪些?
    发表于 09-18 07:41

    可综合的Verilog语法和语义

    可综合的Verilog语法和语义(剑桥大学,影印):第七版
    发表于 05-21 14:50 ?27次下载
    可综合的<b class='flag-5'>Verilog</b><b class='flag-5'>语法</b>和语义

    Verilog_HDL的基本语法详解(夏宇闻版)

    Verilog_HDL的基本语法详解(夏宇闻版):Verilog HDL是一种用于数字逻辑电路设计的语言。用Verilog HDL描述的电路设计就是该电路的
    发表于 10-08 14:48 ?0次下载
    <b class='flag-5'>Verilog</b>_HDL的基本<b class='flag-5'>语法</b>详解(夏宇闻版)

    Verilog HDL实验练习与语法手册

    Verilog HDL实验练习与语法手册-高教
    发表于 05-11 11:30 ?0次下载

    常见的Verilog行为级描述语法

    常见的Verilog描述语句与对应的逻辑关系;熟悉语法与逻辑之间的关系
    的头像 发表于 09-15 08:18 ?1.1w次阅读
    常见的<b class='flag-5'>Verilog</b>行为级描述<b class='flag-5'>语法</b>

    FPGA视频教程之Verilog语法基础的详细资料说明

    本文档的主要内容详细介绍的是FPGA视频教程之Verilog语法基础的详细资料说明资料免费下载
    发表于 03-01 11:35 ?18次下载
    FPGA视频教程之<b class='flag-5'>Verilog</b><b class='flag-5'>语法</b>基础的详细资料<b class='flag-5'>说明</b>

    Verilog HDL的基础知识详细说明

    硬件描述语言基本语法和实践 (1)VHDL 和Verilog HDL的各自特点和应用范围 (2)Verilog HDL基本结构语言要素与语法规则 (3)
    发表于 07-03 17:36 ?54次下载
    <b class='flag-5'>Verilog</b> HDL的基础知识详细<b class='flag-5'>说明</b>

    有关Verilog中的一些语法详细资料说明

    本文档的主要内容详细介绍的是有关Verilog中的一些语法详细资料说明
    发表于 07-25 17:08 ?2次下载
    有关<b class='flag-5'>Verilog</b>中的一些<b class='flag-5'>语法</b>详细资料<b class='flag-5'>说明</b>

    Verilog语法进阶

    Verilog语法进阶说明
    发表于 05-06 16:14 ?30次下载

    Verilog HDL入门教程-Verilog HDL的基本语法

    Verilog HDL入门教程-Verilog HDL的基本语法
    发表于 01-07 09:23 ?181次下载

    Verilog语法中运算符的用法

    verilog语法中使用以下两个运算符可以简化我们的位选择代码。
    的头像 发表于 10-25 15:17 ?2786次阅读
    <b class='flag-5'>Verilog</b><b class='flag-5'>语法</b>中运算符的用法