IC 验证学习 IC 验证学习是指通过 FPGA(Field-Programmable Gate Array)和模拟器(Emulator)来验证 IC 芯片的正确性和性能。FPGA 是一种可编程的芯片,可以根据需要实现不同的逻辑电路模拟器是 FPGA 的一种实现方式,可以模拟 FPGA 的行为,但速度快于仿真器。 知识点一:FPGA 和模拟器的比较 * FPGA 速度快,模拟器速度快于仿真器 * 模拟器可以检测内部信号,设置断点,保存波形等 * 模拟器内部都是 FPGA 做的,只不过 EDA 公司做了包装和结合,便于用户调试 知识点二:四值逻辑和二值逻辑 * 四值逻辑是硬件的概念,二值逻辑是软件的概念 * Integer 和 int 都是 32 位,但名字长一点的 integer 是四值逻辑,而短一点的 int 是二值逻辑 * 如果左右宽度不一致,要知道是补 0 还是补 1 知识点三:枚举类型和 int 类型的区别 * 枚举类型可以直接赋值给 int,但 int 需要转化才能赋值给枚举类型 * process 快和方法若不加 automatic/static,即不写,则默认为 static 知识点四:Interface 和 Module 的比较 * Interface 中可以例化接口,但不可以例化 module * Module 中可以例化接口,也可以例化 module 知识点五: History 命令和 $display/$error 的区别 * History 命令可以看到以往的指令 * $display 和 $error 的区别是,$error 打印错误的时候最好用 error,打印信息更加清楚明了 知识点六:枚举打印实验 * 不能直接将整型赋值给枚举类型,必须先转化,再赋值 * 法一:st2 = state_t'(1);==> 后面接 error 不打印 * 法二:$cast(st3,4)==> 后面接 error 可以打印 知识点七:结构体的使用 * 结构体可以包含多个数据成员 * 使用 %p 打印结构体的内容,默认打印以十进制 * 结构体可以是 unpacked(非组合)或 packed(组合) 知识点八:Class 的使用 * Class 类比于 module,只不过 class 里边都是动态变量,module 里边都是静态变量 * Class 里边不能出现 initial 和 always,只能通过方法嵌套方法来调用 * Sv 中除了对象有指针(句柄)外,其他的一些标量(整型,字符串等)都没有指针 知识点九:动态数组和类的实例创建 * 动态数组的开辟和类的实例创建特别容易搞混 * Initial 里边的对象会一直存在,静态变量,即便 initial 已经执行完了 知识点十:句柄的使用 * 句柄的使用若在类中声明了静态变量,可以直接索引 * Class:: 直接索引变量和方法静态的方法 禁止调用动态的类的成员变量 知识点十一:保护和 local 的使用 * 若加了 protected 或者 local,从外部的句柄无法访问这个类的成员变量和成员方法的。
剩余41页未读,继续阅读
- 粉丝: 105
- 资源: 10
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助