OpenCores
URL https://opencores.org/ocsvn/bustap-jtag/bustap-jtag/trunk

Subversion Repositories bustap-jtag

[/] [bustap-jtag/] [trunk/] [sim/] [up_bfm_sv.v] - Blame information for rev 9

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 9 ash_riple
`timescale 1ns/1ns
2
 
3
module up_bfm_sv
4
(
5
        input         up_clk,
6
        output        up_wbe,
7
        output        up_csn,
8
        output [15:2] up_addr,
9
        inout  [31:0] up_data_io
10
);
11
 
12
import "DPI-C" context task up_bfm_c
13
(
14
        input real fw_delay
15
);
16
 
17
reg  [15:0] up_addr_o;
18
reg  [31:0] up_data_o;
19
wire [31:0] up_data_i;
20
reg         up_wbe_o;
21
reg         up_csn_o;
22
 
23
export "DPI-C" task cpu_wr;
24
task cpu_wr(input int addr, input int data);
25
        integer i;
26
        //$display("wr %08x %08x", addr, data);
27
        for (i=0; i<2; i=i+1) @(posedge up_clk);
28
        up_addr_o = addr;
29
        up_data_o = data;
30
        up_wbe_o  = 1'b0;
31
        up_csn_o  = 1'b0;
32
        for (i=0; i<20; i=i+1) @(posedge up_clk);
33
        up_csn_o  = 1'b1;
34
        for (i=0; i<1; i=i+1) @(posedge up_clk);
35
        up_addr_o = addr;
36
        up_data_o = data;
37
        up_wbe_o  = 1'b1;
38
        up_csn_o  = 1'b1;
39
        for (i=0; i<2; i=i+1) @(posedge up_clk);
40
endtask
41
 
42
export "DPI-C" task cpu_rd;
43
task cpu_rd(input int addr, output int data);
44
        integer i;
45
        for (i=0; i<2; i=i+1) @(posedge up_clk);
46
        up_addr_o = addr;
47
        up_wbe_o  = 1'b1;
48
        up_csn_o  = 1'b0;
49
        for (i=0; i<20; i=i+1) @(posedge up_clk);
50
        data      = up_data_i;
51
        for (i=0; i<1; i=i+1) @(posedge up_clk);
52
        up_addr_o = addr;
53
        up_wbe_o  = 1'b1;
54
        up_csn_o  = 1'b1;
55
        for (i=0; i<2; i=i+1) @(posedge up_clk);
56
        //$display("rd %08x %08x", addr, data);
57
endtask
58
 
59
export "DPI-C" task cpu_hd;
60
task cpu_hd(input int t);
61
        integer i;
62
        //$display("#%d",t);
63
        for (i=0; i<=t; i=i+1) @(posedge up_clk);
64
endtask
65
 
66
assign up_wbe     = up_wbe_o;
67
assign up_csn     = up_csn_o;
68
assign up_addr    = up_addr_o[15:2];
69
assign up_data_io = !up_wbe_o? up_data_o : 32'bzzzzzzzz;
70
assign up_data_i  = up_data_io;
71
 
72
 
73
 
74
// start cpu bfm C model
75
reg up_start;
76
initial begin
77
        @(posedge up_start);
78
        #100 up_bfm_c(5);
79
end
80
 
81
endmodule

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.