如何不让百度收录网站,wordpress时间云储存,代理网店加盟,外国网站学习做任务 升级验证概括
验证的过程是保证芯片实现符合规格说明书#xff08;Specification#xff0c;spec#xff09;的过程 验证的两项任务#xff1a; RTL sim#xff1a;前仿真#xff0c;验证功能 GLS-Gate (Level Simulation)#xff1a;后仿真#xff0c;验证功能和时序
验…验证概括
验证的过程是保证芯片实现符合规格说明书Specificationspec的过程 验证的两项任务 RTL sim前仿真验证功能 GLS-Gate (Level Simulation)后仿真验证功能和时序
验证功能点
产生激励
分析DUT/DUVdesign under test/verification就是设计代码RTL的输出前仿真与后仿真
RTL前仿真流程 理解DUT → 制定验证策略方法提取验证点搭建平台 → 执行平台 → 检查覆盖率 后仿真流程 环境准备DUTnetlistSDF选择Case考虑关键路径、频率、速率 → 后仿真及Violation分析 SDFstandard Delay Format后端经PR布局布线之后生成的包含网表中各器件单元延时、走线延时、信号宽度、时序要求等信息的文件
动态与静态时序分析
动态时序分析 根据电路中提取的延时参数通过仿真软件动态的仿真电路以验证时序是否满足要求后仿真
静态时序分析 通过分析设计中所有可能的信号路径以确定时序约束是否满足时序规范数字后端工程师
SV数据类型
SV用于验证的语言 UVM用于验证的方法学
initial只执行一次本身不可综合可在moduleinterfaceprogram中使用 always只可在module或interface中使用 SV中module/interface硬件program/class软件
内建类型基本数据类型
verilog中数据类型分为variablereg,integer,time和netwire,wor,wand型都为四值逻辑 SV中数据类型有两个属性type区分variable和net和data type区分4值与2值 variable可4可2值net只能4值 SV新数据类型 logic不用区分reg还是wire但不能被多驱动不能使用inout logic4值bit2值引入的原因减少内存消耗提高性能
四值integer reg logic net-type(wire tri)
二值byte shortint int longint bit
有符号byte shortint int longint integer
无符号bit logic reg net-type默认单比特标量result_vectorunsigned(signed_vector)//有符号数转换为无符号数2值逻辑中没有x会转变为0 有符号数高位补符号位无符号数高位补0
数组 定长的元素一致有序
定宽数组
int m[0:15];//16个整数[0],[1]...
int n[16];//16个整数[0],[1]...多维数组
int array[0:1][0:2];//6个存储单元每个存储单元都是int型
int array[2][3]{{0,1,2},{3,4,5}};//非合并数组{0,1,2}给array[0]{3,4,5}给array[1]
初始化前访问数组成员logic返回X四值int或bit返回0二值动态数组
合并数组连续存放
bit [3:0][7:0] bytes;//用32bit
$display(%h,bytes[3][7]);//结果1注意和多维数组的区别
非合并数组不需把数据当作一个整体来访问
bit [7:0] b_unpack[3];//每个b_unpack[]给32bit只用8bit浪费空间
int [7:0] b_unpack[3];//语法错误不可以是多bit数据类型只能设为reg/logic/bit单比特类型数组操作循环 复制 比较
foreach遍历多维数组foreach(md[i,j]) ab;//直接数组b复制给数组a 和!进行比较结果仅限于内容相不相同
队列可变长的先进先出
int q[$]{0,2,5};
q{};//删除整个队列
q[$]{0,2,5};
q[1:$]{2,5};//$在右边表示最大
q[$:1]{0,2};//$在左边表示最小在右边表示最大结构体
数据的集合可包含不同数据类型元素使用不多类可实现
struct和typedef struct重定义新数据类型的使用 声明变量一定要放在initia块前面
合并与非合并结构体
非合并赋值方式student1{18,222,“aa”};不可以student1{18,222,“aa”};
压缩和非压缩结构体
typedef struct packed{bit [1:0] a,b,c}s;//c,b,a连续存
typedef struct {bit [1:0] a,b,c}student;//c,b,a分别存10行非压缩结构体赋值要加“ ’ ”不加会报错 11行压缩结构体不注明位宽赋值易出错 为了代码规范合并、非合并、压缩、非压缩都要加“ ’ ”
联合结构体union
x改变y改变成员公用一块内存空间一个改变其他的也改变
typedef union packed{bit[7:0] a; byte b;}s;//必须是压缩的共享空间成员一个位宽枚举类型
默认int类型默认0,1,2……,没有定义后一个值是前一个加一
字符串 可变长
str.toupper()//转成大写
str.tolower()//转成小写
str.putc(i,c)//字符输入将字符串str中第i个字符替换为字符c
str.substr(i,j)//子串由str的第i和第j个中间的所有字符组成
strA.compare(strB)与strA.icompare(strB)//结果相同相同为0不同为1或-1