SystemVerilog 接口的使用与仿真

摘要:在目前接触的项目中用到了systemverilog,研究了一下接口的使用以及如何去仿真,接口的使用非常关键,接口能够简化代码,并且方便管理。

目录

1.接口

2.接口的仿真

总结

参考文章: 


1.接口

我在碰到使用接口的时候,FPGA主要是作为slave,从软件(master)那里获取数据,所以平常使用的sudo devmem 0xA026BF00 32 0x9等等一些操作命令,都是通过软件去在某个地址输入值,然后经过串口或者网口,传到FPGA,最后对FPGA的一些寄存器进行write或者read。

使用接口,就需要定义一个纯接口的文件,但是接口文件是不能够直接使用的,它只能作为library的一员存在,所以,需要定义另外一个文件去使用接口,这样才能够起效。

比如这是一个接口文件

我们需要去使用这个接口文件,写成一个新的module。这里就可以去设置默认值,以及什么条件下,这个接口的值可以被更改。

module jb_test_regs (
	input							clk ,
	input							reset,
    jb_test_ctrl_if.ctrl		    IFP_test_ctrl_0
	//jb_test_ctrl_if.ctrl_input		IFP_test_ctrl_input
);

//	input and output	
	logic	[31:0]					temp_pa_indicate			;
	logic	[31:0]					TDD_model_sel				;


assign  IFP_test_ctrl_0.debug_rw[0]	  =	TDD_model_sel;
assign	IFP_test_ctrl_0.debug_rw[1]   =	0;



always_ff @ (posedge clk) begin
	if(reset) begin
		TDD_model_sel				<= 32'd0;
	end
	else begin
		TDD_model_sel				<= IFP_test_ctrl_0.test_switch[0];
	end
end

endmodule

然后在顶层里面,加入这个模块,以及接口定义。

(在我的项目中这个文件又被封装成regmag_top,然后将regmap_top加入顶层)

 这样,基本就完成了接口的使用。

2.接口的仿真

这边研究了一下,其实最方便的还是,直接在使用接口的时候去设定默认值就是最方便的使用,记住更改的地方,最后合工程的时候改掉即可,毕竟master是最终的软件,FPGA的一些接口只是作为slave存在。如果非要在tb文件中去对接口仿真,那么需要在顶层中加入接口

然后去掉         jb_test_ctrl_if            IFP_test_ctrl();

这样就可以在写tb的时候去控制接口。但是这样子,感觉并不是很方便。

总结

大部分工程应该都有现成的接口模板,问题主要还是在仿真模块,个人感觉在最开始使用接口的module里面改值就是最方便的控制接口的办法,只需要注意还原即可。

参考文章: 

SystemVerilog Interface

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值