testbench 仿真控制语句及系统任务描述

$stop             //停止运行仿真, modelsim中可继续仿真
$stop(n)          //带参数系统任务,根据参数 0,1或 2不同,输出仿真信息
$finish           //结束运行仿真,不可继续仿真
$finish(n)        //带参数系统任务,根据参数 0,1或 2不同,输出仿真信息
        //0:不输出任何信息
        //1:输出当前仿真时刻和位置
        //2:输出当前仿真时刻、位置和仿真过程中用到的 memory以及 CPU时间的统计
$random           //产生随机数
$random % n       //产生范围 n到 n之间的随机数
{$random} % n     //产生范围 0到 n之间的随机数

在仿真器中打印输出:

$monitor ($time,,,"clk=%d reset=%d out=%d", clk, reset, out);
$display ("Addr: %b -> DataWrite: %d", Mpi_addr, Data_out);

利用时序检查的系统任务来检查时序:

$setup (Sig_D, posedge Clock, 1);    //如果在Clock上升沿到达之前的1ns时间内Sig_D发生跳变,则将给出建立时间违反告警
$hold (posedge Clock, Sig_D, 0.1);    //如果在Clock上升沿到达之后的0.1ns时间内Sig_D发生跳变,则将给出保持时间违反告警

$time系统函数可以用来返回当前的仿真时间,协助仿真。

$time         //返回 64位整型时间
$stime        //返回 32位整型时间
$realtime     //实行实型模拟时间

文本输入方式::$readmemb / $readmemh

//verilog提供了读入文本的系统函数
$readmemb / $readmemh ("<数据文件名>", <存储器名>);
$readmemb / $readmemh ("<数据文件名>", <存储器名>, <起始地址>);
$readmemb / $readmemh ("<数据文件名>", <存储器名>, <起始地址>, <结束地址>);
$readmemb:
        /*读取二进制数据,读取文件内容只能包含:空白位置,注释行,二进制数
        数据中不能包含位宽说明和格式说明,每个数字必须是二进制数字。*/
$readmemh:
        /*读取十六进制数据,读取文件内容只能包含:空白位置,注释行,十六进制数
        数据中不能包含位宽说明和格式说明,每个数字必须是十六进制数字。*/
    /*当地址出现在数据文件中,格式为 @hh...h,地址与数字之间不允许空白位置,可出现多个地址*/

一个用户代码片段

"Reading and writing data from a file": {
		// "scope": "javascript,typescript",
		"prefix": "tb_file_rw",
		"body": [
			"",
			"reg     [ 7:0]  DataSource  [ 0:47];",
			"$$readmemh (\"Read_In_File.txt\", DataSource);",
			"",
			"integer Write_Out_File;",
			"Write_Out_File = $$fopen (\"Write_Out_File.txt\");",
			"$$fdisplay (Write_Out_File, \"@%h\\n%h\", Mpi_addr, Data_in);",
			"$$fclose (Write_Out_File);",
			"$2"
		],
		"description": "Reading and writing data from a file"
	},

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值