logo资料库

IC验证工作—资料整理v1.pdf

第1页 / 共1226页
第2页 / 共1226页
第3页 / 共1226页
第4页 / 共1226页
第5页 / 共1226页
第6页 / 共1226页
第7页 / 共1226页
第8页 / 共1226页
资料共1226页,剩余部分请下载后查看
VCS篇
基本选项及命令介绍
低功耗仿真介绍
Ncverilog低功耗仿真选项
低功耗仿真注意事项
NCverilog篇
基本选项及命令介绍
常用命令
OLE_LINK1
OLE_LINK2
verilog代码规范(转)
本文综述
术语说明
OLE_LINK60
OLE_LINK98
OLE_LINK84
OLE_LINK102
OLE_LINK101
OLE_LINK99
OLE_LINK109
OLE_LINK106
OLE_LINK105
OLE_LINK104
OLE_LINK103
Why Coding Guidelines为何要编码指南?
OLE_LINK7
OLE_LINK10
OLE_LINK11
OLE_LINK5
OLE_LINK6
OLE_LINK14
OLE_LINK13
OLE_LINK15
OLE_LINK16
OLE_LINK17
OLE_LINK18
OLE_LINK26
OLE_LINK27
OLE_LINK19
OLE_LINK20
Verilog设计规范
Naming Convention Rule Lists 命名约定规则列表
OLE_LINK21
OLE_LINK22
OLE_LINK25
OLE_LINK23
OLE_LINK24
OLE_LINK28
OLE_LINK29
OLE_LINK30
OLE_LINK31
OLE_LINK32
OLE_LINK38
OLE_LINK39
OLE_LINK40
OLE_LINK41
OLE_LINK35
OLE_LINK34
OLE_LINK49
OLE_LINK47
OLE_LINK48
OLE_LINK50
OLE_LINK51
OLE_LINK52
OLE_LINK53
OLE_LINK54
OLE_LINK55
File Header Rule Lists文件头规则列表
OLE_LINK61
OLE_LINK56
OLE_LINK57
OLE_LINK58
OLE_LINK63
OLE_LINK62
OLE_LINK68
OLE_LINK69
OLE_LINK70
OLE_LINK71
OLE_LINK64
OLE_LINK65
OLE_LINK72
OLE_LINK66
OLE_LINK67
OLE_LINK73
OLE_LINK74
OLE_LINK75
OLE_LINK76
OLE_LINK80
OLE_LINK79
OLE_LINK78
OLE_LINK77
Comments Rule Lists 注释规则列表
OLE_LINK81
OLE_LINK83
OLE_LINK82
OLE_LINK85
OLE_LINK86
OLE_LINK88
OLE_LINK87
OLE_LINK89
OLE_LINK90
OLE_LINK133
OLE_LINK134
OLE_LINK94
OLE_LINK113
OLE_LINK135
OLE_LINK136
OLE_LINK175
OLE_LINK176
OLE_LINK137
OLE_LINK173
OLE_LINK174
OLE_LINK138
OLE_LINK139
OLE_LINK140
OLE_LINK141
OLE_LINK95
OLE_LINK96
OLE_LINK97
OLE_LINK142
OLE_LINK143
OLE_LINK126
OLE_LINK127
OLE_LINK128
OLE_LINK129
OLE_LINK144
OLE_LINK145
OLE_LINK146
OLE_LINK100
OLE_LINK91
OLE_LINK92
OLE_LINK93
OLE_LINK130
OLE_LINK147
OLE_LINK148
OLE_LINK149
OLE_LINK150
Coding Style Rule Lists代码风格规则列表
OLE_LINK151
OLE_LINK152
OLE_LINK153
OLE_LINK131
OLE_LINK132
OLE_LINK154
OLE_LINK155
OLE_LINK156
OLE_LINK157
OLE_LINK158
OLE_LINK159
OLE_LINK161
OLE_LINK160
OLE_LINK162
OLE_LINK170
OLE_LINK171
OLE_LINK184
OLE_LINK185
OLE_LINK177
OLE_LINK168
OLE_LINK169
Synthesis Rule Lists综合规则列表
OLE_LINK178
OLE_LINK179
OLE_LINK172
OLE_LINK186
OLE_LINK187
OLE_LINK197
OLE_LINK198
OLE_LINK188
OLE_LINK189
OLE_LINK182
OLE_LINK183
OLE_LINK194
Static Timing Analysis Rule Lists静态时序分析规则列表
OLE_LINK196
OLE_LINK195
OLE_LINK199
OLE_LINK200
OLE_LINK201
OLE_LINK243
OLE_LINK244
OLE_LINK245
OLE_LINK246
OLE_LINK247
OLE_LINK248
OLE_LINK249
OLE_LINK250
OLE_LINK251
OLE_LINK252
OLE_LINK207
OLE_LINK208
OLE_LINK202
Simulation Rules 仿真规则
OLE_LINK254
OLE_LINK253
OLE_LINK257
OLE_LINK258
OLE_LINK259
OLE_LINK260
OLE_LINK261
OLE_LINK262
OLE_LINK255
OLE_LINK256
OLE_LINK263
OLE_LINK264
OLE_LINK265
OLE_LINK266
OLE_LINK269
OLE_LINK270
OLE_LINK267
OLE_LINK268
OLE_LINK271
OLE_LINK3
OLE_LINK4
OLE_LINK209
OLE_LINK205
OLE_LINK206
OLE_LINK12
OLE_LINK33
Design for Test Rule Lists测试规则列表
OLE_LINK273
OLE_LINK272
OLE_LINK107
OLE_LINK274
Design Style Guidelines Rule Lists设计风格指南规则列表
OLE_LINK108
OLE_LINK119
OLE_LINK210
OLE_LINK211
OLE_LINK114
OLE_LINK115
OLE_LINK217
OLE_LINK120
OLE_LINK121
OLE_LINK122
OLE_LINK118
OLE_LINK111
OLE_LINK112
OLE_LINK276
OLE_LINK275
OLE_LINK277
OLE_LINK279
OLE_LINK278
OLE_LINK216
OLE_LINK222
Synthesis Scripts Rule Lists综合脚本规则列表
OLE_LINK218
OLE_LINK219
OLE_LINK238
OLE_LINK239
OLE_LINK240
OLE_LINK223
OLE_LINK281
OLE_LINK282
OLE_LINK224
OLE_LINK225
OLE_LINK226
OLE_LINK227
OLE_LINK284
OLE_LINK283
OLE_LINK280
OLE_LINK285
Hard IP Generic Design Flow硬IP设计流程
OLE_LINK44
OLE_LINK43
OLE_LINK42
OLE_LINK45
OLE_LINK59
OLE_LINK46
OLE_LINK286
OLE_LINK287
Hard IP Design Guidelines Rule Lists硬IP设计指南规则列表
Physical Design Consideration 物理设计考虑
OLE_LINK116
OLE_LINK110
Assert篇
基本命令介绍
V_SVerilog篇
基本语法介绍
V中使用C模型之dpi接口介绍
nLint篇
如何启动nLint:
nLint检查内容
如何改变规则
RS文件格式
如何合并rs文件
修改输出严重等级范例
如何改变组织规则
指定某些模块为black box
spyglass篇
1.启动命令:
2.Spyglass的作用
3.spyglass工具的引入
4.Cdc使用流程
5.Cdc setup
6.定位cdc问题方式
7.设计配置
8.配置顶层模块
9.Gui设置black box
10.Recognizing Clocks
11.能够识别的sdc的语法
12.Cdc配置
13.控制参数命令
14.设置同步器,同21项
15.常用的.prj配置
16.设置某个模块不分析,相当于black_box
17.Sgdc语法
1.基本语法说明
2.Sgdc范例
16.Spyglass结果分析
17.Spy各阶段检查的功能点
18.Cdc最终输出的报告
19.每步输出的结果
20.使用电路图分析问题
21.CDC Rule:
22.修改错误等级
23.自定义规则
24.注意点
Verdi 篇
产生波形函数
down fsdb波形的步骤:
down vcd波形
显示毛刺
如何显示状态机
如何dump memory数据
如何設定Debussy / Verdi的port顏色(转)
Makefile篇
1.变量:
Makefile規則的語法格式:
2.范例1
3.范例2
Perl篇
基础语法
举例
1.Hex2bin
2.analyze_log.pl
3.delete_cvs_all
4.modify_char_all.pl
TCL篇
tcl数据类型
切换目录
文件处理
子函数 proc{}
glob
主程序入口参数
list 函数操作
open 操作
regexp 操作
打印文件中查找到的行内容
举例
gvim常用小技巧
.Vimrc常用设置
1.替换一个word,用\<\>,perl中用\b\b,
2.替换多个文件的目标
3.命令的记录与回放
4.移动并执行操作
5.使用寄存器
6.重复数字加/减 1
7.对多个文件做相同的操作
shell(linux)vnc
IO重定向
shell识别三种命令
1.批量替换的方法:
文件名批量替换用“rename”命令,如: rename xxx mipi xxx_*.sv
2.链接
范例
ASIC设计流程简介(转)
DC篇
1.逻辑综合的过程:
2.时钟/时钟树的属性:
3.时序分析时钟sdc
4.基础概念
5.命令介绍
6.注意点
7.Dc中对时钟复位的约束
8.时钟树分析
9.范例分析
10.dc需要输出给后端的文件
11.Sdc文件分析
12.查看DC关键结果
13.Lib文件转db文件
Spf文件分析
Spf基础
spf文件格式(转)
实际stil文件说明
PT/sta篇
时序基础介绍
OCV讲解(转)
范例分析
命令介绍
PT产生sdf文件
查看PT关键结果
Pt分析步骤
PT/ptpx(转)--已用
ptpx流程
警告原因分析
未解决问题
Tmax篇
1.Tmax流程
2.TetraMAX使用注意事项
3.TetraMAX介绍
4.Tmax常规使用及报告
5.配置信息.rc文件
6.范例分析
7.其它命令介绍
Formality篇
1.形式验证Formality
2.范例分析
3.Gui界面介绍
4.注意事项
Mask简单介绍
Synplify知识
Sdc语法
实现对速度的优化
门控时钟处理
对第三方ip处理
经验总结
Fpga网表仿真
SDC常用语法
时钟约束
位置约束
上下拉约束
PAD类型电平约束
sdc与fdc的关系
Linux下批处理
插入bufg与define_clock
转换门控时钟的条件,要满足下面条件
看gate/generate转化报告
FPGA知识
经验总结
COE文件格式
tcl批处理运行
Synplify_ise串型工作命令批处理运行
低功耗篇(转)
1.0 概述
2.0 CMOS电路的低功耗设计原理
3.0低功耗设计手段及Library需求
3.1 0.18um及以上工艺
3.1.1 静态功耗可以忽略 
3.1.2 时钟门控减小不必要的动态功耗 
3.1.2.1. Clock Gating Cells
3.2 90nm及以下工艺
3.2.1切断未使能电路的电源减小不必要的静态功耗 
3.2.1. Power Switching Cells
3.2.2利用不同VT值的库,实现静态功耗和时序的平衡(Multi-VT) 
3.2.2.1.常用EDA工具中Multi-VT的实现方法
3.2.3 时钟门控减小不必要的动态功耗 
3.2.4 多供电电压,实现动态功耗与时序的平衡(Multi-Voltage) 
3.2.4.1.常用EDA工具中Multi-VT的实现方法 
3.3其他未提及工艺
4.0一个低功耗设计实现的例子
4.1申明电压域以及虚拟电压接口
4.2申明电源网络
4.4建立电源状态表格(Power State Table, PST)
4.5插入Isolation Cell
4.6替换Retention Register Cell
4.7插入Level Shifters
注意事项:
5.0 UPF Demo
6.0 Cpf demo分析
注意点
后端知识
SOC产品分析(ppa)
1.功能
2.性能
3.功耗
4.工作模式
5.芯片面积
芯片设计流程
电路设计基础
1.延时信息定义
2.开关管特性
3.门控时钟
4.锁存器电路
5.时钟电路设计分析
6.复位电路设计分析
7.寄存器电路
8.ASIC版本ICG电路CLK,EN,GCLK之间的时序关系
9.电平转变探测电路
10.电平同步
11.脉冲同步
通用脉冲同步电路
12.脉冲同步在低功耗设计中注意事项:
13.异步复位同步释放
14.同步fifo设计
15.异步FIFO设计
16.静态时钟切换
17.动态时钟切换
18.同向不同频
19.分频电路
20.采样判断0与1的方法:
21.写1清0
22.时钟切换2
23.复位
24.复位延时电路设计
25.ATPG
26.比较电路转化为逻辑与或门电路
27.乘法电路,转换为左移和加法电路
28.除法电路,转化为左移和右移
29.时钟gate信号处理
30.自动插ICG代码风格
31.乘法电路串行设计
32.除法电路串行设计
33.二分法电路设计
34.无符号数加一个有符号数
35.减法结果一定为有带符号类型
36.乘以小数处理方法
37.电路设计总结—注意事项
DFT
Dft分类
芯片测试流程
注意事项:
ATPG设计测试相关
1.设计注意事项
2.仿真注意事项
3.生成atpg pattern步骤
总线篇
8051总线
AHB总线
APB总线
APB->AHB,READ
WB WT及WA的区别
M0核存储空间影射
空间特性
验证篇
SVTB
interface
SV中OPP特点
sv语法
详解SV开源库—svlib(转)
UVM
1.基本特性
2.Uvm常识
3.注册机制分析
1 uvm transaction注册
2.Component注册
3.TLM通信—FIFO分析
3.1 uvm_tlm_analysis_fifo分析
3.2 blocking_get_export分析
3.3 TLM的通信
4.Uvm_root::run_test task分析
4.1 基本task分析
全局函数run_test
m_run_phases
execute_phase
traverse
m_traverse
execute
exec_task
exec_func
class uvm_process
4.2 总结
5.raise_objection机制分析
6.sequence机制分析
sequence的继承关系:
uvm_sequencer继承关系如下:
uvm_sequencer如何启动sequence
7.set_config机制分析
8.factory override重载机制分析
9.在soc系统中运用uvm方法学
case0_sequence
my_sequencer
my_if
my_transaction
my_driver
my_agent
base_test
my_case0
my_monitor
my_model
my_scoreboard
my_env
Top_tb
10.run_test()运行过程分析(转)
11.UVM验证平台规范(转)
UVM验证平台的组成
验证平台中用到的component及object
命名规范
port/fifo命名及连接规则
打印信息
OLE_LINK8
OLE_LINK37
OLE_LINK36
OLE_LINK9
12.UVM寄存器扫描环境分析
通用UVM验证环境介绍
验证平台总图
Testcase用途
UVM 寄存器验证环境介绍
寄存器扫描验证环境总图
环境中各模块的作用:
关键组件分析
Register_model
uvm_sequencer #(rw)
Adapter:
Sequence:
关键Sequence说明
uvm_reg_hw_reset_seq
uvm_reg_bit_bash_seq
uvm_reg_access_seq
uvm_do_mem_access_seq
Uvm_do_shared_access _seq
uvm_do_mem_walk_seq
uvm_reg_mem_hdl_paths_seq
uvm_reg关键概念
基本概念:
基本操作:
基本操作之间的比较
各个基本操作对三个值的影响汇总
寄存器扫描工作流程
13.uvm中基类中已有常用变量汇总
uvm_driver
sequence
14.transaction中常用宏介绍
低功耗验证
1.Cpf+ncverilog低功耗验证
2.upf+ncverilog低功耗验证(转)
验证总结
验证思路
系统验证方案
功能点测试
测试点
验证策略
验证需要makefile加载的文件
无法验证的点
只能通过后仿验证的点
易遗漏验证点
前仿注意事项
后仿注意事项
后仿加delay选项
后仿无延时,报IOPATH Annotation Not Enabled
正向点测试
反相点测试
交叉点测试(铰链出错)
异常保护测试
模块验证
系统级模块验证
子系统验证
功能覆盖率&代码覆盖率
验证常用手段
控制类比较
连通性测试
时序类比较
数据比较,一般用于存储类验证
验证注意事项
变量初始化
Interface的用处
使用rtl内部信号处理
时钟产生
坚持一种书写规范
前仿与后仿延时处理
后仿存储模型warning
验证版本管理
把C 中的打印显示在TB环境中
打印小数方法
RAM 初始化问题
寄存器初始化
如何验证时钟模块
如何验证复位模块
tb与c交互
启动与打断场景验证
对于sfr相同地址监控的方法
PAD 验证处理
模拟(文档)接口
模拟建模原则
有符号数与无符号数区别
1.如何复用各个模块的寄存器配置
2.寄存器地址维护
3.寄存器维护
通用固件验证方法
c)操作流程介绍
d)Tb部分内容
Bus_opr部分,含各种寄存器操作
Bus_opr方式一
Bus_opr方式二
3.C部分内容分析如下:
Main 函数方式一:
4.SV环境
5.SVTB构架使用(理论分析,没实际使用)
6.总结:
7.8051系统,ibus,xbus,pbus,sfr统一固件源码
C部分:
Sv部分
Sv环境打印C环境printf内容
a)Sv环境添加内容
b)c环境修改内容
Debug小手段
1.Debug loop问题
验证中常用的对比等方法
Sdf文件格式分析
1.文件生成方法
2. sdf文件作用
3.读取SDF文件命令
3.文件分析
VCD文件格式分析
1.打开方式
2.文件分析
3.Scan测试注意事项
LIB文件格式
1.文件格式
2.举例说明
Specify用法(转)
XA混仿
4.XA混仿四要素
5.XA 混合仿真流程
Finesim 混仿
1.finesim混仿要素
2.Ncverilog运行命令
3.testbench需要增加的点
4.Sp文件格式
5.注意点
常见soc系统架构
1.C8051架构
2.Arm架构
3.系统在线升级考虑
4.Cpu操作存储器概念(转)
C8051知识
1.基础知识
2.Cpu寄存器
3.Ram空间分布
4.中断系统
5.程序执行过程
6.Keil下载
7.Debug过程
8.Debug图形界面介绍
9.Hex格式讲解(转)
Flip80251知识
基础知识
ARM知识
1.Arm架构
2.程序入口
3.地址分配
4.M0处理器内部寄存器
5.M0中断状态
6.M0中断入口地址
7.Arm m0指令集
8.Ready信号处理
9.流水线知识(转)
流水线上多周期指令执行时,流水线是否要暂停?
10.基础知识
常用方法
函数定位方法, 分散加载文件
Arm 程序运行过程如下图
启动文件
Cortex-M启动流程
程序生成流程:
中断响应与处理流程
嵌套向量中断控制器(NVIC)
软件控制睡眠模式
3 段流水线
中断向量表的重映射过程:
中断异常处理流程
中断进入与唤醒
M0系统架构
寄存器说明
11.注意点
12.分别配置
13.
14.程序在ram运行分析
15.启动程序分析(转)
16.下载程序
17.下载配置图解(转)
t4
t5
18.Keil内存解说
t6
中断过程中r0问题
MIPS知识
Mips核结构
Mips寄存器
C语言开发常用的定义
Mips开发工程
C语言开发问题分析
OTHERS
半导体知识
seal ring是什么
detail
1.工艺角
2.芯片signoff的Corner设置
t0
VMware Ubuntu安装详细过程(非常靠谱)--转 验证过可行
一、下载Ubuntu镜像文件
t1
二、VMware下载安装
t2
三、在VMware安装Ubuntu
t3
四、可能遇到的错误
逻辑分析仪简单使用
常用电路原理及分析
数学公式
加法电路
仲裁电路
伪随机电路
基础知识
设计源码
Crc电路
cordic算法详解
cordic原理转发
理解:
带反正切函数的部分设计
Perl生成code
优化版本
用于验证的cos,sin模型
几种触控技术分析
通讯设计注意点(i2c,uart,spi等)
I2c master电路
VCS 篇 基本选项及命令介绍 Vcs 选项里面通过 –v 加库,-f file_list(该文件里面为 rtl 代码或测例), 或直接加.v/.sv 文件时,需要注意,文件内容一定为 module …end 或 program…endprogram 或 package…endpackage 格式,如果是 task ,function,class 则必须包含在上述模块内,如果是以-v 方式加入文件, 无法在 verdi 中 trace 到内部信号 1.编译项+vcs+initreg+random 可以给所有的寄存器和 memory 赋一个随 机的初始值,也可以设置为 0 或 1,指的是变量设置为 reg 类型(wire,bit 等不会被初始化),在编译选项需要加上+vcs+initreg+random,运行选 项加上+vcs+initreg+0/1/random,最后 reg 类型的变量将是运行选项的 值 0/1/random;注意:当使用了上述+vcs+initreg+选项,如果在最开始 又对某个 reg 类型的变量赋一个取反的值,则这时会有一个 0 宽度的脉 宽 2. +vcs+initmen+random(0|1|x) 初始化存储器和多维数组;--用于前仿 真 3.compier 选项先+tc 再加 tb,由于编译的顺序,可以在 tc 中改变 tb 中的 一些 define 或预先 define,所以在 tb 中的 define 要求加上 ifndef 的 判决 4.如何单步运行,定位无限 0 延时的循环:当仿真时间没前进,但Δt 时间 在进行,这一般是存在延时为 0 的循环,则可以通过逐行运行来调试使 用 ctrl+c 停止仿真,在 run,重复该动作,会显示运行的语句,不能+RI 编译后立即运行,要采用 2 步 法,先 complie 然后在 simv。选项要加 -debug_all 5.FSDB 转 VCD 的方法 用法: fsdb2vcd fsdb_fname [-o vcd_file_name] [options] 参数选择: 木秀于林,冲迎风霜 -- 每天积累一点点 1 / 1226
[-bt time[unit]] [-et time[unit]] [-s [-nocase] {signal_name [-level n] [-verilog|vhdl]}] [-keep_last_time] [-map_ns_u [0/x/z]] [-map_ns_y [0/x/z]] [-map_ns_z [0/x/z]] [-sv] [-v] [-vcs] [-f config_file] [-bt time[unit]] 指定起始时间,如果不指定,将从 FSDB 的起始时间开始。时间单位可 以是 Ms/Ks /s/ms/us/ns/ps/fs。如果不指定,将采用 ns。 [-et time[unit]] 指定结束时间,如果不指定,将从 FSDB 的结束时间结束。时间单位可以是 Ms/Ks /s/ms/us/ns/ps/fs。如果不指定,将采用 ns。 -level n 转换所指定的层次和其向下 n 级层次结构的信号。必须和选项-s 连着使 用 -o 指定输出 VCD 文件的名字 -s 指定需要提取的信号或者层次 例子: 1. 转换所有的信号 %fsdb2vcd verilog.fsdb –o output.vcd 2. 转换指定时间范围和层次的信号 %fsdb2vcd verilog.fsdb –s /system/i_cpu –level 1 –bt 10 –et 1000 更多的解释,请直接在命令行输入 fsdb2vcd,就会有详细参数的解释。 5.截取 FSDB 中一段波形的方法: fsdbextract sorce.fsdb -bt (begintime) -et (endtime) -s /tb/udut/tp -level 0 -o destine.fsdb 时间单位为 ns 木秀于林,冲迎风霜 -- 每天积累一点点 2 / 1226
6.当开启 -fsdb 命令是,需要设置 debussy 的环境变量,否则会提示 Error-[VPI-LOAD] VPI -load library error 错误 7.DUT_CMP_OPTIONS += +neg_tchk +overlap +sdfverbose -negdelay –sdfretain # neg_tchk 负延迟检查;overlap SDF 反标后的精确时序检查; #sdfverbose 打印出详细的 SDF 反标信息;negdelay 允许 SDF 文件中负延 迟反标 8.DUT_CMP_OPTIONS+=+warn=noTFIPC,noSDFCOM_CFTC,noSDFCOM_NIOD,noS DFCOM_RCI,noSDFCOM_ANICD,noSDFCOM_PONF,noSDFCOM_CFIIS,noSDFCOM _MINF,noSDFCOM_IANE,noSDFCOM_TANE,noSDFCOM_SWC #不报这些 warning。这是 SDF 反标时出现的,一般都不用管,其中 TFIPC,SDFCOM_CFTC 都表示 message ID, 原句为 +warn=no[ID]|all|none ##DUT_CMP_OPTIONS += +notimingcheck+nospecify+delay_mode_zero # notimingcheck 忽略仿真中的时序检查;把 nospecify 的功能包含进去了, Specify 都是在 rtl 的 module 中 #nospecify :库中的 cell,会有 specify 语句,指定延时信息的。Nospecify 去除延时信息。注意:如果后仿时有该选项,那么 sdf 文件的反标信息就不 能起作用。 # delay_mode_zero 去除仿真中延迟信息 9.Using Verilog System Tasks(产生波形的那几个函数) Compilation This can be done in following two ways: •% vcs -fsdb [compile_options] verilog_filelist •For –P tab flow, replace vcsd.tab with novas.tab, where novas.tab is available in: /share/PLI/VCS/${PLATFORM}/novas.tab The following is the use model change: 木秀于林,冲迎风霜 -- 每天积累一点点 3 / 1226
% vcs -debug_pp -P $DEBUSSY_LIB/novas.tab $DEBUSSY_LIB/pli.a [compile_options] verilog_filelist 使用 Verilog 系统函数需要使用 -P 那个包 但这时不能用 -fsdb 选项(2010.07 版本支持)它需要做如下环境变量设置 % setenv DEBUSSY_HOME Debussy_installation % setenv DEBUSSY_LIB $DEBUSSY_HOME/share/PLI/VCS/LINUX % setenv LD_LIBRARY_PATH ${DEBUSSY_HOME}/share/PLI/lib/LINUX:$DEBUSSY_LIB % setenv LM_LICENSE_FILE[Debussy_license]:$LM_LICENSE_FILE down 波形的步骤: initial begin $fdsbDumpfile(file_name); //生成波形的名字 $fsdbDumpvars(0,tb)//down 波形的层次,写了这句话,就会开始 down 波形; //0 表示当前层及所有子层 ,1 表示当前层 ,2 表示往下一层,3,4..依 此类推. $fsdbDumpon; End Stopping and resuming the dump ($dumpoff/$dumpon) fsdbDumplimit - 限制 FSDB 文件 size -- $fsdbDumpvars([], *) fsdbDumpfile - 指定 FSDB 文件名 -- $fsdbDumpfile(“”) fsdbDumpvars - Dump 指定的变量 -- fsdbDumpSingle - Dump 指定的信号 fsdbDumpvariable - Dump 指定的 VHDL 变量 木秀于林,冲迎风霜 -- 每天积累一点点 4 / 1226
fsdbSwitchDumpFile - 将 dumping 切换到另一个 FSDB 文件 -- $fsdbSwitchDumpFile(“”) fsdbAutoSwitchDumpfile - 限制文件大小并在数据量过大时自动创建新的 FSDB 文件 -- $fsdbAutoSwitchDumpfile(, “”,< number of file>) fsdbDumpflush - Force to Dump Result to FSDB file fsdbDumpMem - Dump 指定的 memory 的内容 -- $fsdbDumpMem(, [, []]) $fsdbDumpon - 打开 FSDB dumping $fsdbDumpoff - 关闭 FSDB dumping 当 DUT 的某些信号无法显示在 verdi 中时,请注意 fsdb 波形是否配置为最 顶层,即注意是否有 down 此模块的波形 10. sva 在波形上显示的方法:在 tb.v 中 dump 波形地方加上: $fsdbDumpSVA 11. 如果要增加 assert 语法,需要包含 sva_lib.sv 库 12. 用+incdir 可以改变`include "../../rtl" 语句的相对的路径,但对 于没有用`include,而直接使用../../../rtl/这种做法,则相对的路径 以 compile 所在的目录为基准 13. DUT_CMP_OPTIONS += +neg_tchk +overlap +sdfverbose -negdelay –sdfretain # neg_tchk 负延迟检查;overlap SDF 反标后的精确时序检查; #sdfverbose 打印出详细的 SDF 反标信息;negdelay 允许 SDF 文件中负延迟 反标 14. DUT_CMP_OPTIONS+warn=noTFIPC,noSDFCOM_CFTC,noSDFCOM_NIOD,noS DFCOM_RCI,noSDFCOM_ANICD,noSDFCOM_PONF,noSDFCOM_CFIIS,noSDFCOM _MINF,noSDFCOM_IANE,noSDFCOM_TANE,noSDFCOM_SWC#不报这些 warning。这是 SDF 反标时出现的,一般都不用管,其中 木秀于林,冲迎风霜 -- 每天积累一点点 5 / 1226
TFIPC,SDFCOM_CFTC 都表示 message ID,原句为 +warn=no[ID]|all|none 15. ##DUT_CMP_OPTIONS += +notimingcheck+nospecify+delay_mode_zero # notimingcheck 忽略仿真中的时序检查; #nospecify :库中的 cell,会有 specify 语句,指定延时信息的。Nospecify 去除延时信息。注意:如果后仿时有该选项,那么 sdf 文件的反标信息就不 能起作用。 # delay_mode_zero 去除仿真中延迟信息 路径延时说明 `timescale 1 ns / 1 ns module design (out,in); output out; input in; wire int1,int2; assign #4 out=int2;//这个叫 delay_mode_distributed buf #3 buf2 (int2,int1), buf1 (int1,in); // specify (in => out) = 7; //这个叫 delay_mode_path endspecify endmodule 从上面模块可以看出 delay_mode_path 为 7ns, delay_mode_distributed 为 4+3+3=10ns,当编译选项有 delay_mode_path,这个模块的延时为 7ns,如果 有 delay_mode_distributed 选项,则这个模块延时为 10ns,如果两个选项都没 有,则 vcs 选用最大的数据 命令 描述 1. +define+= 命令行进行宏定义,在代码中使用了`ifdef 编译指令 木秀于林,冲迎风霜 -- 每天积累一点点 6 / 1226
2. 3. +mindelays +maxdelays 4. –v 器件延时使用 sdf 文件中的最小值(sdf 文件中的时序选择格式 (min:typ:max)) 器件延时使用 sdf 文件中的最大值 导入库文件的 verilog 模型(只编译使用到的 module),-v 在 verdi 中无法 trace,被当作一个 器件,不能追踪到内部 Module 查找路径,在添加 module 时,会在此目录下 查找,当编译某文件,如果里面有例化某个 module, 则会编译这个文件下的内容 Module 查找路径,在添加 module 时,会在此目录下 查找,当编译某文件,如果里面有例化某个 module, -y < directory > 则会编译这个文件夹下的内容 与-v 功能差不多,一个是指定文件,一个是指定 文件夹 指定 VCS 搜索`include 内文件的目录 5. +incdir+directory+ 使用的 include 的文件会在这些目录下查找 6. 7. 8. 9. -full64 -R –sverilog +v2k 10. -lca 11. –debug_all 支持 64 位模式运行 编译完后立刻运行 支持 systemverilog 语法(vcs 用,verid 用-sv) 支持 verilog 2001 特性 Limited Customer Availability,支持动态数据类型 associative Array,dynamic Array,smart Queue,string,event,class 支持所有 debug 操作,DVE 选项,可以查看所有断点类型 (line,time.value,event etc) all 就是加权限。 +w 是写 +r 是读+f 是 force +l 是支持 ucli 的单步调试。 木秀于林,冲迎风霜 -- 每天积累一点点 7 / 1226
+n 是 对网表操作。 具体可以看手册。 +all 就是把所有的权限全开 在 VCS 编译的时候不用再加-p novas.tab pli.a 来 dump fsdb,指 定 verdi 的路径。 11. –debug_acess+all 直接在 simv 的 ucli 脚本里面 call $fsdbdumpfile 想 dump vpd 的时候至今换 dump file XXX 12. –fsdb 13. +vcs+lic+wait 14. +plusarg_save 不用重新编译。版本有差异 调用VerdiPLI 库,支持 fsdb 波形 等待 vcs license 将某些 runtime options 加入到编译中,源代码中存在系统命令 $test$plusargs(“name”),如果字符匹配则为真,反之为假 例:在 tc 中有代码 if($test$plusargs(“testcase0”)) $display("OK"); 在 Makefile 命令中加入 make testcase0,则 if 为真,打印 OK 字符 15. +libext+.v+.sv 16. +verilog2001ext+.v 在库目录内搜索指定后缀名文件进行编译 Specifies a file name extension for Verilog2001 source file. 17. +systemverilogext+.sv Specifies a file name extension for SystemVerilog source file. 18. +warn=[no]ID|none|all… 打开或关闭 warning 信息 19. +optconfigfile+ 20. -o name 定义 VCS 配置文件,第一级同步寄存器不检查看 用一个文件输入 指定运行文件名称 21. -Mdir=directory_path 指定增量编译的目录(默认为 csrc) 22. -l sim.log 生成指定 log 文件 23. +ntb_random_seed=value 指定仿真随机种子 24. +ntb_random_seed_automatic VCS 自动生成随机种子 25. -timescale=1ns/10ps 若 rtl 中有 timescale 的定义, 命令行定义仿真时间刻度, 26. –override_timescale=1ns/10ps 则会覆盖 makefile 中的定义 覆盖源代码中的仿真时间单位和精度 最好别用,否则会把模型的时间单位覆盖, 木秀于林,冲迎风霜 -- 每天积累一点点 8 / 1226
分享到:
收藏