diff options
Diffstat (limited to 'fpga_interchange/examples')
-rw-r--r-- | fpga_interchange/examples/boards/CMakeLists.txt | 8 | ||||
-rw-r--r-- | fpga_interchange/examples/remap_nexus.v | 4 | ||||
-rw-r--r-- | fpga_interchange/examples/remap_xilinx.v (renamed from fpga_interchange/examples/remap.v) | 0 | ||||
-rw-r--r-- | fpga_interchange/examples/tests.cmake | 9 | ||||
-rw-r--r-- | fpga_interchange/examples/tests/counter/CMakeLists.txt | 14 | ||||
-rw-r--r-- | fpga_interchange/examples/tests/counter/lifcl17.xdc | 14 | ||||
-rw-r--r-- | fpga_interchange/examples/tests/counter/run_nexus.tcl | 15 | ||||
-rw-r--r-- | fpga_interchange/examples/tests/counter/run_xilinx.tcl (renamed from fpga_interchange/examples/tests/counter/run.tcl) | 0 |
8 files changed, 61 insertions, 3 deletions
diff --git a/fpga_interchange/examples/boards/CMakeLists.txt b/fpga_interchange/examples/boards/CMakeLists.txt index 89951058..e5aae739 100644 --- a/fpga_interchange/examples/boards/CMakeLists.txt +++ b/fpga_interchange/examples/boards/CMakeLists.txt @@ -32,3 +32,11 @@ add_board( device xc7z010 package clg400 ) + +# This isn't a real board, all the real boards currently available use the LIFCL-40 but the LIFCL-17 speeds up runtime for testing +add_board( + name lifcl17 + device_family nexus + device LIFCL-17 + package QFN72 +) diff --git a/fpga_interchange/examples/remap_nexus.v b/fpga_interchange/examples/remap_nexus.v new file mode 100644 index 00000000..fa817762 --- /dev/null +++ b/fpga_interchange/examples/remap_nexus.v @@ -0,0 +1,4 @@ +// Inverter support is still a TODO +module INV(input A, output Z); + LUT4 #(.INIT("0x5555")) _TECHMAP_REPLACE_ (.A(A), .B(1'b1), .C(1'b1), .D(1'b1), .Z(Z)); +endmodule diff --git a/fpga_interchange/examples/remap.v b/fpga_interchange/examples/remap_xilinx.v index 6dfc0b4a..6dfc0b4a 100644 --- a/fpga_interchange/examples/remap.v +++ b/fpga_interchange/examples/remap_xilinx.v diff --git a/fpga_interchange/examples/tests.cmake b/fpga_interchange/examples/tests.cmake index a5c31d6f..3c97fe26 100644 --- a/fpga_interchange/examples/tests.cmake +++ b/fpga_interchange/examples/tests.cmake @@ -321,6 +321,7 @@ function(add_interchange_group_test) # sources <sources list> # [top <top name>] # [techmap <techmap file>] + # [skip_dcp] # ) # # Generates targets to run desired tests over multiple devices. @@ -340,7 +341,7 @@ function(add_interchange_group_test) # Note: it is assumed that there exists an XDC file for each board, with the following naming # convention: <board>.xdc - set(options output_fasm) + set(options output_fasm skip_dcp) set(oneValueArgs name family tcl top techmap) set(multiValueArgs sources board_list) @@ -359,12 +360,17 @@ function(add_interchange_group_test) set(techmap ${add_interchange_group_test_techmap}) set(sources ${add_interchange_group_test_sources}) set(output_fasm ${add_interchange_group_test_output_fasm}) + set(skip_dcp ${add_interchange_group_test_skip_dcp}) set(output_fasm_arg "") if(output_fasm) set(output_fasm_arg "output_fasm") endif() + set(skip_dcp_arg "") + if(skip_dcp) + set(skip_dcp_arg "skip_dcp") + endif() if (NOT DEFINED top) # Setting default top value @@ -388,6 +394,7 @@ function(add_interchange_group_test) top ${top} techmap ${techmap} ${output_fasm_arg} + ${skip_dcp_arg} ) endforeach() endfunction() diff --git a/fpga_interchange/examples/tests/counter/CMakeLists.txt b/fpga_interchange/examples/tests/counter/CMakeLists.txt index 38c104ff..91929f93 100644 --- a/fpga_interchange/examples/tests/counter/CMakeLists.txt +++ b/fpga_interchange/examples/tests/counter/CMakeLists.txt @@ -2,8 +2,18 @@ add_interchange_group_test( name counter family ${family} board_list basys3 arty35t arty100t zybo - tcl run.tcl + tcl run_xilinx.tcl sources counter.v - techmap ../../remap.v + techmap ../../remap_xilinx.v output_fasm ) + +add_interchange_group_test( + name counter + family ${family} + board_list lifcl17 + tcl run_nexus.tcl + sources counter.v + techmap ../../remap_nexus.v + skip_dcp +) diff --git a/fpga_interchange/examples/tests/counter/lifcl17.xdc b/fpga_interchange/examples/tests/counter/lifcl17.xdc new file mode 100644 index 00000000..2031964e --- /dev/null +++ b/fpga_interchange/examples/tests/counter/lifcl17.xdc @@ -0,0 +1,14 @@ +## lifcl17 pins for testing based on breakout board +set_property PACKAGE_PIN 55 [get_ports clk] +set_property PACKAGE_PIN 57 [get_ports rst] +set_property PACKAGE_PIN 56 [get_ports io_led[4]] +set_property PACKAGE_PIN 59 [get_ports io_led[5]] +set_property PACKAGE_PIN 60 [get_ports io_led[6]] +set_property PACKAGE_PIN 61 [get_ports io_led[7]] + +set_property IOSTANDARD LVCMOS33 [get_ports clk] +set_property IOSTANDARD LVCMOS33 [get_ports rst] +set_property IOSTANDARD LVCMOS33 [get_ports io_led[4]] +set_property IOSTANDARD LVCMOS33 [get_ports io_led[5]] +set_property IOSTANDARD LVCMOS33 [get_ports io_led[6]] +set_property IOSTANDARD LVCMOS33 [get_ports io_led[7]] diff --git a/fpga_interchange/examples/tests/counter/run_nexus.tcl b/fpga_interchange/examples/tests/counter/run_nexus.tcl new file mode 100644 index 00000000..80150571 --- /dev/null +++ b/fpga_interchange/examples/tests/counter/run_nexus.tcl @@ -0,0 +1,15 @@ +yosys -import + +read_verilog $::env(SOURCES) + +synth_nexus -nolutram -nowidelut -nobram -noccu2 -nodsp +techmap -max_iter 1 -map $::env(TECHMAP) + +# opt_expr -undriven makes sure all nets are driven, if only by the $undef +# net. +opt_expr -undriven +opt_clean + +setundef -zero -params + +write_json $::env(OUT_JSON) diff --git a/fpga_interchange/examples/tests/counter/run.tcl b/fpga_interchange/examples/tests/counter/run_xilinx.tcl index ffea3b2e..ffea3b2e 100644 --- a/fpga_interchange/examples/tests/counter/run.tcl +++ b/fpga_interchange/examples/tests/counter/run_xilinx.tcl |