pullup、pulldown看做是门级原语,assign语句看做是RTL。 SystemVerilog接口不允许门级原语。如果是用来写ip,应该使用assign语句。 一些工具,像静态时序分析,期望用门级原语建模,而不是RTL,这时应该使用pullup、pulldown来代替。 pullup、pulldown默认的驱动强度是pull,assign语句默认的驱动强度是strong。
变量定义不要与关键词冲突。 always, and, assign, begin, buf, bufifO, bufifl, case, casex, casez, cmos, deassign, default, defparam, disable, edge, else, end, endcase, endmodule, endf unction, end primitive, endspecify, end table, end task, event, for, force, forever, fork, function,...
(7) 提供了用于建立表达式的算术运算符、逻辑运算符、位运算符。 Verilog HDL作为一种高级的硬件描述编程语言,与C语言的风格有许多类似之处。其中有许多语句如:if语句、case语句等和C语言中的对应语句十分相似。如果读者已经掌握C语言编程的基础,那么学习Verilog HDL并不困难。我们只要对Verilog HDL某些语句的特殊方面...
pull1 rcmos real realtime reg release repeat rnmos rpmos rtran rtranif0 rtranif1 scalared small specify specparam strength strong0 strong1 supply0 supply1 table task tran tranif0 tranif1 time tri triand trior trireg tri0 tri1 vectored wait wand weak0 weak1 while wire wor xnor xor ...
参数其实就是一个常量,常用于定义状态机的状态、数据位宽和延迟大小等。 由于它可以在编译时修改参数的值,因此它又常被用于一些参数可调的模块中,使用户在实例化模块时,可以根据需要配置参数。 在定义参数时,可以一次定义多个参数,参数与参数之间需要用逗号隔开。
wire型数据常用来表示用于以assign关键字指定的组合逻辑信号。Verilog程序模块中输入输出信号类型缺省时自动定义为wire型。wire型信号可以用作任何方程式的输入,也可以用作“assign”语句或实例元件的输出。 wire型信号的格式同reg型信号的很类似。 其格式如下: ...
mmos, rpmos, rtran, rtranif0, rtranif1, scalared, small, specify, specparam, strength, strong0, strong1, supply0, supply1, table, task, time, tran, tranif0, tranif1, tri, tri0, tri1, triand, trior, trireg, vectored, wait, wand, weak0, weak1, while, wire, wor, xnor, xor...
资源共享 阻塞与非阻塞赋值 流水线设计技术 毛刺的消除 10.1设计的可综合性 10.1.1可综合的设计 Verilog行为级或数据流电路建模 RTL级功能块 逻辑优化目标工艺 优化后的门级网表 面积和定时约束 综合过程 数据类型(wire,reg,integer…)常量 值(0,1,无关值,不定值…)元件(连线,触发...
use vectoredwait wandweak0 weak1 while wire wor xnorxor 4. 可综合语句 要保证Verilog HDL赋值语句的可综合性,在建模时应注意以下要点: 不使用initial。 不使用#10。 不使用循环次数不确定的循环语句,如forever、while等。 不使用用户自定义原语(UDP元件)。
寄存器类型寄存器类型表示一个抽象的数据存储单元,它只能在always语句和initial语句中被赋值,并且它的值从一个赋值到另一个赋值过程中被保存下来。如果该过程语句描述的是时序逻辑,即always语句带有时钟信号,则该寄存器变量对应为寄存器;如果该过程语句描述的是组合逻辑,即always语句不带有时钟信号,则该寄存器变量对应...