blob: 1bc56a43cfcbc6fc71b30f71f864629b3bcc2495 [file] [log] [blame] [edit]
module test;
integer i;
reg [7:0] c;
reg [31:0] fd[15:0];
initial begin
// Open some MCDs and FD's to play with
$display("Open some files");
for (i = 0; i < 4; i = i+1) begin
fd[i] = $fopen("/dev/null");
$display("open MCD returned %x", fd[i]);
end
for (i = 4; i < 6; i = i+1) begin
fd[i] = $fopen("/dev/null", "r");
$display("open FD ('r') returned %x", fd[i]);
end
for (i = 6; i < 8; i = i+1) begin
fd[i] = $fopen("/dev/null", "w");
$display("open FD ('w') returned %x", fd[i]);
end
for (i = 8; i < 10; i = i+1) begin
fd[i] = $fopen("/dev/null", "a");
$display("open FD ('a') returned %x", fd[i]);
end
// Show what's open
$test;
// access some of the files
$fdisplay(1, "write to MCD 1");
$fdisplay(2, "write to MCD 2");
$fdisplay(32'h8000_0000, "write to FD 0"); // stdin so invisible
$fdisplay(32'h8000_0001, "write to FD 1");
$fdisplay(32'h8000_0002, "write to FD 2");
// close all the stuff we opened
$display("Close some files");
for (i = 0; i < 10; i = i+1) begin
$fclose(fd[i]);
end
// try closing special and already closed
$fclose(1);
$fclose(2);
$fclose(32'h4000_0000);
$fclose(32'h8000_0000);
$fclose(32'h8000_0001);
$fclose(32'h8000_0002);
$fclose(32'h8000_0003);
// Now for something really insane
$fclose(32'h81ca_1ca0);
// Show what's open
$test;
// access to null MCD/FD's
$fdisplay(32'h4000_0000, "write to NULL MCD"); // invisible
$fdisplay(32'h8000_000f, "write to NULL FD"); // invisible
end
endmodule