SystemC学习(4)— 在VCS中运行SystemC
一、前言
二、仅包含SystemC的仿真
源文件使用上一篇:SystemC学习(3)— APB_SRAM的建模与测试
编写makefile
如下所示:
all: comp sim
comp:
vcs -full64 -debug_acc+pp+dmptf -debug_region+cell+encrypt -sysc=show_sc_main \
-sysc sc_main apb_sram/main.cpp -l comp.log
sim:
./simv -ucli -do ./vcs.tcl -l sim.log
clean:
rm -rf csrc/ simv simv.daidir
cleanall: clean
rm -rf 64 AN.DB/ ucli.key novas.* *Log *log
编写vcs.tcl
如下所示:
fsdbDumpvars sc_main.dut 0
run
finish
编译运行后可以打开novas.fsdb
波形文件如下所示:
三、Verilog和SystemC混合仿真
我们将apb_sram修为如下apb_sram.v
文件:
parameter ADDR_SIZE = 32;
parameter DATA_SIZE = 32;
module apb_sram(
input apb_pclk,
input apb_presetn,
input apb_psel,
input apb_penable,
input apb_pwrite,
input [ADDR_SIZE-1:0] apb_paddr,
input [DATA_SIZE-1:0] apb_pwdata,
output reg [DATA_SIZE-1:0] apb_prdata,
output reg apb_pready,
output reg apb_pslverr
);
bit [DATA_SIZE-1:0] mem[4096];
always @(posedge apb_pclk or negedge apb_presetn) begin
if(!apb_presetn) begin
apb_prdata <= 0;
apb_pready <= 0;
apb_pslverr <= 0;
end
else if((apb_psel==1) && (apb_penable==0) && (apb_pwrite==0)) begin
apb_prdata <= mem[apb_paddr[ADDR_SIZE-1:2]];
end
else if((apb_psel==1) && (apb_penable==1) && (apb_pwrite==0)) begin
apb_pready <= 1;
end
else if((apb_psel==1) && (apb_penable==1) && (apb_pwrite==1)) begin
mem[apb_paddr[ADDR_SIZE-1:2]] <= apb_pwdata;
apb_pready <= 1;
end
else begin
apb_prdata <= apb_prdata;
apb_pready <= 0;
end
end
endmodule
makefile
修改为如下所示:
all: comp sim
comp:
vlogan -full64 -sverilog -sysc -sc_model apb_sram -sc_portmap the.map apb_sram/apb_sram.v
vcs -full64 -debug_acc+pp+dmptf -debug_region+cell+encrypt \
-sysc apb_sram/main.cpp -sysc=show_sc_main -l comp.log -timescale=1ns/1ps
sim:
./simv -ucli -do ./vcs.tcl -l sim.log
clean:
rm -rf csrc/ simv simv.daidir
cleanall: clean
rm -rf 64 AN.DB/ ucli.key novas.* *Log *log
the.map
文件如下所示:
#port width Verilog SystemC
ina 32 bitvector int
inb 32 bitvector int
outx 32 bitvector int
编译运行后可以打开novas.fsdb
波形文件看到如下所示:
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » SystemC学习(4)— 在VCS中运行SystemC
发表评论 取消回复