news 2026/7/22 2:09:15

verilog语法-使用function提高效率

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
verilog语法-使用function提高效率

1、function的使用场景

function的作用返回一个数值,此数值由一串组合逻辑代码计算得到。

那为什么要用function呢?主要有两大原因:

a)当组合逻辑实现的功能比较复杂,无法用少量代码完成编写,使用function替代,不用在always块里面写一大堆的组合逻辑, 会使得代码逻辑更加清晰, 可读性强。

b)当组合逻辑实现的功能在同一个模块内被多次调用,所有使用此功能的代码只需要调用function就可以了,有效减少编码量,而且只需检查function实现功能是否正确,也能够降低错误率。

2、Function 规则

a) function结构内不可以使用任何时间,例如不可使用#, @, wait等;

b) functions 不可以调用task

c) function 至少有一个input申明.

d) function 不能有任何output或者inout申明

e) function 不能使用任何非阻塞赋值(<=)或程序连续赋值(assign and force).

f) function不能使用任何事件触发语句(always@语句)

3、Function使用说明

协议中的2种格式

function [ automatic ] [ signed ] [ range_or_type ] function_identifier ;

function_item_declaration { function_item_declaration }

function_statement

endfunction

function [ automatic ] [ signed ] [ range_or_type ] function_identifier ( function_port_list );

{ block_item_declaration }

function_statement

endfunction

可选择的关键字automatic和signed设计人员一般不使用,此处不再描述,

range_or_type指定function返回的数值是real、integer、time、realtime 或者位宽为 [n:m]的数值。

如果range_or_type缺失,则默认function_identifier是1bit的。

function_identifier就是function_name(代表你期望function计算出的结果),function中会隐形地定义一个变量,变量名称就是function_name,最终会把function_statement计算得出的结果赋值给function_name,在调用function_name时,会返回计算结果。

item_declaration是内部变量等的申明,设计中常见为reg [xx:xx] reg_name1; localparameter PARA_NEME ; integer i;

function_statement 是function实现的逻辑功能,在可综合设计中,就是一串组合逻辑。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/22 2:08:40

思科Nexus交换机 --- 华为CE6800 STP生成树对接故障

思科Nexus93180与华为6857&#xff08;堆叠&#xff09;2层互联。 STP MODE&#xff1a; 思科&#xff1a;RSTP-PVST 华为&#xff1a;RSTP STP Priority: 思科&#xff1a;32768 华为&#xff1a;49152 先说结论&#xff1a;思科的RSTP不是标准的RSTP&#xff0c;而是pvst的增…

作者头像 李华
网站建设 2026/7/14 14:13:32

Python包构建工具完全指南:python -m build 使用详解

前言 在Python开发中&#xff0c;将代码打包成可分发的包是一个常见需求。传统的python setup.py方式虽然可用&#xff0c;但存在诸多局限性。今天&#xff0c;我们来详细介绍现代化的Python包构建工具——build模块&#xff0c;它提供了更标准、更可靠的构建体验。 为什么选…

作者头像 李华
网站建设 2026/7/14 14:13:32

PPO算法

我们想最大化轨迹奖励的期望&#xff0c;所以对轨迹概率求导&#xff1b; 为了方便求导&#xff0c;用 ∇pp∇log⁡p\nabla p p \nabla \log p∇pp∇logp&#xff1b; 又因为轨迹概率是每一步动作概率和环境转移概率的连乘&#xff0c;而环境不依赖策略参数&#xff0c;所以最…

作者头像 李华
网站建设 2026/7/14 14:13:34

LMArena发布全球大模型性能榜单:阿里超越GPT5.4,豆包月活破亿

3月20日&#xff0c;国际权威第三方测评机构LMArena发布最新一期全球大模型性能榜单&#xff0c;阿里巴巴千问Qwen3.5-Max-Preview以1464分登顶中国最强大模型&#xff0c;并在全球总榜中位列第六&#xff0c;超越GPT5.4、Claude4.5等海外顶级模型。此次排名中&#xff0c;中国…

作者头像 李华
网站建设 2026/7/14 14:13:33

搞懂 Redis 与数据库的数据一致性,看这一篇就够了

在日常开发中&#xff0c;只要系统并发量稍微上来一点&#xff0c;我们都会不自觉地想到引入 Redis 来做缓存。这本来是件好事&#xff0c;读写速度直接起飞&#xff0c;数据库的压力也降下来了。但是&#xff0c;引入缓存就像是一把双刃剑&#xff0c;它带来了一个让无数开发者…

作者头像 李华
网站建设 2026/7/14 14:13:47

mysql 回表、索引覆盖、索引下推的庖丁解牛

这三个概念常被误解为“晦涩的底层术语”或“只有 DBA 才需要关心的细节”。 但本质上&#xff0c;它们是MySQL 优化器在“减少磁盘 I/O"和“减少 CPU 计算”这两大核心目标上&#xff0c;进化出的三种生存智慧。 回表 (Table Lookup)&#xff1a;是代价&#xff0c;是不得…

作者头像 李华