// represents the Ben Eater 8bit computer `timescale 1us/1us module eater_computer( output [7:0] debug_bus ); logic clk_in; /* verilator public_on */ tri [7:0] bus, A_out, B_out; logic A_to_bus, bus_to_A, B_to_bus, bus_to_B, INS_to_bus, bus_to_INS, ALU_to_bus ; assign debug_bus = bus; /* verilator public_off */ eater_register A ( .clk_in(clk_in), .en_store_in(bus_to_A), .en_output_in(A_to_bus), .data_in(bus), .bus_out(bus), .always_out(A_out) // .data(bus) ); eater_register B ( .clk_in(clk_in), .en_store_in(bus_to_B), .en_output_in(B_to_bus), .data_in(bus), .bus_out(bus), .always_out(B_out) // .data(bus) ); tri [7:0] ins_bus_out; assign bus[3:0] = ins_bus_out[3:0]; eater_register INS ( .clk_in(clk_in), .en_store_in(bus_to_INS), .en_output_in(INS_to_bus), .data_in(bus), .bus_out(ins_bus_out), .always_out() // .data(ins_bus_out) ); eater_alu alu ( .clk_in(clk_in), .en_output_in(ALU_to_bus), .A_in(A_out), .B_in(B_out), .subtract_n_add_in(0), .bus_out(bus) ); `ifdef VERILATOR logic [7:0] debug_value; logic debug_enable; bus_writer debugger ( .in_value(debug_value), .in_write_to_output(debug_enable), .out_value(bus) ); initial begin $dumpfile("simpc.vvp"); $dumpvars(); A_to_bus = 0; B_to_bus = 0; INS_to_bus = 0; bus_to_A = 0; bus_to_B = 0; bus_to_INS = 0; clk_in = 0; debug_enable = 0; debug_value = 'z; end always #2 clk_in = ~clk_in; initial begin @(negedge clk_in); debug_value = 'haa; debug_enable = 1; bus_to_A = 1; @(negedge clk_in); bus_to_A = 0; debug_value = 'hbb; bus_to_B = 1; @(negedge clk_in); bus_to_B = 0; debug_value = 'hcc; bus_to_INS = 1; @(negedge clk_in); debug_enable = 0; debug_value = 'z; bus_to_INS = 0; @(negedge clk_in); A_to_bus = 1; @(negedge clk_in); #10 $finish(); end `endif endmodule