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

Subversion Repositories bustap-jtag

[/] [bustap-jtag/] [trunk/] [sim/] [up_bfm_sv.v] - Diff between revs 9 and 13

Only display areas with differences | Details | Blame | View Log

Rev 9 Rev 13
`timescale 1ns/1ns
`timescale 1ns/1ns
 
 
module up_bfm_sv
module up_bfm_sv
(
(
        input         up_clk,
        input         up_clk,
        output        up_wbe,
        output        up_wbe,
        output        up_csn,
        output        up_csn,
        output [15:2] up_addr,
        output [15:2] up_addr,
        inout  [31:0] up_data_io
        inout  [31:0] up_data_io
);
);
 
 
import "DPI-C" context task up_bfm_c
import "DPI-C" context task up_bfm_c
(
(
        input real fw_delay
        input real fw_delay
);
);
 
 
reg  [15:0] up_addr_o;
reg  [15:0] up_addr_o;
reg  [31:0] up_data_o;
reg  [31:0] up_data_o;
wire [31:0] up_data_i;
wire [31:0] up_data_i;
reg         up_wbe_o;
reg         up_wbe_o;
reg         up_csn_o;
reg         up_csn_o;
 
 
export "DPI-C" task cpu_wr;
export "DPI-C" task cpu_wr;
task cpu_wr(input int addr, input int data);
task cpu_wr(input int addr, input int data);
        integer i;
        integer i;
        //$display("wr %08x %08x", addr, data);
        //$display("wr %08x %08x", addr, data);
        for (i=0; i<2; i=i+1) @(posedge up_clk);
        for (i=0; i<2; i=i+1) @(posedge up_clk);
        up_addr_o = addr;
        up_addr_o = addr;
        up_data_o = data;
        up_data_o = data;
        up_wbe_o  = 1'b0;
        up_wbe_o  = 1'b0;
        up_csn_o  = 1'b0;
        up_csn_o  = 1'b0;
        for (i=0; i<20; i=i+1) @(posedge up_clk);
        for (i=0; i<20; i=i+1) @(posedge up_clk);
        up_csn_o  = 1'b1;
        up_csn_o  = 1'b1;
        for (i=0; i<1; i=i+1) @(posedge up_clk);
        for (i=0; i<1; i=i+1) @(posedge up_clk);
        up_addr_o = addr;
        up_addr_o = addr;
        up_data_o = data;
        up_data_o = data;
        up_wbe_o  = 1'b1;
        up_wbe_o  = 1'b1;
        up_csn_o  = 1'b1;
        up_csn_o  = 1'b1;
        for (i=0; i<2; i=i+1) @(posedge up_clk);
        for (i=0; i<2; i=i+1) @(posedge up_clk);
endtask
endtask
 
 
export "DPI-C" task cpu_rd;
export "DPI-C" task cpu_rd;
task cpu_rd(input int addr, output int data);
task cpu_rd(input int addr, output int data);
        integer i;
        integer i;
        for (i=0; i<2; i=i+1) @(posedge up_clk);
        for (i=0; i<2; i=i+1) @(posedge up_clk);
        up_addr_o = addr;
        up_addr_o = addr;
        up_wbe_o  = 1'b1;
        up_wbe_o  = 1'b1;
        up_csn_o  = 1'b0;
        up_csn_o  = 1'b0;
        for (i=0; i<20; i=i+1) @(posedge up_clk);
        for (i=0; i<20; i=i+1) @(posedge up_clk);
        data      = up_data_i;
        data      = up_data_i;
        for (i=0; i<1; i=i+1) @(posedge up_clk);
        for (i=0; i<1; i=i+1) @(posedge up_clk);
        up_addr_o = addr;
        up_addr_o = addr;
        up_wbe_o  = 1'b1;
        up_wbe_o  = 1'b1;
        up_csn_o  = 1'b1;
        up_csn_o  = 1'b1;
        for (i=0; i<2; i=i+1) @(posedge up_clk);
        for (i=0; i<2; i=i+1) @(posedge up_clk);
        //$display("rd %08x %08x", addr, data);
        //$display("rd %08x %08x", addr, data);
endtask
endtask
 
 
export "DPI-C" task cpu_hd;
export "DPI-C" task cpu_hd;
task cpu_hd(input int t);
task cpu_hd(input int t);
        integer i;
        integer i;
        //$display("#%d",t);
        //$display("#%d",t);
        for (i=0; i<=t; i=i+1) @(posedge up_clk);
        for (i=0; i<=t; i=i+1) @(posedge up_clk);
endtask
endtask
 
 
assign up_wbe     = up_wbe_o;
assign up_wbe     = up_wbe_o;
assign up_csn     = up_csn_o;
assign up_csn     = up_csn_o;
assign up_addr    = up_addr_o[15:2];
assign up_addr    = up_addr_o[15:2];
assign up_data_io = !up_wbe_o? up_data_o : 32'bzzzzzzzz;
assign up_data_io = !up_wbe_o? up_data_o : 32'bzzzzzzzz;
assign up_data_i  = up_data_io;
assign up_data_i  = up_data_io;
 
 
 
 
 
 
// start cpu bfm C model
// start cpu bfm C model
reg up_start;
reg up_start;
initial begin
initial begin
 
        up_wbe_o  = 1'b1;
 
        up_csn_o  = 1'b1;
 
        up_addr_o = 'd0;
 
        up_data_o = 'd0;
 
 
        @(posedge up_start);
        @(posedge up_start);
        #100 up_bfm_c(5);
        #100 up_bfm_c(5);
end
end
 
 
endmodule
endmodule
 
 

powered by: WebSVN 2.1.0

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