+++ /dev/null
-ship: Debug
-
-== Ports ===========================================================
-data in: in
-dockless out: out
-
-percolate down: uart_in 1
-percolate up: uart_out 1
-percolate up: rst_out 1
-percolate down: rst_in 1
-
-== Constants ========================================================
-
-== TeX ==============================================================
-
-percolate up: uart_rts 1
-percolate down: uart_cts 1
-
-This ship is used for debugging. It has only one port, {\tt in}.
-Programmers should send debug report values to this port. How such
-values are reported back to the programmer doing the debugging is left
-unspecified.
-
-\subsection*{To Do}
-
-Provide an {\tt inOp} port and use opcode ports \cite{am25} to
-effectively allow multiple independent ``debug streams''
-
-Provide a way to programmatically read back the output of the debug
-ship.
-
-== Fleeterpreter ====================================================
-public void service() {
- if (box_in.dataReadyForShip())
- ((Interpreter)getFleet()).debug(box_in.removeDataForShip());
-}
-
-== FleetSim ==============================================================
-
-== FPGA ==============================================================
-
- wire break_i;
- reg break_last;
- reg send_k;
- initial send_k = 0;
-
- reg [`WORDWIDTH-1:0] data_to_host_full_word;
- reg [7:0] count_in;
- reg [7:0] count_out;
- reg [49:0] out_d;
- assign out_d_ = out_d;
-
- wire data_to_host_full;
- reg [7:0] data_to_host;
- wire data_to_fleet_empty;
- wire [7:0] data_to_fleet;
- reg data_to_host_write_enable;
- reg data_to_fleet_read_enable;
-
- wire sio_ce;
- wire sio_ce_x4;
-
- wire break;
- wire uart_cts;
- assign uart_cts = 0;
- assign rst_out = rst_in || break;
-
- // fst=3 means clock divider is 3+2=5 for a 50Mhz clock => 10Mhz
- // using a 33Mhz clock,
- // 33.333Mhz / 38400hz * 4 = 217.013 => 215+2,1
- sasc_brg sasc_brg(clk, !rst_in, 215, 1, sio_ce, sio_ce_x4);
- sasc_top sasc_top(clk, !rst_in,
- uart_in,
- uart_out,
- uart_cts,
- uart_rts,
- sio_ce,
- sio_ce_x4,
- data_to_host,
- data_to_fleet,
- data_to_fleet_read_enable,
- data_to_host_write_enable,
- data_to_host_full,
- data_to_fleet_empty,
- break,
- break_i);
-
- // break and break are _active high_
- always @(posedge clk) break_last <= break;
- assign break_i = break && !break_last;
- assign break_done = !break && break_last;
-
- // fpga -> host
- always @(posedge clk) begin
- if (rst) begin
- count_in <= 0;
- count_out <= 0;
- `reset
- end else begin
-
- `cleanup
-
- // fpga -> host
- data_to_host_write_enable <= 0;
- if (break_i) begin
- end else if (break_done) begin
- data_to_host_write_enable <= 1;
- data_to_host <= 111;
- send_k <= 1;
- end else if (send_k) begin
- data_to_host_write_enable <= 1;
- data_to_host <= 107;
- send_k <= 0;
- end else if (count_out==0 && `in_full) begin
- `drain_in
- data_to_host_full_word <= in_d;
- count_out <= 8;
- end else if (count_out!=0 && !data_to_host_full && !data_to_host_write_enable) begin
- data_to_host <= { 2'b0, data_to_host_full_word[5:0] };
- data_to_host_full_word <= (data_to_host_full_word >> 6);
- data_to_host_write_enable <= 1;
- count_out <= count_out-1;
- end
-
- // host -> fpga
- data_to_fleet_read_enable <= 0;
- if (!data_to_fleet_empty && `out_empty && !data_to_fleet_read_enable) begin
- out_d <= { out_d[43:0], data_to_fleet[5:0] };
- data_to_fleet_read_enable <= 1;
- if (count_in==9) begin
- count_in <= 0;
- `fill_out
- end else begin
- count_in <= count_in+1;
- end
- end
-
- end
- end
-
-== UCF =================================================================
-
-Net clk_pin LOC=AH15;
-Net clk_pin PERIOD = 10 ns HIGH 50%; # 100Mhz
-
-# 33mhz clock
-#Net clk_pin LOC=AH17;
-#Net clk_pin TNM_NET = clk_pin;
-#TIMESPEC TS_clk_pin = PERIOD clk_pin 30 ns HIGH 50%; # 33Mhz
-
-Net rst_pin LOC=E9;
-Net rst_pin PULLUP;
-Net rst_pin TIG;
-
-#Net uart_cts LOC=G6;
-#Net uart_cts IOSTANDARD = LVCMOS33;
-#Net uart_cts TIG;
-
-#Net uart_rts LOC=F6;
-#Net uart_rts IOSTANDARD = LVCMOS33;
-#Net uart_rts TIG;
-
-Net uart_in LOC=AG15;
-#Net uart_in IOSTANDARD = LVCMOS33;
-Net uart_in TIG;
-Net uart_in PULLUP;
-
-Net uart_out LOC=AG20;
-#Net uart_out IOSTANDARD = LVCMOS33;
-Net uart_out TIG;
-Net uart_out PULLUP;
-
-NET gpio_sw_c LOC="AJ6"; # Bank 18, Vcco=3.3V, No DCI
-
-NET gpio_led_c LOC="E8"; # Bank 20, Vcco=3.3V, DCI using 49.9 ohm resistors
-NET gpio_led_e LOC="AG23"; # Bank 2, Vcco=3.3V
-NET gpio_led_n LOC="AF13"; # Bank 2, Vcco=3.3V
-NET gpio_led_s LOC="AG12"; # Bank 2, Vcco=3.3V
-NET gpio_led_w LOC="AF23"; # Bank 2, Vcco=3.3V
-
-NET gpio_led_0 LOC="H18"; # Bank 3, Vcco=2.5V, No DCI
-NET gpio_led_1 LOC="L18"; # Bank 3, Vcco=2.5V, No DCI
-NET gpio_led_2 LOC="G15"; # Bank 3, Vcco=2.5V, No DCI
-NET gpio_led_3 LOC="AD26" | IOSTANDARD="LVCMOS18"; # Bank 21, Vcco=1.8V, DCI using 49.9 ohm resistors
-NET gpio_led_4 LOC="G16"; # Bank 3, Vcco=2.5V, No DCI
-NET gpio_led_5 LOC="AD25" | IOSTANDARD="LVCMOS18"; # Bank 21, Vcco=1.8V, DCI using 49.9 ohm resistors
-NET gpio_led_6 LOC="AD24" | IOSTANDARD="LVCMOS18"; # Bank 21, Vcco=1.8V, DCI using 49.9 ohm resistors
-NET gpio_led_7 LOC="AE24" | IOSTANDARD="LVCMOS18"; # Bank 21, Vcco=1.8V, DCI using 49.9 ohm resistors
-
-
-
-
-
-== Test ================================================================
-#expect 25
-
-#ship debug : Debug
-
-debug.in:
- set word= 25;
- deliver;
-
-== Contributors =========================================================
-Adam Megacz <megacz@cs.berkeley.edu>