自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

XtremeDV

行走在硅农和码农之间

  • 博客(194)
  • 资源 (8)
  • 收藏
  • 关注

原创 使用 IEEE (1735) Verilog 标准机制进行 IP 保护

在跑仿真的时候,如果使用第三方IP,经常会遇到第三方IP中有加密代码,有时又会遇到同样的环境既可以用VCS跑,也可以用XRUN跑,我就好奇第三方IP如何支持两个公司的加解密方式的。两家好像是不兼容的,经过查阅VCS和XRUN的文档,最终发现了端倪,他们可以使用IEEE-1735 加密格式(具体语法这里不做介绍)。然后使用Synopsys或者Cadence提供的工具,就可以对代码就行加密了,加密后的代码就同时支持VCS和XRUN仿真了。最终用户应能编译这些加密文件,而无需担心公开密钥或解密。

2024-04-10 10:57:55 438 1

原创 Verdi VC Apps Batch mode 使用

VERDI_HOME/share/VIA/Apps/Bin/ 目录下有各个Apps对应的perl脚本,我们使用该脚本来启动batch mode.是会报错的,因为找不到design的database。

2024-03-06 11:16:25 366

原创 ChatGPT辅助编程,一次有益的尝试(网页到pdf转换)

每次看这个系列博文的时候,我都在想有没有什么方法可以把这个系列的博文都保存到一个pdf文件中,这样方便阅读。如果大家想入门PCIe,搜索网上的信息,大概率会看的chinaaet上Felix的PCIe扫盲系列的博文。

2024-02-05 10:07:04 766

原创 linux timeout 命令在仿真时间控制中的使用

跑仿真的时候,如果testcase出现hang住的情况,需要添加watchdog功能,将仿真kill掉,我们可以利用linux的timeout命令实现watchdog功能。使用&&连接的指令,只有当前一条指令成功执行(即返回0)时,才会执行后面的指令。很遗憾,timeout和不timeout均打印最后的WARNING信息。表示“或”,第一条指令执行返回0时(成功执行),第二条指令不会执行。据此,我们可以将timeout命令用到仿真命令中,如下所示。&&和||有相同的优先级,也就是说。

2023-03-29 21:37:43 721 1

原创 Xrun MSIE flow遇到INTERNAL EXCEPTION with “ifmgr - pt_build() -size calculated incorrectly“

xrun MSIE INTERNAL EXCEPTION

2022-09-28 10:34:12 1190 2

原创 makefile中变量传递到target调用的shell脚本中遇到的问题?

makefile 导入变量到子shell

2022-09-28 10:16:33 755

翻译 如何从 .vcs.timestamp 中排除环境变量以避免在 LSF 上提交作业时重新编译DUT?

VCS避免在 LSF 上提交作业时重新编译DUT?

2022-08-23 17:14:23 478

翻译 今天为什么仍必须进行门级仿真(GLS)详细讲解

下面我将详细描述捕获只有在GLS才能发现的16种类型芯片的致命bug的方式,这在我之前在文章中描述过。请确保阅读该文章以了解我在这里所说的内容。GLS成本VS收益率:工程永远是金钱。是的,从技术上讲,上一篇文章列出的16种错误类型中的某些可以被其他方法捕获,但是使用这些其他方法捕获它们将非常昂贵。为了使GLS具有成本效益,您的验证团队必须制定一个GLS计划,该计划应:有效地在流片之前发现所有重要的错误,但就人力资源,工具和计算资源而言并不昂贵。使用这29条提示,可以让您指派一名工程师在设

2021-02-09 21:25:21 6017 1

翻译 今天为什么仍必须进行门级仿真(GLS)

今天为什么仍必须进行门级仿真(GLS)使用门级仿真(GLS),在最终流片前2天,我发现了芯片中的功能和时序错误,包括细微但致命的时序错误。继续阅读前,我必须发出“注意”警告:GLS可能是一项极其昂贵的任务,如果做错了,在芯片投入生产之前就无法发现关键的设计缺陷。但是,如果做对了,我今天发现Gatesims的成本/收益会越来越好。无论如何,GLS都发现了形式上的,STA,ABV,lint和仿真甚至都不会发现到的芯片错误。如果您不进行GLS,则可能会冒很大的风险。就是说,让我摆上舞台…该死的零延迟问题…

2021-02-08 11:33:05 1906 3

翻译 什么是back annotation

