SystemVerilog讲座优质PPT.ppt
《SystemVerilog讲座优质PPT.ppt》由会员分享,可在线阅读,更多相关《SystemVerilog讲座优质PPT.ppt(124页珍藏版)》请在冰豆网上搜索。
IEEE推出VerilogIEEEStd1364-2001标准2002:
IEEE推出VerilogIEEEStd1364.1-2002标准2002:
Accellera对SystemVerilog3.0进行标准化Accellera是OVI&
VHDLInternational(VI)合并后的国际标准化组织2003:
Accellera标准化后的SystemVerilog3.12006:
IEEE推出带SystemVerilog扩展的Verilog新标准,为什么称SystemVerilog3.x?
SystemVerilog是对Verilog革命性的扩展Verilog1.0-IEEE1364-1995“Verilog-1995”标准第一代IEEEVerilog标准Verilog2.0-IEEE1364-2001“Verilog-2001”标准第二代IEEEVerilog标准显著提升了Verilog-1995标准的性能SystemVerilog3.x-国际标准化组织对Verilog-2001的扩展第三代Verilog标准DAC-2002-SystemVerilog3.0DAC-2003-SystemVerilog3.1,SystemVerilog是Verilog-2001扩展后的超集,assertionsmailboxestestprogramblockssemaphoresclockingdomainsconstrainedrandomvaluesprocesscontroldirectCfunctioncalls,-SystemVerilog-,-fromC/C+-classesdynamicarraysinheritanceassociativearraysstringsreferences,SystemVerilog是Verilog-2001扩展后的超集,interfacesdynamicprocessesnestedhierarchy2-statemodelingbyteunrestrictedportspackedarraysimplicitportconnectionsarrayassignmentsenhancedliteralsenhancedeventcontroltimevalues&
unitsunique/prioritycase/iflogic-specificprocessesrootnamespacealiasconst&
=|=%=-,-fromC/C+-intglobalsbreakshortintenumcontinuelonginttypedefreturnBytestructuresdo-whileShortrealunions+-+=-=*=/=voidcasting=aliasconst&
=|=%=,-SystemVerilog-,SystemVerilog是Verilog-2001扩展后的超集,ANSICstyleportsstandardfileI/O(*attributes*)generate$value$plusargsconfigurationslocalparamifndefelsiflinememorypartselectsconstantfunctions*variablepartselect,-fromC/C+-multidimensionalarrayssignedtypesAutomatic*(poweroperator),-Verilog-2001-,SystemVerilog是Verilog-2001扩展后的超集,modules$finish$fopen$fcloseinitialwireregparameters$display$writedisableintegerrealfunction/task$monitoreventstimealwaysdefineifdefelsewait#packedarraysassignincludetimescaleforkjoin2Dmemory,-fromC/C+-beginend+=*/%whileforforeverif-elserepeat,-Verilog-1995-,SystemVerilog提高设计效率,提高了设计效率,描述同样的功能,其代码可缩短2到5倍-代码短发生意外错误的概率减小了,但仍然可以综合,新的语句构造可以解决RTL仿真和综合后仿真的不匹配;
-小组成员间更容易理解和交流;
缩短了学习周期。
结构化的和用户定义的数据类型,与封装好的接口通信,.*蕴涵的端口实例引用,极大地提高了仿真速度仅一种语言就能解决设计和测试问题,设计和验证语言的统一提高了设计效率,学习周期很短,设计和验证人员都乐意采用:
-可自动生成高级的受约束-随机测试信号语句,大大降低了设计和验证的复杂度;
-完整的统一的断言技术改善了设计小组和验证小组之间的交流。
使得我们有可能使用更高速度的仿真工具,加速了设计的完成,SyestemVerilog的全面验证和设计,统一的断言扩展了验证方法的效率-基于断言的验证-形式化特征的验证-线路板上的加速验证,SystemVerilog设计语言,Verilog-2001的事件调度,当前的时隙,#0阻塞赋值,计算非阻塞表达式的RHS,连续赋值,$display命令,更新非阻塞表达式的LHS,阻塞赋值,更新原语的输入和的输出,,$monitor系统命令,$strobe系统命令,语句激活,语句暂停活动,非阻塞赋值,监视,来自上一个时隙,Verilog-2001时隙被分成4等级区域,新的名称将”延迟”事件区域,去下一个时隙,编写代码的八项原则,一般情况下,编写代码时如能按照以下8条原则就可以避免90%-100%由Verilog代码引起的冒险竞争现象:
1)时序逻辑-使用非阻塞赋值2)锁存器-使用非阻塞赋值3)用always块生成的组合逻辑-用阻塞赋值4)在同一个always块中既有时序逻辑又有组合逻辑-用非阻塞赋值5)在同一个always块中不要既用阻塞赋值又用非阻塞赋值6)不要在一个以上的always块中对同一个变量赋值7)用$strobe显示用非阻塞赋值指定的变量值8)不要用0过程性赋值以上8条原则与Verilog-1995完全一致,仍旧适用于SystemVerilog,SystemVerilog的基本数据类型,SystemVerilog可以定义:
4态数据类型:
0,1,X,Z2态数据类型:
0,1,未初始化的变量=X未初始化的线网=Z与Verilog-2001相同,未初始化的变量=0未初始化的线网*=0SystemVerilog新添加的,regr;
/4态,Verilog-2001(位宽可变)数据类型integeri;
/4态,Verilog-2001(32位)有符号数据类型logicw;
/4态,(位宽可变)0,1,x,或者zbitb;
/2态,(位宽可变)1位0或1byteb8;
/2态,(8位)有符号整型数shortints;
/2态,(16位)有符号整型数inti;
/2态,(32位)有符号整型数longintl;
/2态,(64位)有符号整型数注:
*-bit类型既可以用于变量也可以用于线网。
另外还加入了其他一些数据类型,SystemVerilog新添加的数据类型,reg15:
0r16;
logic15:
0w16;
bit15:
0b16;
reg,logic和bit数据类型位宽可以改变,几乎通用的数据类型logic(等价于原来的reg类型),logic类型类似于VHDL中的std_ulogic类型-对应的具体元件待定-只允许使用一个驱动源,或者来自于一个或者多个过程块的过程赋值,对同一变量既进行连续赋值又进行过程赋值是非法的,不允许的。
-在SystemVerilog中:
logic和reg类型是一致的(类似于Verilog中wire和tri类型是一致的),wire数据类型仍旧有用因为:
-多驱动源总线:
如多路总线交换器(buscrossbars&
onehotmuxes)-双向总线(两个驱动源),logic是4态数据类型的变量,bit相当于2态数据类型的变量或线网,用户定义的类型-typedef,允许生成用户定义的或者容易改变的类型定义:
好的命名规则用“_t”做后缀typedefexisting_typemytype_t;
ifdefSTATE2typedefbitbit_t;
/2stateelsetypedeflogicbit_t;
/4stateendif,defines.vh,设计策略:
用各种typedefs,只要用typedef就可以很容易地在4态和2态逻辑仿真之间切换以加快仿真速度,verilog_cmddefine.vhtb.vdff.v,verilog_cmddefine.vhtb.vdff.v+define+STATE2,确省,为4态逻辑值仿真,只用2态逻辑值,仿真速度快,已确定的和待确定的类型,四态和两态设计策略用待确定类型是最容易的。
功能相当于VHDL中的std_ulogic类型,很有效率,与VHDL中的std_logic类型没有功能可比较的类型,ifdefSTATE2typedefbitbit_t/2-态elsetypedeflogicbit_t;
/4-态endif,define.vh,ifdefSTATE2typedefbitbit_t/2-态typedef?
tri_t/2-态elsetypedefregbit_t;
/4-态typedefwiretri_t;
/4-态endif,define.vh,无多驱动器的2态类型,-也许下一个版本的SystemVerilog能得到修正,没有容易的std_ulogic和std_logic之间切换的等价语句,Verilog-2001数据类型(模块内部),模块的输入必须是线网类型的信号,moduleA(out,in);
outputout;
inputin;
regout;
wirein;
always(in)out=in;
endmodule,moduleB(out,in);
wireout;
assignout=in;
endmodule,用reg类型的输出(过程赋值语句的LHS必须用变量类型),输出是线网类型的(用连续赋值驱动的变量类型),Verilog-2001数据类型(模块外部),信号由源驱动的必须定义为线网类型,moduleA(out,in);
黑箱输出输入,moduleB(out,in);
黑箱输出输入,实例的输入往往由测试模块的变量驱动,a2b,输出信号必须定义为线网类型,moduletest;
regt_in;
wirea2b;
wiret_out;
Au1(.o