自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(86)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 Formal Verification (一) 形式验证的分类、发展、适用场景

定义Formal Verification:利用数学分析的方法,通过算法引擎建立模型,对待测设计的状态空间进行遍历的验证。分类相比于动态仿真Simulation Veficiation,形式验证属于Static Verification,不需要手动灌入激励;通过数学分析的方式,对待测设计进行检查;形式验证分为两大分支:Equivalence Checking 等价检查 和 Property Checking 属性检查形式验证初次被EDA工具采用,可以追溯到90年代,被应用于RTL code和ga

2022-02-25 22:27:26 14636

原创 VC Spyglass CDC(一)CDC与亚稳态、亚稳态电路的分类

CDC与亚稳态Clock Domain Crossing (CDC): 跨时钟域设计中,信号adat从aclk domain传播到bclk domain;aclk与bclk之间的频率,相位没有固定关系,为asynchronous异步关系的时钟。Metastability: 当adat在bclk采样点附近变化时,不满足后级flip-flop的setup/hold time,D端无法完成正确的锁存,Q端的输出在较长一段时间内处于不确定的振荡值,出现亚稳态的现象。亚稳态传播给后级组合逻辑时,其不确定的X态会

2021-10-05 20:39:48 5318 12

原创 VCS仿真与调试

-cc指定C编译器,默认使用

2021-02-09 14:48:53 29365 6

原创 UVM设计模式 ( 二 ) 参数化类、静态变量/方法/类、单例模式、UVM_ROOT、工厂模式、UVM_FACTORY

软件中的设计模式可归纳为三类:创建型,结构型,行为型。本节介绍创建型设计模式在UVM中的应用。在开始创建型设计模式介绍之前,回顾下Systemverilog中的Parameterized classes 和 Static method 的相关语法。参数化的类SV中的参数化的类,类似于Verilog中参数化的模块,例化时指定位宽等的值,在SV中一般用于为类增加数据类型的参数。如下示例,在声明S_bit句柄时,传入的type类型为bit [1:10],W没有指定默认为5,如果type T没有指定

2020-12-12 17:48:29 10263 15

原创 VCS ICO - Intelligent Coverage Optimization

会在用户约束的基础上,做一些自动“修正”,以此来优化随机激励,提高随机多样性,加速覆盖率收敛,缩短 turn-around time。是vcs提供的用于优化覆盖率的feature;等约束了变量的随机概率,而。

2023-07-30 22:26:40 1217

原创 C case和UVM TB的交互,tube_print, event_sync

C代码调用printf时,打印信息显示在哪个IO上,由pringf调用的底层代码决定;软件C中的printf默认在terminal上打印;对于嵌入式C, 运行在开发板上的code,可以借助target自己的显示IO,如LCD屏,将打印信息直接显示在LCD屏上;如果target没有显示IO,也可以retarget到host端的terminal上;simulation仿真时,运行的C代码需要借助主机host的IO,将打印信息显示在simulation terminal上;

2022-12-25 21:28:39 1985

转载 systemverilog : constraint slove... before 详解

总的来看,使用->或者if-else时,参数的概率分布会变得复杂且不易理解,尤其涉及到多条件蕴含时,某些参数的概率分布很难做出预期,因此更加需要后续的功能覆盖率加以分析,找出不合理的约束。

2022-09-16 21:14:57 1346

原创 Formal Verification (三) abstraction strategy、reduce complexity for convergence

“空间爆炸”大大增加了formal工具处理的复杂度,在有限的资源内,难以达到收敛。所以采用一些abstraction的手段,是十分有效且必要的。正确的abstraction处理,使用abstrct model代替real model,不会影响目标结果,同时加速证明。abstraction不等同于简单的reduction,如下示例:RTL中,当timer大于1000时,触发timeout。需要运行1000个cycle才会触发。Reduction将阈值设置为5,缩减到5个cycle触发。因为原RTL中还

2022-07-10 17:32:38 2957 2

原创 Formal Verification (五) coverage、sign-off flow