该术语通常用于连接网表仿真和STA,其中通过网表中每个单元的传播延迟被称为sdf(synopsys delay format)文件的特殊文件中指定的延迟值所覆盖。在网表仿真过程中,将给定源的延迟置于网表中的库单元上的过程称为反向注释。通常,对应于网表中每个单元的延迟值将来自仿真库,即库单元的Verilog模型。但是这些延迟不是单元的实际延迟,因为每个延迟都是在不同环境,不同物理位置,不同负载,不同扇入中的网表中实例化的。网表中两个相似单元在两个不同物理位置的延迟取决于上述因素,芯片可能会显着不同。因此,为了

2021-02-07 14:21:53 3733 1

原创 关于Xcelium的MSIE flow这一篇就够了

目录前言一、MSIE是什么?二、MSIE有什么好处?三、使用步骤1.MSIE IIP流程2.MSIE PII 流程总结前言 Xcelium为了应对复杂的SOC设计和减少re-elaborate设计的时间提出了MSIE的流程(Multi-Snapshot Incremental Elaboration)下面就简单介绍下,我们在SOC验证中使用的MSIE流程一、MSIE是什么?Multi-Snapshot Incremental Elaboration(MSIE) provides a form

2021-01-27 18:41:19 4232 11

原创 github上包含SystemVerilog的仓库

NAMEOWNERSTARSURLDESCRIPTIONhdmihdl-util472https://github.com/hdl-util/hdmiSend video/audio over HDMI on an FPGAnontrivial-mipstrivialmips394https://github.com/trivialmips/nontrivial-mipsNonTrivial-MIPS is a synthesizable superscala...

2020-12-08 22:29:27 2206

原创 github上包含VIP的仓库

NAMEOWNERSTARSURLDESCRIPTIONtvip-axitaichi-ishitani47https://github.com/taichi-ishitani/tvip-axiAMBA AXI VIPAHB2GodelMachine43https://github.com/GodelMachine/AHB2AMBA AHB 2.0 VIP in SystemVerilog UVMriscv-vipjerralph29https://...

2020-12-08 21:57:04 3091 1

原创 github上点赞前100的关于UVM的仓库

NAMEOWNERSTARURLDESCRIPTIONuvmprimerraysalemi174SystemVeriloghttps://github.com/raysalemi/uvmprimerlogictymonx136SystemVeriloghttps://github.com/tymonx/logicUVMReferenceVerificationExcellence110SystemVeriloghttps://github.com...

2020-12-07 21:58:44 4406

原创 交互式调试方法

在VCS中,假如使用two-step模式,先编译后仿真,当执行仿真命令时,如下命令即可进入该模式%> simv <simv_options> -verdi [-verdi_opts “<verdi_options>”]%> simv <simv_options> -gui=verdi [-verdi_opts “<verdi_options>”]或者在后处理模式下,点击菜单栏Simulation->Invoke Simulato..

2020-11-03 13:49:59 1145

原创 在原理图视图中进行调试

nSchema视图一览nSchema常用快捷操作(1)在原理图中,放大缩小操作按按键z缩小视图按按键shift+z放大视图按按键f自动适配视图鼠标左键,在原理图中从左上到右下画矩形,来放大特定区域鼠标左键,在原理图中从左下到右上画线,来缩小特定区域鼠标左键,在原理图中从右下到左上画线,来返回上一级模块视图快捷键p进入, shift+p返回在原理图中,按按键x,启动Active AnnotationnSchema常用快捷操作(2)双击符

2020-11-03 13:49:49 590

原创 在波形视图中调试

打开nWave frame在nTrace中, 使用Tools ->New Waveform 或者点击工具栏中的新波形图标使用前面讲到的命令行方式载入设计-加载KDB%> verdi -ssf novas.fsdb –nologo&nWave frame一览加载仿真结果在nWave中, 使用File -> Open或者点击工具栏图标加载通过$dumpvars生成的VCD文件,加载的时候VCD文件自动转换为FSDB文件加载$fsdbdum

2020-11-03 13:49:39 974

原创 在源码视图调试

nTrace源代码浏览器nTrace主窗口是一个源代码浏览器和分析器,以显示所选设计模块的层次结构和源代码不管是用什么方式载入设计后,Verdi将自动调用nTrace窗口nTrace窗口由三个可调节大小的子窗口组成信号列表使用View -> Signal List打开对应窗口,通常位于源码窗口和设计树窗口中支持正则表达式查找信号支持设定信号类型(输入,输出等)Ctrl+w将信号添加到nWave窗口右键菜单显示查找操作如果设计层次结构很深,则Source -&g

