blob: fe37549d7750ea63a9ae7fb8f94bd63f60c6cace [file] [log] [blame]
`define usbbfm u_usb_agent
task usb_test2;
reg [6:0] address;
reg [3:0] endpt;
reg [3:0] Status;
integer i,j;
reg [7:0] startbyte;
reg [15:0] mask;
integer MaxPktSize;
reg [3:0] PackType;
parameter MYACK = 4'b0000,
MYNAK = 4'b0001,
MYSTALL = 4'b0010,
MYTOUT = 4'b0011,
MYIVRES = 4'b0100,
MYCRCER = 4'b0101;
begin
address = 7'b000_0001;
endpt = 4'b0000;
$display("%0d: USB Reset -----", $time);
`usbbfm.usbhw_reset;
$display("%0d: Set Address = 1 -----", $time);
`usbbfm.SetAddress (address);
`usbbfm.setup(7'h00, 4'h0, Status);
`usbbfm.printstatus(Status, MYACK);
`usbbfm.status_IN(7'h00, endpt, Status);
`usbbfm.printstatus(Status, MYACK);
#5000;
$display("%0d: Set configuration -----", $time);
`usbbfm.SetConfiguration(2'b01);
`usbbfm.setup(address, 4'b0000, Status);
`usbbfm.printstatus(Status, MYACK);
`usbbfm.status_IN(address, 4'b0000, Status);
`usbbfm.printstatus(Status, MYACK);
#2000;
$display("%0d: Configuration done !!!!!!", $time);
// write UART registers through USB
//////////////////////////////////////////////////////////////////
// register word write
$display("%0d: Performing Register Word Write------------", $time);
`usbbfm.VenRegWordWr (address, 32'h0, 32'h11223344);
`usbbfm.VenRegWordWr (address, 32'h4, 32'h22334455);
`usbbfm.VenRegWordWr (address, 32'h8, 32'h33445566);
`usbbfm.VenRegWordWr (address, 32'hC, 32'h44556677);
`usbbfm.VenRegWordWr (address, 32'h10, 32'h55667788);
`usbbfm.VenRegWordWr (address, 32'h14, 32'h66778899);
`usbbfm.VenRegWordWr (address, 32'h18, 32'h778899AA);
`usbbfm.VenRegWordWr (address, 32'h1C, 32'h8899AABB);
`usbbfm.VenRegWordWr (address, 32'h20, 32'h99AABBCC);
`usbbfm.VenRegWordWr (address, 32'h24, 32'hAABBCCDD);
`usbbfm.VenRegWordWr (address, 32'h28, 32'hBBCCDDEE);
`usbbfm.VenRegWordWr (address, 32'h2C, 32'hCCDDEEFF);
#500;
// register word Read
$display("%0d: Performing Register Word Read------------", $time);
`usbbfm.VenRegWordRdCmp (address, 32'h0 , 32'h11223344);
`usbbfm.VenRegWordRdCmp (address, 32'h4 , 32'h22334455);
`usbbfm.VenRegWordRdCmp (address, 32'h8 , 32'h33445566);
`usbbfm.VenRegWordRdCmp (address, 32'hC , 32'h44556677);
`usbbfm.VenRegWordRdCmp (address, 32'h10, 32'h55667788);
`usbbfm.VenRegWordRdCmp (address, 32'h14, 32'h66778899);
`usbbfm.VenRegWordRdCmp (address, 32'h18, 32'h778899AA);
`usbbfm.VenRegWordRdCmp (address, 32'h1C, 32'h8899AABB);
`usbbfm.VenRegWordRdCmp (address, 32'h20, 32'h99AABBCC);
`usbbfm.VenRegWordRdCmp (address, 32'h24, 32'hAABBCCDD);
`usbbfm.VenRegWordRdCmp (address, 32'h28, 32'hBBCCDDEE);
`usbbfm.VenRegWordRdCmp (address, 32'h2C, 32'hCCDDEEFF);
#500
$display ("USB doing register writes and reads to USB block end \n");
test_control.finish_test;
end
endtask