Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for Theta Machines ETH4K #715

Merged
merged 1 commit into from
Feb 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions app/resources/boards/ThetaMachines-ETH4K/info.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"label":"Theta Machines ETH4K","SysClkMhz":25,"datasheet":"https://github.com/theta-machines/eth4k-hardware","interface":"FTDI","FPGAResources":{"ffs":7680,"luts":7680,"pios":107,"plbs":960,"brams":32}}
1 change: 1 addition & 0 deletions app/resources/boards/ThetaMachines-ETH4K/pinout.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[{"type":"output","name":"ETH_RST","value":"42"},{"type":"input","name":"ETH_INT","value":"43"},{"type":"output","name":"ETH_MOSI","value":"44"},{"type":"input","name":"ETH_MISO","value":"45"},{"type":"output","name":"ETH_SCK","value":"47"},{"type":"output","name":"ETH_CS","value":"48"},{"type":"input","name":"BTN_RST","value":"49"},{"type":"input","name":"CLK_25","value":"52"},{"type":"input","name":"ADC_RDY","value":"55"},{"type":"inout","name":"ADC_SCL","value":"56"},{"type":"inout","name":"ADC_SDA","value":"60"},{"type":"output","name":"UART_TX","value":"61"},{"type":"input","name":"UART_RX","value":"62"},{"type":"output","name":"FLASH_MOSI","value":"67"},{"type":"input","name":"FLASH_MISO","value":"68"},{"type":"output","name":"FLASH_SCK","value":"70"},{"type":"output","name":"FLASH_CS","value":"71"},{"type":"inout","name":"41_A_LED1","value":"41"},{"type":"inout","name":"39_A_LED2","value":"39"},{"type":"inout","name":"38_A_LED3","value":"38"},{"type":"inout","name":"37_A_LED4","value":"37"},{"type":"inout","name":"1_A","value":"1"},{"type":"inout","name":"2_A","value":"2"},{"type":"inout","name":"3_A","value":"3"},{"type":"inout","name":"4_A","value":"4"},{"type":"inout","name":"7_A","value":"7"},{"type":"inout","name":"8_A","value":"8"},{"type":"inout","name":"9_A","value":"9"},{"type":"inout","name":"10_A","value":"10"},{"type":"inout","name":"11_A","value":"11"},{"type":"inout","name":"12_A","value":"12"},{"type":"inout","name":"15_A","value":"15"},{"type":"inout","name":"16_A","value":"16"},{"type":"inout","name":"17_A","value":"17"},{"type":"inout","name":"18_A","value":"18"},{"type":"inout","name":"19_A","value":"19"},{"type":"inout","name":"20_A_GBIN7","value":"20"},{"type":"inout","name":"21_A_GBIN6","value":"21"},{"type":"inout","name":"22_A","value":"22"},{"type":"inout","name":"23_A","value":"23"},{"type":"inout","name":"24_A","value":"24"},{"type":"inout","name":"25_A","value":"25"},{"type":"inout","name":"26_A","value":"26"},{"type":"inout","name":"28_A","value":"28"},{"type":"inout","name":"29_A","value":"29"},{"type":"inout","name":"31_A","value":"31"},{"type":"inout","name":"32_A","value":"32"},{"type":"inout","name":"33_A","value":"33"},{"type":"inout","name":"34_A","value":"34"},{"type":"inout","name":"73_C","value":"73"},{"type":"inout","name":"74_C","value":"74"},{"type":"inout","name":"75_C","value":"75"},{"type":"inout","name":"76_C","value":"76"},{"type":"inout","name":"78_C","value":"78"},{"type":"inout","name":"79_C","value":"79"},{"type":"inout","name":"80_C","value":"80"},{"type":"inout","name":"81_C","value":"81"},{"type":"inout","name":"82_C","value":"82"},{"type":"inout","name":"83_C","value":"83"},{"type":"inout","name":"84_C","value":"84"},{"type":"inout","name":"85_C","value":"85"},{"type":"inout","name":"87_C","value":"87"},{"type":"inout","name":"88_C","value":"88"},{"type":"inout","name":"90_C","value":"90"},{"type":"inout","name":"91_C","value":"91"},{"type":"inout","name":"93_C_GBIN3","value":"93"},{"type":"inout","name":"94_C_GBIN2","value":"94"},{"type":"inout","name":"95_C","value":"95"},{"type":"inout","name":"96_C","value":"96"},{"type":"inout","name":"97_C","value":"97"},{"type":"inout","name":"98_C","value":"98"},{"type":"inout","name":"99_C","value":"99"},{"type":"inout","name":"101_C","value":"101"},{"type":"inout","name":"102_C","value":"102"},{"type":"inout","name":"104_C","value":"104"},{"type":"inout","name":"105_C","value":"105"},{"type":"inout","name":"106_C","value":"106"},{"type":"inout","name":"107_C","value":"107"},{"type":"inout","name":"63_B_CBSEL0","value":"63"},{"type":"inout","name":"64_B_CBSEL1","value":"64"},{"type":"inout","name":"110_B","value":"110"},{"type":"inout","name":"112_B","value":"112"},{"type":"inout","name":"113_B","value":"113"},{"type":"inout","name":"114_B","value":"114"},{"type":"inout","name":"115_B","value":"115"},{"type":"inout","name":"116_B","value":"116"},{"type":"inout","name":"117_B","value":"117"},{"type":"inout","name":"118_B","value":"118"},{"type":"inout","name":"119_B","value":"119"},{"type":"inout","name":"120_B","value":"120"},{"type":"inout","name":"121_B","value":"121"},{"type":"inout","name":"122_B","value":"122"},{"type":"inout","name":"124_B","value":"124"},{"type":"inout","name":"125_B","value":"125"},{"type":"inout","name":"128_B_GBIN1","value":"128"},{"type":"inout","name":"129_B_GBIN0","value":"129"},{"type":"inout","name":"130_B","value":"130"},{"type":"inout","name":"134_B","value":"134"},{"type":"inout","name":"135_B","value":"135"},{"type":"inout","name":"136_B","value":"136"},{"type":"inout","name":"137_B","value":"137"},{"type":"inout","name":"138_B","value":"138"},{"type":"inout","name":"139_B","value":"139"},{"type":"inout","name":"141_B","value":"141"},{"type":"inout","name":"142_B","value":"142"},{"type":"inout","name":"143_B","value":"143"},{"type":"inout","name":"144_B","value":"144"},{"type":"output","name":"NULL","value":"NULL"},{"type":"input","name":"NULL","value":"NULL"}]
131 changes: 131 additions & 0 deletions app/resources/boards/ThetaMachines-ETH4K/pinout.pcf
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
# -----------------------------------------------------------------------------
#- Theta Machines ETH4K constraint file (.pcf)
# -----------------------------------------------------------------------------


