verilog $*命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了verilog $*命令相关的知识,希望对你有一定的参考价值。

参考技术A

注:如果没有在指定变量的显示格式,不会输出数值。如果没有指定变量显示的位置,变量值会在字符串部分之后直接显示出来,变量之间是没有间隔的,只是一次简单的显示。

$display与$write的区别是:$display会在每次显示信息后自动换行,$write不会换行。
$fopen, 有以下两种用法。
a. $fopen("<文件名>");
b. [文件句柄]=$fopen("<文件名>")

$fdisplay,将数据写入指定文件

$fclose,关闭文件

探测任务的语法和显示任务完全相同,也是把信息显示出来。也有$strobe,$strobeb,$strobeo,$strobeh四种。
两者的区别在于:$strobe命令会在当前时间部结束时完成;而$display是只要仿真器看到就会立即执行。

监测任务用于持续监测指定变量, 只要这些变量发生了变化 ,就会立即显示对应的输出语句。

同理,有$monitor,$monitorb$monitoro$monitorh。
可用$monitoroff,monitoeron关闭监事和打开监视。

区别:$stop暂停当前方针,$finish中值当前方针。

语法
$timeformat[( Units, Precision, Suffix, MinFieldWidth )];

规则

提示
用`timescale $timeformat 和$realtime (带%t)指定和显示仿真时间,用$display $monitor 或其他显示任务。
例如:

在Verilog HDL中有两类型的时间系统函数,$time和$realtime。用这两个系统用函数可以的大当前的仿真时间。
$time 可以返回一个64位的整数来表示当前仿真时刻值,该时刻是以模块的仿真时间尺度位基准的。
$realtime 返回的时间数字是一个实型数。该数也是以时间尺度为基准的。

verilog 条件编译命令`ifdef`else`endif 的应用

    【摘自夏宇闻《verilog设计教程》】一般情况下,Verilog HDL源程序中所有的行都将参加编译。但是有时希望对其中的一部分内容只有在满足条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足条件时对一组语句进行编译,而当条件不满足是则编译另一部分。 
 
        条件编译命令有以下几种形式: 
 
        1)   `ifdef 宏名 (标识符) 
               程序段1 
               `else 
               程序段2 
               `endif 
        它的作用是当宏名已经被定义过(用`define命令定义),则对程序段1进行编译,程序段2将被忽略;否则编译程序段2,程序段1被忽略。其中`else部分可以没有,即: 
 
        2)   `ifdef 宏名 (标识符)

               程序段1
              `endif 
        这里的 “宏名” 是一个Verilog HDL的标识符,“程序段”可以是Verilog HDL语句组,也可以是命令行。这些命令可以出现在源程序的任何地方。注意:被忽略掉不进行编译的程序段部分也要符合Verilog HDL程序的语法规则。 
        通常在Verilog HDL程序中用到`ifdef、`else、`endif编译命令的情况有以下几种: 
        ?    选择一个模块的不同代表部分。 
        ?    选择不同的时序或结构信息。 
        ?    对不同的EDA工具,选择不同的激励。

        以下是实例:

        技术分享图片

        运行结果为:

        # wow is defined
        # nest_one is defined
        # nest_two is defined




















以上是关于verilog $*命令的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Icarus Verilog 在 Verilog 中转换 VHDL 代码?

nc_verilog 仿真波形中如何显示状态名

verilog的系统函数$readmemh的使用

verilog 条件编译命令`ifdef`else`endif 的应用

verilog 条件编译命令`ifdef`else`endif 的应用

vcs编译verilog/sysverilog并执行