Verilog case/casez/casex的区别

news2024/10/7 10:14:03

casez/casex语句虽然EDA工具也可以综合出来,但是注意,casez/casex综合出来的电路和case语句综合出来的电路可能是不同的,一定要慎用。而且综合工具也会告诉你casez/casex中的“?”"x""z"的comparison is always false,而仿真工具则是认为“?”"x""z"是无关的比较且comparison is always true,因此会造成simulation/synthesis mismatch。

大家看到这个代码有什么体会?综合会有什么告警Warning?

图片

综合会有告警如下:

图片

Verilog中寄存器的值有四种状态,分别是0、1、x(unknown values)和z(high-impedance values)。casex、casez 语句是case语句的变形。case语句的用法当然不必多说,但是稍有不慎也会生成锁存器。

先给结论:

  • case比较双方每个bit是否相等,0,1,X与Z都需要比较。

  • casez允许"z"和"?"对应bit在比较时被忽略,x不会被忽略。

  • casex允许"x"、"z"和"?"对应bit在比较时被忽略。

  • '?'只有在casez中代表的是don't care,其他情况代表的是'z'。

  • case/casez/casex的描述,匹配都是从上到下进行的。

  • case/casez/casex都能综合。

  • caze综合出来的电路可能不同于casez/casex综合出来的电路。

  • case(不是casez/casex)里面的x和z,其分支都会被综合工具认为是不可达到的状态就被去掉了。

  • casez和casex里面的x/z都被认为是don't care,所以casez和casex综合出的电路是一致的。

case  treats 'z' & 'x'  as it iscasez treats 'z'        as dont care casex treats 'z' & 'x'  as dont care

下表给出case、casex、casez的真值表,图来自于夏宇闻老师教材《Verilog数字系统设计教程(第二版)》。

图片

举几个实际的例子(图片来源于原英文paper文档)

首先看case语句:

图片

图片

然后再看casez语句:

注意,“?”只有在casez中作为无关项,其他case、casez语句中作为z。

图片

图片

注意,匹配是按照从上到下的顺序进行的。

注意,上表中,1z和1x匹配上了,x在casez中与z匹配的事实给我们'x在casez中被视为无关紧要'这样的错觉。实际发生的是z(无关紧要)与x匹配。

最后再看casex语句:

图片

图片

再来看看综合:

注意,'?'只有在casez中代表的是don't care,其他情况代表的是'z'。

图片

case综合结果:

图片

casez综合结果:

图片

casex综合结果:

图片

再来看看1?改成1x的综合结果:

图片

图片

图片

图片

通过上面两个例子我们得到的结论是:

  • caze综合出来的电路可能不同于casez和casex综合出来的电路。

  • case(不是casez/casex)里面的x和z,其分支会被综合工具认为是不可达到的状态就被去掉了。

  • casez和casex里面的x/z都被认为是don't care,所以casez和casex综合出的电路会是一致的。

芯片全流程培训

芯片培训即将涨价,报名联系小编微信:13541390811

  • 景芯SoC前、中、后端低功耗全流程实战培训(价格不到同行1/6)

  • 景芯SoC前端视频+文档+实战+一对一终身辅导实战培训

  • 景芯SoC中端视频+文档+实战+一对一终身辅导实战培训

  • 景芯SoC后前视频+文档+实战+一对一终身辅导实战培训

  • 12nm 2.5GHz A72 低功耗DVFS实战培训(价格不到同行1/3)

  • 12nm 2.5GHz A72 DFT实战培训(价格不到同行1/3)

  • RISC-V MCU 40nm全芯片PR实战培训

  • DDR4/3项目实战培训

  • MIPI CSI2 + ISP图像处理 + HDMI实战培训(即景芯SoC前端)

  • MIPI CSI2 + ISP图像处理 + H.265 + USB + MAC实战培训(研发中)

  • 进阶Codec H.265/H.264实战培训(研发中)

芯片Design Service设计服务介绍:

  • 提供SoC、MCU、ISP、CIS等芯片设计、验证、DFT设计服务

  • 提供DDR/PCIE/MIPI/CAN/USB/ETH/QSPI/UART/I2C等IP设计

  • 提供7nm、12nm、28nm、40nm、55nm、65nm、90nm等后端设计

  • 提供高校、企业定制化芯片设计服务、设计培训业务

另外,小编知识星球分享芯片设计、验证、DFT、后端全流程知识以及大量技术文档,欢迎大家加入讨论学习,共同进步!

