From 32d5e46eee305640bd34a4ebfd1cccce830144ee Mon Sep 17 00:00:00 2001
From: David Brouwer <dbrouwer@astron.nl>
Date: Tue, 14 Nov 2023 15:41:02 +0100
Subject: [PATCH] Copied from ip_arria10_e2sg/ddio/README.txt. This is file is
 not updated since ip_arria10. Updated information.

---
 .../technology/ip_agi027_xxxx/ddio/README.txt | 69 +++++++++++++++++++
 1 file changed, 69 insertions(+)
 create mode 100755 libraries/technology/ip_agi027_xxxx/ddio/README.txt

diff --git a/libraries/technology/ip_agi027_xxxx/ddio/README.txt b/libraries/technology/ip_agi027_xxxx/ddio/README.txt
new file mode 100755
index 0000000000..cc90d785e2
--- /dev/null
+++ b/libraries/technology/ip_agi027_xxxx/ddio/README.txt
@@ -0,0 +1,69 @@
+README.txt for $HDL_WORK/libraries/technology/ip_agi027_xxxx/ddio
+
+Contents:
+
+1) DDIO components
+2) Agilex7 IP
+3) Synthesis trials
+4) Issues
+
+
+1) DDIO components:
+
+  ip_agi027_xxxx_ddio_in.vhd   = Double Date Rate input
+  ip_agi027_xxxx_ddio_out.vhd  = Double Date Rate output
+  
+
+2) Agilex7 IP
+
+  In the past, the components altddio_in and altddio_out were used by the StratixIV IP. For more information about this see the
+  README.txt from ip_arria10_e2sg/ddio. Quartus convert them using the altera_gpio component for Arria10.
+  
+  The altera_gpio component is not part of the default Quartus tool libraries, but instead it is created by Qsys together
+  with the IP. This makes that the altera_gpio can not easily be used in simulation and synthesis like was possible with altera_mf
+  in for Stratix IV (Quartus 11.1). 
+  
+  The ddio_in component is used by the PPSH and the ddio_out component is used by the ADUH. In both cases the g_width=1.
+  The Agilex7 IP can be generated using a fixed width of 1. Therefore the same parameter settings are used (the width was set to 1)
+  in the conversion from Quartus v19.4 for arria10_e2sg to Quartus 23.2 for agi027_xxxxs and these IP source files are stored as:
+  
+    ip_agi027_xxxx_ddio_in_1.ip
+    ip_agi027_xxxx_ddio_out_1.ip
+  
+  If the application would need a wider port then it can achieve this by instantiating the IP multiple times. This approach
+  avoids having to generate DDIO IP for every possible width. An alternative would be:
+  - to generate IP for e.g. width=16 and assuming that that is sufficient for all applications. Any application that uses less
+    width then leaves these IO unconnected so that the unused IO will get optimized away by synthesis.
+  - create the IP when it is needed, this scheme is more difficult to manage but is something to consider for the future.
+
+  The IP needs to be generated using:
+  
+   generate_ip_libs iwave
+  
+  to create the simulation and synthesis files, because these are initially not kept in the git repository, only the IP source files.
+ 
+ 
+3) Synthesis trials
+
+  No synthesis trials have taken place for the Agilex 7. When it is preferable to verify that the DDIO IP actually synthesise to the
+  appropriate FPGA resources, use the Quartus project quartus/ddio.qsf from the ip_arria10/ram/ folder and follow the steps in the the
+  README.txt from the ip_agi027_xxxx/fifo or */ram folder. Use the Quartus GUI to manually select a top level component for synthesis
+  e.g. by right clicking the entity vhd file in the file tab of the Quartus project navigator window.
+  Then check the resource usage in the synthesis and fitter reports.
+
+
+4) Issues
+
+a) Simulation model does not work (for Quartus 14.1, not tried for Quartus 15.0 and Quartus 23.2)
+
+  The simulation model for the DDIO does not compile ok because a din port is missing in the ddio_out and a dout port is
+  missing in the ddio_in. Adding this ports manualy does work for compile, but when the component is loaded as a simulation
+  then Modelsim reports some internal error on the IP. The compile also does not work when using 'do msim_setup.tcl', so
+  there is something wrong with the DDIO simulation model. The synthesis of the DDIO IP using ddio.qpf does work.
+  
+  The work around is not not use the simulation model, but instead use a behavioral simulation model for the IP:
+     sim/ip_agi027_xxxx_ddio_in_1.vhd
+     sim/ip_agi027_xxxx_ddio_out_1.vhd
+     sim/tb_ip_agi027_xxxx_ddio_1.vhd   = self checking tb for ip_agi027_xxxx_ddio_in_1 -> ip_agi027_xxxx_ddio_out_1
+  
+  The selection between the IP model or the behavioral model is made in the compile_ip.tcl script.
-- 
GitLab