# W5500 Ethernet IC
set_io --warn-no-port ETH_RST 42 # output
set_io --warn-no-port ETH_INT 43 # input
set_io --warn-no-port ETH_MOSI 44 # output
set_io --warn-no-port ETH_MISO 45 # input
set_io --warn-no-port ETH_SCK 47 # output
set_io --warn-no-port ETH_CS 48 # output

# Reset Button (can be used for other things)
set_io --warn-no-port BTN_RST 49 # input

# 25MHz Clock
set_io --warn-no-port CLK_25 52 # input

# ADS1015 ADC IC
set_io --warn-no-port ADC_RDY 55 # input
set_io --warn-no-port ADC_SCL 56 # inout [OPEN DRAIN! DO NOT DRIVE HIGH!]
set_io --warn-no-port ADC_SDA 60 # inout [OPEN DRAIN! DO NOT DRIVE HIGH!]

# UART from USB FTDI
set_io --warn-no-port UART_TX 61 # output
set_io --warn-no-port UART_RX 62 # input

# Flash (used for configuration)
set_io --warn-no-port FLASH_MOSI 67 # output
set_io --warn-no-port FLASH_MISO 68 # input
set_io --warn-no-port FLASH_SCK 70 # output
set_io --warn-no-port FLASH_CS 71 # output

# LEDs
set_io --warn-no-port 41_A_LED1 41 # inout
set_io --warn-no-port 39_A_LED2 39 # inout
set_io --warn-no-port 38_A_LED3 38 # inout
set_io --warn-no-port 37_A_LED4 37 # inout