图片

景芯SoC芯片全流程设计训练营的宗旨:

【让每个学员都能设计一款SoC/MCU芯片】

【全网唯一】景芯SoC是一款用于【芯片全流程设计培训】的低功耗ISP图像处理SoC,采用低功耗RISC-V处理器,内置ITCM SRAM、DTCM SRAM,集成包括MIPI、ISP、USB、QSPI、UART、I2C、GPIO、以太网MAC控制器等IP,采用SMIC40工艺设计流片。

图片

(一)SoC前端课程,您将学会

  • 高速接口的Verilog设计实现

  • 从图像算法到RTL设计实现

  • MIPI、ISP的Verilog实现与仿真

  • Lint、CDC检查及UVM验证

  • 后仿真

仅前端一门课程内容就抵得上其他培训机构的5-6门课程。

(二)SoC中端课程,您将学会

  • DFT设计(芯片级)

  • Synthesis逻辑综合(芯片级)

  • 低功耗UPF设计、CLP技术

  • formal验证等技术

仅中端一门课程内容就抵得上其他培训机构的4-5门课程。

(三)SoC后端课程,您将学会

  • 低功耗设计

  • 布局布线(低功耗FF flow)

  • StarRC/QRC

  • STA/Tempus

  • 功耗分析

  • DRC/LVS设计

仅后端一门课程内容就抵得上其他培训机构的3-4门课程。

图片

加入知识星球,加入芯片设计知识宝库!

SoC培训营的知识星球

图片

今天先介绍到这里,然后SoC课程提供服务器供大家实践!带你从算法、前端、DFT到后端全流程参与SoC项目设计。请联系号主报名!联系微信:135-4139-0811

景芯SoC训练营图像处理的数据通路:

图片

景芯SoC的CRG设计:

图片

一键式完成C代码编译、仿真、综合、DFT插入、形式验证、布局布线、寄生参数抽取、STA分析、DRC/LVS、后仿真、形式验证、功耗分析等全流程。升级后的芯片设计工程V2.0 flow如下:

SoC一键式执行flow

图片

MIPI DPHY+CSI2解码

图片

数字电路中经典设计:多条通信数据Lane Merging设计实现

数字电路中经典设计:多条通信数据Lane Distribution实现

图片

UPF低功耗设计

全芯片UPF低功耗设计(含DFT设计)

图片

景芯SoC训练营培训项目,低功耗设计前,功耗为27.9mW。

图片

低功耗设计后,功耗为0.285mW,功耗降低98.9%!

图片

图片

电压降检查:

图片

低功耗检查:

图片

芯片的版图设计V1.0

图片

芯片的版图设计V2.0

图片

低功耗设计的DRC/LVS,芯片顶层的LVS实践价值极高,具有挑战性!业界独一无二的经验分享。

图片

ISP图像处理

  •    dpc - 坏点校正

    图片

  •    blc - 黑电平校正 

    图片

  •    bnr - 拜耳降噪

  •    dgain - 数字增益 

  • 图片

  •    demosaic - 去马赛克

    图片

  •    wb - 白平衡增益 

  •    ccm - 色彩校正矩阵 

  •    csc - 色彩空间转换 (基于整数优化的RGB2YUV转换公式)

  •    gamma - Gamma校正 (对亮度基于查表的Gamma校正)

  •    ee - 边缘增强

    图片

  •    stat_ae - 自动曝光统计 

  •    stat_awb - 自动白平衡统计

CNN图像识别

图片

支持手写数字的AI识别:

图片

仿真结果:仿真识别上图7、2、1、0、4、1、4、9

图片

景芯微SoC团队业务

景芯微SoC团队业务介绍:

  • 提供全网最全流程的实际芯片项目培训

  • 提供SoC、MCU、ISP、CIS等芯片设计服务

  • 提供芯片设计、验证、DFT设计服务

  • 提供后端设计服务,工艺包括7nm、12nm、28nm、40nm、55nm、65nm、90nm、110nm、180nm等,提供投片渠道

  • 提供高校、企业定制化芯片设计培训及就业推荐与就业指导

丰富的教程文档

图片

图片

图片

图片

图片

图片

7天冲刺PR训练营有同学问如何给IO添加PAD?请思考景芯SoC的IO和PAD如何实现最佳?

图片

加入知识星球,加入芯片设计知识宝库!

SoC培训营的知识星球

图片