formal和simulation一样,也是基于coverage-driven的验证方式;分为branch,statement,expression,toggle;这部分概念和simulation类似,如下图:用于衡量cover item(CI) (CI可以简单理解为RTL code)在验证过程中是否被覆盖到;:工具追踪并覆盖了该CI:在有限的时间内,未追踪覆盖该CI:在给定的约束条件下,无法覆盖该CI(可能存在over-constraint的问题:在任何条件下,都无法覆盖该CI。

2022-04-24 17:10:48 2566

原创 Formal Verification (四) bounded proof、bug hunting、advanced topic

形式验证本质上是一种`model checking`;不同类型的模型检查,调用不同的算法引擎;对于特定的属性求解,需要调用合适的engine;`symbolic model checking`基于`BDD`(binary decision diagram);`BMC (bounded model checking)`基于`SAT`(satisfiability)

2022-04-24 16:31:56 1424

原创 Formal Verification (二) FPV、APPs

通过上一篇对Formal Verification有了基本的认识;本篇将通过一个简单的例子,感受一下Formal的“魅力”;Formal Tool目前主流的有Synopsys的VC Formal,Cadence的Jaspergold,Mentor的Questa FV以及🔗OneSpin的Verify;本篇使用VC Formal演示,其他工具思路类似。Assertion具体assertion的语法不再介绍,可以参考《SystemVerilog Assertions and Functional Cover

2022-02-26 14:49:37 8521 10

原创 嵌入式C(一)Linux C编程一站式学习

参考Linux C编程一站式学习

2022-01-17 16:01:49 1077

原创 FSM model in VC USB VIP

Introduction在????layering sequence in VC USB VIP中介绍了USB VIP的结构,其中svt_usb_link分为USB2.0和USB3.x;usb_ss_link包含了Super-Speed LTSSM;usb_20_link包含了2.0 Device-A State Machine(模拟Downstream Facing Ports FSM)、2.0 Device-B State Machine(模拟Upstream Facing Port FSM);USB

2021-12-14 20:37:50 2217 8

原创 UVM设计模式 (九) 状态模式、Modelling Finite-State Machines in Testbench

硬件设计中的FSM,不仅是一种电路的描述工具,而且也是一种思想方法;数字逻辑本质上都可以归一化为FSM;RTL描述FSM可以归类为常用的几种方法,通常采用三段式的描述;在我们的验证环境中,有时也需要一个组件专门负责FSM的建模;例如验证USB Device DUT时,验证环境需要模拟USB Host的行为;对于USB协议复杂的状态机,使用专门的FSM组件模拟,可以减少组件间的耦合;也可以将FSM组件的状态赋值到virtual interface上,通过波形协助debug;

2021-12-09 15:24:58 1943

原创 layering sequence in VC USB VIP

上一篇对layering sequence的UVM结构进行了介绍,本篇分析商业VIP VC USB VIP是如何采用layering sequence构建UVC对layered USB protocol进行建模;VIP为Verification IP,提供高度可配置的标准协议Model;常用的厂商VIP如Synopsis,Avery等;S家svt_usb的层级结构总结如下:【插图】svt_usb_agentsvt_usb_agent 的组成结构和USB协议栈一样,分为三层结构,Physical,

2021-12-06 10:42:09 2111 2

原创 UVM layering sequence for layered protocol

在OSI(Open System Interconnect )模型中,将网络结构分为7层,自上而下:应用层,表示层,会话层,传输层,网络层,链路层,物理层。每层都有相应的协议和对应的数据结构。IC中常见的如PCIe,USB,UFS等都是分层传输的协议。对于这些高速IP,其验证环境通常也采用分层结构,方便扩展和重用。UVM common architecture常见的UVM验证结构从功能上划分,也是层次化的,分为 test,scenario,functional,command,signal;UVC (

2021-12-01 20:32:05 1249 1

转载 这几年的EDA行业的破解和反破解的战争,写于eetop

浏览eetop有段时间了,一直想写点东西,最近才有空。仅仅是有感而发,也算是向那些无私提供方法的人致敬!我想以EFA team的一段经典声明开始,EFA好熟悉的名字,好多年了很多人用过EFA的keygen,又有几个人知道EFA是EDA For All的简称?!———————————————————————————————————— IMPORTANT NOTICE TO YOU!!TeamEFA (Eda For All) supplies this st

2021-11-26 16:40:01 4317

原创 VC Spyglass CDC(五)Hierarchical Flow 、GUI界面

Hierarchical FlowDebugging CDC Violations Using GUIVCst Activity View整体布局打开schematic helptrace codehelp view

2021-11-03 21:45:00 1997

原创 VC Spyglass CDC(四)CDC检查的流程

Read DesignCDC Setup支持自动推断clock/reset,不一定准确,需要double check。create_generated_clock用于生成时钟。CDC Check

2021-11-03 21:00:00 5445 1

原创 VC Spyglass CDC(三) 与Spyglass CDC的区别

VC Spyglass CDCSynopsys Verification Continuum的静态验证平台VC static platform包含了VC LP,VC formal,VC Spyglass三种静态检查工具。Spyglass原是Atrenta旗下的静态检查工具,占据CDC/RDC sign-off工具的大部分市场份额。后来Synopsys收购了Atrenta,整合Spyglass推出了VC Spyglass。VC Spyglass作为Synopsys推出的期望继承Spyglass的新一代产品,

2021-11-03 20:30:00 8082 1

原创 VC Spyglass 对比 Spyglass 描述抽象模型 abstract port

CDC check中,在使用blackbox或者abstarct model时需要做抽象模型处理。VC Spyglass使用一系列attribute命令,可读性更好。Spyglass使用abstract_port和assume_path。DescriptionNote: This document is not writing a SAM (Static Abstract Model). A SAM is an auto-generated, reduced representation of th

2021-10-29 19:01:34 5240 3

原创 VC Spyglass CDC(二)常见的CDC处理方法

CDC解决方案EDA tool提供特定场景下的CDC处理单元,Synopsys的Building Block IP提供如下解决方案:归类如下:CDC处理中,根据跨时钟域信号宽度,分为Signle-bit和Mulit-bit。VC Spyglass CDC将Single-bit归为control path,Mulit-bit归为data pathSingle-bitSingle-bit分为level 类型和event 类型。...

2021-10-07 22:14:45 5498

原创 assertion for clock switch and clock glitch

Code sequence clk_seq(sig,real val); realtime t1,t2; @(posedge sig) (1,t1=$realtime) ##1 @(negedge sig) (1,t2=$realtime,val = t2 - t1); endsequence function automatic void calculate (real val1,val2,val3,jitter,percent,min_cycle);

2021-09-05 17:39:07 863

原创 assertion for reset synchronous release

Code sequence mark_time(sig,realtime t); @(posedge sig) (1,t=$realtime); endsequence property p_rstn_sync(en,rstn,clk); realtime t1,t2; @(posedge clk) disable iff (!en) mark_time(rstn,t1) ##0 mark_time(clk,t2) |-> if(t1!=t2)

2021-09-05 17:14:42 661

原创 Systemverilog 作用域解析运算符 ::

Systemverilog作为面向对象的编程语言,很多特性参看Java,CPP。????C++:作用域解析运算符 ::作用域解析运算符(Class scope resolution operator) :: : 用于显式的对标识符identifier的命名空间namespace做出解析。Systemverilog中的形式:class_type :: { class_type :: } identifier常见归类如下:1.package SEASONS_PKG; typedef enum {

2021-08-01 17:30:05 5086

原创 低功耗验证 (三) Verdi Power-Aware Debug简单使用

文档与源码:User Guide: Verdi_Power_Aware_Debug.pdf in $VERDI_HOME/docdemo: $VERDI_HOME/demo/power/upf_demo介绍:Verdi_Power_Aware: 使用VCS-NLP对带UPF的RTL进行仿真,$fsdbDumpvars("+power") dump power相关信息,用于low power case debug。准备:upf_demo: 顶层module system.v(7个power do

2021-07-14 15:48:54 5749 1

原创 低功耗验证 (二)UPF,低功耗流程,VCS NLP

UPFUnified Power Format (UPF) 用于定义power intent的标准,基于TCL语言编写。目前,最新版的UPF为UPF3.0 1801-2018。UPF文件主要包含4部分内容:power domain, power state, low power cell rule, PG connection。power domain: 对特定的RTL instance做电源管理,可以将其单独定义为一个domain,需要primary net供电。物理实现为voltage are

2021-07-03 14:45:11 28055 8

原创 低功耗验证 (一) CMOS基础,功耗分类,低功耗方法

学习资料????学习资料 密码:csdn学习路线,以Synopsys Flow举例:中文文档,建立低功耗相关概念IEEE Std 1801™ UPF3.0协议,根据标准协议查缺补漏Low Power Methodology Manual, Synopsys 和 ARM 的低功耗设计书籍Multivoltage Flow User Guide, Synopsys的低功耗(多电压)设计验证流程,从前端到后端物理实现VCS Native Low Power (NLP) User Guide,带

2021-06-26 17:28:15 14130 3

原创 X态详解 与 X态传播 VCS X-Propagation

Verilog作为硬件行为级描述语言,提供了四种状态来模拟实际电路的电平状态,1,0,x,z在整个设计流程,包含了Simulation,Formal Verification,Equivalence Checking,Synthesis,Code Coverage,Power State等不同阶段或概念,X态在不同context(上下文/语境)下也存在不同的semantics语义。Synthesis Semantics在逻辑综合时,X态常被看作是一种“无所谓"的赋值,don't-care X-assi

2021-05-23 17:18:24 18175 2

转载 逻辑综合 Flattening, Structuring, and Ungrouping

FlatteningFlattening in Design Compiler is often mistaken for removing the hierarchyand making a design flat. This is not true. Flattening is actually anoptimization technique for reducing logic levels and improving the speed ofthe design. It works by

2021-05-20 15:16:13 1186

转载 时钟切换 glitch-free

刚入行时最早看到的时钟切换电路出自下面这篇文献,第20页,Trouble-Free Switching Between Clocks。 这篇极短的小文章可能是 Xilinx 元老 Peter Alfke 写的。 Peter 是我非常敬重的前辈,读过几篇他写的数字电路小文章,非常实用,受益匪浅。https://www.xilinx.com/publications/archives/xcell/Xcell24.pdf这个电路虽然概念上是对的,但有明显瑕疵。 如果 Select 相对于 Clock A,

2021-04-25 10:21:51 1505 4

原创 【IC script】 不同脚本的调试方法

开头IC中常用的脚本语言有python,perl,makefile,shell等。对于新接手的脚本,若要做一些小修小改,调试的方法除了加打印信息外,最便捷的方式就是单步调试了。熟悉掌握一个脚本,不外乎两点 1:脚本的运行逻辑 2:脚本的数据结构和变量。 使用单步调试可以快速帮助我们熟悉一个复杂的脚本。之前接触过一个7K+行的perl脚本,当你需要关注其中某一个功能时,使用单步调试,可以从开始运行的第一行代码开始,追踪脚本运行这个功能时所走的分支,关注你所需的代码段。可以增加断点,随时的打印变量。当

2021-04-17 11:27:49 1036 2

原创 dump glitch 毛刺分析 及 异步复位同步释放

接上一篇:????interface clocking block使用 及 verdi capture delta cycleGlitch: a transition that occurs on a signal before the signal settles to its intended value.Glitch一般由竞争导致,有些glitch的时间宽度为0,这种glitch需要加上+fsdb+glitch=0dump才可以在波形上查看到。nWave上View -> Display Gl

2021-04-03 16:55:36 4658 1

原创 interface clocking block使用 及 verdi capture delta cycle

clocking blockInput (or inout) signals are sampled at the designated clock event. If an input skew is specified, then the signal is sampled at skew time units before the clock event. Similarly, output (or inout) signals are driven skew simulation time uni

2021-04-02 14:41:59 5711 1

原创 UVM设计模式 (三) 静态类、资源管理、uvm_event、uvm_*_pool、uvm_config_db、UVM_REGEX_NO_DPI

静态类(static class)、成员类(member class)、局部类(local class)、匿名类 (anonymous class)https://blog.csdn.net/qq_30021219/article/details/82661528不可以config_db 队列,联合数组uvm_pool: 内部静态类uvm_queue:队列uvm_config_db优先级scope, 资源存给谁,谁可以取overrideget set historyuvm_pool

2021-03-07 16:55:06 3357

原创 UVM设计模式 (八)适配器模式、寄存器模型详解

寄存器模型结构uvm_reg_field: uvm_reg_data_t类型的存储数据的三个成员变量 value, m_nirrored, m_desire。uvm_reg: 成员变量m_fields加入fields。uvm_reg_block: uvm_reg的集合,uvm_reg需要加入到uvm_reg_map中,且属于同一个uvm_reg_block。每个uvm_reg_block至少包含一个uvm_reg_map。uvm_reg_block中也可以再添加子uvm_reg_block,同时子uv

2021-02-27 12:00:13 4225 1

转载 Verilog PLI已死( 可能), SystemVerilog DPI当立

Verilog PLI已死( 可能), SystemVerilog DPI当立SNUG San Jose 2004作者: Stuart Sutherland 译者: 韦和民摘要在古老的英格兰, 当一个君主死掉以后, 一个继承者会立即得到王位. 因此就有了这样的歌谣, “ The king is dead—long live the king!” . 随着新的SystemVerilog 直接编程接口(DPI)的出现, Verilog编 程 语 言 接 口 (PLI)看来也有了继承者。 那么是不是老

2021-02-15 15:19:48 3006 1

原创 WIFI基本知识

Wi-Fi 6科普 第1期——Wi-Fi 6的前世今生 第2期——物善其用 OFDMA 第3期——万箭齐发 MU-MIMO 第4期——空间复用 BSS Coloring 第5期——高阶调制 1024-QAM 第6期——化零为整 前导码打孔 第7期——以逸待劳 TWT 第8期——同与不同 5G和Wi-Fi 6 第9期——(多媒体) 华为AirEngine Wi-Fi 6技术和产品介绍 Wi-Fi 6产品介绍 第10期——AirEngin...

2021-02-02 14:02:11 1112 1

原创 仿真器VCS solver 对包含 function 约束的求解

+ntb_solver_mode=1|21: 在第一次对每个类调用randomize()期间,求解器在分析约束方面花费了更多的预处理时间。对这个类的后续调用randomize()非常快。2: 求解器只做最少的预处理,并分析对randomize()的每次调用中的约束。默认是2。所以使用VCS时,如果对某一个class多次randomize, 适用+ntb_solver_mode=1+ntb_solver_debug=trace_all trace所有randomize时solv...

2021-01-16 14:59:16 4341

原创 UVM设计模式 (十) 观察者模式、uvm_subscriber、TLM、总结

观察者模式Observer Pattern:对象之间定义一个一对多的依赖关系,当一个对象改变的时候,所有依赖对象都会自动收到通知。观察目标(Subject)和观察者(Observer)是一对多的关系。有时候观察者模式也叫做发布-订阅模式(Publisher-Subscriber)。观察者模式将观察者和被观察者代码解耦。示例:股民Investor作为观察者,股票Stock作为观察目标。当股价大于20或者小于10时,观察者将会收到通知,执行各自的函数。可以看到,在Stock中调用notifyOb

2021-01-02 15:41:45 5851 4

C语言与编译原理——

C语言与编译原理——

2020-09-25

受约束的随机化.pptx

受约束的随机化, randsequence

2020-03-09

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除