diff --git a/.gitattributes b/.gitattributes index 4aaecad..c570f03 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,3 +1,3 @@ *.gds filter=lfs diff=lfs merge=lfs -text *.spef filter=lfs diff=lfs merge=lfs -text -TESTBENCH/**/*.v filter=lfs diff=lfs merge=lfs -text +TESTBENCH/*/pnr/verilog_testbench/*_tb.v filter=lfs diff=lfs merge=lfs -text 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 index 75482cb..d2b829b 100644 --- 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 @@ -1,6 +1,6 @@ - + @@ -28,8 +28,8 @@ - Produced by OmniGraffle 7.18\n2020-11-19 23:01:04 +0000 - + Produced by OmniGraffle 7.18\n2020-12-11 18:21:49 +0000 + switch boundary @@ -38,7 +38,7 @@ - + @@ -76,7 +76,7 @@ base - + SOC_IN @@ -86,13 +86,13 @@ - + - + @@ -103,7 +103,7 @@ - + FPGA_IN @@ -111,31 +111,28 @@ - - - - + SOC_DIR - - + + - - + + - + - + - + @@ -158,7 +155,7 @@ - + @@ -169,7 +166,7 @@ - + @@ -179,8 +176,8 @@ - - + + @@ -199,12 +196,12 @@ - - + + - - + + @@ -229,8 +226,8 @@ - - + + @@ -248,6 +245,21 @@ + + + + + + + + + + + + + + + diff --git a/DOC/source/datasheet/sofa_hd/figures/sofa_hd_embedded_io_test_waveform.svg b/DOC/source/datasheet/sofa_hd/figures/sofa_hd_embedded_io_test_waveform.svg new file mode 100644 index 0000000..d5061c6 --- /dev/null +++ b/DOC/source/datasheet/sofa_hd/figures/sofa_hd_embedded_io_test_waveform.svg @@ -0,0 +1,4 @@ + + + +CLKIO_ISOL_NFPGA_DIRSOC_DIRSOC_INFPGA_INFPGA_OUTSOC_OUT \ No newline at end of file diff --git a/DOC/source/datasheet/sofa_hd/sofa_hd_circuit_design.rst b/DOC/source/datasheet/sofa_hd/sofa_hd_circuit_design.rst index 3ef3230..b304368 100644 --- a/DOC/source/datasheet/sofa_hd/sofa_hd_circuit_design.rst +++ b/DOC/source/datasheet/sofa_hd/sofa_hd_circuit_design.rst @@ -21,7 +21,7 @@ As shown in :numref:`fig_sofa_hd_embedded_io_schematic`, the I/O circuit used in - 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 +The truth table of the I/O cell is consistent with the GPIO cell of Caravel SoC (which requires an active-low signal to enable output directionality), where - When configuration bit (FF output) is logic ``1``, the I/O cell is in input mode @@ -35,6 +35,21 @@ The truth table of the I/O cell is consistent with the GPIO cell of Caravel SoC, Schematic of embedded I/O cell used in FPGA +:numref:`fig_sofa_hd_embedded_io_test_waveform` shows an example waveform about how the I/O cell works: + +- When ``IO_ISOL_N`` is enabled/disabled +- When operates in input mode +- When operates in output mode + +.. _fig_sofa_hd_embedded_io_test_waveform: + +.. figure:: ./figures/sofa_hd_embedded_io_test_waveform.svg + :scale: 30% + :alt: Schematic of embedded I/O cell used in FPGA + + An example of waveforms of embedded I/O cell used in FPGA + + .. _sofa_hd_circuit_design_mux: Multiplexer diff --git a/HDL/common/digital_io_hd.v b/HDL/common/digital_io_hd.v index b88390b..e1b6ea9 100644 --- a/HDL/common/digital_io_hd.v +++ b/HDL/common/digital_io_hd.v @@ -37,7 +37,7 @@ module EMBEDDED_IO_HD ( sky130_fd_sc_hd__or2b_4 ISOL_EN_GATE (.B_N(IO_ISOL_N), .A(FPGA_DIR), .X(SOC_DIR) - ); + ); // Use drive-strength 4 for a high fan-out from global routing architecture sky130_fd_sc_hd__inv_1 INV_SOC_DIR (.A(SOC_DIR), .Y(SOC_DIR_N)); diff --git a/TESTBENCH/digital_io_hd_test/digital_io_hd_test.v b/TESTBENCH/digital_io_hd_test/digital_io_hd_test.v new file mode 100644 index 0000000..088ade4 --- /dev/null +++ b/TESTBENCH/digital_io_hd_test/digital_io_hd_test.v @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:772a5684e323a0acb7fce40d406a2e38ccec6ff03b7037fcd28ca3080b80079b +size 5328 diff --git a/TESTBENCH/digital_io_hd_test/digital_io_hd_test_include_netlists.v b/TESTBENCH/digital_io_hd_test/digital_io_hd_test_include_netlists.v new file mode 100644 index 0000000..962bab8 --- /dev/null +++ b/TESTBENCH/digital_io_hd_test/digital_io_hd_test_include_netlists.v @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19837156754b79fa200291b62ff5efc0e643a2eba639f111a0950aa03522c944 +size 513