自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 资源 (1)
  • 收藏
  • 关注

原创 SDF延时文件中为什么会有负延时?

也就是在电平transition时,transition的start肯定是output晚于input的,但是output可能会比input先达到阈值电压,从而构成了负的cell delay.

2023-02-22 09:22:08 992

原创 【原创】关于后仿我知道的不多

GLS 后仿

2023-02-20 17:38:35 2270

原创 PCIe协议学习笔记之--Configuration Overview

1 BDF (Bus, Device, Function)BDF是在PCI中就有了的概念。在PCIe 拓扑结构中,我们通过总线号(bus number), 设备号(device numer)和功能号(function number)来唯一地标识各个function。Bus number用于表征当前设备挂载于哪条bus下面,Device number用于表征设备具体是总线下的哪个设备,function number用于表征是device里面的哪个function。如上例图,从bus 0开始,每经过

2022-01-12 10:57:05 1763 1

原创 VCS仿真性能优化

1 热点分析编译选项 -simprofile1.Compile your design using the -simprofile compile-time option.Important:If this is not the first compilation of your design, delete the csrc and simv.daidir directories and simv executable file before this step. Incremental compil

2021-12-23 10:44:09 1926

转载 【转】静态时序分析之恢复时间recovery time和撤销时间removal time

1、概念 同步电路中,输入数据需要与时钟满足setup time和hold time才能进行数据的正常传输,防止亚稳态; 类似的,对于一个异步复位寄存器来说,置位和复位信号同样需要和时钟满足recovery time和removal time才能有效进行置位和复位操作。 recovery time:恢复时间。撤销复位时,恢复到非复位状态的电平必须在时钟有效沿到来之前的一段时间到来,才能保证时钟能有效恢复到...

2021-10-29 16:11:04 3873 2

原创 VC Formal FPV 启动脚本简单模板

VC Formal(下简称VCF)工具是Synopsys厂开发的一个用于静态分析验证的商业EDA工具。VCF有很多种应用模式,比如FRV(Formal Register Verification), FPV(Formal Property Verification), FCA(Formal Coverage Analysis), SEQ(Sequential Equivalence Checking)等等。本文主要介绍FPV的启动脚本。FPV是基于断言属性的静态检查。相对于动态仿真验证,其优势在于能

2021-10-14 17:02:37 3627 4

原创 CXL初探,why CXL?

CPU适合做控制密集型的任务,并不擅长进行大量的数据计算,因此现在主流的技术方案都是通过总线将加速器与CPU连接起来,CPU将计算任务提交给加速器,加速器完成计算后将计算结果返回给CPU。这里的加速器,可以是GPGPU, 可以是深度学习ASIC,也可以是FPGA之类的,总之就是专门为并行计算而生的数据计算引擎。如今许多与AI相关的芯片公司都是做这个的。CPU与加速器是怎么连接的呢? PCIe总线!CPU与加速器之间的数据交互大致是怎么进行的呢?大致是基于Producer-Consumer模型,C

2021-10-10 15:00:58 2335

原创 扔鸡蛋问题

状态方程:F(N,M) = Min{ Max[F(N-1, k-1), F(N, M-k)] }import numpy as npdef throw_egg(num_egg, num_floor): rslt_list=np.zeros((num_egg+1, num_floor+1), dtype=int) for in in range(1, num_floor+1): rslt_list[1][i] = i if (num_egg < 2): return

2021-08-22 10:56:35 204

原创 细说systemverilog @event与wait(event.triggered)的区别

近日在工作中遇到了@event和wait(event.triggered)的细微差别。与周边同事讨论了一圈,发现大家都貌似懂他们的区别,但都无法特别严谨细致地进行解释。针对这种语法上的细节,建议直接从LRM原文着手。下面是相关的原文1. @会阻塞一个进程,直到@的事件被触发(->)后,该进程才会unblock。如果事件触发(->event)在@event先执行,则@event的进程会一直被阻塞住。如果->event和@event发生在同一个time step,就会造成竞争冒险,

2021-08-03 19:11:12 4252 1

原创 PCIe协议学习之-Ack/Nak协议

Ack/Nak协议是PCIe Data Link layer中最重要的内容。它用来保证TLP的可靠传输。它是基于Retry buffer实现的,Tx发出TLP后,将原始的TLP存到Retry buffer里面,当RX通过Ack DLLP告知已经正确收到TLP后才会将TLP中相应的TLP移除。当Rx通过Nak DLLP告知Tx有TLP出现错误后,Tx可以将Retry buffer中的相应TLP resent出去。Tx和Rx的逻辑框图如下:TX端1)SEQ Num分配DL层从TL层收到TLP

