Verilog篇(一)

Verilog在行为级建模时常用到的一些函数,变量等。

1:$random(seed),每次根据seed的值产生一个32位的有符号数,seed的数据类型必须是寄存器(reg),整形(integer),时间(time)等类型。变形$dist_uniform(seed,start,end)。

integer a_time;

integer AP_SEED;

a_time = $dist_uniform(AP_SEED,min_time,max_time);

2: Driver strength spec,只适用于线网等类型的变量,wire tri wand等。可以在变量声明或连续赋值中使用。一对关键字分别表示(0,1)时的strength. 有supply,strong,pull,weak,highz等,strength按8个level划分。

assign (pull0,pull1) SD1_CLK = 1'b0;

3: $display("pc_mon_%d (time: %t): pc_ca7=%h ", PC_NUM,$time,cur_pc);

4: tranfif1 gpio_pads_logic0 (gpio_pads[0], tb_gpio_pads[0], select_gpio_driver);表示select_gpio_driver为1时,两个信号双向连接起来。

5:bufif1 bf1 (outw, inw, controlw); notif1 bf1(outw, inw, controlw); 表示相应的control为1时,输出会为Z,否则正常logic。只能单向传输。

6:buf和not可以有多个输出。 buf b1(out1, out2, in); in输入,out1,out2输出。只能单向传输。

7: specify模块用于指定source与destination之间的时延,参数用specparam表示。

8:final  begin...end,在$finish之前,会显式调用的procedure。

9:NC verilog调试的一些tcl命令:

deposit,与force信号作用类似,但是如果有驱动自然会跟随驱动的情况。

verilog中的位运算符,缩位运算符,逻辑操作符。

1)位运算符:操作数几位,结果就有几位,若两个操作数位数不同,位数短的操作数做段补零。

   按位取反:~

   按位与:&

   按位或:|

   按位异或:^

   按位同或:^~或~^

2)缩位运算符:结果只有一位。

   与缩位运算:&

   或缩位运算:|

   异或缩位运算:^

   与,或,异或,和非运算符组成的复合运算符:~&, ~|, ~^

3)逻辑运算符:

   逻辑与:&&

   逻辑或:||

   逻辑非:!

   逻辑与和逻辑非是双目运算符,逻辑非是单目运算符。

原文地址:https://www.cnblogs.com/-9-8/p/4377900.html