examples: Update EVN example

Signed-off-by: David Shah <dave@ds0.me>
diff --git a/examples/ecp5_evn/Makefile b/examples/ecp5_evn/Makefile
index 88496ae..b977449 100644
--- a/examples/ecp5_evn/Makefile
+++ b/examples/ecp5_evn/Makefile
@@ -2,20 +2,21 @@
 
 all: ${PROJ}.bit
 
-
 %.json: %.v
 	yosys -p "synth_ecp5 -noccu2 -nobram -nomux -json $@" $<
 
 %_out.config: %.json
-	nextpnr-ecp5 --json $< --basecfg ../../misc/basecfgs/empty_lfe5um5g-85f.config --textcfg $@ --um5g-85k --package CABGA381
+	nextpnr-ecp5 --json $< --basecfg ../../misc/basecfgs/empty_lfe5um5g-85f.config --textcfg $@ --um5g-85k --package CABGA381 --lpf ecp5evn.lpf
 
 %.bit: %_out.config
-	ecppack $< $@
+	ecppack --svf ${PROJ}.svf $< $@
 
-%.svf: %.bit
-	../../tools/bit_to_svf.py $< $@
+${PROJ}.svf : ${PROJ}.bit
 
 prog: ${PROJ}.svf
 	openocd -f ../../misc/openocd/ecp5-evn.cfg -c "transport select jtag; init; svf $<; exit"
 
-.PHONY: prog
+clean:
+	rm -f *.svf *.bit *.config *.json
+
+.PHONY: prog clean
diff --git a/examples/ecp5_evn/blinky.v b/examples/ecp5_evn/blinky.v
index 5d48712..5730865 100644
--- a/examples/ecp5_evn/blinky.v
+++ b/examples/ecp5_evn/blinky.v
@@ -1,36 +1,4 @@
-module top(input clk_pin, input btn_pin, output [7:0] led_pin);
-
-    wire clk;
-    wire [7:0] led;
-    wire btn;
-
-    (* LOC="A10" *) (* IO_TYPE="LVCMOS33" *)
-    TRELLIS_IO #(.DIR("INPUT")) clk_buf (.B(clk_pin), .O(clk));
-
-    // Pressing and holding SW4 will trigger led array fading
-    (* LOC="P4" *) (* IO_TYPE="LVCMOS33" *)
-    TRELLIS_IO #(.DIR("INPUT")) btn_buf (.B(btn_pin), .O(btn));
-
-    (* LOC="B17" *) (* IO_TYPE="LVCMOS33" *)
-    TRELLIS_IO #(.DIR("OUTPUT")) led_buf_0 (.B(led_pin[0]), .I(!led[0]));
-    (* LOC="A17" *) (* IO_TYPE="LVCMOS33" *)
-    TRELLIS_IO #(.DIR("OUTPUT")) led_buf_1 (.B(led_pin[1]), .I(!led[1]));
-    (* LOC="C17" *) (* IO_TYPE="LVCMOS33" *)
-    TRELLIS_IO #(.DIR("OUTPUT")) led_buf_2 (.B(led_pin[2]), .I(!led[2]));
-    (* LOC="B18" *) (* IO_TYPE="LVCMOS33" *)
-    TRELLIS_IO #(.DIR("OUTPUT")) led_buf_3 (.B(led_pin[3]), .I(!led[3]));
-
-    (* LOC="A18" *) (* IO_TYPE="LVCMOS33" *)
-    TRELLIS_IO #(.DIR("OUTPUT")) led_buf_4 (.B(led_pin[4]), .I(!led[4]));
-    (* LOC="B19" *) (* IO_TYPE="LVCMOS33" *)
-    TRELLIS_IO #(.DIR("OUTPUT")) led_buf_5 (.B(led_pin[5]), .I(!led[5]));
-    (* LOC="A12" *) (* IO_TYPE="LVCMOS33" *)
-    TRELLIS_IO #(.DIR("OUTPUT")) led_buf_6 (.B(led_pin[6]), .I(!led[6]));
-    (* LOC="A13" *) (* IO_TYPE="LVCMOS33" *)
-    TRELLIS_IO #(.DIR("OUTPUT")) led_buf_7 (.B(led_pin[7]), .I(!led[7]));
-
-
-
+module top(input clk, input btn, output [7:0] led);
     localparam ctr_width = 24;
     localparam ctr_max = 2**ctr_width - 1;
     reg [ctr_width-1:0] ctr = 0;
diff --git a/examples/ecp5_evn/ecp5evn.lpf b/examples/ecp5_evn/ecp5evn.lpf
new file mode 100644
index 0000000..aaa9f28
--- /dev/null
+++ b/examples/ecp5_evn/ecp5evn.lpf
@@ -0,0 +1,23 @@
+LOCATE COMP "clk" SITE "A10";
+IOBUF PORT "clk" IO_TYPE=LVCMOS33;
+
+LOCATE COMP "btn" SITE "P4";
+IOBUF PORT "btn" IO_TYPE=LVCMOS33;
+
+LOCATE COMP "led[0]" SITE "B17";
+LOCATE COMP "led[1]" SITE "A17";
+LOCATE COMP "led[2]" SITE "C17";
+LOCATE COMP "led[3]" SITE "B18";
+LOCATE COMP "led[4]" SITE "A18";
+LOCATE COMP "led[5]" SITE "B19";
+LOCATE COMP "led[6]" SITE "A12";
+LOCATE COMP "led[7]" SITE "F16";
+
+IOBUF PORT "led[0]" IO_TYPE=LVCMOS33;
+IOBUF PORT "led[1]" IO_TYPE=LVCMOS33;
+IOBUF PORT "led[2]" IO_TYPE=LVCMOS33;
+IOBUF PORT "led[3]" IO_TYPE=LVCMOS33;
+IOBUF PORT "led[4]" IO_TYPE=LVCMOS33;
+IOBUF PORT "led[5]" IO_TYPE=LVCMOS33;
+IOBUF PORT "led[6]" IO_TYPE=LVCMOS33;
+IOBUF PORT "led[7]" IO_TYPE=LVCMOS33;
diff --git a/misc/openocd/ulx3s_85k.cfg b/misc/openocd/ulx3s_85k.cfg
new file mode 100644
index 0000000..f3e792f
--- /dev/null
+++ b/misc/openocd/ulx3s_85k.cfg
@@ -0,0 +1,13 @@
+interface ft232r
+ft232r_vid_pid 0x0403 0x6015
+# ULX3S specific GPIO setting
+ft232r_tck_num DSR
+ft232r_tms_num DCD
+ft232r_tdi_num RI
+ft232r_tdo_num CTS
+# trst/srst are not used but must have different values than above
+ft232r_trst_num RTS
+ft232r_srst_num DTR
+adapter_khz 1000
+
+jtag newtap ecp5 tap -irlen 8 -expected-id 0x41113043