自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(97)
  • 资源 (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 18134

原创 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 6150 12

原创 VCS仿真与调试

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

2021-02-09 14:48:53 32478 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 11528 18

原创 PCIE集成验证(五)MSI/MSI-X中断

PCI 总线最早采用的中断机制是 INTx,这是基于边带信号的。后续的 PCI/PCI-X版本,为了消除边带信号,降低系统的硬件设计复杂度,逐渐采用了 MSI(MSI/MSI-X 与 PCIe总线中的消息(Message)的概念完全不同!MSI最大支持32个中断向量,MSI-X在 3.0 版本引入,对 MSI 做出了一些升级和改进,最大支持2048个中断向量。MSI是信号控制,有用户封装一个misc模块,这里是msi_agent代替。MSI-X,芯片内部的ram实现,MSI-X是写寄存器配置。

2024-09-21 21:35:36 743

原创 PCIE集成验证(四)inbound/outbound访问,寄存器访问

PCIE对BAR空间的访问,可通过MEM类型的TLP实现;分为读包和写包,根据访问地址的大小,分为3DW(32bit地址访问)和4DW(64bit地址访问)包;DUT发送给PCIE VIP的包,放在target_app中,根据类型分为IO/Cfg/MEM target;发送MWr32的包,访问地址’h1000020,写入64个DW;在第一节RTL配置中,对于BAR2/BAR4的访问,走aix通道;axi_slave端口发送请求,HOST返回Cpld包;CplD为MEM_RD TLP的结果返回包,附带数据;

2024-09-20 22:15:13 667

原创 PCIE集成验证(三)链路训练,枚举,BAR配置

PCIE初始化流程包括PHY加载fireware程序,链路训练,设备枚举,能力寄存器配置,BAR空间分配等。

2024-09-19 20:57:48 986

原创 PCIE集成验证(二) PCIE VIP使用

VIP结构,模拟PCIE协议实现,也是分层结构;采用layering sequence的方式,像其他分层协议如USB,USF等,也是相同的结构;service_sequencer处理service transactions,控制driver的行为;类似,但requester_app只能发送memory访问的包,适合构造大量memory访问的场景。用例集成VIP,VIP模拟RC,DUT为EP类型,serdes接口连接。模拟PCIe协议栈;支持多种接口,MAC层的PIPE,PCS并行接口,PMA串行接口;

2024-09-15 15:04:47 826

原创 PCIE集成验证 (一)PCIE RTL生成,开箱用例,DUT结构

本系列使用S家IIP()和VIP()作为学习资源,不具备工程实践意义,仅用于学习VIP的集成验证;路径下有iip目录和vip目录,分别存放PCIE IP源文件和PCIE_SVT源文件;

2024-08-28 17:07:40 101

原创 multi-language verification (五)UVM-SV通过DPI或者SC-UVM_ML库调用Matlab

本篇将演示一个UVM-SV通过C/CPP作为胶合语言,调用Matlab的示例;并介绍两种方式,一种DPI封装为函数的方式,一种使用UVM-ML OA库,基于TLM通信的方式。

2024-05-15 11:41:20 946

原创 multi-language verification (六)UVM-SV通过DPI或者SC-UVMC库调用Python

上一篇介绍了调用Matlab,本篇介绍SV如何调用Python,也是举例两种方式,一种DPI方式,一种SC TLM方式(使用另一个库:UVMC)。Python自带丰富的库资源,使用C/CPP作为胶合语言,EDA仿真时也可以同步调用Python,实现runtime阶段。和上一篇调用Matlab类似,通过胶合语言C/CPP,找到合适的API,就可以实现SV和其他语言的混合仿真。一般步骤为初始化Py,获取文件路径,导入模块,传入参数,调用获取结果,内存回收,结束Py;也可以实现Python的调用,借助C的。

2024-05-15 11:38:52 635

原创 multi-language verification (四)SystemC Verification、SystemC-SystemVeilog混仿

SystemC是基于C++语言(最新版已支持C17特性)的扩展库,是为了解决跨越软件和硬件的一种系统级设计,高级综合,建模,验证的语言,可用于软件开发、软件性能分析、架构性能分析、硬件验证多种场景。SystemC最早源于非盈利组织🔗OSCI),后来归属于🔗ASI) SystemC,并成为众多IEEE标准之一。本篇侧重SystemC在Verification方面的介绍,ESL建模感兴趣的可查看:🔗ESL发展及其在项目中的应用,🔗漫谈芯片建模。

2024-05-10 16:47:52 728

原创 multi-language verification (三)SV DPI call C/C++

中了解,相比TF (Task / Function),ACC (Access)和VPI (Verification Procedural Interface)这类编程接口,DPI更适合C程序的直接调用,不涉及内存的来回拷贝,效率更高,部署也更方便;DPI中C和SV之间的数据传输,本质是仿真器在C/SV两侧调度切换时,利用指针来操作同一类数据结构的内存空间,指针在被使用前,只需要在C或SV中的一侧被初始化分配内存空间即可。SV中最小的数据格式为2值1位宽的bit,C语言最小的为8位宽的char字节;

2024-05-10 16:26:23 734

原创 multi-language verification (二)C/C++基础梳理

在开始后续篇幅之前,梳理一下C/C++的语法知识点;对于嵌入式开发或者软件开发的人来说,C/C++并不陌生。但对于SV”选手“来说,这是前期最大的”障碍“。本篇侧重梳理,授之以渔的方式,不会详细解读某一个点。

2024-05-09 10:04:56 794

原创 multi-language verification (一)DVT-Eclipse配置SystemC开发环境

使用一款IDE(集成开发环境)替代传统的gvim作为编辑工具,大大提高开发效率;本系列选择DVT(Design andVTool)作为C/C++的开发工具,🔗DVT是AMIQ开发的一款专门服务于IC Design Verification的IDE,基于Eclipse平台开发,支持SystemVerilog,UVM的相关特性,提供代码调用跳转,on-the-fly的语法检查,快速的代码检索,单步调试等丰富功能;

2024-05-07 22:13:49 348

原创 VCS ICO - Intelligent Coverage Optimization

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

2023-07-30 22:26:40 1478

原创 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 2299

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

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

2022-09-16 21:14:57 1669

原创 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 3627 5

原创 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 3629 2

原创 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 1862

原创 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 10676 10

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

参考Linux C编程一站式学习

2022-01-17 16:01:49 1194

原创 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 2618 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 2146

原创 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 2489 5

原创 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 1457 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 4944

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

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

2021-11-03 21:45:00 2589

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

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

2021-11-03 21:00:00 6718 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 9995 3

原创 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 6280 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 6537

原创 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 1079

原创 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 782

原创 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 5483

原创 低功耗验证 (三) 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 6614 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 31887 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 15746 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 21433 2

scClient.exe

scClient.exe

2024-09-25

C语言与编译原理——

C语言与编译原理——

2020-09-25

受约束的随机化.pptx

受约束的随机化, randsequence

2020-03-09

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

TA关注的人

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