2021-05-05 21:44:50 3095

原创 使用uvm_report_catcher屏蔽掉特定的uvm_error/uvm_warning

问题:在一些异常case或者特殊的case, 遇到VIP报uvm_error或者uvm_warning,导致刷屏或者uvm_error数量达到上限仿真强制退出了。这时,可以用uvm_report_catcher捕获到它特定的message,并将其级别设置成UVM_INFO。措施: uvm_report_cacherprovides the catch() function for users to extend. Return action_e type enum - - ...

2021-02-19 15:14:43 4261 3

原创 gvim tags如何支持systemverilog

1 tags文件的格式在gvim中敲:help tag可以查看tag的介绍,里面讲了tags的文件格式。The first lines in the tags file can contain lines that start with !_TAG_These are sorted to the first lines, only rare tags that start with "!" cansort to before them. Vim recognizes two items...

2021-02-07 16:05:03 942 4

原创 芯片设计中常用到的调度算法总结

1 SP(Strict Priority, 严格优先级)SP调度会给各个输入队列分配优先级,当高优先级的队列非空时,优先调度高优先级队列。只有当高优先级队列为空时,才有可能调度低优先级的队列。2 RR(Round Robin, 轮询)如何理解轮询?所谓‘轮’,是指RR调度中有一个RR指针,每次调度成功后,RR指针就会移动一下,指向下一个队列,而且这个指针是依次循环的,比如从0,1...一直到N,最后又循环到0。所谓'询',就是指每次调度时去看RR指针指向的队列是否可用,如果可用的话,就调度RR指

2021-01-09 11:27:55 2208

原创 UVM源码分析之factory机制详解

前言作者在学习了一段时间的UVM factory源码之后写下此文,旨在记录自己的学习成果,毕竟好记性不如烂笔头嘛,当然如果能帮助到对这部分有疑惑的同仁就更好了。作者是在笔记本电脑上的windows环境下使用source insight软件分析UVM 源码的。感兴趣的同仁可以试试用source insight分析源码,个人认为还是比在纯编辑器(比如vim)方便很多。source insight支持systemverilog的配置文件可以通过https://download.csdn.net/downlo.

2021-01-03 15:57:31 1843 3

原创 systemverilog中的时间单位和时间精度

1. `timescale`timescale是systemverilog/verilog的预编译指令。指定位于该语句后面的time scope (module/program/package/interface等等)的时间单位和时间精度。直到遇到新的`timescale指令或者`resetall指令。2.timeunit和timeprecisiontimeunit关键字用于指定当前time scope的时间单位,timepresision用于指定当前time scope的时间精度。他们的作用.

2020-12-01 16:33:15 3984

原创 芯片验证过程中代码覆盖率和功能覆盖率一高一低意味着什么?

在芯片验证岗位的面试过程中,有很多面试官喜欢问这个问题,目的是为了考察面试者对CDV(Coverage Drive Verification)的理解。本文讨论下这个问题。1.代码覆盖率低 +功能覆盖率高 1.1)有可能是cover group写得不完备,进一步地,测试点分解和test plan可能也不完备,尤其是对于初学者而言。遇到这种现象,PL应当警觉,需要明确是否存在测试点,test plan, cover group不完备的情况。 1.2)DUT中有大量冗余代码。或者集成进来的公...

2020-11-11 22:40:53 3222

原创 uvm启动过程及phase机制实现原理介绍

我们通常会在top写下类似下面的代码module top(); import uvm_pkg::*; ...... initial begin run_test(); end ......endmoudle

2020-10-31 16:24:10 3089

原创 VCS使用问题记录

1. simulation报错Error-[DPI-DIFNF] DPI import function not found/opt/Synopsys/VCS2014/etc/uvm/base/uvm_resource.svh, 390 The definition of DPI import function/task 'uvm_glob_to_re' does not exist. Please check the stated DPI import function/task is..

2020-10-17 10:13:00 3190 1

原创 systemverilog package的作用以及include和import的区别

1. SV package 作用sv中的package与c++中的namespace类似,都是为了解决命名冲突的问题。不同package里面的内容是可以重名的。使用时加pkg_name::xxx来指定用哪个pkg_name里面的xxx。The package declaration creates a scope that contains declarations intended to be shared among one ormore compilation units, modules,

2020-09-20 11:27:09 4163

原创 systemverilog中的wait fork和disable语句用法

disable语句用于在多进程的场景下终止一个或多个进程。

2020-06-10 20:59:53 7218

source insight systemverilog语言CLF配置文件

在verilog.clf的基础上作了一些增强,支持了部分常用的systemverilog语法

2020-12-19

空空如也

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

TA关注的人

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