SoC训练营VIP学员问为何低功耗cell没有插入网表?

虽然提问题是值得鼓励的,但是我们在遇到问题时,还是先主动思考,主动解决问题,实在解决不了我们再求助,这样成长更快。

首先,小编拿到这问题,就打开log,查看log是一种IC设计美德!发现EDA工具吃进UPF文件后,报了warning如下,用到了很多ff库。

图片

上图报错UPF指定电压是0.99V,而CELL是1.20V,电压不匹配,导致逻辑综合出来的网表没有插入MV CELL。注意,综合时,我们用的ss库,怎么会是ff库呢?打开约束脚本发现如下bug:

图片

于是,更改约束,将ff换成ss即可。再次run一下,结果就出来了:

图片

低功耗设计部分,设计里面我会留一点小bug在里面 非常简单,我不会公布答案,大家一定要多思考、多动手跑跑,这样才学的深刻。

培训学员请注意,景芯SoC用always on的power domain电压域的pwrdown_mux信号作为power switch cell的switch控制信号,但是设计里面有个小问题,不太算bug的bug,但对upf低功耗flow而言,毫无疑问就是bug!

培训学员请登陆服务器追踪一下pwrdown信号,注意其负载情况,RTL代码如下:

图片

结合PR输出的netlist, 我们做个clp低功耗检查,脚本参见服务器。可以发现,clp报错说power switch的switch控制信号找不到。

图片

不得不说,clp检查对低功耗而言多么重要,对芯片设计而言多重要!景芯SoC的价值就在把芯片设计全流程的这些细小的知识点,全部串接起来!犹豫啥?抓紧报名加入吧!

在芯片设计中端流程时,景芯SoC会插入UPF约束中的isolation等cell,但是无法插入power switch等cell,因此,作为power switch cell的控制信号pwrdown_mux在没有负载的情况下,会被裁员掉(优化掉),因此需要设置上面MUX器件为dont_touch或者使pwrdown_mux成为module的port并禁止auto_ungroup(并设置no_boundary_optimization),这样这个信号才能保留给后端,供后端实现power switch控制。请学员完成代码修改,基于全套flow环境完成如下任务:

  1. lint检查、前端仿真,

  2. 完成中端、后端flow,

  3. 完成clp检查, 完成后仿真

7天冲刺PR训练营有同学问,同样的floorplan,有些同学很快跑完,有些同学则遇到大量DRC问题(EDA工具不停iteration)导致工具始终无法跑完,具体什么问题呢?

首先,小编发现该同学的stripe把TM2定义为了horizontal,而熟悉景芯工艺的同学知道,TM2的preference direction是VERTICAL。

图片

查询景芯的lef库文件也可以确认:

图片

用错方向有多大影响呢?大家上景芯SoC的后端flow实践一下吧,实践出真知。

7天冲刺PR训练营有同学问,为啥PR花了一天一夜24个小时完成布线还大量DRC错误?小编已经将设计规模尽可能减小以加速PR设计,实际上2小时就可以跑完routing,为何这么慢?原因就是低功耗单元的走线。具体原因及解决办法欢迎加入景芯训练营讨论。

图片

其错误主要集中在M4上,请思考如何解决。

图片

7天冲刺PR训练营有同学问,power switch cell的secondPG pin(VDDG)从M1接出的,而不是M2, 请思考有什么问题?如何解决?

图片

7天冲刺PR训练营有同学问,景芯SoC培训营同学遇到Corner Pad LVS不过怎么处理?

图片

完成景芯SoC培训的前端设计仿真、DFT后,我们来到后端flow,本教程教你一键式跑完数字后端flow。

图片

生成脚本命令如下:

tclsh ./SCRIPTS/gen_flow.tcl -m flat all

图片

生成flow脚本之前需要配置setup.tcl等相关参数,具体参见【全网唯一】【全栈芯片工程师】提供自研的景芯SoC前端工程、DFT工程、后端工程,带你从算法、前端、DFT到后端全流程参与SoC项目设计。

景芯SoC训练营的同学问,为何innovus读取做好的floorplan def文件报Error? 首先看log:

图片

Reading floorplan file - ./data_in/DIGITAL_TOP.def (mem = 1595.0M).

#% Begin Load floorplan data ... (date=10/23 22:38:01, mem=1579.3M)

**ERROR: (IMPFP-710): File version unknown is too old.

以前EDI的时期,我们可以通过定义fp_file的方式来加载floorplan:

set vars(fp_file)        "./data_in/DIGITAL_TOP.def"

但是现在innovus升级并放弃了fp_file的加载方式,当然也可以用老版本的EDI9.1及以前版本来加入fp_file,然后转存为新版本,这方式明显没有必要。正如下log提示所说,检查log是非常好的工程师习惯。

Input floorplan file is too old and is not supported in EDI 10.1 and newer.

You can use EDI 9.1 and before to read it in, then save again to create new version.

小编的直觉告诉我,先去看看同学保存的def文件是哪个def版本?

图片

同学保存方式如下:

图片

那么请问如何解决?请大家加入景芯训练营实践。

景芯SoC用了很多异步FIFO,关注异步RTL实现的同学,可以抓取异步FIFO出来看一下版图连线:

图片

查看下所有异步FIFO cell的面积;

dbget [dbget top.insts.pstatus unplaced -p].area

查下所有异步FIFO的cell的名字:

dbget [dbget top.insts.pstatus unplaced -p].name

那么怎么抓出异步路径来观察版图走线呢?如何让report_timing呢?更多内容参见知识星球和SoC训练营。

前端设计目录

图片

中端设计目录

图片

后端设计目录

图片

欢迎加入【全栈芯片工程师】知识星球交流技术,从算法、前端、DFT到后端的全流程设计交流。点击下方图片,加入知识星球!

图片

欢迎加入SoC MCU全流程设计交流群,先加我微信,验证岗位后进群!

SoC MCU全流程设计交流群4

SoC MCU全流程设计交流群3

SoC MCU全流程设计交流群2

SoC MCU全流程设计交流群1

欢迎加入CMOS图像传感器+ISP交流群,先加我微信,验证岗位后进群!

CMOS图像传感器+ISP交流群2

CMOS图像传感器+ISP交流群1

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1525640.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

提速增效!Figma插件推荐,助你事半功倍!

随着设计工具的更换,设计师不再局限于传统软件的重复操作,而是越来越追求能够提高设计效率的插件。从Photoshop到Sketch,再到最受欢迎的Figma,插件层出不穷。Figma是一种基于浏览器和团队合作的设计工具,可以在任何平台…

HackTheBox Blackfield

[1] 靶机信息状态退役难度HardIP/地址https://app.hackthebox.com/machines/Blackfield价格需要订阅 14$ /20 $ /月 端口扫描 └──╼ #nmap -p- --min-rate1000 -T4 10.129.229.17 Starting Nmap 7.93 ( https://nmap.org ) at 2024-03-14 14:14 GMT Nmap scan report for…

【iOS】ARC学习

文章目录 前言一、autorelease实现二、苹果的实现三、内存管理的思考方式__strong修饰符取得非自己生成并持有的对象__strong 修饰符的变量之间可以相互赋值类的成员变量也可以使用strong修饰 __weak修饰符循环引用 __unsafe_unretained修饰符什么时候使用__unsafe_unretained …

JVM中对象创建过程

