Error: dut.p0_hip_status has no associated reset.
Hello Altera I am using Quartus Prime Pro 25.1.0 build 129 03/26/2025 SC Pro Edition. In my Agiliex 7 Design project, I have Intel R-Tile MCDMA for PCI Express intel_pcie_rtile_mcdma Version 5.3.1 Ip instantiated as "dut". in parameters settings I have enabled to have hip status interface. https://www.intel.com/content/www/us/en/docs/programmable/683821/25-1-1/hard-ip-status-interface.html this interface is connected to a custom design QCP file. The QCP uses "app_clk" and "app_nreset_status" from dut ip as its clk and reset inputs. They go through clock bridge and reset bridge. Clock and reset outputs from these bridges are used internally in custom logic code. In platform designer as I connect "dut.p0_hip_status" and "custom_module.pcie_ep_hip_status_in" ports, I get an error as following "Error: pcie_ed: Interfaces custom_module.pcie_ep_hip_status_in and dut.p0_hip_status must have matching associated resets, but dut.p0_hip_status has no associated reset." This Error does not make sense to me, as dut`s hip status interface and my qcp`s status interface ports shows correct clock and reset association in component instantiation tab; and my custom design uses same clock and reset to its clock and reset bridge inputs. can you please help me to understand what is this error about and how do i resolve it?47Views0likes6CommentsAgilex 5 GTS MCDMA at AXI-MM mode not working
I am using Quartus 25.1 and wanted to test the new GTS MCDMA for Agilex 5 in AXI-MM mode. I generated the example design, which uses AXI-ST mode, and tested it with the provided driver. Everything worked fine—the device was identified, and the driver functioned correctly with the user application called "perfq_app". According to the user guide, this is referred to as the "Custom Driver." The next step I took was to switch from AXI-ST to AXI-MM, but now the driver doesn't work. I compared the provided code with the example design code for Agilex 7 MCDMA. The only differences I found were two macros: one for the data width and the other to indicate which example design it is. I generated the AXI MCDMA example design at memory mapped mode for the Agilex 7 and use the provided code and it worked fine. (On the left is the Agilex 5 provided code, and on the right is the Agilex 7 version.) I tried changing IFC_QDMA_ST_LOOPBACK to IFC_QDMA_MM_LOOPBACK, but it didn’t help. I even connected Signal Tap to the DMA MM master interface and saw that no transactions were occurring on this interface. Has anyone encountered this issue or have any idea how to solve it?682Views0likes4CommentsImplementing MSI-X in Agilex 7 Rtile MCDAM PCIe based design
I am using Agilex 7 - AGIB027R29A1E2VC FPGA. On Rtile I am using Multi Channel DMA FPGA IP for PCI Express - Data Movers Only. https://www.intel.com/content/www/us/en/docs/programmable/683821/25-1-1/data-mover-only.html My design currently performs H2D and D2H DMAs as I need to. Now I want to send MSI-X interrupt after certain DMA completion and thats where I need help. Specifically "MSI-X Enable" and "MSI-X function mask" related functionality. Other Parts related to implementing MSI-X is clear to me. "MSI-X Enable" and "MSI-X function mask" both can be written by host side driver and the interrupt controller inside PCIe ep device is supposed behave accordingly. Currently I am struggling to figure out how can I get a copy of CFG writes to MSI-X capability structure when CFG WRs are targeting "MSI-X Enable" and "MSI-X function mask"? If I get a copy of such CFG writes than my application layer logic can keep track of latest value written and update MSI-X behavior as intended. https://www.intel.com/content/www/us/en/docs/programmable/683501/25-1-1/msi-x.html mentions that "The R-Tile IP for PCIe provides a Configuration Intercept Interface. User soft logic can monitor this interface to get MSI-X Enable and MSI-X function mask related information." https://www.intel.com/content/www/us/en/docs/programmable/683501/25-1-1/configuration-intercept-interface.html mentions that "The Configuration Intercept Interface (CII) allows the application logic to detect the occurrence of a Configuration (CFG) request on the link and to modify its behavior." is there any example on how CII interface can be used to monitor MSI-X capability structure accesses? https://community.intel.com/t5/FPGA-Wiki/Implementing-MSI-X-for-PCI-Express-in-Altera-FPGA-Devices/ta-p/735678 this link appears to be broken furthermore, table 71 on https://www.intel.com/content/www/us/en/docs/programmable/683501/25-1-1/configuration-intercept-interface.html provides cii interface signal list and its details - after reviewing them I have following questions. pX_cii_wr_o Output Indicates that cii_dout_p0/1 is valid. This signal is asserted only for a configuration write request. there is no mention of "pX_cii_rd_o" signal, can pX_cii_wr_o signal be used to determine read request? if this signal is at logic 0 , does it mean that this is CFG read request? pX_cii_addr_o[9:0] Output The double-word register address in the received TLP header on the CII. is this the address associated with CFW write? how do i know Config space offset at which MSI-X capability is located? So I can compare pX_cii_addr_o along with pX_cii_hdr_first_be_o to check if the CFG access to targeting "MSI-X Enable" or"MSI-X function mask" or not. how do I use CII interface so it ignores all offsets other than MSI-X capability structure related55Views0likes4CommentsR-Tile Avalon® Streaming Intel® FPGA IP for PCI Express Testbench
Hello, our research team is working on PCIe controller with Agilex-7 M Series. We are using R-Tile Avalon® Streaming Intel® FPGA IP for PCI Express. According to Using the Avery BFM for R-Tile PCI Express Gen5 Simulations in R-Tile Avalon® Streaming Intel® FPGA IP for PCI Express User Guide, (https://www.intel.com/content/www/us/en/docs/programmable/683501/25-1-1/overview-59246.html) Testbench files for Avery BFM is supported. (Figure below, link above) Could you provide us testbench sample for Avery simulation?43Views0likes5CommentsHow to implement PCIE hard IP for Cyclone IV GX
Hi, I am currently working with a Cyclone IV GX FPGA: EP4CGX75CF23C7. I would like to run a PCI transceiver and map the memory (on-chip memory) to the endpoint using 1 data lane. What do I need for this in quartus II 23.1 or 24.1? I see IP_Compiler for PCI Express but I cannot find any compatible instructions on how to use it. Thanks.829Views0likes5CommentsCyclone 10 GX Dev Kit: IOPLL not locking when using CvP mode
Hi everyone, I'm working with a simple CvP-based design on the Cyclone 10 GX Development Kit. My design is based on the official CvP example design, with a small modification: I've added an IOPLL that generates 150 MHz and 125 MHz clocks from a 50MHz input clock. Here's the issue I'm seeing: After power-up, I program the *.core.rbf file using quartus_cvp.exe, and everything works as expected – the IOPLL locks reliably. However, if I program the exact same *.core.rbf file again (without powering off), the IOPLL no longer locks. Has anyone encountered similar behavior or have any idea what might be causing this? Is there something specific I need to reset or reinitialize in the PLL or CvP flow when reprogramming? For clarification I've added my top-level HDL design. Thanks in advance for any help or insights!985Views0likes3CommentsAgilex5 temperature sensor interface sample code?
I have found documentation on the location of the temperature sensors and that I might need to use the MailBox IP, but nothing specific on how to do it. Are there any example designs available for temperature readout from e.g. an AXI4Lite or Avalon master?263Views0likes1CommentUnable to install kernel driver for testing PCI Express
I'm referencing the L-Tile and H-Tile Avalon MM+ Intel FPGA IP for PCI Express User Guide (2024.09.13). On page 19 and after compiling the design example, it wants the user to install the Linux kernel driver which tests the PCI link for reads/writes. After I change the permission on the install, load and unload files, I then install the driver using sudo ./install it outputs a lot of errors. make -C /lib/modules/6.12.0-120.el10.x86_64/build M=/home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux clean make[1]: Entering directory '/usr/src/kernels/6.12.0-120.el10.x86_64' make[1]: Leaving directory '/usr/src/kernels/6.12.0-120.el10.x86_64' make -C /lib/modules/6.12.0-120.el10.x86_64/build M=/home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux modules make[1]: Entering directory '/usr/src/kernels/6.12.0-120.el10.x86_64' CC [M] /home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux/intel_fpga_pcie_chr.o /home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux/intel_fpga_pcie_chr.c: In function ‘chr_mmap’: /home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux/intel_fpga_pcie_chr.c:313:19: error: assignment of read-only member ‘vm_flags’ 313 | vma->vm_flags |= VM_PFNMAP | VM_DONTCOPY | VM_DONTEXPAND; | ^~ In file included from ./include/linux/printk.h:6, from ./include/linux/kernel.h:31, from ./include/linux/cpumask.h:11, from ./include/linux/smp.h:13, from ./include/linux/lockdep.h:14, from ./include/linux/mutex.h:17, from ./include/linux/kernfs.h:11, from ./include/linux/sysfs.h:16, from ./include/linux/kobject.h:20, from ./include/linux/cdev.h:5, from /home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux/intel_fpga_pcie_setup.h:47, from /home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux/intel_fpga_pcie_chr.h:47, from /home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux/intel_fpga_pcie_chr.c:45: /home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux/intel_fpga_pcie_chr.c: In function ‘intel_fpga_pcie_chr_init’: ./include/linux/init.h:180:22: error: passing argument 1 of ‘class_create’ from incompatible pointer type [-Wincompatible-pointer-types] 180 | #define THIS_MODULE (&__this_module) | ~^~~~~~~~~~~~~~~ | | | struct module * /home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux/intel_fpga_pcie_chr.c:355:40: note: in expansion of macro ‘THIS_MODULE’ 355 | global_bk.chr_class = class_create(THIS_MODULE, | ^~~~~~~~~~~ In file included from ./include/linux/device.h:30, from ./include/linux/cdev.h:8: ./include/linux/device/class.h:226:54: note: expected ‘const char *’ but argument is of type ‘struct module *’ 226 | struct class * __must_check class_create(const char *name); | ~~~~~~~~~~~~^~~~ /home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux/intel_fpga_pcie_chr.c:355:27: error: too many arguments to function ‘class_create’ 355 | global_bk.chr_class = class_create(THIS_MODULE, | ^~~~~~~~~~~~ ./include/linux/device/class.h:226:29: note: declared here 226 | struct class * __must_check class_create(const char *name); | ^~~~~~~~~~~~ /home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux/intel_fpga_pcie_chr.c: In function ‘chr_access’: /home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux/intel_fpga_pcie_chr.c:536:50: error: macro "access_ok" passed 3 arguments, but takes just 2 536 | if(! access_ok(VERIFY_WRITE, buf, sizeof(buf))) { | ^ In file included from ./arch/x86/include/asm/uaccess.h:25, from ./include/linux/uaccess.h:12, from ./include/linux/sched/task.h:13, from ./include/linux/sched/signal.h:9, from ./include/linux/rcuwait.h:6, from ./include/linux/percpu-rwsem.h:7, from ./include/linux/fs.h:33, from ./include/linux/compat.h:17, from ./arch/x86/include/asm/ia32.h:7, from ./arch/x86/include/asm/elf.h:10, from ./include/linux/elf.h:6, from ./include/linux/module.h:19, from ./include/linux/device/driver.h:21, from ./include/linux/device.h:32: ./include/asm-generic/access_ok.h:45:9: note: macro "access_ok" defined here 45 | #define access_ok(addr, size) likely(__access_ok(addr, size)) | ^~~~~~~~~ /home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux/intel_fpga_pcie_chr.c:536:10: error: ‘access_ok’ undeclared (first use in this function) 536 | if(! access_ok(VERIFY_WRITE, buf, sizeof(buf))) { | ^~~~~~~~~ /home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux/intel_fpga_pcie_chr.c:536:10: note: each undeclared identifier is reported only once for each function it appears in make[3]: *** [scripts/Makefile.build:229: /home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux/intel_fpga_pcie_chr.o] Error 1 make[2]: *** [/usr/src/kernels/6.12.0-120.el10.x86_64/Makefile:1994: /home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux] Error 2 make[1]: *** [Makefile:242: __sub-make] Error 2 make[1]: Leaving directory '/usr/src/kernels/6.12.0-120.el10.x86_64' make: *** [Makefile:17: all] Error 2 insmod: ERROR: could not load module ./intel_fpga_pcie_drv.ko: No such file or directory Could someone please tell me what corrections are needed to install the driver? After I did that, I then proceeded to step 4 which says verify the driver installation, and it lists nothing, so it did not work. This is supposed to be an out of the box solution, you just perform the steps to install the driver. I need someone to please verify it works on there machine as well. For reference, this was done on CentOS 10 [Coughlin] using Quartus Prime Pro Edition 25.1 (latest) ThanksSolved503Views0likes3CommentsAVMM transparent bridge
Hi all I am experimenting with PCIe example designs. In example design there in AVMM master in one of the IP block which is connected to a AVMM agent port on on chip memory IP. I understand that during RTL compilation Quartus inserts necessary logic to make AVMM connection between these ports. For a design specific need i am interested in getting a copy of all AVMM signals at AVMM agent port. Purpose is to monitor all WR and READ activities and take action based on specific reads or writes. what will be the best way to achieve this? is there any IPs or capabilities available via Quartus? I am trying to avoid writing RTL for "AVMM middle man" module, which take request on its agent port and forwards using its master port and, when response is received it forwards that to original Master/requester.3.7KViews0likes12Comments