SV语言部分一
2020-11-10 13:45:08 0 举报
AI智能生成
大家个赞吧
作者其他创作
大纲/内容
数据类型
内建数据类型
数值逻辑类型
01XZ
integer 32
logic
reg
net-type
01 偏软
byte 8
shortint 16
int 32
longint 64
bit
符号类型
有符号型 偏软
byte
shortint
int
longint
integer
无符号型
bit
logic
reg
net-type (wire,tri)
位宽转换
尽量避免位宽不一致的变量转换使用
符号发生改变时,低位转高位,扩符号位
高位转低位,截去高位
一位四值逻辑需要用两位二值逻辑表示
软件常用类型
定宽数组
声明
初始化赋值
pack和unpack(pack左侧高纬度,unpack右侧高纬度)
for和foreach循环
数组的复制和比较
动态数组
声明 int a[]
删除 a.delete() a=new[0] a='{};
动态数组创建是new[],对象开辟初始化是new()
队列
int a[$]={1,3}; (初始空间0,赋值后,0位置是1,1位置是3)
push_back()写
pop_front()拿
a.insert(1,2);在1位置插入2(也可插入队列,变量)
关联数组
不懂
结构体
声明结构体是匿名的
typedef声明结构体带名字
提到了赋值,pack={}; unpack=’{};
枚举类型
enum参数位置同队列,0位置1位置2位置
不能直接把其他数据类型赋值给枚举类型,应该先进行转换
enum=enum‘(int)
字符串
string s
initial begin
s="IEEE ";
$display(s.getc(0)); 无引号
s.putc(s.len()-1,"-");
s={s,"P1800"};
$display(s.substr(2,5));
过程块和方法
并行块
always
块内顺序,块之间并行
可由clk驱动,也可由非clk驱动,组合时序
initial
块内顺序执行,块之间并行
function
默认logic
数组可以做形参
可以有返回值,可以没有
可以在声明参数赋初始值
注意,未标明参数方向,默认是输入
不能添加耗时语句,不占用仿真时间,立即完成
只能调用函数本身
task
无法返回值,只能通过output和inout或者ref的参数返回
可内置耗时语句
可以调用函数和任务
变量的声明周期
默认均为static类型
根据需求手动给函数等添加automatic类型
static类型变量有返回值时不会进行初始化
设计例化和连接
对设计的方向,位宽,端口名的定义
模块例化时,注意模块名,参数的例化传递,例化名和端口例化对应
例化的连接
0 条评论
下一页