码迷,mamicode.com
首页 > 其他好文 > 详细

Verilog篇(二)

时间:2015-04-02 18:39:15      阅读:577      评论:0      收藏:0      [点我收藏+]

标签:

显示任务:$display,$write, 前者总会输出一个换行符,后者不会。固定输出格式版:$displayb/$displayo/$displayh/$writeb/$writeo/$writeh。

(%m 显示模块路径, \转义字符) $fmonitor(file, "%m:%t addr = %h data = %h", $realtime, addr, data);

 

监控任务:$monitor, $strobe, 前者同一仿真时候只能触发一个task,还有控制任务$monitoron, $monitoroff。后者在某一时刻,记录变量的值到log和STDOUT,在该时刻所有Event已经触发,仿真时间将向前走时。forever @(negedge clock)   $strobe("At time %t, data is %h", $time,data);

 

文件读写:$fopen, $fclose 句柄必须是一个interger类型。类型r/w/a(append),r+/w+/a+ 缺省时,默认是写。

interger Write_Out_file;  Write_out_file = $fopen("Write_Out_File.txt");  $fdisplay (Write_Out_File, "%h\n%h", addr, data);  $fclose(Write_Out_File);

$fdisplay, $fwrite, $fstrobe, $fmonitor 用法类似,只需要加一个文件句柄。类似的有$fwriteo, $fwriteb, $fwriteh等。

 

其他几个特殊的任务:

    c = $fgetc (fd); 读一个byte到c中。

    $swrite, $sformat(output_reg, formal_string, list_of_argument) 按字符串格式输出到一个reg variable。

    $fgets(str, fd);读入一行字符到str中。

    $fscanf(fd, format, args); 按标准输入到文件fd。

    $sscanf(str, format, args);按标准输入到reg str。

    $fflush(fd); 将buffer立即输出到fd文件中。

 

写入memory:$readmemb/readmemh 二进制与16进制。 reg[7:0] mem[1:256];  initial  $readmemh("mem_data", mem, 128, 1);

(mem_data中只能有空格,制表符等,注释,2进制/16进制数据。第三位起始地址,第四位结束地址,不特殊写明时,默认从0--$)

 

$sdf_annotate("sdf_file",,,,,,):将sdf文件读入设计中。可选参数module_instance(反标module,缺省当前模块),log_file(指定输出log的名字),mtm_spec(min/typ/max反标种类),scale_factor(scale因子),scale_type(scale在min/typ/max选择)。

 

仿真控制:$finish, $stop

随机数产生:$random(seed), $dist_uniform(seed, start, end); 返回有符号32位的随机数。

 

command line input:$test$plusargs(string)

   Run simulator with +HELLO   initial  begin

                                                          if ($test$pluargs("HELLO"))   $display();

                                                       end

                               $value$pluargs(user_string, variable)

   Run simulator with +TESTNAME = THIS TEST  initial  begin

                                                                                    if ($value$pluargs("TESTNAME = %s", testname))   start_test();        

                                                                                end

 

Verilog篇(二)

标签:

原文地址:http://www.cnblogs.com/-9-8/p/4387442.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!