数字IC验证学习(一)

一、数据类型

1、logic

logic类型只能有一个驱动。使用wire和reg的地方均可使用logic,但如双向总线等有多个驱动的地方,则不可使用logic。

2、二值逻辑

对于二值逻辑变量与DUT中的四值逻辑变量连接时,如果DUT中产生了X和Z,会被转换成双状态值。使用($isunknown)操作符,可以在表达式的任意位出现X或Z的时候返回1。用来检查未知值的传播。

3、定宽数组

多维数组的foreach循环,以两维数组为例:foreach(md[i,j])。

数组下标和位下标可以同时使用。

需要等待数组中的变化(@ event)时,必须使用合并数组。

4、动态数组

只要基本数据类型相同,定宽数组和动态数组之间就可以相互赋值,在元素数目相同的情况下,可以把动态数组的值复制到定宽数组。

5、队列

队列的常量初始化中,无需使用单引号。

对于一些非合并的数据类型(非连续存放),需要使用单引号进行标量初始化赋值;对于合并的数据类型(连续存放),不需要使用单引号进行标量初始化赋值

队列中的元素是连续存放的,队头或队尾存取数据非常方便,常用来作为FIFO。

6、数组的方法

1)缩减

sum,product,and,or,xor

对于定宽数组、动态数组、队列和关联数组,从其中随机取数可以使用$urandum_range($size(array)-1);特别地,队列和动态数组可以使用$urandum_range($array.size()-1)。

2)定位

min,max,unique

find:使用with来限定条件;还有find_index,find_first,find_first_index,find_last,find_last_index(返回索引的方法,返回值类型为int)

3)排序

改变了原始的数组,reverse,sort,rsort,shuffle,其中sort和rsort可以带with进行条件选择

7、结构

可以将结构定义为合并结构:typedef struct packed {bit[7:0] r,g,b;} pixel_p_s;

如果需要经常对整个结构体进行复制,那么,合并结构的效率会高一点;但是,对于合并结构中尺寸不规则的元素进行读写,需要移位和屏蔽操作,代价很高。

8、枚举

枚举默认值为从0开始递增的整数,默认类型为int。

可以指定枚举值,如:typedef enum {INIT, DECODE =2 , IDLE} fsmtype_e;

9、字符串

string用来保存长度可变的字符串,结尾不带标识符null

二、过程块和方法

1、函数和任务

参数的默认值和方向为logic输入。

允许不带ref进行数组参数的传递,这时数组会被复制到堆栈区,代价很大。

ref参数在任务里可以修改变量而且修改结果对调用它的函数随时可见。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253825.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

任意小数分频设计

对于任意小数分频,如果有PLL的话,直接倍频再分频即可;或常用的方法有双模前置小数分频和脉冲删除小数分频。前一种方法设计较为复杂,因此主要以第二种方式为主设计了一下。 任意小数均可以化为分数,例如要进行5.3分频即…

Bootstrap--圆角图片`圆形图

转载于:https://www.cnblogs.com/qiyiyifan/p/6159823.html

逻辑综合——概述与基本概念

逻辑综合系列主要说明以下问题: 为什么要逻辑综合逻辑综合的基本原理逻辑综合需要提供哪些文件逻辑综合过程中施加约束逻辑综合能产生那些结果 综合是前端设计的重要步骤之一,其过程是将行为描述的电路、RTL级的电路转换到门级,其目的在于&a…

Swoole 源码分析——Server模块之初始化

前言 本节主要介绍 server 模块进行初始化的代码,关于初始化过程中,各个属性的意义,可以参考官方文档: SERVER 配置选项 关于初始化过程中,用于监听的 socket 绑定问题,可以参考: UNP 学习笔记—…

linux下搭建git服务器

安装 Git Linux 做为服务器端系统,Windows 作为客户端系统,分别安装 Git 服务器端: #yum install -y git 安装完后,查看 Git 版本 [rootlocalhost ~]# git --version git version 1.7.1 客户端: 下载 Git for Windows&…

逻辑综合——工艺库

一、库文件的设置 运行DC时需要用到的库文件有:目标库(target library)、链接库(link library)、符号库(symbol library)、算术运算库(synthetic library)。 1、目标库…

[COGS 0065][NOIP 2002] 字串变换

65. [NOIP2002] 字串变换 ★★ 输入文件:string.in 输出文件:string.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述] 已知有两个字串A\$, B\$及一组字串变换的规则(至多6个规则): A1\$ ->…

逻辑综合——施加约束

Design Compiler时一个约束驱动(constraint-driven)的综合工具,它的结果与设计者施加的约束条件密切相关。 一、面积约束 进行面积的约束,也就是告诉DC综合的电路面积要在多少以内。在介绍约束命令之前,先了解一下面积…

[Codevs] 1004 四子连棋

1004 四子连棋 时间限制: 1 s空间限制: 128000 KB题目等级 : 黄金 Gold题目描述 Description在一个4*4的棋盘上摆放了14颗棋子,其中有7颗白色棋子,7颗黑色棋子,有两个空白地带,任何一颗黑白棋子都可以向上下左右四个方向移动到相邻…

逻辑综合——优化电路

对进行时序路径、工作环境、设计规则等进行约束完成之后,DC就可以进行综合、优化时序了,DC在优化过程中主要的策略将在下面进行说明。然而,当普通模式下不能进行优化的,就需要我们进行编写脚本来改进DC的优化来达到时序要求。 DC…

DOM包裹wrap()方法

DOM包裹wrap()方法 如果要将元素用其他元素包裹起来,也就是给它增加一个父元素,针对这样的处理,JQuery提供了一个wrap方法 .wrap( wrappingElement ):在集合中匹配的每个元素周围包裹一个HTML结构 简单的看一段代码: &…

Verdi 基础教程

一、Verdi 功能 查看设计debugVerdi不能自己产生波形 二、Verdi使用流程 1、Verdi环境配置 .bashrc中配置 export Verdi_HOME$Synopsys_Dir/Verdi2015 #export NOVAS_HOME$Synopsys_Dir/Verdi2015 export PATH$Verdi_HOME/bin:$PATH export LD_LIBRARY_PATH"/opt/Syno…

ida和idr机制分析(盘符分配机制)

内核ida和idr机制分析(盘符分配机制) ida和idr的机制在我个人看来,是内核管理整数资源的一种方法。在内核中,许多地方都用到了该结构(例如class的id,disk的id),更直观的说&#xff0…

MIPI CSI-2学习

CSI(Camera Serial Interface)定义了摄像头外设与主机控制器之间的接口,旨在确定摄像头与主机控制器在移动应用中的标准。 关键词描述 缩写解释CCICamera Control Interface(物理层组件,通常使用I2C或I3C进行通信&…

nand flash坏块管理OOB,BBT,ECC

0.NAND的操作管理方式 NAND FLASH的管理方式:以三星FLASH为例,一片Nand flash为一个设备(device),1 (Device) xxxx (Blocks),1 (Block) xxxx (Pages),1(Page) 528 (Bytes) 数据块大小(512Bytes) OOB 块大小(16Byte…

小白学git2

你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得。 首先,登陆G…

CMOS图像传感器——工作原理

一、像素阵列结构 一般像素阵列是由水平方向的行( Row ) 和垂直方向的列(Column)正交排列构成的。像素排列的最基本设计原则是:摄像器件像素排列的坐标,必须在显示的时候能够准确地还原在图像原来的相对位置上。在大多数情况下,每个像素中心线在行的方向和列的方向,即…