概述
数字芯片通识
- 芯片开发的全流程
- 数字芯片的设计流程
- 数字芯片的验证流程
- Linux 基础和gvim编辑器
mkdir 新建文件夹
touch 新建文件
Verilog
- Module结构和端口
1模块内部包含:变量声明、数据流语句、低层模块实例、行为语句模块、任务和函数。它们可以出现在模块内的任意位置。
2端口是模块于外界环境交互的接口,例如ic芯片的输入和输出都是它的端口。对模块的调用只能通过端口来进行。
端口可以声明为:input output inout三张类型。所有的端口都是默认为wire类型,不能将前两个声明为reg类型,reg类型是用来保存数值的,输入端口只能反映与其相连的外部信号的变化,并不能保存这些值。
3输入端口可以连接到线网类型和reg类型,输出端口必须连接到reg类型。
4端口于外部信号的连接
按照顺序连接
module TOP
reg [3:0]A ,B;
...
add add(SUM, C_OUT, A, B, C_BIN); //顺序连接add
endmodule
module add(sum, c_out, a, b, c_in)
input [3:0]a ,b;
...
endmodule
命名连接
add add(.sum(SUM), .b(B) ,c_in(C_IN) ,a(A),) //顺序连接add
.
每一个模块实例、信号、变量都适用标识符进行定义,用户可以在设计中的任何位置访问每个标识符。层次使用一连串的 . 进行连接。
- 表达式和操作符
- 组合逻辑的实现
- 时许逻辑实现
- 条件语句
- 门级建模、数据流建模、行为建模
- 系统任务和函数
- 高性能电路设计
- 数字电路复位
- 状态机
- 时许和时钟
- 异步时域的同步处理方式
- 握手协议
- Fifo设计
- 低功耗设计
Systemverilog
-
数据结构,数组,队列,结构体,枚举
内见数据类型包括变量和线网(net)
logic,reg,integer,time,real
定宽数组,常量数组
for,foreach
合并数组(存储的方式是连续的,必须使用[msb:lsb]的形式声明,和标量相互转换时,合并数组更合适)
动态数组(使用new[]函数构造,new可以重新声明数量,不会覆盖,.delete可以删除)
队列([$],.insert(),.delere())
关联数组(sv只会为实际写入的元素分配空间,在中括号内方式数据类型实现)
sv里不建议链表
数组方法(数组缩减,sum,product,and,or,xor
数组定位,min,max,unique,with语句
数组排序,reverse,sort,rsort,shuffle
)
使用typedef创建新的类型
创建自定义结构
数据转换
流操作符《》(流操作符,将数据打包)
枚举类型(枚举为列表中每个名称分配数字) -
面向对象,封装,继承,多态
过程语句和子程序
task和funcition,tack消耗时间,函数不能
参数方向
局部数据存储,紫铜存储automatic -
随机
-
约束
-
SVA(断言)
-
覆盖率和覆盖率驱动
-
线程
-
旗语和信箱
-
Sv验证平台
UVM
- Uvm和验证
- Factory机制
- Phase机制
- Configdb机制
- Component 和 object
- Uvm_driver
- Interface
- Transaction
- Env
- Monitor
- Agent
- Sequence和sequencer
- TLM
- TLM2
- UVM寄存器模型
- 前门访问和后门访问
最后
以上就是乐观小蝴蝶为你收集整理的数字ic验证的全部内容,希望文章能够帮你解决数字ic验证所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复