# Header A GPIO
set_io --warn-no-port 1_A 1 # inout
set_io --warn-no-port 2_A 2 # inout
set_io --warn-no-port 3_A 3 # inout
set_io --warn-no-port 4_A 4 # inout
set_io --warn-no-port 7_A 7 # inout
set_io --warn-no-port 8_A 8 # inout
set_io --warn-no-port 9_A 9 # inout
set_io --warn-no-port 10_A 10 # inout
set_io --warn-no-port 11_A 11 # inout
set_io --warn-no-port 12_A 12 # inout
set_io --warn-no-port 15_A 15 # inout
set_io --warn-no-port 16_A 16 # inout
set_io --warn-no-port 17_A 17 # inout
set_io --warn-no-port 18_A 18 # inout
set_io --warn-no-port 19_A 19 # inout
set_io --warn-no-port 20_A_GBIN7 20 # inout
set_io --warn-no-port 21_A_GBIN6 21 # inout
set_io --warn-no-port 22_A 22 # inout
set_io --warn-no-port 23_A 23 # inout
set_io --warn-no-port 24_A 24 # inout
set_io --warn-no-port 25_A 25 # inout
set_io --warn-no-port 26_A 26 # inout
set_io --warn-no-port 28_A 28 # inout
set_io --warn-no-port 29_A 29 # inout
set_io --warn-no-port 31_A 31 # inout
set_io --warn-no-port 32_A 32 # inout
set_io --warn-no-port 33_A 33 # inout
set_io --warn-no-port 34_A 34 # inout

# Header B GPIO
set_io --warn-no-port 63_B_CBSEL0 63 # inout
set_io --warn-no-port 64_B_CBSEL1 64 # inout
set_io --warn-no-port 110_B 110 # inout
set_io --warn-no-port 112_B 112 # inout
set_io --warn-no-port 113_B 113 # inout
set_io --warn-no-port 114_B 114 # inout
set_io --warn-no-port 115_B 115 # inout
set_io --warn-no-port 116_B 116 # inout
set_io --warn-no-port 117_B 117 # inout
set_io --warn-no-port 118_B 118 # inout
set_io --warn-no-port 119_B 119 # inout
set_io --warn-no-port 120_B 120 # inout
set_io --warn-no-port 121_B 121 # inout
set_io --warn-no-port 122_B 122 # inout
set_io --warn-no-port 124_B 124 # inout
set_io --warn-no-port 125_B 125 # inout
set_io --warn-no-port 128_B_GBIN1 128 # inout
set_io --warn-no-port 129_B_GBIN0 129 # inout
set_io --warn-no-port 130_B 130 # inout
set_io --warn-no-port 134_B 134 # inout
set_io --warn-no-port 135_B 135 # inout
set_io --warn-no-port 136_B 136 # inout
set_io --warn-no-port 137_B 137 # inout
set_io --warn-no-port 138_B 138 # inout
set_io --warn-no-port 139_B 139 # inout
set_io --warn-no-port 141_B 141 # inout
set_io --warn-no-port 142_B 142 # inout
set_io --warn-no-port 143_B 143 # inout
set_io --warn-no-port 144_B 144 # inout