2020-11-03 13:49:29 640

原创 启动Verdi及加载设计

Command line方式通过kdb导入通过设计文件导入通过lib方式导入GUI方式通过设计文件导入通过lib方式导入命令行方式载入设计—载入KDB首先需要使用VCS编译整个设计,并且生成VCS数据库和Verdi KDB2步或者3步流程,在编译时,都加上–kdb,会生成kdb.elab++文件夹%> verdi -simflow –dbdir [<path>] -top [<top module>]如果top没有指定,默认使用...

2020-11-03 13:49:18 3241

原创 生成FSDB波形

3.3.1 快速生成FSDB波形在testbench中添加FSDB系统函数`timescale 1ns/1nsmodule test; initial begin $fsdbDumpfile("test.fsdb"); $fsdbDumpvars(0,test); end...endmodule在TCL文件中调用FSDB系统函数%> irun top.v -access +r +tcl+cmd.tclcall fsdbDumpfile "my.fsdb"call

2020-11-02 15:49:04 2789

原创 Verdi的启动和设置

3.2.1 Verdi 环境变量设置在 .cshrc 中添加以下设定:setenv LM_LICENSE_FILE xxx:$LM_LICENSE_FILEsetenv VERDI_HOME <Verdi_install_path>setenv PATH ${VERDI_HOME}/bin:${PATH}setenv LD_LIBRARY_PATH ${VERDI_HOME}/share/PLI/VCS/LINUX64:${VERDI_HOME}/share/PLI/lib/LIN

2020-11-02 15:47:06 11154 2

原创 Verdi简介

3.1.1 Verdi的历史相信做IC验证的朋友或多或少都使用过VCS和Verdi这两个工具,这两个工具目前都属于synopsys公司,但是Verdi的来源可谓一路坎坷。Verdi最开始是由novas公司设计的,在2008年,被台湾的EDA厂家springsoft(源笙)收购了(我我最早使用Verdi的时候,是上海源笙提供培训)。在2012年,synopsys收购了spring soft公司,所以此时Verdi才正式属于synopsys。联想一下,我们使用Verdi的时候会产生novas.rc和nov

2020-11-02 15:38:37 27465 1

原创 VCS使用提示

编译型仿真器的方法论编译一次,运行多次允许VCS进行优化以获得最佳性能运行批处理模式进行回归测试使用自检测平台(HDL,SystemVerilog,UVM)更适用于服务器集群避免使用交互式仿真模式以交互方式应用刺激查看波形以确定通过/失败使用多个测试平台,导致重新编译花更多时间在RTL更高的抽象级别=减少仿真器器的工作量RTL级的仿真速度比门级仿真快20倍不带时序检查的门级仿真比带时序门级仿真快〜5倍仿真的方法论为调试和回归生成单独的simv如果仿真失败,则可以..

2020-11-02 15:24:50 913

原创 覆盖率指标

1.6.1 关于覆盖率指标VCS在仿真期间监视HDL代码的执行。 验证工程师可以确定哪些部分代码尚未经过测试,以便他们可以将精力集中在这些领域,以实现100%的覆盖率(通常是不可能的)。 VCS提供两种覆盖技术来测试你的HDL代码:代码覆盖率和功能覆盖率。代码覆盖率代码覆盖率(Code Coverage)是反映testcase对被测dut覆盖程度的重要指标,也是衡量验证工作进展情况的重要指标。它也是对验证工作进行量化的重要指标之一,验证工作往往不如设计那样激动人心,一个重要原因之一就是验证难于量化,而

2020-11-02 15:24:09 2276

原创 调试技巧(Debugging)

1.5.1 调试的种类如前文所述,在仿真阶段,有两种模式,交互式模式和批处理模式。对应的,在debug上,针对两种仿真模式,我将调试分为两种,一种是vcs和verdi联调的交互式模式,另外一种是后处理的模式,所谓后处理就是VCS生成波形,然后再verdi打开波形,进行debug的模式。每种模式,对应的调试方法大致相同,但是联调的交互式模式能做的更多,但是整个流程会更慢一些。在联调的交互式模式下,你可以进行如下操作:查看波形比较波形trace驱动和负载查看原理图执行UCLI/Tcl命令设置

2020-11-02 15:23:30 1181 4

原创 仿真(Simulation)

1.4.1 如何执行仿真%> ./simv <runtime_options>Run-time 选项可以用来控制仿真行为的切换User-defined run-time controls(plusargs)Control VPD or FSDB creationModify assertion behaviors (-sva等)Collect code coverage (-cov)但是有些仿真选项并不是说用就能用,simv的执行,很多时候依赖于你执行vcs命令(编译步骤

2020-11-02 15:22:34 3734

原创 编译(Compilation)

1.3.1 编译型语言和解释型语言verilog和systemverilog等都是编译型语言,需要使用专门的编译器,针对特定的平台,将源代码一次性的编译成可被该平台硬件执行的机器码,并包装成该平台能识别的可执行程序(simv)的格式。相对于编译型语言存在的是解释型语言。源代码不是直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行。比如Python/JavaScript / Perl /Shell等都是解释型语言。解释型语言:程序不需要编译,程序在运行时才翻译成机器语言,每执行一

2020-11-02 15:21:47 5218 2

原创 VCS简介

1.2.1 关于VCSVCS是Verilog Compiled Simulator的缩写。VCS MX®是一个编译型的代码仿真器。它使你能够分析,编译和仿真Verilog,VHDL,混合HDL,SystemVerilog,OpenVera和SystemC描述的设计。 它还为您提供了一系列仿真和调试功能,以验证您的设计。 这些功能提供了源码调试和仿真结果查看功能。vcs提供了一系列的feature,如下图:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cHTtfvar-1

2020-11-02 15:20:57 12395 3

原创 HDL仿真器简介

1.1.1 仿真器,三国鼎立HDL仿真软件自早期作为一家公司提供的单一专有产品,到今天许多供应商以各种价格提供仿真器,包括免费仿真器。对于桌面/个人用途,Aldec,Mentor,LogicSim,SynaptiCAD,TarangEDA和其他公司为Windows平台提供低于5000美元的工具套件。套件将仿真器引擎与完整的开发环境捆绑在一起:包括文本编辑器,波形查看器和RTL级浏览器。此外,Aldec和ModelSim仿真器的有限功能版本可从其各自的OEM合作伙伴(Microsemi,Altera,Lat

2020-11-02 15:19:45 1542 2

原创 DPI在实际项目中的使用

导入DPI函数作为UVM参考模型使用#include <stdio.h>#include <math.h>extern "C" int sum(int a, int b){ return a+b;}import "DPI-C" context function int sum(int a, int b);class refmod extends uvm_component; `uvm_component_utils(refmod) p