在JVM中对象的创建,我们从一个new指令开始: 这个过程大概图示如下: 虚拟机收到new指令触发。 类加载检查:如果类没有被类加载器加载,则执行类加载流程(将class信息加载到JVM的运行时数据区的过程&#xff…

【SRE系列之docker容器】--dockerfile镜像优化

dockerfile镜像优化 1.1 镜像优化方法 系统镜像采用ubuntu或者alpine,会比centos少1G左右编写业务镜像时从官网拉取镜像,其余配置根据业务需求再配置编写dockerfile时把不用的安装包卸载或者删除尽量减少run命令的使用(一个run命令&#xf…

《手把手教你》系列技巧篇(三十九)-java+ selenium自动化测试-JavaScript的调用执行-上篇(详解教程)

1.简介 在做web自动化时,有些情况selenium的api无法完成,需要通过第三方手段比如js来完成实现,比如去改变某些元素对象的属性或者进行一些特殊的操作,本文将来讲解怎样来调用JavaScript完成特殊操作。 2.用法 创建一个执行 JS 的…

公众号关闭自定义菜单

1、登录公众号 https://mp.weixin.qq.com/ 2、找到侧边导航-》新的功能 3、已开通-》自定义菜单 4、点击停用

Cesium:绘制一个 3DTiles 对象的外包盒顶点

作者:CSDN @ _乐多_ 本文将介绍如何使用 Cesium 引擎根据模型的中心坐标,半轴信息,绘制一个 3DTiles 对象的外包盒顶点。 外包盒是一个定向包围盒(Oriented Bounding Box),它由一个中心点(center)和一个包含半轴(halfAxes)组成。半轴由一个3x3的矩阵表示,这个矩阵…

产品数据管理系统哪家好?产品数据管理系统厂商

产品数据管理系统(PDM)的选择取决于企业的具体需求、规模、行业以及预算。市场上有很多优秀的PDM供应商,每一家都有其独特的优势和特点。以下是一些在市场上广受好评的PDM供应商,供您参考: 彩虹PLM系统:彩虹…

java垃圾回收-三色标记法

三色标记法 引言什么是三色标记法白色灰色黑色 三色标记过程三色标记带来的问题多标问题漏标问题 如何弥补漏标问题增量更新原始快照总结 引言 在CMS,G1这种并发的垃圾收集器收集对象时,假如一个对象A被GC线程标记为不可达对象,但是用户线程又把A对象做…

GEE:基于变异系数法(CV)进行遥感生态指数(RSEI)波动分析

作者:CSDN @ _养乐多_ 本文将在 Google Earth Engine(GEE)平台上复现论文《基于遥感生态指数的青藏公路典型路段路域生态环境质量评估与分析》中使用变异系数法对遥感生态指数(RSEI)进行波动分析的方法和代码。 其公式如下所示, 结果如下所示, 文章目录 一、核心函数二…

c语言(数据在内存中的存储)

1. 整数在内存中的存储 整数的2进制表⽰⽅法有三种,即原码、反码和补码 三种表⽰⽅法均有符号位和数值位两部分,符号位都是⽤0表⽰“正”,⽤1表⽰“负”,⽽数值位最 ⾼位的⼀位是被当做符号位,剩余的都是数值位。 正整…

osgEarth学习笔记1-安装osgEarth开发环境

原文链接 本文主要是为了防止丢失,做一些记录,仅供个人学习使用。 QGis的学习和使用基本告一段落了。日常的应用已经离不开QGis了,常用的QGis-API和跨平台的QTQGis开发已经十分熟练了。涉及遥感和GIS领域的二维可视化、数据处理使用QT搭配Q…

Python下有关CV的一些算法和函数

目录: 1. HoughCircles二级目录三级目录 1. HoughCircles 霍夫圆检测 二级目录 三级目录

Linux系统部署DolphinScheduler任务调度系统并实现无公网IP远程访问

文章目录 前言1. 安装部署DolphinScheduler1.1 启动服务 2. 登录DolphinScheduler界面3. 安装内网穿透工具4. 配置Dolphin Scheduler公网地址5. 固定DolphinScheduler公网地址 前言 本篇教程和大家分享一下DolphinScheduler的安装部署及如何实现公网远程访问,结合内…

机试:高精度乘法

问题描述 代码示例 #include <bits/stdc.h> using namespace std;int main(){char a[64],b[64];cin >> a >> b;int A[64],B[64],C[128];for(int i 0; i < strlen(a); i){A[i] a[i] - 0;}for(int i 0; i < strlen(b); i){B[i] b[i] - 0;}// 反转 …

基于多尺度视网膜增强图像去雾算法(MSR,Multi-Scale Retinex),Matalb实现

博主简介&#xff1a; 专注、专一于Matlab图像处理学习、交流&#xff0c;matlab图像代码/项目合作可以联系&#xff08;QQ:3249726188&#xff09; 个人主页&#xff1a;Matlab_ImagePro-CSDN博客 原则&#xff1a;代码均由本人编写完成&#xff0c;非中介&#xff0c;提供有偿…

【LinuxC】C语言线程(pthread)

文章目录 一、 POSIX 线程库1.1 POSIX标准1.2 Pthreads1.2 数据类型、函数、宏1.21 数据类型1.22 函数1.23 宏 二、创建线程三、线程同步四、线程销毁五、示例5.1 完整示例5.2 信号量示例 本专栏上一篇文章是Windows下&#xff08;MSVC&#xff09;的线程编程&#xff0c;需要的…

操作系统IO模型

IO模型 如何进行网络通信 Socket通信是进程通讯的一种方式&#xff0c;通过调用这个网络库的一些API函数可以实现分布在不同主机的相关进程之间的数据交换 网络编程的基本流程是什么&#xff1f; 服务端先创建socket套接字&#xff0c;然后用这个套接字去绑定并监听某个端口&a…