# Header C GPIO
set_io --warn-no-port 73_C 73 # inout
set_io --warn-no-port 74_C 74 # inout
set_io --warn-no-port 75_C 75 # inout
set_io --warn-no-port 76_C 76 # inout
set_io --warn-no-port 78_C 78 # inout
set_io --warn-no-port 79_C 79 # inout
set_io --warn-no-port 80_C 80 # inout
set_io --warn-no-port 81_C 81 # inout
set_io --warn-no-port 82_C 82 # inout
set_io --warn-no-port 83_C 83 # inout
set_io --warn-no-port 84_C 84 # inout
set_io --warn-no-port 85_C 85 # inout
set_io --warn-no-port 87_C 87 # inout
set_io --warn-no-port 88_C 88 # inout
set_io --warn-no-port 90_C 90 # inout
set_io --warn-no-port 91_C 91 # inout
set_io --warn-no-port 93_C_GBIN3 93 # inout
set_io --warn-no-port 94_C_GBIN2 94 # inout
set_io --warn-no-port 95_C 95 # inout
set_io --warn-no-port 96_C 96 # inout
set_io --warn-no-port 97_C 97 # inout
set_io --warn-no-port 98_C 98 # inout
set_io --warn-no-port 99_C 99 # inout
set_io --warn-no-port 101_C 101 # inout
set_io --warn-no-port 102_C 102 # inout
set_io --warn-no-port 104_C 104 # inout
set_io --warn-no-port 105_C 105 # inout
set_io --warn-no-port 106_C 106 # inout
set_io --warn-no-port 107_C 107 # inout
1 change: 1 addition & 0 deletions app/resources/boards/ThetaMachines-ETH4K/rules.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"input":[{"port":"clk","pin":"52"}],"output":[{"pin":"42","bit":"1"},{"pin":"48","bit":"1"},{"pin":"71","bit":"1"},{"pin":"41","bit":"0"},{"pin":"39","bit":"0"},{"pin":"38","bit":"0"},{"pin":"37","bit":"0"}]}
2 changes: 1 addition & 1 deletion app/resources/boards/menu.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
[{"type":"HX1K","boards":["icezum","go-board","icestick"]},{"type":"HX8K","boards":["Alchitry-Cu","alhambra-ii","blackice","blackice-ii","blackice-mx","edu-ciaa-fpga","icoboard","kefir","iCE40-HX8K","icefun","iceWerx"]},{"type":"LP8K","boards":["TinyFPGA-B2","TinyFPGA-BX"]},{"type":"LP1K","boards":["iCESugar-nano"]},{"type":"UP5K","boards":["MCH2022_badge","iCEBreaker","iCEBreaker-bitsy0","iCEBreaker-bitsy1","upduino","upduino2","upduino21","upduino3","upduino31","fpga101","iCE40-UP5K","fomu","iCESugar_1_5","OK-iCE40Pro","pico-ice"]},{"type":"ECP5","boards":["ulx3s-12f","ulx3s-25f","ulx3s-45f","ulx3s-85f","Butterstick-r10-2g-85k","Butterstick-r10-2g-85k_(FT2232H)","Butterstick-r10-2g-85k_(FT232H)","orangecrab-r02-25f","orangecrab-r02-85f","ColorLight-5A-75B-V61","ColorLight-5A-75B-V7","ColorLight-5A-75B-V8","ColorLight-5A-75E-V6","ColorLight-5A-75E-V71_(FT2232H)","ColorLight-5A-75E-V71_(FT232H)","ColorLight-5A-75E-V71_(USB-Blaster)","ColorLight-i5-v7.0_(FT2232H)","ColorLight-i5-v7.0_(FT232H)","ColorLight-i5-v7.0_(USB-Blaster)","iCESugar-Pro_(FT2232H)","iCESugar-Pro_(FT232H)","iCESugar-Pro_(USB-Blaster)","FleaFPGA-Ohm_(FT2232H)","FleaFPGA-Ohm_(FT232H)","FleaFPGA-Ohm_(USB-Blaster)","ECP5-Evaluation-Board","ECP5-Mini-12_(FT2232H)","ECP5-Mini-25_(FT2232H)","ColorLight-i9-v7.2_(FT2232H)","ColorLight-i9-v7.2_(FT232H)","ColorLight-i9-v7.2_(USB-Blaster)"]}]
[{"type":"HX1K","boards":["icezum","go-board","icestick"]},{"type":"HX8K","boards":["Alchitry-Cu","alhambra-ii","blackice","blackice-ii","blackice-mx","edu-ciaa-fpga","icoboard","kefir","iCE40-HX8K","icefun","iceWerx","ThetaMachines-ETH4K"]},{"type":"LP8K","boards":["TinyFPGA-B2","TinyFPGA-BX"]},{"type":"LP1K","boards":["iCESugar-nano"]},{"type":"UP5K","boards":["MCH2022_badge","iCEBreaker","iCEBreaker-bitsy0","iCEBreaker-bitsy1","upduino","upduino2","upduino21","upduino3","upduino31","fpga101","iCE40-UP5K","fomu","iCESugar_1_5","OK-iCE40Pro","pico-ice"]},{"type":"ECP5","boards":["ulx3s-12f","ulx3s-25f","ulx3s-45f","ulx3s-85f","Butterstick-r10-2g-85k","Butterstick-r10-2g-85k_(FT2232H)","Butterstick-r10-2g-85k_(FT232H)","orangecrab-r02-25f","orangecrab-r02-85f","ColorLight-5A-75B-V61","ColorLight-5A-75B-V7","ColorLight-5A-75B-V8","ColorLight-5A-75E-V6","ColorLight-5A-75E-V71_(FT2232H)","ColorLight-5A-75E-V71_(FT232H)","ColorLight-5A-75E-V71_(USB-Blaster)","ColorLight-i5-v7.0_(FT2232H)","ColorLight-i5-v7.0_(FT232H)","ColorLight-i5-v7.0_(USB-Blaster)","iCESugar-Pro_(FT2232H)","iCESugar-Pro_(FT232H)","iCESugar-Pro_(USB-Blaster)","FleaFPGA-Ohm_(FT2232H)","FleaFPGA-Ohm_(FT232H)","FleaFPGA-Ohm_(USB-Blaster)","ECP5-Evaluation-Board","ECP5-Mini-12_(FT2232H)","ECP5-Mini-25_(FT2232H)","ColorLight-i9-v7.2_(FT2232H)","ColorLight-i9-v7.2_(FT232H)","ColorLight-i9-v7.2_(USB-Blaster)"]}]