Failing IO buffer
A very simple desiggn to trap failure. Using an IO buffer (8 off) I have proved that the input from an EEPROM is read corrcly but the recieving instance's register records X"FF". I cannot see why. Any help would be appreciated because it is driving me nuts.202Views0likes19CommentsMandelbrot viewer on Cyclone V - Platform Designer layout
Hello, I’ve been trying to implement on my DE1-SoC an outstanding Mandelbrot Viewer written by 3 fellows at Cornell, which published partial information in an online available final report I manage to compile the C++ code and perform a sanity check on my x86 host: And I manage to compile the C++ to run on the DE1-SoC HPS: Also, I got Quartus to compile the Verilog provided in the report, though it’s not in its final, working form. I’m pretty sure my problem is in the Platform Designer (formerly Qsys) layout. Been trying many variations around this layout for several weeks, but with no success: I chose the components to my best understanding based the report, that mentions: "The communication between the FPGA and the hard processor system happens over a memory-mapped AXI bus. Requests for tiles are placed into a FIFO on the FPGA, and solved tile data is written out into external SDRAM memory. Requests from the HPS are sent over the AXI bus into a FIFO located on the FPGA. A request distributor then pulls the message off of the FIFO using the avalon streaming interface and handles it. (I assume this is with reference to request_distributor.sv attached in report) As the solvers solve pixels of the output tile, they write the results to SDRAM. Arbitration logic collects results from any solvers which are ready to write. (I assume this is with reference to write_arbitrator.sv attached in report)" Additional info: To my understanding, a top module (not attached to the report) is probably instantiating a multi_tile_solver.sv module and a module from Platform Designer, nothing more. As can be seen in the files in the report, multi_tile_solver.sv instantiates a request_distributor.sv module, a write_arbitrator.sv module, and NUM_SOLVERS tile_solver_legit.sv modules. Each tile_solver_legit.sv instantiates a solver.v, which instantiates a solver_control.v and a solver_datapath.v. It uses on-chip SRAM in the form of M10K block, which are created from the verilog source code, rather than having anything to do with the Platform Designer layout. I think I’m pretty close to running this amazing project, yet have been stuck on this platform designer layout and don’t succeed in finalizing. Any help would be much appreciated.37Views0likes5CommentsHard reset with USB-Blaster and Quartus
Hello there, I am working on few JTAG operations using Quartus prime standard (v24) with USB-Blaster (cable). After every operation I need to hard reset to perform the next operation. Unless Hard-reset is performed, the data received in TDO is not correct. Is there any command to make sure we do not have to perform hard-reset (Just to note, soft-reset is always performed). A quick response to this would be appreciated. Thanks in advance :) BR, Alkesh87Views0likes7CommentsHard Reset Required After Each Boundary Scan Operation
Hello there, I am working on a project involving JTAG operations (specifically boundary scan on the data register) using Quartus Prime Standard (v24) and a USB-Blaster cable. Issue: After every scan operation, I need to perform a hard reset on the device connected to the cable. If I skip the hard reset, the next scan returns incorrect TDO values. I have tried performing a soft reset after each operation, but this does not resolve the issue. Only a hard reset consistently allows me to get the correct TDO results. Sequence being used (via my Python library executing TCL commands): open_device -hardware_name {USB-Blaster [USB-0]} -device_name {@1: JTAG_DEVICE (0x12345678)} device_lock -timeout 10000 device_ir_shift -ir_value 0x00000000 puts "TDO is: 0x[device_dr_shift -length 48 -value_in_hex]" device_unlock close_device Notes: - The Python library manages TCL sessions in a dedicated terminal. - I observe the same issue when performing these operations using Quartus directly. My question: Is there a Quartus or TCL command or procedure that can help avoid the need for a hard reset after each boundary scan operation? Or is there a way to reliably ensure the correct TDO value is returned every time without hard resetting the device? Thank you for your assistance.66Views0likes10CommentsQuartus Assembler-only run after updating ROM .mif — should .sof/.pof checksum change?
Hello, I have a question about Quartus output files and checksums when only the Assembler is re-run. 1) Run a full compile once (Analysis & Synthesis + Fitter/Place & Route). 2) Modify a *.mif file that is used as the initialization file for a Quartus IP: “ROM: 1-PORT”. 3) Without re-running Analysis & Synthesis or the Fitter, run: 4) Processing → Start → Start Assembler 5) to regenerate the .sof and .pof files. A customer asked whether the checksum of the generated .sof/.pof should remain unchanged because the logic is not re-synthesized and the design is not re-fitted. However, in my repeated tests, the checksum of the .sof/.pof changes every time the contents of the .mif file change. Could you please confirm whether this behavior is expected? In other words, does the Assembler incorporate the updated memory initialization data into the programming files (thus changing the file contents/checksum), even though A&S and Fitter are not re-run? Any clarification or recommended flow for updating ROM init contents would be appreciated. Best regards,9Views0likes0CommentsRegarding Quartus Prime License Activation for the Agilex 5 Evaluation Kit
Does the Agilex 5 Premium Development Kit include a one‑year paid Quartus Prime license? The product brief states that it is included, but I would like to confirm. https://docs.altera.com/v/u/docs/815177/agilextm-5-fpga-e-series-065b-premium-fpga-development-kit-product-brief If the license is included: ・Is the same one‑year license also provided with the Modular Development Kit? ・Does the bundled license also include the IP Base Suite, as with a standard paid Quartus Prime license?4Views0likes0CommentsHow-to generate dual-port (read/write) RAM with clock enables
Following Stratix® 10 Embedded Memory User Guide (2025.07.24) chapter 2.11.6 independent clock enables are supported for read/write clock mode input/output clock mode I start a "RAM 2-port" IP generation. I select "one read/write port" in the general tab and "dual clock use separate read and write clock" in the "Clks/Rd,Byte En" tab. Now I enable the clock enables in the "Reg/Clkens/Aclrs" tab "use clock for read input register" as well as same for "output registers". IP Parameter window immediuately shows an error: Error: testram.ram_2port_0: Clock enable for read input registers is unavailable while using 'Dual clock: use separate read and write clocks' for Stratix 10 device family. This is verified with Quartus Pro 18.1 and 25.3. Is this a bug of the software or the documentation?107Views0likes10CommentsFailed to get MAX10 Triple Speed Ethernet example design to compile
Greetings Altera Experts, I have been trying to recreate an ALTER example design for a MAX 10 Development kit :: "MAX 10 Single-Port Triple Speed Ethernet and On-Board PHY Chip Design Example User Guide" The problem is that when i read in the max10tse_q_18_0_std.par into a new Quartus project using the same version of Quartus in which the project was originally created from (QUARTUS STD 18.0) it seems to go through initial enumerate and synthesis part OK but then when i try to open the QSYS Platform i see a load of RED errors due to missing components, which are these IP's: st_mux_2_to_1, aso_splitter, error_adapter2, eth_gen, eth_mon So basically most of the QSYS design apart from the TSE and a reset and clock are missing ! I tried to doing the 'upgrade IP' in Quartus for the Qsys component but that didn't help, and also i did a IP library refresh. Again no help. Does anybody got any suggestions please as to how to get these missing IP components ? Or is there a Git rep somewhere with a complete design i can compile for a MAX10 dev board using the Triple Speed Ethernet core ? I have attached the Altera User Guide for this example design to this case. I also added a screenshot showing the errors i get from loading up QSYS. Thanks for any help, Dr Barry H8Views0likes0CommentsMSGDMA ST-to-MM: Linux Driver Necessity & F2SDRAM Path Feasibility
Hello everyone, I am currently working on an MSGDMA implementation. I have verified that I can read the MSGDMA CSR and Descriptor registers via the LWH2F bridge using devmem2. My setup is configured in Streaming-to-Memory-Mapped (ST-to-MM) mode. I have two specific questions regarding this setup: 1、Is configuring the MSGDMA Linux kernel driver a mandatory condition for the hardware to function correctly? Is it possible to bypass the driver and configure the MSGDMA to start data transfer directly using devmem2 (user-space access)? 2、I noticed that some implementations write to the PS-side memory via the FPGA-to-HPS bridge. However, my design utilizes the F2SDRAM link, as indicated by the numbered sequence in the attached diagram. Could you please confirm if this architectural approach is feasible?60Views0likes2CommentsTrying to print warning messages from tcl build script
I am using quartus prime v22.1 std lite and have a build script for a max10 FPGA. It seems to build correctly, but i want to create a log file containing any errors/warnings etc. Every time the tcl fails at the 'get_messages' command (and also 'get_message_count' command), how can I generate the log file from within the tcl script? Thanks Section of script file shown below: # set compilation output folder to "factory" and compile project_open -revision wrapper factory-524-069 set_global_assignment -name PROJECT_OUTPUT_DIRECTORY "./factory" # open log file for writing set log_file "quartus_warnings.log" set fp [open $log_file w] fconfigure $fp -encoding utf-8 execute_flow -compile # filter warnings # Quartus stores messages in the internal database; we can query them load_package report load_report set msgs [get_messages -type warning] # Write warnings to log file foreach msg $msgs { puts $fp $msg } project_close # close log file close $fp the load_package report and load report seem to have no effect but were included in one example script I found.12Views0likes1Comment