第十章
一、延迟:分布延迟、集总延迟和引脚到引脚的延迟
1、分布延迟是在每个独立元件的基础上进行定义的:延迟赋给独立的门或者在单独的assign语句中指定延迟值
2、集总延迟是在每个独立模块的基础上定义的
二、路径延迟建模
1、在模块的源(输入或输入输出)引脚和目标(输出或输入输出)引脚之间的延迟成为模块路径延迟
2、利用specify和endspecify来给路径延迟赋值
moudle M(out,a,b,c,d);
output out;
input a,b,c,d;
wire e,f;
specify
(a=>out)=9;//源a到目标out延迟为9
(b=>out)=9;
(c=>out)=11;
(d=>out)=11;
endspecify
and a1(e,a,b);
and a2(f,c,d);
and a3(out,e,f);
enmodule
3、specify块是模块中的一个独立部分,不在其他任何块中出现
4、specify内部有并行连接和全连接,并行:=>全连接:*>(源的每一位都和目标的每一位连接)
5、specparam声明语句:可以使用该关键词定义特殊的参数,使用该参数来定义延迟,仅可用于块内
三、时序检查
1、$setup $hold $width用来进行时序检查:只能用于specify块
2、$setuo $hold 用来检查设计中时序元件的建立和保持约束
3、时序元件中(例如边沿触发器),建立时间是指数据在有效时钟边沿到达之前的最小时间
4、保持时间是数据在有效时钟边沿之后保持不变的最小时间
5、$setup 用法:
$setup(data_event,reference_event,limit)
//分别为被检查的信号,用于检查的参考信号,建立所需要的 最小时间
当(T(reference_event)-T(data_event))<limit报告违反约束
6、$hold任务:保持时间检查
$(reference_event,data_event,limit)
当Tdata_event-Treference_event<limit,报告违反约束
7、$width检查脉冲宽度是否符合最小宽度要求
$width(reference_event,limit)
//分别为边沿触发事件,最小脉冲宽度,
不指定data_event,用于检查信号值从一个跳变到下一个反向跳变的时间
当Tdata_event-Treference_event<limit,报告违反约束
十一章
一、开关级建模元件
1、mos开关:nmos和pmos
2、cmos开关:实质为nmos和pmos的组合体
3、双向开关:利用关键字tran,tranif0,tranif1
4、电源和地:源极(Vdd):supply1 地级(Vss):supply0
5、阻抗开关:在以上关键词前加r即可