【无标题】

code review的注意事项:

1: 时钟边沿延迟驱动的写法

如下两种延迟驱动的写法,这两种写法有什么区别呢?
first type:使用上升沿后10ns时候的 c 值和 d 值计算 a 的值
second type: 使用上升沿时 c 值和 d 值计算 a 的值,并在10ns延迟后把计算的值赋给a;
推荐使用第二种写法

	// first type
	@(posedge clk);
	#10ns;
	a <= c + d;
	// second type
	@(posedge clk);
	a <= #10ns c + d ;

2:删除sim文件夹下core.*的文件

core.*文件对于仿真结果的没有任何影响

3:apb的b2b的简洁写法

while(1) begin
	@(posedge pclk);
	if(req != null) begin
		if(pwrite == 1'b0)
			// get read data
		// clone req to rsp
		seq_item_port.item_done(rsp);
	end
	seq_item_port.try_next_item(req);
	if(req != null) begin
		// drv apb command
		@(posedge pclk);
		penable <= 1'b1;
	end else begin
		bus_idle();
	end
end

4:cc_vcs.hier和ast_vcs.hier的作用

 -cm_hier : 用于指定代码覆盖率收集层次
 例如:
 -cm_hier +/-tree top.dut 0/1/2/n
 其中,"+"表示收集该层次的覆盖率,"-"表示不收集该层次的覆盖率
 "0" :表示收集当前层次及其所有子层次的覆盖率
 "1" :只收集当前层次的覆盖率
 "2" :收集当前层次以及下一层次的覆盖率
 "n" :收集当前层以及下n层的代码覆盖率
 
 -assert hier +/-tree top.sva 0/1/2
 指定收集特定层次的断言覆盖率

5:vsync_isp的断言改进写法

在仿真过程中,vsync_isp信号会一致与vsync_s保持一致

// 修改之前的写法
//这种写法每一个上升沿都会检查这个断言,无疑会拖慢仿真速度
property vsync_isp_check();
	@(posedge sclk)
	(vsync_isp == vsync_s);
endproperty

// 修改之后的写法
property vsync_isp_check();
	@(posedge sclk)
	($rose(vsync_s) || $fell(vsync_s) ) |-> (vsync_isp == vsync_s) 
endproperty

6:怎样从命令行拿sequence的名字,以发起不同的test case

使用命令行命令:+uvm_set_default_sequence

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值