sv 环境搭建流程

sv 环境搭建流程

1.打开要求文档,打开.v文件并阅读。

了解 目的,功能,输入输出,计算时钟周期
时钟频率x时钟周期=1 (1m hz对应时钟周期为1000ns)

2.根据DUT的输入输出完成xx_interface.sv

对于TB来说 ,DUT输入输出信号方向与TB信号方向相反.

3.顶层模块 top_xx.sv的编写

顶层文件中
(1 包含 SYSTEM CLOCK的生成(forever #xx xxxx;)
(2 interface的例化(首先例化interface,并与系统时钟相连,interface只需要input bit clock)
(3 program 的例化括号里只需连接例化出的interface的名字
(4 DUT的例化 举例

fifo dut_fifo(
					.dut的端口a(interface名.a),	
					.dut的端口b(interface名.b),
					...
					)

这里的连接包括interface.clk,全部连接好之后完成
(5 可以把$fsdbDumpfile ();
$fsdbDumpMDA();
$fsdbDumpvars (0,”顶层模块的名字”);(不加名字更好,不然verdi里没法把其他模块的信号拉出来看.)
写在这里的initial begin end之间

4.program xxx的编写(interface名 例化名)

`timescale 1ns/10ps
`include”packet.sv”
`include”ScoreBoard.sv”

program (interface io_a,io_b) 
logic;
bit;
parameter;
类的对象例化;(packet,scoreboard)


initial begin 
	new();//需要随机的信号
//==================================================
//将这些部分集成为一个不会死循环的大task,便于复用
//task main_process();
	reset();
	config();
	fork
	begin
		gen();//随机or定向产生信号
		drive();//发送信号
	end
	begin
		rec();//forever 接受信号
	end
	begin
		sb.compare(); //forever比较信号
		(compare完毕删除数组及计数变量,使得task可以在一个program	复用)
	end
	begin
		(看门狗定时diasble任务,退出程序,避免死循环,亦或者可以使用flag定量	  结束任务,更合理.)
	end
join
//endtask:main_process
//=================================================
end


//===================================
//tasks

task reset();

endtask:reset

task config();

endtask:config

task gen();

endtask:xxx

...

====================================

endprogram

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

brisk.y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值