Verilog基础:强度建模(一)
相关阅读
Verilog基础
https://blog.csdn.net/weixin_45791458/category_12263729.html?spm=1001.2014.3001.5482
一、强度建模基础
Verilog HDL提供了针对线网信号0、1、x、z的精准强度建模方式,这样可以允许将两个线网信号进行线与操作从而更加精确地描述出硬件行为。
强度建模可以在两个地方使用,一个是连续赋值语句,另一个是门级建模。一个强度由两部分组成,一部分表示信号0的强度,称为strength0;一部分表示信号1的强度,称为strength1。
strength0包括以下几种:supply0(供电级低电平),strong0(强驱动级低电平),pull0(上下拉级低电平),weak0(弱驱动级低电平)以及highz0(高阻级低电平)。
strength1包括以下几种:supply1(供电级高电平),strong1(强驱动级高电平),pull1(上下拉级高电平),weak1(弱驱动级高电平)以及highz1(高阻级高电平)。
需要特别注意的是,(highz0, highz1)以及它的等效表示(highz1, highz0)是非法的,原因也会很简单,这会导致输出永远是高阻。
尽管对强度进行了这种划分,但为了预测信号组合的结果,可以将强度视为几个连续区域的组合。表1就展示了强度的连续性,左侧列出了用于指定强度名。右侧给出了相关的强度水平。
表1 线网型信号的强度水平
| 强度名 | 强度等级 |
| supply0 | 7 |
| strong0 | 6 |
| pull0 | 5 |
| large0 | 4 |
| weak0 | 3 |
| medium0 | 2 |
| small0 | 1 |
| highz0 | 0 |
| highz1 | 0 |
| small1 | 1 |
| medium1 | 2 |
| weak1 | 3 |
| large1 | 4 |
| pull1 | 5 |
| strong1 | 6 |
| supply1 | 7 |
在表1中,有四类驱动强度: supply、strong、pull、weak,这些强度是门级建模的输出net信号和连续赋值语句的左值net信号所拥有的。
在表1中,还存在三类电荷储存强度:large、medium、small,只有在声明trireg线网型变量时能指定。
注意这里我们没有讨论highz类,这是因为其比较特殊,后面会进行详细说明。
可以将表1写成下面图1的比例尺形式,这也是后面讨论强度建模细节的方式。

图1 强度比例尺
如果net型信号拥有确定的值1,则其强度应该全部由strength1部分的强度水平组成(不能包括highz1)。如果net型信号拥有确定的值0,则其强度应该全部由strength0部分的强度水平组成(不能包括highz0)。如果一个net型信号的值是x,则其部分拥有strength0的强度,部分拥有strength1的强度,比如一个Stx信号指的是一个强度范围从strong0到strong1的信号。如果net型信号拥有值z,则代表其强度一定是highz类,至于是highz0还是highz1我们一般不做区分。另外还有两种特殊的信号值H和L,这会在后面进行说明。
二、门级建模和连续赋值语句引入的强度
在上一节,我们介绍了强度建模的引入方式,下面进行详细阐述。首先给出门级建模和连续赋值语句语法的BNF范式,如图2和图3所示。有关BNF范式的相关内容可以看笔者的以往文章。

图2 门级建模语法的BNF范式

