ISE and Modelsim will run on any Athena machine. The executables are stored on a server. Vivado executables are stored on the local machines in the 6.111 lab so they run only on lab machines. The best solutions is to use ISE and Vivado locally - either in lab or on your laptop.
There are online Verilog emulators:
Here is an example of jdoodle Verilog.It takes a bit of time but it runs.
module jdoodle; reg reset; reg clock; reg go; wire [1:0] state; // Instantiate the unit-under-test fsm uut (.reset(reset), .clock(clock), .go(go), .state(state)); // Generate the clock initial clock <= 0; always #5 clock <= !clock; // 5ns half-period = 100MHz integer i; initial begin $display("starting"); #100; // Wait for FPGA to come out of reset (GSR clear) go <= 0; reset <= 1; // Assert reset @(negedge clock); // Wait for two falling clock edges @(negedge clock); reset <= 0; // Release reset @(negedge clock); if (state !== 2'h0) $display("%t: ERROR: FSM not reset!", $time); @(negedge clock); go <= 1; @(negedge clock); go <= 0; // Verify thatYou can put your Verilog module that you're writing down below and then make your testbench module the jdoodle module and that seems to work:advances properly for (i=1; i<4; i=i+1) begin if (state !== i) $display("%t: ERROR: FSM in state %d, expected %d!", $time, state, i); @(negedge clock); end // Verify that stays zero while is not asserted for (i=0; i<4; i=i+1) begin if (state !== 2'h0) $display("%t: ERROR: FSM in state %d, expected %d!", $time, state, 0); @(negedge clock); end $display("Done Success!!"); $stop; // Pasue simulation end endmodule module fsm (reset, clock, go, state); input reset; input clock; input go; output [1:0] state; reg [1:0] state; always @(posedge clock) if (reset) state <= 0; else case (state) 2'h0: state <= go ? 2'h1 : 2'h0; 2'h1: state <= 2'h2; 2'h2: state <= 2'h3; 2'h3: state <= 2'h0; endcase endmodule
The above is a fast and quick way to do Lpsets remotely. Don't rely on these toos for final projects.
Joe Steinmeyer 9/2018