diff --git a/DOC/source/arch/index.rst b/DOC/source/arch/index.rst deleted file mode 100644 index d28ed8e..0000000 --- a/DOC/source/arch/index.rst +++ /dev/null @@ -1,11 +0,0 @@ -.. _arch: - Architecture - -.. toctree:: - :maxdepth: 2 - - fpga_arch - - io_resource - - clb_arch diff --git a/DOC/source/arch/io_resource.rst b/DOC/source/arch/io_resource.rst deleted file mode 100644 index 4773ef0..0000000 --- a/DOC/source/arch/io_resource.rst +++ /dev/null @@ -1,107 +0,0 @@ -.. _io_resource: - -I/O Resources -------------- - -.. _io_resource_overview: - -Overview -~~~~~~~~ - -The *High-Density* (HD) FPGA IP has 144 I/O pins as shown in :numref:`fig_fpga_io_switch`. - -Among the 144 I/Os, - -- **29 external I/Os** are accessible through the Caravel SoC's *General-Purpose I/Os* (GPIOs). - -- **115 internal I/Os** are accessible through the Caravel SOC's logic analyzer and wishbone interfaces, which are controlled by the RISC-V processor. See :ref:`io_resource_debug` and :ref:`io_resource_accelerator` for details. - -.. warning:: For all the unused GPIOs, please set them to **input** mode, so that the FPGA will not output any noise signals to damage other SoC components. - -.. note:: The connectivity of the 115 internal I/Os can be switched through a GPIO of Caravel SoC. As a result, the FPGA can operate in different modes. - -.. warning:: The internal I/O pins will drive either Wishbone or the logic analyzer, following the same truth table as mode-switch bit in :numref:`fig_fpga_io_switch`. - -.. _fig_fpga_io_switch: - -.. figure:: ./figures/fpga_io_switch.svg - :scale: 20% - :alt: I/O arrangement of FPGA IP - - I/O arrangement of *High-Density* (HD) FPGA IP: switchable between logic analyzer and wishbone bus interface - - -.. _io_resource_accelerator: - -Accelerator Mode -~~~~~~~~~~~~~~~~ - -When the Wishbone interface is enabled, the FPGA can operate as an accelerator for the RISC-V processor. -:numref:`fig_fpga_io_map_wishbone_mode` illustrates the detailed I/O arrangement for the FPGA, where the wishbone bus signals are connected to fixed FPGA I/O locations. - -.. note:: Not all the 115 internal I/Os are used by the Wishbone interface. Especially, the I/O[21:29] are not connected. - -.. warning:: The FPGA does not contain a Wishbone slave IP. Users have to implement a soft Wishbone slave when use the FPGA as an accelerator. - -.. _fig_fpga_io_map_wishbone_mode: - -.. figure:: ./figures/fpga_io_map_wishbone_mode.svg - :scale: 20% - :alt: I/O arrangement of FPGA IP when interfacing wishbone bus - - I/O arrangement of *High-Density* (HD) FPGA IP when interfacing wishbone bus - -.. _io_resource_debug: - -Debug Mode -~~~~~~~~~~ - -When the logic analyzer interface is enabled, the FPGA can operate in debug mode, whose internal signals can be readback through the registers of the RISC-V processor. -:numref:`fig_fpga_io_map_logic_analyzer_mode` illustrates the detailed I/O arrangement for the FPGA, where the logic analyzer signals are connected to fixed FPGA I/O locations. - -.. note:: The logic analyzer is 128-bit, while 115 bits can drive or be driven by the FPGA I/O. The other 14 bits are connected to internal spots of the FPGA fabric, monitoring critical signal activities of the FPGA in debugging purpose. - -.. warning:: If the logic analyzer is not used, please configure both the management SoC and the FPGA as follows: - - - all the I/O directionality is set to **input mode**. - - all the output ports is pulled down to **logic ``0``**. - -.. _fig_fpga_io_map_logic_analyzer_mode: - -.. figure:: ./figures/fpga_io_map_logic_analyzer_mode.svg - :scale: 20% - :alt: I/O arrangement of FPGA IP when interfacing logic analyzer - - I/O arrangement of *High-Density* (HD) FPGA IP when interfacing logic analyzer - -.. _io_resource_circuit: - -FPGA I/O Circuit -~~~~~~~~~~~~~~~~ - -As shown in :numref:`fig_embedded_io_schematic`, the I/O circuit used in the I/O tiles of the FPGA fabric (see :numref:`fig_fpga_arch`) is an digital I/O cell with - -- An **active-low** I/O isolation signal ``IO_ISOL_N`` to set the I/O in input mode. This is to avoid any unexpected output signals to damage circuits outside the FPGA due to configurable memories are not properly initialized. - - .. warning:: This feature may not be needed if the configurable memory cell has a built-in set/reset functionality! - -- An internal protection circuitry to ensure clean signals at all the SOC I/O ports. This is to avoid - - - ``SOC_OUT`` port outputs any random signal when the I/O is in input mode - - ``FPGA_IN`` port is driven by any random signal when the I/O is output mode - -- An internal configurable memory element to control the direction of I/O cell - -The truth table of the I/O cell is consistent with the GPIO cell of Caravel SoC, where - -- When configuration bit (FF output) is logic ``1``, the I/O cell is in input mode - -- When configuration bit (FF output) is logic ``0``, the I/O cell is in output mode - -.. _fig_embedded_io_schematic: - -.. figure:: ./figures/embedded_io_schematic.svg - :scale: 30% - :alt: Schematic of embedded I/O cell used in FPGA - - Schematic of embedded I/O cell used in FPGA diff --git a/DOC/source/datasheet/index.rst b/DOC/source/datasheet/index.rst new file mode 100644 index 0000000..ef6404f --- /dev/null +++ b/DOC/source/datasheet/index.rst @@ -0,0 +1,9 @@ +.. _datasheet: + Datasheets + +.. toctree:: + :maxdepth: 2 + + sofa_hd/index + + qlsofa_hd/index diff --git a/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_clb_arch.svg b/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_clb_arch.svg new file mode 100644 index 0000000..bbda53b --- /dev/null +++ b/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_clb_arch.svg @@ -0,0 +1,751 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Produced by OmniGraffle 7.18\n2020-12-04 18:25:52 +0000 + + qlsofa_hd + + le + + + + + + + CLB + + + + + ... + + + + + reg_in + + + + + sc_in + + + + + reg_out + + + + + sc_out + + + + + I0[0] + + + + + I0[1] + + + + + I0[2] + + + + + I0i[0] + + + + + CLK + + + + + Test_en + + + + + I1[0] + + + + + I1[1] + + + + + I1[2] + + + + + I1i[0] + + + + + I7[0] + + + + + I7[1] + + + + + I7[2] + + + + + I7i[0] + + + + + O[0] + + + + + O[1] + + + + + O[2] + + + + + O[3] + + + + + O[14] + + + + + O[15] + + + + + cin + + + + + cout + + + + + + + + + + + + + + + + + + + + + out0 + + + + + out1 + + + + + in0 + + + + + in5 + + + + + Cin + + + + + Cin + + + + + + + LE + [0] + + + + + out0 + + + + + out1 + + + + + in0 + + + + + in3 + + + + + reg_out + + + + + reg_in + + + + + in1 + + + + + in2 + + + + + CLK + + + + + sc_in + + + + + sc_out + + + + + Test_en + + + + + + + + + + + + + + + + + + + + + + + cin + + + + + cout + + + + + Reset + + + + + + + + + + + + + + + + + + + + + + + + + out0 + + + + + out1 + + + + + in0 + + + + + in5 + + + + + Cin + + + + + Cin + + + + + + + LE + [1] + + + + + out0 + + + + + out1 + + + + + in0 + + + + + in3 + + + + + reg_out + + + + + reg_in + + + + + in1 + + + + + in2 + + + + + CLK + + + + + sc_in + + + + + sc_out + + + + + Test_en + + + + + + + + + + + + + + + + + + + + + + + cin + + + + + cout + + + + + Reset + + + + + + + + + + + + + + + + + + + + + + + + + out0 + + + + + out1 + + + + + in0 + + + + + in5 + + + + + Cin + + + + + Cin + + + + + + + LE + [7] + + + + + out0 + + + + + out1 + + + + + in0 + + + + + in3 + + + + + reg_out + + + + + reg_in + + + + + in1 + + + + + in2 + + + + + CLK + + + + + sc_in + + + + + sc_out + + + + + Test_en + + + + + + + + + + + + + + + + + + + + + + + cin + + + + + cout + + + + + Reset + + + + + + + + + Reset + + + + + wire + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DOC/source/arch/figures/embedded_io_schematic.svg b/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_embedded_io_schematic.svg similarity index 100% rename from DOC/source/arch/figures/embedded_io_schematic.svg rename to DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_embedded_io_schematic.svg diff --git a/DOC/source/arch/figures/fabric_scan_chain.svg b/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_fabric_scan_chain.svg similarity index 100% rename from DOC/source/arch/figures/fabric_scan_chain.svg rename to DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_fabric_scan_chain.svg diff --git a/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_fle_arch_dual_lut3_mode.svg b/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_fle_arch_dual_lut3_mode.svg new file mode 100644 index 0000000..a559eef --- /dev/null +++ b/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_fle_arch_dual_lut3_mode.svg @@ -0,0 +1,385 @@ + + + + + + + + + + + + + + + + + + + + + Produced by OmniGraffle 7.18\n2020-12-04 16:24:40 +0000 + + dual_lut3 + + 图层 1 + + + + + + + + + + + + 4-LUT + + + + + + + + + + + in3 + + + + + in0 + + + + + in1 + + + + + in2 + + + + + + + + + + + + FF + + + + + + + + + + + + + + + + + + + + + + + out[0] + + + + + + + + + M + U + X + + + + + + + + + + + + + + + FF + + + + + + + + + + + + + + + + + + + + + + + out[1] + + + + + + + + + LUT4_out + + + + + + + + + + + + + + LUT3_out[0] + + + + + LUT3_out[1] + + + + + + + + scin + + + + + + + + + + + scout + + + + + + + + + + + + + + + + + + + + regin + + + + + + + + + M + U + X + + + + + + + + + + + + + + + + + + regout + + + + + CLK + + + + + + + + + + + + + + + + + + + + + + + + + + + M + U + X + + + + + + + + + M + U + X + + + + + + + + + M + U + X + + + + + + + + + + + + + + + cin + + + + + + + + + M + U + X + + + + + LUT2_out[1] + + + + + + + + + + + + + + + MUX + + + + + LUT2_out[0] + + + + + + + + + + + + + + + cout + + + + + + + + Reset + + + + + + + + + + + + diff --git a/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_fle_arch_schematic.svg b/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_fle_arch_schematic.svg new file mode 100644 index 0000000..064d224 --- /dev/null +++ b/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_fle_arch_schematic.svg @@ -0,0 +1,385 @@ + + + + + + + + + + + + + + + + + + + + + Produced by OmniGraffle 7.18\n2020-12-04 16:24:40 +0000 + + schematic + + 图层 1 + + + + + + + + + + + + 4-LUT + + + + + + + + + + + in3 + + + + + in0 + + + + + in1 + + + + + in2 + + + + + + + + + + + + FF + + + + + + + + + + + + + + + + + + + + + + + out[0] + + + + + + + + + M + U + X + + + + + + + + + + + + + + + FF + + + + + + + + + + + + + + + + + + + + + + + out[1] + + + + + + + + + LUT4_out + + + + + + + + + + + + + + LUT3_out[0] + + + + + LUT3_out[1] + + + + + + + + scin + + + + + + + + + + + scout + + + + + + + + + + + + + + + + + + + + regin + + + + + + + + + M + U + X + + + + + + + + + + + + + + + + + + regout + + + + + CLK + + + + + + + + + + + + + + + + + + + + + + + + + + + M + U + X + + + + + + + + + M + U + X + + + + + + + + + M + U + X + + + + + + + + + + + + + + + cin + + + + + + + + + M + U + X + + + + + LUT2_out[1] + + + + + + + + + + + + + + + MUX + + + + + LUT2_out[0] + + + + + + + + + + + + + + + cout + + + + + + + + Reset + + + + + + + + + + + + diff --git a/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_fle_arch_shift_register_mode.svg b/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_fle_arch_shift_register_mode.svg new file mode 100644 index 0000000..c239b7e --- /dev/null +++ b/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_fle_arch_shift_register_mode.svg @@ -0,0 +1,385 @@ + + + + + + + + + + + + + + + + + + + + + Produced by OmniGraffle 7.18\n2020-12-04 16:24:40 +0000 + + shift_register + + 图层 1 + + + + + + + + + + + + 4-LUT + + + + + + + + + + + in3 + + + + + in0 + + + + + in1 + + + + + in2 + + + + + + + + + + + + FF + + + + + + + + + + + + + + + + + + + + + + + out[0] + + + + + + + + + M + U + X + + + + + + + + + + + + + + + FF + + + + + + + + + + + + + + + + + + + + + + + out[1] + + + + + + + + + LUT4_out + + + + + + + + + + + + + + LUT3_out[0] + + + + + LUT3_out[1] + + + + + + + + scin + + + + + + + + + + + scout + + + + + + + + + + + + + + + + + + + + regin + + + + + + + + + M + U + X + + + + + + + + + + + + + + + + + + regout + + + + + CLK + + + + + + + + + + + + + + + + + + + + + + + + + + + M + U + X + + + + + + + + + M + U + X + + + + + + + + + M + U + X + + + + + + + + + + + + + + + cin + + + + + + + + + M + U + X + + + + + LUT2_out[1] + + + + + + + + + + + + + + + MUX + + + + + LUT2_out[0] + + + + + + + + + + + + + + + cout + + + + + + + + Reset + + + + + + + + + + + + diff --git a/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_fle_arch_single_lut4_mode.svg b/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_fle_arch_single_lut4_mode.svg new file mode 100644 index 0000000..018c66d --- /dev/null +++ b/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_fle_arch_single_lut4_mode.svg @@ -0,0 +1,385 @@ + + + + + + + + + + + + + + + + + + + + + Produced by OmniGraffle 7.18\n2020-12-04 16:24:40 +0000 + + single_lut4 + + 图层 1 + + + + + + + + + + + + 4-LUT + + + + + + + + + + + in3 + + + + + in0 + + + + + in1 + + + + + in2 + + + + + + + + + + + + FF + + + + + + + + + + + + + + + + + + + + + + + out[0] + + + + + + + + + M + U + X + + + + + + + + + + + + + + + FF + + + + + + + + + + + + + + + + + + + + + + + out[1] + + + + + + + + + LUT4_out + + + + + + + + + + + + + + LUT3_out[0] + + + + + LUT3_out[1] + + + + + + + + scin + + + + + + + + + + + scout + + + + + + + + + + + + + + + + + + + + regin + + + + + + + + + M + U + X + + + + + + + + + + + + + + + + + + regout + + + + + CLK + + + + + + + + + + + + + + + + + + + + + + + + + + + M + U + X + + + + + + + + + M + U + X + + + + + + + + + M + U + X + + + + + + + + + + + + + + + cin + + + + + + + + + M + U + X + + + + + LUT2_out[1] + + + + + + + + + + + + + + + MUX + + + + + LUT2_out[0] + + + + + + + + + + + + + + + cout + + + + + + + + Reset + + + + + + + + + + + + diff --git a/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_fle_arch_soft_adder_mode.svg b/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_fle_arch_soft_adder_mode.svg new file mode 100644 index 0000000..35ffba6 --- /dev/null +++ b/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_fle_arch_soft_adder_mode.svg @@ -0,0 +1,385 @@ + + + + + + + + + + + + + + + + + + + + + Produced by OmniGraffle 7.18\n2020-12-04 16:24:40 +0000 + + soft_adder + + 图层 1 + + + + + + + + + + + + 4-LUT + + + + + + + + + + + in3 + + + + + in0 + + + + + in1 + + + + + in2 + + + + + + + + + + + + FF + + + + + + + + + + + + + + + + + + + + + + + out[0] + + + + + + + + + M + U + X + + + + + + + + + + + + + + + FF + + + + + + + + + + + + + + + + + + + + + + + out[1] + + + + + + + + + LUT4_out + + + + + + + + + + + + + + LUT3_out[0] + + + + + LUT3_out[1] + + + + + + + + scin + + + + + + + + + + + scout + + + + + + + + + + + + + + + + + + + + regin + + + + + + + + + M + U + X + + + + + + + + + + + + + + + + + + regout + + + + + CLK + + + + + + + + + + + + + + + + + + + + + + + + + + + M + U + X + + + + + + + + + M + U + X + + + + + + + + + M + U + X + + + + + + + + + + + + + + + cin + + + + + + + + + M + U + X + + + + + LUT2_out[1] + + + + + + + + + + + + + + + MUX + + + + + LUT2_out[0] + + + + + + + + + + + + + + + cout + + + + + + + + Reset + + + + + + + + + + + + diff --git a/DOC/source/arch/figures/fpga_arch.svg b/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_fpga_arch.svg similarity index 100% rename from DOC/source/arch/figures/fpga_arch.svg rename to DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_fpga_arch.svg diff --git a/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_fpga_io_map_logic_analyzer_mode.svg b/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_fpga_io_map_logic_analyzer_mode.svg new file mode 100644 index 0000000..e29fd87 --- /dev/null +++ b/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_fpga_io_map_logic_analyzer_mode.svg @@ -0,0 +1,247 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Produced by OmniGraffle 7.18\n2020-11-29 00:20:31 +0000 + + v1.1 + + base + + + + + FPGA Core + + + + + gpio[0] + + + + + gpio[11] + + + + + + + + + + gpio[12] + + + + + gpio[18] + + + + + + + + + + gpio[136] + + + + + gpio[143] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Caravel GPIO[24:13] + + + + + 12 bit + + + + + 7 bit + + + + + Caravel + GPIO[10:4] + + + + + + + + + + + + Caravel + GPIO[34:27] + + + + + 8 bit + + + + + + + + 5 bit + + + + + Caravel Logic Analyzer + la_data_in/out/oen[123:127] + + + + + + + + gpio[19] + + + + + gpio[23] + + + + + gpio[135] + + + + + gpio[132] + + + + + gpio[131] + + + + + gpio[24] + + + + + gpio[121] + + + + + + + + + + + + + + Caravel Logic Analyzer + la_data_in/out/oen[15:122] + + + + + + + + + 108 bit + + + + + + + + 4 bit + + + + + Caravel Logic Analyzer + la_data_in/out/oen[11:14] + + + + + + + + + diff --git a/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_fpga_io_map_wishbone_mode.svg b/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_fpga_io_map_wishbone_mode.svg new file mode 100644 index 0000000..4744bdb --- /dev/null +++ b/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_fpga_io_map_wishbone_mode.svg @@ -0,0 +1,259 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Produced by OmniGraffle 7.18\n2020-11-29 00:23:07 +0000 + + v1.1 + + base + + + + + FPGA Core + + + + + gpio[0] + + + + + gpio[11] + + + + + + + + + + gpio[12] + + + + + gpio[18] + + + + + + + + + + gpio[136] + + + + + gpio[143] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Caravel GPIO[24:13] + + + + + 12 bit + + + + + 7 bit + + + + + Caravel + GPIO[10:4] + + + + + + + + + + + + Caravel + GPIO[34:27] + + + + + 8 bit + + + + + Caravel Wishbone clk_i + Caravel Wishbone rst_i + Caravel Wishbone ack_o + Caravel Wishbone cyc_i + + + + + + + + + + + + + + + + + 32 bit + + + + + gpio[19] + + + + + gpio[23] + + + + + gpio[135] + + + + + gpio[132] + + + + + gpio[131] + + + + + gpio[24] + + + + + Caravel Wishbone stb_i + Caravel Wishbone we_i + Caravel Wishbone adr_i[31:0] + Caravel Wishbone dat_i[31:0] + Caravel Wishbone dat_o[31:0] + Caravel Wishbone sel_i[3:0] + + + + + + + + + 70 bit + + + + + + + + + + gpio[30] + + + + + + + + 3 bit + + + + + + + + + 1 bit + + + + + + + + + + diff --git a/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_fpga_io_switch.svg b/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_fpga_io_switch.svg new file mode 100644 index 0000000..3e91b9b --- /dev/null +++ b/DOC/source/datasheet/qlsofa_hd/figures/qlsofa_hd_fpga_io_switch.svg @@ -0,0 +1,353 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Produced by OmniGraffle 7.18\n2020-11-29 03:10:55 +0000 + + v1.1 + + base + + + CCFF_TAIL -> Caravel GPIO[35] + CLK <- Caravel GPIO[36] + PROG_CLK <- Caravel GPIO[37] + + + + + + + + + + + FPGA Core + + + + + gpio[0] + + + + + gpio[11] + + + + + + + + + + gpio[12] + + + + + gpio[18] + + + + + + + + + + gpio[136] + + + + + gpio[143] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Caravel GPIO[24:13] + + + + + 12 bit + + + + + 7 bit + + + + + Caravel + GPIO[10:4] + + + + + + + + + + + + Caravel + GPIO[34:27] + + + + + 8 bit + + + + + + + + 5 bit + + + + + + + + 4 bit + + + + + + + + gpio[19] + + + + + gpio[23] + + + + + gpio[135] + + + + + gpio[132] + + + + + gpio[131] + + + + + gpio[24] + + + + + gpio[121] + + + + + + + + + + Caravel Logic Analyzer + la_data_in/out/oen[11:127] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Caravel + GPIO[25] + + + + + + + + + + + + Caravel Wishbone clk_i + Caravel Wishbone rst_i + Caravel Wishbone stb_i + Caravel Wishbone cyc_i + Caravel Wishbone we_i + + + + + + + + + Mode switch truth table: + - When Caravel GPIO[25] is logic ‘1’, FPGA is interfacing the Wishbone bus + - When Caravel GPIO[25] is logic ‘0’, FPGA is interfacing the logic analyzer + + + + + + + + + CCFF_HEAD <- Caravel GPIO[12] + SC_TAIL -> Caravel GPIO[11] + + + + + + SC_HEAD <- Caravel GPIO[26] + + + + + + + + + + + + + + + + + PROG_RESET <- Caravel GPIO[3] + RESET <- Caravel GPIO[2] + IO_ISOL_N <- Caravel GPIO[1] + TEST_EN <- Caravel GPIO[0] + + + + + 106 bit + + + + + 117 bit + + + + + + + + + Caravel Wishbone sel_i[3:0] + Caravel Wishbone dat_i[31:0] + Caravel Wishbone adr_i[31:0] + Caravel Wishbone ack_o + Caravel Wishbone dat_o[31:0] + + + + + diff --git a/DOC/source/datasheet/qlsofa_hd/index.rst b/DOC/source/datasheet/qlsofa_hd/index.rst new file mode 100644 index 0000000..09e8665 --- /dev/null +++ b/DOC/source/datasheet/qlsofa_hd/index.rst @@ -0,0 +1,16 @@ +.. _datasheet_sofa_hd: + QLSOFA HD + +QLSOFA HD +--------- + +.. toctree:: + :maxdepth: 2 + + qlsofa_hd_fpga_arch + + qlsofa_hd_io_resource + + qlsofa_hd_clb_arch + + qlsofa_hd_circuit_design diff --git a/DOC/source/datasheet/qlsofa_hd/qlsofa_hd_circuit_design.rst b/DOC/source/datasheet/qlsofa_hd/qlsofa_hd_circuit_design.rst new file mode 100644 index 0000000..90d527b --- /dev/null +++ b/DOC/source/datasheet/qlsofa_hd/qlsofa_hd_circuit_design.rst @@ -0,0 +1,36 @@ +.. _qlsofa_hd_circuit_design: + +Circuit Designs +--------------- + +.. _qlsofa_hd_circuit_design_io: + +I/O Circuit +^^^^^^^^^^^ + +As shown in :numref:`fig_qlsofa_hd_embedded_io_schematic`, the I/O circuit used in the I/O tiles of the FPGA fabric (see :numref:`fig_qlsofa_hd_fpga_arch`) is an digital I/O cell with + +- An **active-low** I/O isolation signal ``IO_ISOL_N`` to set the I/O in input mode. This is to avoid any unexpected output signals to damage circuits outside the FPGA due to configurable memories are not properly initialized. + + .. warning:: This feature may not be needed if the configurable memory cell has a built-in set/reset functionality! + +- An internal protection circuitry to ensure clean signals at all the SOC I/O ports. This is to avoid + + - ``SOC_OUT`` port outputs any random signal when the I/O is in input mode + - ``FPGA_IN`` port is driven by any random signal when the I/O is output mode + +- An internal configurable memory element to control the direction of I/O cell + +The truth table of the I/O cell is consistent with the GPIO cell of Caravel SoC, where + +- When configuration bit (FF output) is logic ``1``, the I/O cell is in input mode + +- When configuration bit (FF output) is logic ``0``, the I/O cell is in output mode + +.. _fig_qlsofa_hd_embedded_io_schematic: + +.. figure:: ./figures/qlsofa_hd_embedded_io_schematic.svg + :scale: 30% + :alt: Schematic of embedded I/O cell used in FPGA + + Schematic of embedded I/O cell used in FPGA diff --git a/DOC/source/datasheet/qlsofa_hd/qlsofa_hd_clb_arch.rst b/DOC/source/datasheet/qlsofa_hd/qlsofa_hd_clb_arch.rst new file mode 100644 index 0000000..446a0a0 --- /dev/null +++ b/DOC/source/datasheet/qlsofa_hd/qlsofa_hd_clb_arch.rst @@ -0,0 +1,131 @@ +.. _qlsofa_hd_clb_arch: + +Configurable Logic Block +------------------------ + +.. _qlsofa_hd_clb_arch_generality: + +Generality +~~~~~~~~~~ + +Each Logic Block (CLB) consists of 8 Logic Elements (LEs) as shown in :numref:`fig_qlsofa_hd_clb_arch`. +All the pins of the LEs are directly wired to CLB pins without a local routing architecture. +Feedback connections between LEs are implemented by the global routing architecture outside the CLBs. + +.. _fig_qlsofa_hd_clb_arch: + +.. figure:: ./figures/qlsofa_hd_clb_arch.svg + :scale: 20% + :alt: Configurable Logic Block schematic + + Configurable logic block schematic + +.. _qlsofa_hd_clb_arch_le: + +Multi-mode Logic Element +~~~~~~~~~~~~~~~~~~~~~~~~ + +Physical Implementation +^^^^^^^^^^^^^^^^^^^^^^^ + +As shown in :numref:`fig_qlsofa_hd_fle_arch_schematic`, each Logic Element (LE) consists of + +- a fracturable 4-input Look-Up Table (LUT) +- two D-type Flip-Flops (FF) + +.. _fig_qlsofa_hd_fle_arch_schematic: + +.. figure:: ./figures/qlsofa_hd_fle_arch_schematic.svg + :scale: 30% + :alt: Logic element schematic + + Detailed schematic of a logic element + +The LE can operate in different modes to map logic function efficiently + +- 4-input LUT and single FF (see details in :ref:`qlsofa_hd_clb_arch_le_single_lut4_mode`). +- Dual 3-input LUTs and 2 FFs (see details in :ref:`qlsofa_hd_clb_arch_le_dual_lut3_mode`). +- 2-bit shift registers (see details in :ref:`qlsofa_hd_clb_arch_le_shift_reg_mode`). + + +.. _qlsofa_hd_clb_arch_le_single_lut4_mode: + +Operating mode: LUT4 + FF +^^^^^^^^^^^^^^^^^^^^^^^^^ + +The logic element can operate in the Look-Up Table (LUT) + Flip-flop (FF) mode as many classical FPGA logic elements. +As depicted in :numref:`fig_qlsofa_hd_fle_arch_single_lut4_mode`, the fracturable LUT will operate as a single-output 4-input LUT and the upper FF is used to implemented sequential logic. + +The operating mode is designed to efficiently implement 4-input functions. + +.. _fig_qlsofa_hd_fle_arch_single_lut4_mode: + +.. figure:: ./figures/qlsofa_hd_fle_arch_single_lut4_mode.svg + :scale: 30% + :alt: Logic element schematic + + Resource usage of the logic element operating in LUT4 + FF mode (Grey blocks and lines are unused resources). + +.. _qlsofa_hd_clb_arch_le_dual_lut3_mode: + +Operating mode: Dual-LUT3 +^^^^^^^^^^^^^^^^^^^^^^^^^ + +The logic element can operate in the dual Look-Up Tables (LUTs) and Flip-flops (FFs) mode as many modern FPGA logic elements. +As depicted in :numref:`fig_qlsofa_hd_fle_arch_dual_lut3_mode`, the fracturable LUT will operate as two 3-input LUTs with shared inputs. + +The operating mode is designed to efficiently implement two 3-input functions with shared input variables. A popular example is the adder function, where the carry logic can be mapped to the upper LUT3 and the sum logic can be mapped to the lower LUT3. + +.. _fig_qlsofa_hd_fle_arch_dual_lut3_mode: + +.. figure:: ./figures/qlsofa_hd_fle_arch_dual_lut3_mode.svg + :scale: 30% + :alt: Logic element schematic + + Resource usage of the logic element operating in dual LUT3 + FFs mode (Grey blocks and lines are unused resources). + +.. _qlsofa_hd_clb_arch_le_shift_reg_mode: + +Operating mode: Shift-Register +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +As depicted in :numref:`fig_qlsofa_hd_fle_arch_shift_register_mode`, the Flip-flops (FFs) can be connected in dedicated routing wires to implement high-performance shift registers. + +The operating mode is designed to efficiently implement shift registers which are widely used in buffer logic, e.g., FIFOs. + +.. _fig_qlsofa_hd_fle_arch_shift_register_mode: + +.. figure:: ./figures/qlsofa_hd_fle_arch_shift_register_mode.svg + :scale: 30% + :alt: Logic element schematic + + Resource usage of the logic element operating in shift register mode (Grey blocks and lines are unused resources). + +.. _qlsofa_hd_clb_arch_le_soft_adder_mode: + +Operating mode: Soft Adder +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +As depicted in :numref:`fig_qlsofa_hd_fle_arch_soft_adder_mode`, the 4-input LUT can implement an 1-bit adder logic, where carry inputs and outputs are connected through dedicated carry chain wires ``cin`` and ``cout`` across logic elements. This is more delay efficient than implementing adders through the dual LUT3 mode (see details in :ref:`qlsofa_hd_clb_arch_le_dual_lut3_mode`). + +The operating mode is designed to efficiently implement multi-bit adders. + +.. _fig_qlsofa_hd_fle_arch_soft_adder_mode: + +.. figure:: ./figures/qlsofa_hd_fle_arch_soft_adder_mode.svg + :scale: 30% + :alt: Logic element schematic + + Resource usage of the logic element operating in soft adder mode (Grey blocks and lines are unused resources). + +.. _qlsofa_hd_clb_arch_scan_chain: + + +Scan Chain +~~~~~~~~~~ + +There is a built-in scan-chain in the CLB where all the `sc_in` and `sc_out` ports of LEs are connected in a chain, as illustrated in :numref:`fig_qlsofa_hd_clb_arch`. +When `Test_en` signal is active, users can readback the contents of all the D-type flip-flops of the LEs thanks to the scan-chain. +When `Test_en` signal is disabled, D-type flip-flops of the LEs operate in regular mode to propagate datapath signal from LUT outputs. + +.. note:: The scan-chain of CLBs are connected in a chain at the top-level. See details in :ref:`qlsofa_hd_fpga_arch_scan_chain`. diff --git a/DOC/source/datasheet/qlsofa_hd/qlsofa_hd_fpga_arch.rst b/DOC/source/datasheet/qlsofa_hd/qlsofa_hd_fpga_arch.rst new file mode 100644 index 0000000..f1d079d --- /dev/null +++ b/DOC/source/datasheet/qlsofa_hd/qlsofa_hd_fpga_arch.rst @@ -0,0 +1,82 @@ +.. _qlsofa_hd_fpga_arch: + +Architecture +------------- + +.. _qlsofa_hd_fpga_arch_floorplan: + +Floorplan +^^^^^^^^^ + + +:numref:`fig_qlsofa_hd_fpga_arch` shows an overview on the architecture of the embedded FPGA fabric. +The FPGA follows a homogeneous architecture which only contains single type of tiles in the center fabric. +I/O tiles are placed at the boundary of the FPGA to interface with GPIOs and RISC-V processors (see details in :ref:`qlsofa_hd_io_resource`). + +.. _fig_qlsofa_hd_fpga_arch: + +.. figure:: ./figures/qlsofa_hd_fpga_arch.svg + :scale: 25% + :alt: Tile-based FPGA architecture + + Tile-based FPGA architecture + + +.. _qlsofa_hd_fpga_arch_tiles: + +Tiles +^^^^^ + +The FPGA architecture follows a tile-based organization, to exploit the fine-grainularity in physical design, where three types of tiles are built: + +.. table:: FPGA tile type and functionalities + + +------+----------+----------------------------------------------+ + | Type | Capacity | Description | + +======+==========+==============================================+ + | CLB | 144 || Each CLB tile consists of | + | | || - a Configurable Logic Block (CLB) | + | | || - a X-direction Connection Block (CBx) | + | | || - a Y-direction Connection Block (CBy) | + | | || - a Switch Block (SB). | + | | | | + | | || This is the majority tile across the fabric | + | | | to implement logics and registers. | + +------+----------+----------------------------------------------+ + | IO-A | 36 || The type-A I/O is a low-density I/O tile | + | | | which is designed to mainly interface | + | | || the GPIOs of the SoC. | + | | | | + | | || Each I/O-A tile consists of 1 digitial I/O | + | | | cell. | + +------+----------+----------------------------------------------+ + | IO-B | 12 || The type-B I/O is a high-density I/O tile | + | | | which is designed to mainly interface | + | | || the wishbone interface and logic analyzer | + | | | of the SoC. | + | | | | + | | || Each I/O-B tile consists of 9 digitial I/O | + | | | cells. | + +------+----------+----------------------------------------------+ + +.. _qlsofa_hd_fpga_arch_scan_chain: + +Scan-chain +^^^^^^^^^^ + +There is a built-in scan-chain in the FPGA which connects the the `sc_in` and `sc_out` ports of CLBs in a chain (see details in :ref:`qlsofa_hd_clb_arch_scan_chain`), as illustrated in :numref:`fig_qlsofa_hd_fabric_scan_chain`. + +When `Test_en` signal is active, users can + +- overwrite the contents of all the D-type flip-flops in the FPGA by feeding signals to the `SC_HEAD` port +- readback the contents of all the D-type flip-flops in the FPGA through the `SC_TAIL` port. + +.. _fig_qlsofa_hd_fabric_scan_chain: + +.. figure:: ./figures/qlsofa_hd_fabric_scan_chain.svg + :scale: 25% + :alt: Built-in scan-chain across FPGA + + Built-in scan-chain across FPGA + + diff --git a/DOC/source/datasheet/qlsofa_hd/qlsofa_hd_io_resource.rst b/DOC/source/datasheet/qlsofa_hd/qlsofa_hd_io_resource.rst new file mode 100644 index 0000000..fc2badb --- /dev/null +++ b/DOC/source/datasheet/qlsofa_hd/qlsofa_hd_io_resource.rst @@ -0,0 +1,113 @@ +.. _qlsofa_hd_io_resource: + +I/O Resources +------------- + +Pin Assignment +^^^^^^^^^^^^^^ + +The *High-Density* (HD) FPGA IP has 144 data I/O pins as shown in :numref:`fig_qlsofa_hd_fpga_io_switch`. + +Among the 144 I/Os, + +- **29 external I/Os** are accessible through the Caravel SoC's *General-Purpose I/Os* (GPIOs). + +- **115 internal I/Os** are accessible through the Caravel SOC's logic analyzer and wishbone interfaces, which are controlled by the RISC-V processor. See :ref:`qlsofa_hd_io_resource_debug` and :ref:`qlsofa_hd_io_resource_accelerator` for details. + +.. warning:: For all the unused GPIOs, please set them to **input** mode, so that the FPGA will not output any noise signals to damage other SoC components. + +.. note:: The connectivity of the 115 internal I/Os can be switched through a GPIO of Caravel SoC. As a result, the FPGA can operate in different modes. + +.. warning:: The internal I/O pins will drive either Wishbone or the logic analyzer, following the same truth table as mode-switch bit in :numref:`fig_qlsofa_hd_fpga_io_switch`. + +.. _fig_qlsofa_hd_fpga_io_switch: + +.. figure:: ./figures/qlsofa_hd_fpga_io_switch.svg + :scale: 20% + :alt: I/O arrangement of FPGA IP + + I/O arrangement of *High-Density* (HD) FPGA IP: switchable between logic analyzer and wishbone bus interface + +.. _io_resource_qlsofa_hd_external_io: + +External I/Os +^^^^^^^^^^^^^ + +A SOFA HD FPGA IP contains 37 external I/O pins, including 27 data I/Os and 10 control I/Os. + +Full details are summarized in the following table. + +.. table:: SOFA HD FPGA I/O usage and sizes + + +-----------+------------------------------------------------------------------------+-------------+ + | I/O Type | Description | No. of Pins | + +===========+========================================================================+=============+ + | Data I/O | Datapath I/Os of FPGA fabric | 27 | + +-----------+------------------------------------------------------------------------+-------------+ + | CLK | Operating clock of FPGA core | 1 | + +-----------+------------------------------------------------------------------------+-------------+ + | PROG_CLK | Clock used by configuration protocol to program FPGA fabric | 1 | + +-----------+------------------------------------------------------------------------+-------------+ + | RESET | Active-low reset for datapath flip-flops in the FPGA | 1 | + +-----------+------------------------------------------------------------------------+-------------+ + | PROG_RESET| Active-low reset for configuration flip-flops in the FPGA | 1 | + +-----------+------------------------------------------------------------------------+-------------+ + | CCFF_HEAD | Input of configuation protocol to load bitstream | 1 | + +-----------+------------------------------------------------------------------------+-------------+ + | CCFF_TAIL | Output of configuration protocol to read back bitstream | 1 | + +-----------+------------------------------------------------------------------------+-------------+ + | TEST_EN | Activate the test mode of FPGA fabric | 1 | + +-----------+------------------------------------------------------------------------+-------------+ + | SC_HEAD | Input of built-in scan-chain to load data to flip-flops of FPGA fabric | 1 | + +-----------+------------------------------------------------------------------------+-------------+ + | SC_TAIL | Output of built-in scan-chain to read back flip-flops from FPGA fabric | 1 | + +-----------+------------------------------------------------------------------------+-------------+ + | IO_ISLO_N | Active-low signal to enable I/O datapath isolation from external ports | 1 | + +-----------+------------------------------------------------------------------------+-------------+ + | Total | | 37 | + +-----------+------------------------------------------------------------------------+-------------+ + +.. _qlsofa_hd_io_resource_accelerator: + +Accelerator Mode +^^^^^^^^^^^^^^^^ + +When the Wishbone interface is enabled, the FPGA can operate as an accelerator for the RISC-V processor. +:numref:`fig_qlsofa_hd_fpga_io_map_wishbone_mode` illustrates the detailed I/O arrangement for the FPGA, where the wishbone bus signals are connected to fixed FPGA I/O locations. + +.. note:: Not all the 115 internal I/Os are used by the Wishbone interface. Especially, the I/O[21:29] are not connected. + +.. warning:: The FPGA does not contain a Wishbone slave IP. Users have to implement a soft Wishbone slave when use the FPGA as an accelerator. + +.. _fig_qlsofa_hd_fpga_io_map_wishbone_mode: + +.. figure:: ./figures/qlsofa_hd_fpga_io_map_wishbone_mode.svg + :scale: 20% + :alt: I/O arrangement of FPGA IP when interfacing wishbone bus + + I/O arrangement of *High-Density* (HD) FPGA IP when interfacing wishbone bus + +.. _qlsofa_hd_io_resource_debug: + +Debug Mode +^^^^^^^^^^ + +When the logic analyzer interface is enabled, the FPGA can operate in debug mode, whose internal signals can be readback through the registers of the RISC-V processor. +:numref:`fig_qlsofa_hd_fpga_io_map_logic_analyzer_mode` illustrates the detailed I/O arrangement for the FPGA, where the logic analyzer signals are connected to fixed FPGA I/O locations. + +.. note:: The logic analyzer is 128-bit, while 115 bits can drive or be driven by the FPGA I/O. The other 14 bits are connected to internal spots of the FPGA fabric, monitoring critical signal activities of the FPGA in debugging purpose. + +.. warning:: If the logic analyzer is not used, please configure both the management SoC and the FPGA as follows: + + - all the I/O directionality is set to **input mode**. + - all the output ports is pulled down to **logic ``0``**. + +.. _fig_qlsofa_hd_fpga_io_map_logic_analyzer_mode: + +.. figure:: ./figures/qlsofa_hd_fpga_io_map_logic_analyzer_mode.svg + :scale: 20% + :alt: I/O arrangement of FPGA IP when interfacing logic analyzer + + I/O arrangement of *High-Density* (HD) FPGA IP when interfacing logic analyzer + + diff --git a/DOC/source/arch/figures/clb_arch.svg b/DOC/source/datasheet/sofa_hd/figures/sofa_hd_clb_arch.svg similarity index 100% rename from DOC/source/arch/figures/clb_arch.svg rename to DOC/source/datasheet/sofa_hd/figures/sofa_hd_clb_arch.svg diff --git a/DOC/source/datasheet/sofa_hd/figures/sofa_hd_embedded_io_schematic.svg b/DOC/source/datasheet/sofa_hd/figures/sofa_hd_embedded_io_schematic.svg new file mode 100644 index 0000000..75482cb --- /dev/null +++ b/DOC/source/datasheet/sofa_hd/figures/sofa_hd_embedded_io_schematic.svg @@ -0,0 +1,253 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Produced by OmniGraffle 7.18\n2020-11-19 23:01:04 +0000 + + switch + + boundary + + + + + + + + + + + + + CCFF_IN + + + + + + + + CCFF_OUT + + + + + + + + FPGA Fabric + + + + + SoC Interface + + + + + + + + base + + + SOC_IN + + + + + SOC_OUT + + + + + + + + + + + + + + + + + FPGA_OUT + + + + + FPGA_IN + + + + + + + + + + + + SOC_DIR + + + + + + + + + + + + + + + + + + + + + + + + + + FF + + + + + + + + + + + + PROG_CLK + + + + + + + + + + + IO_ISOL_N + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + output pin + + + + + input pin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DOC/source/datasheet/sofa_hd/figures/sofa_hd_fabric_scan_chain.svg b/DOC/source/datasheet/sofa_hd/figures/sofa_hd_fabric_scan_chain.svg new file mode 100644 index 0000000..0bf9cc5 --- /dev/null +++ b/DOC/source/datasheet/sofa_hd/figures/sofa_hd_fabric_scan_chain.svg @@ -0,0 +1,320 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Produced by OmniGraffle 7.18\n2020-11-17 17:11:00 +0000 + + fpga_arch + + legend + + + + + + + FPGA + + + + + + + + x + + + + + + + + y + + + + + chain + + + + + CLB + [1][12] + + + + + + + + SC_HEAD + + + + + + + CLB + [1][11] + + + + + + + + + + + + + + + + + + CLB + [1][2] + + + + + + + + + + CLB + [1][1] + + + + + + + + + + CLB + [2][12] + + + + + + + + + + CLB + [2][11] + + + + + + + + + + + + + + + + + + CLB + [2][2] + + + + + + + + + + CLB + [2][1] + + + + + + + + + + + + + CLB + [11][12] + + + + + + + + + + CLB + [11][11] + + + + + + + + + + + + + + + + + + CLB + [11][2] + + + + + + + + + + CLB + [11][1] + + + + + + + + + + CLB + [12][12] + + + + + + + + + + CLB + [12][11] + + + + + + + + + + + + + + + + + + CLB + [12][2] + + + + + + + + + + CLB + [12][1] + + + + + + + + + + + + + + + + SC_TAIL + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DOC/source/arch/figures/fle_arch.svg b/DOC/source/datasheet/sofa_hd/figures/sofa_hd_fle_arch.svg similarity index 100% rename from DOC/source/arch/figures/fle_arch.svg rename to DOC/source/datasheet/sofa_hd/figures/sofa_hd_fle_arch.svg diff --git a/DOC/source/arch/figures/fle_arch_dual_lut3_mode.svg b/DOC/source/datasheet/sofa_hd/figures/sofa_hd_fle_arch_dual_lut3_mode.svg similarity index 100% rename from DOC/source/arch/figures/fle_arch_dual_lut3_mode.svg rename to DOC/source/datasheet/sofa_hd/figures/sofa_hd_fle_arch_dual_lut3_mode.svg diff --git a/DOC/source/arch/figures/fle_arch_shift_reg_mode.svg b/DOC/source/datasheet/sofa_hd/figures/sofa_hd_fle_arch_shift_reg_mode.svg similarity index 100% rename from DOC/source/arch/figures/fle_arch_shift_reg_mode.svg rename to DOC/source/datasheet/sofa_hd/figures/sofa_hd_fle_arch_shift_reg_mode.svg diff --git a/DOC/source/arch/figures/fle_arch_single_lut4_mode.svg b/DOC/source/datasheet/sofa_hd/figures/sofa_hd_fle_arch_single_lut4_mode.svg similarity index 100% rename from DOC/source/arch/figures/fle_arch_single_lut4_mode.svg rename to DOC/source/datasheet/sofa_hd/figures/sofa_hd_fle_arch_single_lut4_mode.svg diff --git a/DOC/source/datasheet/sofa_hd/figures/sofa_hd_fpga_arch.svg b/DOC/source/datasheet/sofa_hd/figures/sofa_hd_fpga_arch.svg new file mode 100644 index 0000000..59678b3 --- /dev/null +++ b/DOC/source/datasheet/sofa_hd/figures/sofa_hd_fpga_arch.svg @@ -0,0 +1,1089 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Produced by OmniGraffle 7.18\n2020-11-17 16:24:14 +0000 + + fpga_arch + + tiles + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + legend + + + Programmable Fabric + + + + + + + + + + + Routing Tracks + + + + + + + + + + Tile + + + + + + + I/O TileA + + + + + + + + + + + + + + I/O TileB + + + + + + + + + + + 12 + + + + + + + + + 12 + + + + + + + + tile_details + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tile + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Switch + Block + + + + + + + Configurable + Logic + Block + + + + + + + + + + + ... + + + + + ... + + + + + ... + + + + + ... + + + + + ... + + + + + ... + + + + + + + X-direction + Connection + Block + + + + + + + Y-direction + Connection + Block + + + + + + + + + + + diff --git a/DOC/source/arch/figures/fpga_io_map_logic_analyzer_mode.svg b/DOC/source/datasheet/sofa_hd/figures/sofa_hd_fpga_io_map_logic_analyzer_mode.svg similarity index 100% rename from DOC/source/arch/figures/fpga_io_map_logic_analyzer_mode.svg rename to DOC/source/datasheet/sofa_hd/figures/sofa_hd_fpga_io_map_logic_analyzer_mode.svg diff --git a/DOC/source/arch/figures/fpga_io_map_wishbone_mode.svg b/DOC/source/datasheet/sofa_hd/figures/sofa_hd_fpga_io_map_wishbone_mode.svg similarity index 100% rename from DOC/source/arch/figures/fpga_io_map_wishbone_mode.svg rename to DOC/source/datasheet/sofa_hd/figures/sofa_hd_fpga_io_map_wishbone_mode.svg diff --git a/DOC/source/arch/figures/fpga_io_switch.svg b/DOC/source/datasheet/sofa_hd/figures/sofa_hd_fpga_io_switch.svg similarity index 100% rename from DOC/source/arch/figures/fpga_io_switch.svg rename to DOC/source/datasheet/sofa_hd/figures/sofa_hd_fpga_io_switch.svg diff --git a/DOC/source/datasheet/sofa_hd/index.rst b/DOC/source/datasheet/sofa_hd/index.rst new file mode 100644 index 0000000..8bff100 --- /dev/null +++ b/DOC/source/datasheet/sofa_hd/index.rst @@ -0,0 +1,16 @@ +.. _datasheet_sofa_hd: + SOFA HD + +SOFA HD +------- + +.. toctree:: + :maxdepth: 2 + + sofa_hd_fpga_arch + + sofa_hd_io_resource + + sofa_hd_clb_arch + + sofa_hd_circuit_design diff --git a/DOC/source/datasheet/sofa_hd/sofa_hd_circuit_design.rst b/DOC/source/datasheet/sofa_hd/sofa_hd_circuit_design.rst new file mode 100644 index 0000000..3a1d824 --- /dev/null +++ b/DOC/source/datasheet/sofa_hd/sofa_hd_circuit_design.rst @@ -0,0 +1,36 @@ +.. _sofa_hd_circuit_design: + +Circuit Designs +--------------- + +.. _sofa_hd_circuit_design_io: + +I/O Circuit +^^^^^^^^^^^ + +As shown in :numref:`fig_sofa_hd_embedded_io_schematic`, the I/O circuit used in the I/O tiles of the FPGA fabric (see :numref:`fig_sofa_hd_fpga_arch`) is an digital I/O cell with + +- An **active-low** I/O isolation signal ``IO_ISOL_N`` to set the I/O in input mode. This is to avoid any unexpected output signals to damage circuits outside the FPGA due to configurable memories are not properly initialized. + + .. warning:: This feature may not be needed if the configurable memory cell has a built-in set/reset functionality! + +- An internal protection circuitry to ensure clean signals at all the SOC I/O ports. This is to avoid + + - ``SOC_OUT`` port outputs any random signal when the I/O is in input mode + - ``FPGA_IN`` port is driven by any random signal when the I/O is output mode + +- An internal configurable memory element to control the direction of I/O cell + +The truth table of the I/O cell is consistent with the GPIO cell of Caravel SoC, where + +- When configuration bit (FF output) is logic ``1``, the I/O cell is in input mode + +- When configuration bit (FF output) is logic ``0``, the I/O cell is in output mode + +.. _fig_sofa_hd_embedded_io_schematic: + +.. figure:: ./figures/sofa_hd_embedded_io_schematic.svg + :scale: 30% + :alt: Schematic of embedded I/O cell used in FPGA + + Schematic of embedded I/O cell used in FPGA diff --git a/DOC/source/arch/clb_arch.rst b/DOC/source/datasheet/sofa_hd/sofa_hd_clb_arch.rst similarity index 61% rename from DOC/source/arch/clb_arch.rst rename to DOC/source/datasheet/sofa_hd/sofa_hd_clb_arch.rst index ae830d9..fb0aaea 100644 --- a/DOC/source/arch/clb_arch.rst +++ b/DOC/source/datasheet/sofa_hd/sofa_hd_clb_arch.rst @@ -1,26 +1,26 @@ -.. _clb_arch: +.. _sofa_hd_clb_arch: Configurable Logic Block ------------------------ -.. _clb_arch_generality: +.. _sofa_hd_clb_arch_generality: Generality ~~~~~~~~~~ -Each Logic Block (CLB) consists of 8 Logic Elements (LEs) as shown in :numref:`fig_clb_arch`. +Each Logic Block (CLB) consists of 8 Logic Elements (LEs) as shown in :numref:`fig_sofa_hd_clb_arch`. All the pins of the LEs are directly wired to CLB pins without a local routing architecture. Feedback connections between LEs are implemented by the global routing architecture outside the CLBs. -.. _fig_clb_arch: +.. _fig_sofa_hd_clb_arch: -.. figure:: ./figures/clb_arch.svg +.. figure:: ./figures/sofa_hd_clb_arch.svg :scale: 20% :alt: Configurable Logic Block schematic Configurable logic block schematic -.. _clb_arch_le: +.. _sofa_hd_clb_arch_le: Multi-mode Logic Element ~~~~~~~~~~~~~~~~~~~~~~~~ @@ -28,14 +28,14 @@ Multi-mode Logic Element Physical Implementation ^^^^^^^^^^^^^^^^^^^^^^^ -As shown in :numref:`fig_fle_arch`, each Logic Element (LE) consists of +As shown in :numref:`fig_sofa_hd_fle_arch`, each Logic Element (LE) consists of - a fracturable 4-input Look-Up Table (LUT) - two D-type Flip-Flops (FF) -.. _fig_fle_arch: +.. _fig_sofa_hd_fle_arch: -.. figure:: ./figures/fle_arch.svg +.. figure:: ./figures/sofa_hd_fle_arch.svg :scale: 30% :alt: Logic element schematic @@ -43,71 +43,71 @@ As shown in :numref:`fig_fle_arch`, each Logic Element (LE) consists of The LE can operate in different modes to map logic function efficiently -- 4-input LUT and single FF (see details in :ref:`clb_arch_le_single_lut4_mode`). -- Dual 3-input LUTs and 2 FFs (see details in :ref:`clb_arch_le_dual_lut3_mode`). -- 2-bit shift registers (see details in :ref:`clb_arch_le_shift_reg_mode`). +- 4-input LUT and single FF (see details in :ref:`sofa_hd_clb_arch_le_single_lut4_mode`). +- Dual 3-input LUTs and 2 FFs (see details in :ref:`sofa_hd_clb_arch_le_dual_lut3_mode`). +- 2-bit shift registers (see details in :ref:`sofa_hd_clb_arch_le_shift_reg_mode`). -.. _clb_arch_le_single_lut4_mode: +.. _sofa_hd_clb_arch_le_single_lut4_mode: Operating mode: LUT4 + FF ^^^^^^^^^^^^^^^^^^^^^^^^^ The logic element can operate in the Look-Up Table (LUT) + Flip-flop (FF) mode as many classical FPGA logic elements. -As depicted in :numref:`fig_fle_arch_single_lut4_mode`, the fracturable LUT will operate as a single-output 4-input LUT and the upper FF is used to implemented sequential logic. +As depicted in :numref:`fig_sofa_hd_fle_arch_single_lut4_mode`, the fracturable LUT will operate as a single-output 4-input LUT and the upper FF is used to implemented sequential logic. The operating mode is designed to efficiently implement 4-input functions. -.. _fig_fle_arch_single_lut4_mode: +.. _fig_sofa_hd_fle_arch_single_lut4_mode: -.. figure:: ./figures/fle_arch_single_lut4_mode.svg +.. figure:: ./figures/sofa_hd_fle_arch_single_lut4_mode.svg :scale: 30% :alt: Logic element schematic Resource usage of the logic element operating in LUT4 + FF mode (Grey blocks and lines are unused resources). -.. _clb_arch_le_dual_lut3_mode: +.. _sofa_hd_clb_arch_le_dual_lut3_mode: Operating mode: Dual-LUT3 ^^^^^^^^^^^^^^^^^^^^^^^^^ The logic element can operate in the dual Look-Up Tables (LUTs) and Flip-flops (FFs) mode as many modern FPGA logic elements. -As depicted in :numref:`fig_fle_arch_dual_lut3_mode`, the fracturable LUT will operate as two 3-input LUTs with shared inputs. +As depicted in :numref:`fig_sofa_hd_fle_arch_dual_lut3_mode`, the fracturable LUT will operate as two 3-input LUTs with shared inputs. The operating mode is designed to efficiently implement two 3-input functions with shared input variables. A popular example is the adder function, where the carry logic can be mapped to the upper LUT3 and the sum logic can be mapped to the lower LUT3. -.. _fig_fle_arch_dual_lut3_mode: +.. _fig_sofa_hd_fle_arch_dual_lut3_mode: -.. figure:: ./figures/fle_arch_dual_lut3_mode.svg +.. figure:: ./figures/sofa_hd_fle_arch_dual_lut3_mode.svg :scale: 30% :alt: Logic element schematic Resource usage of the logic element operating in dual LUT3 + FFs mode (Grey blocks and lines are unused resources). -.. _clb_arch_le_shift_reg_mode: +.. _sofa_hd_clb_arch_le_shift_reg_mode: Operating mode: Shift-Register ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -As depicted in :numref:`fig_fle_arch_shift_reg_mode`, the Flip-flops (FFs) can be connected in dedicated routing wires to implement high-performance shift registers. +As depicted in :numref:`fig_sofa_hd_fle_arch_shift_reg_mode`, the Flip-flops (FFs) can be connected in dedicated routing wires to implement high-performance shift registers. The operating mode is designed to efficiently implement shift registers which are widely used in buffer logic, e.g., FIFOs. -.. _fig_fle_arch_shift_reg_mode: +.. _fig_sofa_hd_fle_arch_shift_reg_mode: -.. figure:: ./figures/fle_arch_shift_reg_mode.svg +.. figure:: ./figures/sofa_hd_fle_arch_shift_reg_mode.svg :scale: 30% :alt: Logic element schematic Resource usage of the logic element operating in shift register mode (Grey blocks and lines are unused resources). -.. _clb_arch_scan_chain: +.. _sofa_hd_clb_arch_scan_chain: Scan Chain ~~~~~~~~~~ -There is a built-in scan-chain in the CLB where all the `sc_in` and `sc_out` ports of LEs are connected in a chain, as illustrated in :numref:`fig_clb_arch`. +There is a built-in scan-chain in the CLB where all the `sc_in` and `sc_out` ports of LEs are connected in a chain, as illustrated in :numref:`fig_sofa_hd_clb_arch`. When `Test_en` signal is active, users can readback the contents of all the D-type flip-flops of the LEs thanks to the scan-chain. When `Test_en` signal is disabled, D-type flip-flops of the LEs operate in regular mode to propagate datapath signal from LUT outputs. -.. note:: The scan-chain of CLBs are connected in a chain at the top-level. See details in :ref:`fpga_arch_scan_chain`. +.. note:: The scan-chain of CLBs are connected in a chain at the top-level. See details in :ref:`sofa_hd_fpga_arch_scan_chain`. diff --git a/DOC/source/arch/fpga_arch.rst b/DOC/source/datasheet/sofa_hd/sofa_hd_fpga_arch.rst similarity index 82% rename from DOC/source/arch/fpga_arch.rst rename to DOC/source/datasheet/sofa_hd/sofa_hd_fpga_arch.rst index c59304e..5f503c9 100644 --- a/DOC/source/arch/fpga_arch.rst +++ b/DOC/source/datasheet/sofa_hd/sofa_hd_fpga_arch.rst @@ -1,30 +1,31 @@ -.. _fpga_arch: +.. _sofa_hd_fpga_arch: -FPGA Overview +Architecture ------------- -.. _fpga_arch_overview: -Architecture Overview -~~~~~~~~~~~~~~~~~~~~~ +.. _sofa_hd_fpga_arch_floorplan: -:numref:`fig_fpga_arch` shows an overview on the architecture of the embedded FPGA fabric. +Floorplan +^^^^^^^^^ + +:numref:`fig_sofa_hd_fpga_arch` shows an overview on the architecture of the embedded FPGA fabric. The FPGA follows a homogeneous architecture which only contains single type of tiles in the center fabric. -I/O tiles are placed at the boundary of the FPGA to interface with GPIOs and RISC-V processors (see details in :ref:`io_resource`). +I/O tiles are placed at the boundary of the FPGA to interface with GPIOs and RISC-V processors (see details in :ref:`sofa_hd_io_resource`). -.. _fig_fpga_arch: +.. _fig_sofa_hd_fpga_arch: -.. figure:: ./figures/fpga_arch.svg +.. figure:: ./figures/sofa_hd_fpga_arch.svg :scale: 25% :alt: Tile-based FPGA architecture Tile-based FPGA architecture -.. _fpga_arch_tiles: +.. _sofa_hd_fpga_arch_tiles: Tiles -~~~~~ +^^^^^ The FPGA architecture follows a tile-based organization, to exploit the fine-grainularity in physical design, where three types of tiles are built: @@ -58,21 +59,21 @@ The FPGA architecture follows a tile-based organization, to exploit the fine-gra | | | cells. | +------+----------+----------------------------------------------+ -.. _fpga_arch_scan_chain: +.. _sofa_hd_fpga_arch_scan_chain: Scan-chain -~~~~~~~~~~ +^^^^^^^^^^ -There is a built-in scan-chain in the FPGA which connects the the `sc_in` and `sc_out` ports of CLBs in a chain (see details in :ref:`clb_arch_scan_chain`), as illustrated in :numref:`fig_fabric_scan_chain`. +There is a built-in scan-chain in the FPGA which connects the the `sc_in` and `sc_out` ports of CLBs in a chain (see details in :ref:`sofa_hd_clb_arch_scan_chain`), as illustrated in :numref:`fig_sofa_hd_fabric_scan_chain`. When `Test_en` signal is active, users can - overwrite the contents of all the D-type flip-flops in the FPGA by feeding signals to the `SC_HEAD` port - readback the contents of all the D-type flip-flops in the FPGA through the `SC_TAIL` port. -.. _fig_fabric_scan_chain: +.. _fig_sofa_hd_fabric_scan_chain: -.. figure:: ./figures/fabric_scan_chain.svg +.. figure:: ./figures/sofa_hd_fabric_scan_chain.svg :scale: 25% :alt: Built-in scan-chain across FPGA diff --git a/DOC/source/datasheet/sofa_hd/sofa_hd_io_resource.rst b/DOC/source/datasheet/sofa_hd/sofa_hd_io_resource.rst new file mode 100644 index 0000000..48f29a3 --- /dev/null +++ b/DOC/source/datasheet/sofa_hd/sofa_hd_io_resource.rst @@ -0,0 +1,109 @@ +.. _sofa_hd_io_resource: + +I/O Resources +------------- + +Pin Assignment +^^^^^^^^^^^^^^ + +The *High-Density* (HD) FPGA IP has 144 data I/O pins as shown in :numref:`fig_sofa_hd_fpga_io_switch`. + +Among the 144 I/Os, + +- **29 external I/Os** are accessible through the Caravel SoC's *General-Purpose I/Os* (GPIOs). + +- **115 internal I/Os** are accessible through the Caravel SOC's logic analyzer and wishbone interfaces, which are controlled by the RISC-V processor. See :ref:`sofa_hd_io_resource_debug` and :ref:`sofa_hd_io_resource_accelerator` for details. + +.. warning:: For all the unused GPIOs, please set them to **input** mode, so that the FPGA will not output any noise signals to damage other SoC components. + +.. note:: The connectivity of the 115 internal I/Os can be switched through a GPIO of Caravel SoC. As a result, the FPGA can operate in different modes. + +.. warning:: The internal I/O pins will drive either Wishbone or the logic analyzer, following the same truth table as mode-switch bit in :numref:`fig_sofa_hd_fpga_io_switch`. + +.. _fig_sofa_hd_fpga_io_switch: + +.. figure:: ./figures/sofa_hd_fpga_io_switch.svg + :scale: 20% + :alt: I/O arrangement of FPGA IP + + I/O arrangement of *High-Density* (HD) FPGA IP: switchable between logic analyzer and wishbone bus interface + +.. _io_resource_sofa_hd_external_io: + +External I/Os +^^^^^^^^^^^^^ + +A SOFA HD FPGA IP contains 37 external I/O pins, including 29 data I/Os and 8 control I/Os. + +Full details are summarized in the following table. + +.. table:: SOFA HD FPGA I/O usage and sizes + + +-----------+------------------------------------------------------------------------+-------------+ + | I/O Type | Description | No. of Pins | + +===========+========================================================================+=============+ + | Data I/O | Datapath I/Os of FPGA fabric | 29 | + +-----------+------------------------------------------------------------------------+-------------+ + | CLK | Operating clock of FPGA core | 1 | + +-----------+------------------------------------------------------------------------+-------------+ + | PROG_CLK | Clock used by configuration protocol to program FPGA fabric | 1 | + +-----------+------------------------------------------------------------------------+-------------+ + | CCFF_HEAD | Input of configuation protocol to load bitstream | 1 | + +-----------+------------------------------------------------------------------------+-------------+ + | CCFF_TAIL | Output of configuration protocol to read back bitstream | 1 | + +-----------+------------------------------------------------------------------------+-------------+ + | TEST_EN | Activate the test mode of FPGA fabric | 1 | + +-----------+------------------------------------------------------------------------+-------------+ + | SC_HEAD | Input of built-in scan-chain to load data to flip-flops of FPGA fabric | 1 | + +-----------+------------------------------------------------------------------------+-------------+ + | SC_TAIL | Output of built-in scan-chain to read back flip-flops from FPGA fabric | 1 | + +-----------+------------------------------------------------------------------------+-------------+ + | IO_ISLO_N | Active-low signal to enable I/O datapath isolation from external ports | 1 | + +-----------+------------------------------------------------------------------------+-------------+ + | Total | | 37 | + +-----------+------------------------------------------------------------------------+-------------+ + +.. _sofa_hd_io_resource_accelerator: + +Accelerator Mode +^^^^^^^^^^^^^^^^ + +When the Wishbone interface is enabled, the FPGA can operate as an accelerator for the RISC-V processor. +:numref:`fig_sofa_hd_fpga_io_map_wishbone_mode` illustrates the detailed I/O arrangement for the FPGA, where the wishbone bus signals are connected to fixed FPGA I/O locations. + +.. note:: Not all the 115 internal I/Os are used by the Wishbone interface. Especially, the I/O[21:29] are not connected. + +.. warning:: The FPGA does not contain a Wishbone slave IP. Users have to implement a soft Wishbone slave when use the FPGA as an accelerator. + +.. _fig_sofa_hd_fpga_io_map_wishbone_mode: + +.. figure:: ./figures/sofa_hd_fpga_io_map_wishbone_mode.svg + :scale: 20% + :alt: I/O arrangement of FPGA IP when interfacing wishbone bus + + I/O arrangement of *High-Density* (HD) FPGA IP when interfacing wishbone bus + +.. _sofa_hd_io_resource_debug: + +Debug Mode +^^^^^^^^^^ + +When the logic analyzer interface is enabled, the FPGA can operate in debug mode, whose internal signals can be readback through the registers of the RISC-V processor. +:numref:`fig_sofa_hd_fpga_io_map_logic_analyzer_mode` illustrates the detailed I/O arrangement for the FPGA, where the logic analyzer signals are connected to fixed FPGA I/O locations. + +.. note:: The logic analyzer is 128-bit, while 115 bits can drive or be driven by the FPGA I/O. The other 14 bits are connected to internal spots of the FPGA fabric, monitoring critical signal activities of the FPGA in debugging purpose. + +.. warning:: If the logic analyzer is not used, please configure both the management SoC and the FPGA as follows: + + - all the I/O directionality is set to **input mode**. + - all the output ports is pulled down to **logic ``0``**. + +.. _fig_sofa_hd_fpga_io_map_logic_analyzer_mode: + +.. figure:: ./figures/sofa_hd_fpga_io_map_logic_analyzer_mode.svg + :scale: 20% + :alt: I/O arrangement of FPGA IP when interfacing logic analyzer + + I/O arrangement of *High-Density* (HD) FPGA IP when interfacing logic analyzer + + diff --git a/DOC/source/device/dc_ac_character.rst b/DOC/source/device/dc_ac_character.rst deleted file mode 100644 index 1e7b3b2..0000000 --- a/DOC/source/device/dc_ac_character.rst +++ /dev/null @@ -1,75 +0,0 @@ -.. _dc_ac_character: - -DC and AC Characteristics -------------------------- - -Each FPGA device contains 37 external I/O pins, whose details are summarized in the following tables. - -I/O usage and port information -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. table:: I/O usage and sizes - - +-----------+------------------------------------------------------------------------+-------------+ - | I/O Type | Description | No. of Pins | - +===========+========================================================================+=============+ - | Data I/O | Datapath I/Os of FPGA fabric | 29 | - +-----------+------------------------------------------------------------------------+-------------+ - | Clk | Operating clock of FPGA core | 1 | - +-----------+------------------------------------------------------------------------+-------------+ - | ProgClk | Clock used by configuration protocol to program FPGA fabric | 1 | - +-----------+------------------------------------------------------------------------+-------------+ - | CCin | Input of configuation protocol to load bitstream | 1 | - +-----------+------------------------------------------------------------------------+-------------+ - | CCout | Output of configuration protocol to read back bitstream | 1 | - +-----------+------------------------------------------------------------------------+-------------+ - | TestEn | Activate the test mode of FPGA fabric | 1 | - +-----------+------------------------------------------------------------------------+-------------+ - | SCin | Input of built-in scan-chain to load data to flip-flops of FPGA fabric | 1 | - +-----------+------------------------------------------------------------------------+-------------+ - | SCout | Output of built-in scan-chain to read back flip-flops from FPGA fabric | 1 | - +-----------+------------------------------------------------------------------------+-------------+ - | IO_ISLO_N | Active-low signal to enable I/O datapath isolation from external ports | 1 | - +-----------+------------------------------------------------------------------------+-------------+ - | Total | | 37 | - +-----------+------------------------------------------------------------------------+-------------+ - -Recommended Operating Conditions -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. table:: Recommended Operating Conditions - - +----------+------------------------------+------+---------+------+-------+ - | Symbol | Description | Min | Typical | Max | Units | - +==========+==============================+======+=========+======+=======+ - | VDD_io | Supply voltage for I/Os | 1.8 | 3.3 | 5.0 | V | - +----------+------------------------------+------+---------+------+-------+ - | VDD_core | Supply voltage for FPGA core | 1.62 | 1.8 | 1.98 | V | - +----------+------------------------------+------+---------+------+-------+ - | V_in | Input voltage for other I/Os | TBD | 3.3 | TBD | V | - +----------+------------------------------+------+---------+------+-------+ - | I_in | Maximum current through pins | N/A | TBD | TBD | mA | - +----------+------------------------------+------+---------+------+-------+ - | f_max | Maximum frequency of I/Os | N/A | TBD | TBD | MHz | - +----------+------------------------------+------+---------+------+-------+ - -.. note:: Threshold voltage of logic `1` for I/O (V_OH) is 0.8 * VDD_io. In other words, V_in should be at least 2.64V in order to be sensed as logic `1` -.. note:: Threshold voltage of logic `0` for I/O (V_OH) is 0.4. In other words, V_in should not exceed 0.4V in order to be sensed as logic `0`. - -Typical AC Characteristics -^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. table:: Typical AC characteristics for FPGA I/Os - - +-----------------+-------------------------------------------+------+------+-------+ - | Symbol | Description | Min | Max | Units | - +=================+===========================================+======+======+=======+ - | V_in Overshoot | Maximum allowed overshoot voltage for Vin | TBD | TBD | V | - +-----------------+-------------------------------------------+------+------+-------+ - | V_in Undershoot | Minimum allowed overshoot voltage for Vin | TBD | TBD | V | - +-----------------+-------------------------------------------+------+------+-------+ - | I_VDD_core | Quiescent VDD_core supply current | TBD | TBD | mA | - +-----------------+-------------------------------------------+------+------+-------+ - | I_VDD_io | Quiescent VDD_io supply current | TBD | TBD | mA | - +-----------------+-------------------------------------------+------+------+-------+ - diff --git a/DOC/source/device/device_resource.rst b/DOC/source/device/device_resource.rst deleted file mode 100644 index ea78fb4..0000000 --- a/DOC/source/device/device_resource.rst +++ /dev/null @@ -1,38 +0,0 @@ -.. _device_resource: - -Device Resources ----------------- - -.. _device_resource_hd_fpga: - -High-Density FPGA -~~~~~~~~~~~~~~~~~ - -The High Density (HD) FPGA is an embedded FPGA built with the Skywater 130nm High Density Standard Cell library (`Sky130_fd_SC_HD `_). - -.. table:: Logic capacity of High Density (HD) FPGA IP - - +-------------------------------+------------+ - | Resource Type | Capacity | - +===============================+============+ - | Look-Up Tables [1]_ | 1152 | - +-------------------------------+------------+ - | Flip-flops | 2304 | - +-------------------------------+------------+ - | Max. Configuration Speed [2]_ | 50MHz | - +-------------------------------+------------+ - | Max. Operating Speed [2]_ | 50MHz | - +-------------------------------+------------+ - | User I/O Pins [3]_ | 144 | - +-------------------------------+------------+ - | Max. I/O Speed [2]_ | 33MHz | - +-------------------------------+------------+ - | Core Voltage | 1.8V | - +-------------------------------+------------+ - -.. [1] counted by 4-input fracturable Look-Up Tables (LUTs), each of which can operate as dual-output 3-input LUTs or single-output 4-input LUT. - -.. [2] bounded by the maximum speed of `GPIO cells of Skywater 130nm PDK `_. Higher speed may be expected when a high-speed GPIO cell is available. - -.. [3] I/Os are divided into two groups: GPIO and embedded I/O. See details in :ref:`io_resource`. - diff --git a/DOC/source/device/hd_fpga/hd_device_comp.rst b/DOC/source/device/hd_fpga/hd_device_comp.rst new file mode 100644 index 0000000..940efe4 --- /dev/null +++ b/DOC/source/device/hd_fpga/hd_device_comp.rst @@ -0,0 +1,41 @@ +.. _hd_fpga_device_comparison: + +Device Comparison +----------------- + +The High Density (HD) FPGAs are embedded FPGAs built with the Skywater 130nm High Density Standard Cell library (`Sky130_fd_SC_HD `_). + +.. table:: Logic capacity of High Density (HD) FPGA IPs + + +-------------------------------+------------+-----------+ + | Resource/Capacity | SOFA HD | QLSOFA HD | + +===============================+============+===========+ + | Look-Up Tables [1]_ | 1152 | 1152 | + +-------------------------------+------------+-----------+ + | Flip-flops | 2304 | 2304 | + +-------------------------------+------------+-----------+ + | Soft Adders [2]_ | N/A | 1152 | + +-------------------------------+------------+-----------+ + | Routing Channel Width [3]_ | 40 | 60 | + +-------------------------------+------------+-----------+ + | Max. Configuration Speed [4]_ | 50MHz | 50MHz | + +-------------------------------+------------+-----------+ + | Max. Operating Speed [4]_ | 50MHz | 50 MHz | + +-------------------------------+------------+-----------+ + | User I/O Pins [5]_ | 144 | 144 | + +-------------------------------+------------+-----------+ + | Max. I/O Speed [4]_ | 33MHz | 33 MHz | + +-------------------------------+------------+-----------+ + | Core Voltage | 1.8V | 1.8V | + +-------------------------------+------------+-----------+ + +.. [1] counted by 4-input fracturable Look-Up Tables (LUTs), each of which can operate as dual-output 3-input LUTs or single-output 4-input LUT. + +.. [2] counted by 3-input Look-Up Tables (LUTs) that are organized as a carry chain + +.. [3] counted by number of uni-directional routing tracks per tile + +.. [4] bounded by the maximum speed of `GPIO cells of Skywater 130nm PDK `_. Higher speed may be expected when a high-speed GPIO cell is available. + +.. [5] I/Os are divided into two groups: GPIOs and embedded I/Os. + diff --git a/DOC/source/device/hd_fpga/hd_device_dcac.rst b/DOC/source/device/hd_fpga/hd_device_dcac.rst new file mode 100644 index 0000000..91baa82 --- /dev/null +++ b/DOC/source/device/hd_fpga/hd_device_dcac.rst @@ -0,0 +1,44 @@ +.. _hd_fpga_dc_ac_character: + +DC and AC Characteristics +------------------------- + +Recommended Operating Conditions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. table:: Recommended Operating Conditions + + +----------+------------------------------+------+---------+------+-------+ + | Symbol | Description | Min | Typical | Max | Units | + +==========+==============================+======+=========+======+=======+ + | VDD_io | Supply voltage for I/Os | 1.8 | 3.3 | 5.0 | V | + +----------+------------------------------+------+---------+------+-------+ + | VDD_core | Supply voltage for FPGA core | 1.62 | 1.8 | 1.98 | V | + +----------+------------------------------+------+---------+------+-------+ + | V_in | Input voltage for other I/Os | TBD | 3.3 | TBD | V | + +----------+------------------------------+------+---------+------+-------+ + | I_in | Maximum current through pins | N/A | TBD | TBD | mA | + +----------+------------------------------+------+---------+------+-------+ + | f_max | Maximum frequency of I/Os | N/A | TBD | TBD | MHz | + +----------+------------------------------+------+---------+------+-------+ + +.. note:: Threshold voltage of logic `1` for I/O (V_OH) is 0.8 * VDD_io. In other words, V_in should be at least 2.64V in order to be sensed as logic `1` +.. note:: Threshold voltage of logic `0` for I/O (V_OH) is 0.4. In other words, V_in should not exceed 0.4V in order to be sensed as logic `0`. + +Typical AC Characteristics +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. table:: Typical AC characteristics for FPGA I/Os + + +-----------------+-------------------------------------------+------+------+-------+ + | Symbol | Description | Min | Max | Units | + +=================+===========================================+======+======+=======+ + | V_in Overshoot | Maximum allowed overshoot voltage for Vin | TBD | TBD | V | + +-----------------+-------------------------------------------+------+------+-------+ + | V_in Undershoot | Minimum allowed overshoot voltage for Vin | TBD | TBD | V | + +-----------------+-------------------------------------------+------+------+-------+ + | I_VDD_core | Quiescent VDD_core supply current | TBD | TBD | mA | + +-----------------+-------------------------------------------+------+------+-------+ + | I_VDD_io | Quiescent VDD_io supply current | TBD | TBD | mA | + +-----------------+-------------------------------------------+------+------+-------+ + diff --git a/DOC/source/device/hd_fpga/index.rst b/DOC/source/device/hd_fpga/index.rst new file mode 100644 index 0000000..a6802e3 --- /dev/null +++ b/DOC/source/device/hd_fpga/index.rst @@ -0,0 +1,12 @@ +HD FPGAs +-------- + +.. _device_family_hd_fpga: + HD FPGA Family + +.. toctree:: + :maxdepth: 2 + + hd_device_comp + + hd_device_dcac diff --git a/DOC/source/device/index.rst b/DOC/source/device/index.rst index e2f9d8c..6f733f4 100644 --- a/DOC/source/device/index.rst +++ b/DOC/source/device/index.rst @@ -1,11 +1,9 @@ -.. _device: - Device Datasheet +.. _device_family: + Device Family .. toctree:: :maxdepth: 2 - device_overview + introduction - device_resource - - dc_ac_character + hd_fpga/index diff --git a/DOC/source/device/device_overview.rst b/DOC/source/device/introduction.rst similarity index 89% rename from DOC/source/device/device_overview.rst rename to DOC/source/device/introduction.rst index 4f7680a..24f163e 100644 --- a/DOC/source/device/device_overview.rst +++ b/DOC/source/device/introduction.rst @@ -1,7 +1,7 @@ -.. _device_overview: +.. _device_family_introduction: -General Description -------------------- +Introduction +------------ All the FPGA devices in this project are fully open-source, from the architecture description to the physical design outputs, e.g., GDSII. All the devices are designed through the OpenFPGA framework and the Skywater 130nm PDK. diff --git a/DOC/source/index.rst b/DOC/source/index.rst index f9fca98..cbf7d6e 100644 --- a/DOC/source/index.rst +++ b/DOC/source/index.rst @@ -7,15 +7,15 @@ Welcome to SKywater-OpenFPGA documentation! =========================================== .. toctree:: - :caption: Device Datasheet + :caption: Device Family device/index .. toctree:: :maxdepth: 2 - :caption: FPGA Architecture + :caption: Datasheets - arch/index + datasheet/index .. toctree:: :maxdepth: 2 diff --git a/README.md b/README.md index b7a4b0a..b7e40f0 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ -# Skywater + OpenFPGA: Open-Source FPGAs +# SOFA [![linux_build](https://github.com/LNIS-Projects/skywater-openfpga/workflows/linux_build/badge.svg)](https://github.com/LNIS-Projects/skywater-openfpga/actions) [![Documentation Status](https://readthedocs.org/projects/skywater-openfpga/badge/?version=latest)](https://skywater-openfpga.readthedocs.io/en/latest/?badge=latest) ## Introduction -FPGA tape-outs using the open-source Skywater 130nm PDK and OpenFPGA +SOFA (**S**kywater **O**pensource **F**PG**A**s) are a series of open-source FPGA IPs using the open-source [Skywater 130nm PDK](https://github.com/google/skywater-pdk) and [OpenFPGA](https://github.com/lnis-uofu/OpenFPGA) framework ## Quick Start