2020-10-29 16:10:33 1454

原创 DPI进阶

2.4.1 首先认识一下,压缩数组和非压缩数组压缩数组(Packed arrays)对于某些数据类型,你可能希望既可以访问整个值,也可以将其分成更小的元素。 例如,你可能有一个32位寄存器,有时你希望将其视为四个8位值,而在其他时候则视为单个无符号值。 压缩数组被视为数组和单个值。 与非压缩的数组不同,它存储为一组连续的没有未使用空间的位。可以方便地将其作为数组元素进行访问。压缩数组:在数据类型标识符名称之前声明的维度bit [7:0] p; // packed array of scalar bi

2020-10-29 16:09:48 3755

原创 DPI基础知识

2.3.1 DPI 数据类型映射当SystemVerilog与C环境交互时,会发生数据交换。 数据需要在两端以完全相同的方式解释,否则通信将失败。 SystemVerilog和C之间的数据交换通常使用DPI-C接口完成,该接口标准化类型对应关系和基本API(另请参见仿真器安装路径下的svdpi.h)。大多数SystemVerilog数据类型在C语言中具有直接的对应关系,而其他(例如,4值类型,数组)需要DPI-C定义的类型和API。 查看下表完整的数据类型映射关系。SystemVerilog

2020-10-29 16:09:03 9570 1

原创 为什么需要DPI

DPI出现的动机是双重的。有一种占优势地位的方法论要求接口应该允许构建异构系统(设计或测试平台),其中一些组件可以用除SystemVerilog之外的语言(或更多语言)编写。另一方面,实际需要一种简单有效的方法来连接通常用C或C++编写的现有代码,而不需要PLI或VPI的知识开销。DPI遵循黑盒的原则:组件的规范和实现明确分开,实际实现对系统的其余部分是透明的。因此,实现的实际编程语言也是透明的,尽管该标准仅定义了C链接语义。 SystemVerilog代码与外部语言之间的分离基于使用函数作为System

2020-10-29 16:07:34 648

原创 DPI的前世今生

