Verilog篇(二)系统函数
显示任务:$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--$)
@address in hex data
@2f ff(十六进制)
$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选择)。
第一组,检查时序窗口的稳定性,包括:setup、hold、recovery和removal。
setup:$setup (data_event, reference_event, limit, notifier);
当reference_event time - limit < data_event time < reference_event time时,就会报告setup time violations。
hold: $hold (reference_event, data_event, limit, notifier);
当reference_event time < data_event time < reference_event time + limit时,就会报告hold time violations。
setup/hold:$setuphold (reference_event, data_event, setup_limit, hold_limit, notifier);
$setuphold是$setup和$hold两者的联合。例如:
$setuphold (posedge clk, negedge d, 2, 1, notifier); 等于
$setup (negedge d, posedge clk, 2, notifier); 和 $hold (posedge clk, negedge d, 1, notifier);
数据事件常常是数据信号,而参考事件常常是时钟信号。
参考:http://www.cnblogs.com/poiu-elab/archive/2012/08/25/2655937.html
仿真控制:$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中的ifdef和ifndef后加name,但是endif之后不能加。
verilog中的行分隔符,之间换行即可,靠";"分行。
标识符可以放在begin...end/ fork...join/ module...endmodule/ task...endtask/ function...endfunction中来更明确。
Verilog篇(二)系统函数的更多相关文章
- Verilog学习笔记基本语法篇(十一)········ 常用系统函数
1)系统任务:$monitor 格式: $monitor(p1,p2,p3...pn); $monitor; $monitoron; $monitoroff; 任务$monitor提供了监控输出列 ...
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇二:基于OneNote难点突破和批量识别
篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...
- Jmeter(二十五)Jmeter之系统函数
都忘了Jmeter4.0已发布((*^▽^*))具体优化项还没体验,记录一下,传送门:http://jmeter.apache.org/download_jmeter.cgi Jmeter的系统函数已 ...
- PHP实用系统函数之数组篇
PHP中十分实用的系统函数 array array_merge 说明:array array_merge ( array $array1 [, array $... ] ) 将一个或多个数组的单元合 ...
- Verilog语言中的系统任务和系统函数
Verilog语言中预先定义了一些任务和函数,用于完成一些特殊的功能,它们被称为系统任务和系统函数,这些函数大多数都是只能在Testbench仿真中使用的,使我们更方便的进行验证. `timescal ...
- 学习如何看懂SQL Server执行计划(二)——函数计算篇
二.函数计算部分 --------------------标量聚合--------------------/* 标量聚合-主要在聚合函数操作中产生 计算标量:根据行中的现有值计算出一个新值 流聚合:在 ...
- .Net程序员学用Oracle系列(11):系统函数(下)
1.聚合函数 1.1.COUNT 函数 1.2.SUM 函数 1.3.MAX 函数 1.4.MIN 函数 1.5.AVG 函数 2.ROWNUM 函数 2.1.ROWNUM 函数简介 2.2.利用 R ...
- java学习笔记-JavaWeb篇二
JavaWEB篇二 45 HttpSession概述46 HttpSession的生命周期 47 HttpSession常用方法示例48 HttpSessionURL重写 49 HttpSession ...
- 第五篇:Python函数基础篇
本篇介绍什么是函数.函数的特性.函数的定义.函数的调用.以及函数的参数.以及关于全局变量和局部变量的使用等等. 一.什么是函数: 函数是最基本的一种代码抽象方式,为了实现某种特定的功能而组织的带名字的 ...
随机推荐
- JAVA中使用JSON进行数据传递
最近在做一个基于JAVA Servlet的WEB应用以及对应的Anroid应用客户端的开发工作. 其中,在接口的访问和数据的传输方面使用的比较多的是使用JSON对象来操作格式化数据:在服务器端采用JS ...
- 使用mysqli_stmt类
在生成网页时,许多PHP脚本通常都会执行除参数以外,其他部分完全相同的查询语句,针对这种重复执行一个查询,每次迭代使用不同的参数情况,MySQL从4.1版本开始提供了一种名为预处理语句(prepare ...
- 转: .NET MVC3 几种返回 JSON 对象的方式和注意事项
.NET MVC3 几种返回 JSON 对象的方式和注意事项 转自:http://blog.csdn.net/xxj_jing/article/details/7382589 引言在用 .NET MV ...
- charles工具的使用
charles工具使用 charles除了之前介绍过模拟弱网的功能外,还有很多强大的功能.最近客户端测试用到的功能介绍如下: 一.准备工作 1.手机设置代理 charles设置代理端口号8888:Pr ...
- Swift-01 UIWebView加载网页
UIWebView在swift里面的语法,和OC不太一样,但是,使用方法什么的,都是从OC演变过来的.比如,都得有init方法,都有loadRequest方法,所以,有了OC这个基础,学习swift是 ...
- Selenium2学习-000-Selenium2初识
什么是 Selenium?Selenium 是 ThoughtWorks 专门为 Web 应用程序编写的一个验收测试工具,是一种 Web 测试框架,开拓了验证 Web 应用程序的新方案,使您可在 We ...
- 微信支付开发(2) 静态链接Native支付
关键字:微信支付 微信支付v3 native支付 统一支付 Native支付 prepay_id 作者:方倍工作室原文: http://www.cnblogs.com/txw1958/p/wxpayv ...
- Metro中控件WebView访问外部的网页显示一片空白
Metro中控件WebView访问外部的网页显示一片空白 解决方案: 下载安装了Initex.Software.Proxifier.v3.21.Standard.Edition.Incl.Keyma ...
- C# 调用VC++的DLL,VC++封装DLL
VS中新建一个动态库项目 文件生成一个工程名对应的.cpp文件,该文件定义 DLL应用程序的导出函数. 工程内新建一个类OutputInt,我用类向导生成,工程中会添加OutputInt.cpp和Ou ...
- Vue.2.0.5-计算属性
计算属性 在模板中绑定表达式是非常便利的,但是它们实际上只用于简单的操作.在模板中放入太多的逻辑会让模板过重且难以维护.例如: <div id="example"> { ...