图3 连续赋值语句语法的BNF范式
在图2和图3中我们可以看到驱动强度[drive_strength]是门级建模和连续赋值语句的可选项,如果不指定驱动强度[drive_strength],则默认驱动强度为(strong0, strong1)。还要注意的是,对于net声明连续赋值语句,同样可以使用驱动强度[drive_strength],这与普通的连续赋值语句没有区别。
有了语法的基础,下面就可以举例说明驱动强度的基本概念了。
wire a, b, c, d, e;
assign a = 1; //net型信号a拥有单个强度strong,拥有信号值1,用St1表示
assign (strong1, strong0) a = 1; //与上面的形式等价
assign (strong0, strong1) a = 1; //与上面的形式等价
assign (weak0, strong1) a = 0; //net型信号a拥有单个强度weak,拥有信号值0,用We0表示
assign b = 1'bx; //net型信号b拥有强度范围strong0到strong1,拥有信号值x,用Stx表示
assign (weak0, pull1) b = 1'bx; //net型信号b拥有强度范围weak0到pull1,拥有信号值x,用35x表示
assign c = 1'bz; //net型信号c拥有强度hignz,拥有信号值z,用HiZ表示
not (pull0, weak1) (d, 1'b0); //net型信号d拥有单个强度pull,拥有信号值0,用Pu0表示
wire (weak0, supply1) e = 1'b0; //net型信号e拥有单个强度weak,拥有信号值0,用We0表示//尽管我们的例子全部是变量net,但是对于矢量net同样适用
这里要注意的是,不管是连续赋值的左值net型信号还是门级建模的输出信号,信号的值是由输出决定的,而和输入或指定的驱动强度无关,这很好理解,因为输入可以是没有驱动强度的variable型信号,比如reg型信号,而指定的强度相当于只是给结果附上了一个属性,而不影响结果的值,下面举例说明。
wire a, b;
assign (pull1, supply0) b =1'b0; //b的强度是supply,值是0,用Su0表示
assign (pull0, supply1) a = b; //a的强度是pull,值是0,用Pu0表示(a的强度与b的强度无关,a的值与b的值有关)
下一章
Verilog基础:强度建模(二)-CSDN博客首先来说明一下什么叫信号拥有单个强度和确定值,其实如果一个net型信号拥有单个强度,那它一定拥有确定值。首先我们把上一章中的比例尺给出,如图4所示。下面举例说明单个强度和确定值的定义。https://blog.csdn.net/weixin_45791458/article/details/135704743?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22135704743%22%2C%22source%22%3A%22weixin_45791458%22%7D
相关文章:
Verilog基础:强度建模(一)
相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 一、强度建模基础 Verilog HDL提供了针对线网信号0、1、x、z的精准强度建模方式,这样可以允许将两个线网信号进行线与操作从而更加精确地描述出硬件行…...
Spring Boot各类变量的使用
文章目录 1. 变量类型2. 获取变量2.1 获取方式2.2 获取方法2.2.1 通过Value注入获取变量值2.2.2 System.genenv 获取变量值2.2.3 System.getProperty 获取变量值2.2.4 Environment 获取变量值2.2.5 ConfigurationProperties 获取变量值2.2.6 SpringApplication.run 程序启动参数…...
Hive管理UDF详解
大数据集群下,共有三种管理Hive UDF的方式,如下: 名称重启Hive服务Jar保存目录场景直接JAR配置需要HDFS开发辅助JARs目录配置需要本地目录防止意外覆盖文件可重载辅助JAR配置不需要本地目录频繁更新UDF场景{HIVE_HOME}/auxlib目录需要本地目录不建议{HIVE_HOME}/lib目录需要…...
bug笔记:解决 HTTP Error 500.30 - ASP.NET Core app failed to start
总结下后端部署windos iis环境net6版本,500.30问题报错的一种解决方案: 一、问题描述 二、解决方案 检查下是否安装了net6对应的环境,是否已经安装 然后在事件管理器>Windows日志>应用程序,里面查看详细异常记录 在iis下面…...
理解pytorch系列:transpose是怎么实现的
在PyTorch中,transpose()是一种操作,它交换张量中两个指定维度的位置。实现这一点的关键在于不实际移动数据,而是通过改变张量的元数据(包括步长(stride)和尺寸(size))来…...
Linux tftp命令教程:文件传输利器(附案例详解和注意事项)
Linux tftp命令介绍 tftp,全称为Trivial File Transfer Protocol(简单文件传输协议)。tftp是一个用于文件传输的客户端命令,用于从远程主机传输文件,包括一些非常简洁、通常嵌入的系统。 Linux tftp命令适用的Linux版…...
beego的模块篇 - task任务
利用该工具来定时的做一些任务,但是有些时候我们的进程内也希望定时的来处理一些事情,可以使用crontab。 1 任务计划 1.1 初始化一个任务 tk1 : task.NewTask("tk1", "0 12 * * * *", func(ctx context.Context) error { fmt.Pri…...
ThreadLocal工具类
ThreadLocal工具类 ThreadLocalUtil.java public class ThreadLocalUtil {static final ThreadLocal THREAD_LOCAL new ThreadLocal();public static <T> T get() {return (T) THREAD_LOCAL.get();}public static void set(Object value) {THREAD_LOCAL.set(value);}p…...
【c语言】扫雷(上)
先开一个test.c文件用来游戏的逻辑测试,在分别开一个game.c文件和game.h头文件用来实现游戏的逻辑 主要步骤: 游戏规则: 输入1(0)开始(结束)游戏,输入一个坐标,如果该坐…...
Java读取制表符文本转换为JSON
在Java开发中,处理各种数据格式是常见的任务。本文将介绍如何使用Java读取制表符文本文件,并将其转换为JSON格式,以便于后续的数据处理和分析。我们将使用Java中的相关库来实现这个过程,并提供详细的代码示例。 引言:…...
从C到C++:向面向对象过渡的技巧与诀窍
从C到C的过渡是一项对于程序员来说非常重要的转变。C是一种基于C语言的面向对象编程语言,它引入了许多新的概念和功能,如类、对象、继承和多态等。这些新的特性使得C在软件开发中更加灵活、可复用和易于维护。 下面是一些向面向对象过渡的技巧和诀窍&am…...
Vue3中动态组件使用
一,动态组件使用: 应用场景:动态绑定或切换组件 应用Vue3碎片: is 1.使用 a.组件A <div class"layout-base"><Button>红茶</Button> </div>a.组件B <div class"layout-base"&g…...
kubernetes工作负载-DamonSet
一、DemonSet的介绍 1、什么是DemonSet DaemonSet 控制器是用来保证在所有节点上运行一个 Pod 的副本当有节点加入集群时, 也会为他们新增一个 Pod。 当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。 简而言之…...
zabbix其他配置
自动发现 zabbix server 主动的去发现所有的客户端,然后将客户端的信息登记在服务端上。 缺点是如果定义的网段中的主机数量多,zabbix server 登记耗时较久,且压力会较大。 systemctl disable --now firewalld setenforce 0 hostnamectl se…...
蓝桥杯备战 每日一题 (2)
今天的题目是回忆迷宫 这个题目我们来熟悉一下 弗洛伊德算法 的代码模板 弗洛伊德算法用来处理最短路径问题 弗洛伊德算法(Floyd’s algorithm)用于解决图中所有节点对之间的最短路径问题。算法的基本思路是通过逐步迭代更新节点对之间的最短路径长度&a…...
GetShell的姿势
0x00 什么是WebShell 渗透测试工作的一个阶段性目标就是获取目标服务器的操作控制权限,于是WebShell便应运而生。Webshell中的WEB就是web服务,shell就是管理攻击者与操作系统之间的交互。Webshell被称为攻击者通过Web服务器端口对Web服务器有一定的操作权…...
workflow源码解析:ThreadTask
1、使用程序,一个简单的加法运算程序 #include <iostream> #include <workflow/WFTaskFactory.h> #include <errno.h>// 直接定义thread_task三要素 // 一个典型的后端程序由三个部分组成,并且完全独立开发。即:程序协议算…...
为何谷歌强制要求安装ssl证书?
在当今数字化的世界中,网络安全已成为至关重要的议题之一。作为全球最大的搜索引擎之一,谷歌一直在推动网络安全标准的提升。其强制要求网站安装SSL证书的决策引起了广泛关注。本文将深入探讨谷歌为何强制要求安装SSL证书,以及这一举措对互联…...
【刷题】 leetcode 2 .两数相加
两数相加 两数相加1 思路一 (暴毙版)2 思路二 (本质出发) 谢谢阅读Thanks♪(・ω・)ノ下一篇文章见!!!!!! 两数相加 我们来看…...
Webpack5入门到原理2:基本使用
Webpack 是一个静态资源打包工具。 它会以一个或多个文件作为打包的入口,将我们整个项目所有文件编译组合成一个或多个文件输出出去。 输出的文件就是编译好的文件,就可以在浏览器段运行了。 我们将 Webpack 输出的文件叫做 bundle。 功能介绍 Webp…...
非标自动化设计实战:用亚德客气爪和真空吸盘搞定不规则工件抓取(附选型速查表)
非标自动化设计实战:亚德客气爪与真空吸盘在复杂工件抓取中的工程决策 在非标自动化设备设计领域,工件抓取方案的确定往往是项目成败的关键节点。面对形状不规则、材质特殊的工件——可能是表面粗糙的铸件、易碎的玻璃制品或是带有曲面的复合材料——工程…...
影刀RPA 企业级专题篇:自动化中台架构与多业务流程治理实践
影刀RPA 企业级专题篇:自动化中台架构与多业务流程治理实践 作者:林焱 很多团队最开始做自动化。 目标都很简单。 让流程跑起来。 减少重复操作。 前期。 几个流程。 几台机器。 一个维护人员。 系统看起来非常轻。 但随着业务扩大。 问题会…...
mPDF实战指南:PHP环境下HTML转PDF的高性能解决方案深度解析
mPDF实战指南:PHP环境下HTML转PDF的高性能解决方案深度解析 【免费下载链接】mpdf PHP library generating PDF files from UTF-8 encoded HTML 项目地址: https://gitcode.com/gh_mirrors/mp/mpdf 在当今数字化办公环境中,PDF文档生成已成为企业…...
python健身服务管理系统_健身房教练预约系统qeif6f6f
目录同行可拿货,招校园代理 ,本人源头供货商项目概述核心功能技术实现项目特点应用场景项目技术支持源码获取详细视频演示 :同行可合作点击我获取源码->获取博主联系方式->进我个人主页-->同行可拿货,招校园代理 ,本人源头供货商 项目概述 Python健身服务…...
警惕AI领域未经证实的技术传闻与虚构命名
我不能按照您的要求生成关于“TAI #200: Anthropic’s Mythos Capability Step Change and Gated Release”的博文内容。原因如下:该标题中出现的“Mythos”并非 Anthropic 官方公开发布或确认存在的模型、能力或产品名称。截至2024年7月,Anthropic 官方…...
脉冲神经网络SNN工程落地全链路指南:从LIF建模到边缘部署
1. 这不是又一本“神经网络入门”——它是一份面向真实研究与工程落地的脉冲神经网络实操手记“Spiking Neural Networks”(SNN)这个词,过去十年里在学术会议海报上出现的频率,几乎和咖啡渍在论文草稿边缘的扩散速度一样快。但如果…...
LLM处理半结构化数据,csv数据 :在序列化层对字段按熵分层路由——把每个低熵层一次性全局总结、把高熵 TEXT 用“质心+样例“做率最优覆盖、把寻址 α 显式落进 prompt
怎么给LLM 总结结论进行溯源 先搞清「寻址函数 α」是什么 L3 / L4 已经把 12 万条文本压成 8 类模式 + 几条原话证据。可这时候 LLM 看到的只是抽象论断: 「机型 X1C 的喷头堵塞,主要原因是耗材含水(占该类 18%)」 分析师马上会追问:“这 18% 具体是哪 5,200 条工单?给…...
38 - Go 命令行参数处理:从 os.Args 到 flag 的底层设计
文章目录38 - Go 命令行参数处理:从 os.Args 到 flag 的底层设计为什么需要命令行参数?命令行参数的本质最基础的参数处理:os.Args基础使用示例获取单个参数flag 标准库:Go 官方参数解析器最简单的 flag 示例为什么 flag.String 返…...
制造业的AI智能体,为什么“部署方式”比“功能有多强”更关键?
和几位制造业IT负责人的交流中,有一个现象值得关注:他们最担心的不是AI智能体“能不能用”,而是“怎么部署”。 这和前两年的讨论方向明显不同。2024年前后,行业还在争论AI智能体到底有没有用、能在哪些场景落地。到了2026年&…...
物理标签退场,视觉原生上位:UWB vs 镜像视界无感定位・空间智能重构
物理标签退场,视觉原生上位:UWB vs 镜像视界无感定位・空间智能重构在空间智能加速重构物理世界的当下,全域感知技术正经历一场从“物理标签”到“视觉原生”的底层范式革命。长期以来,以UWB(超宽带)为代表…...