1 DPI的前世今生PLI的诞生和衰落Verilog硬件描述语言为我们提供了描述硬件电路的一种高级语言形式,其类C的风格,让我们写起硬件电路,如果写C代码一样轻松愉悦。标准组织,想尽办法,为Verilog,添加更多的轮子,让它能跑得更快,跳的更高。各大EDA厂商,也在为基于verilog的仿真器,做各种有利的工具,以便用户使用。这里,我提出一个问题,用户是如何获得Verilog语言描述的电路的内部数据结构信息的?不同的EDA厂商,如何都能让自己的仿真器中,在仿真verilog的tb时,生成FSDB波形

2020-10-29 16:04:05 1397 2

原创 获取Synopsys coverage report excel 文件单元格RGB值

打开生成的vplan反标后的xml文件,另存为xlsm,excel需要打开宏。ALT+F11打开VBA编辑器, 选择 “插入”-》“模块”,复制如下代码,保存即可。Public Function wRGB(rng As Range) Dim intColor As Long Dim rgb As String intColor = rng.Interior.Color r = Hex(intColor And 255) g = Hex(intColor \ 256 And 255) b

2020-08-03 14:08:12 398 1

原创 仅仅收集某模块的端口上的toggle coverage

可以通过在-cm_hier文件中收集coverage中排除的模块的端口收集 toggle coverage。假设不想收集模块foo(及其下的任何信号或层次结构)的code coverage。 为此,请在-cm_hier文件中添加-moduletree foo。现在,要收集和分析foo模块端口的toggle coverage,请在-cm_hier文件中添加一个块,以启用foo模块端口的tog...

2020-05-02 22:33:33 2030

原创 通过$readmemh/$readmemb系统函数将值读入关联数组

VCS从2009.06版本开始允许通过$readmemh / $readmemb系统任务,将数据从数据文件读取到关联数组中。以下是将数据读取到关联数组中的语法bit [32-1:0] mem_hash[*];-------------------------------------------------- ------------------------------$readmem...

2020-04-29 19:56:02 1520

原创 gitlab CI Pipeline Schedule cron

可以使用下面的网站生成cron表达式,亲测gitlab cron适用。https://crontab.guru/每月1号,下午2点1515 14 1 * *周一到周五,每天的晚上10点整0 22 * * 1-5在每月的第1至31日晚上9点,每隔两天执行一次0 21 1/2 * *今天是2020年2月11号next at 2020-02-11...

2020-02-11 10:30:59 1818

原创 git pre-commit 钩子禁止commit大文件

进入项目的hooks文件夹(.git/hooks) 应该看到已经存在的文件列表。 创建一个要使用的确切提交类型的新文件(例如:“ commit-msg”,“ pre-rebase”,“ pre-commit”等)。不要有扩展名。 打开新文件并粘贴代码(如下图所示Python代码) 保存存档。 并将pre-commit文件设置为可执行! 现在,git钩子将自动触发。#!/usr/bin/p...

2020-01-17 14:41:20 1532 5

转载 SystemVerilog Assertion支持动态delay或者repeat

package sva_delay_repeat_range_pkg; // int d1, d2; // bit a, b, c=1'b1; // sequence q_s; a ##1 c; endsequence // sequence my_sequence; e ##1 d[->1]; endsequence //--------...

2020-01-17 14:27:30 1730

A Verification Platform for System on Chip

A Verification Platform for System on Chip。希望对大家有所帮助。

2018-07-29

A Practical Guide for SystemVerilog Assertions

关于SVA方面的经典书籍,有从基本语法到实际例子都很不错。

2015-03-21

perl 遍历微信文件夹,返回微信文件

HTC DHD微信文件夹下,voice文件夹下有巨多子文件夹,小弟想提取出微信语音文件。

2013-06-15

综合工具不支持的verilog代码.

verilog已经成为行业主流,这里是verilog不支持的综合类型。

2012-01-09

高速PCB设计指南,经典的好东西。PPT

高速pcb设计指南,赶快来下载吧,支持一下工作哦。谢谢大家。

2010-08-27

印制电路板设计实例ppt

使用pcb板的设计,教你在已有的基础上,设以甲乙类放大器的印制电路板单、双层PCB板的设计过程

2010-08-27

三星单片机s3c9454

三星单片机s3c9454,很不错的资源,欢迎分享。

2010-05-18

fundamental of wireless communication

经典无线通信英文教程,mit,加州大学伯克利分校都在使用,评价很高。

2010-05-17

空空如也

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

TA关注的人

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