Quantcast
Channel: Altera Forums
Viewing all 19390 articles
Browse latest View live

EMIF oct_rzqin compile error!

$
0
0
Hi,

I have generated a Qsys design of NIOS + EMIF(DDR4), when running synthesis in Quartus Prim Pro v17.0, it reports error:

Error(17044): Illegal connection on I/O input buffer primitive i_nios|nios_emif_0|nios_emif_0|arch|arch_inst|bufs _inst|gen_mem_dqs.inst[2].b|cal_oct.ibuf. Source I/O pin i_nios|nios_emif_0|nios_emif_0|arch|arch_inst|bufs _inst|gen_mem_dqs.inst[2].b|cal_oct.obuf drives out to destinations other than the specified I/O input buffer primitive.
Modify your design so the specified source I/O pin drives only the specified I/O input buffer primitive.

I'm sure the EMIF pin oct_rzqin is connected to top level input, not driving anything else in my RTL.


Thanks.

Questions Regarding Profiling of OpenCL Kernels

$
0
0
Hi,

I have some basic questions regarding profiling metrics being reported after kernel execution. Let me mention, I have already took a look at Intel FPGA documentation, regarding profiling metrics, but some specific things are still vague for me.

1) What exactly is the stall percentage, and which factors can cause stall in the pipeline?

2) Which factors can play with occupancy factors? In cases with 0% stall and occupancy smaller than 100%, can we conclude there is an existence of overhead of scheduling threads on the compute units?

3) The profiling shows execution time of the kernel, which is completely different from OpenCL event timing and the wall-clock execution time. What's the reason for that?

Thanks,
Saman

Cyclone V E Development Board Kit

$
0
0
Hi all,
I have Cyclone V E Development board kit. In the user guide, it said the frequency could go up to 810 MHZ by using Clock Control Application. But in the Cyclone V datasheet, it said "Global clock and Regional clock" is just go up to 460MHz and Max of "Output frequency for internal global or regional clock" for PLL is 460 MHz. How is Clock Control application get 810 MHz for clock input of programmable si570 oscillator?

GPIO Input Configuration

$
0
0
Hi all, I thought I would post an extension of my GPIO problems in a new thread to address a specific issue. I'm trying to receive a simple 3.3v signal through one of the GPIO pins on the expansion header as the return from a basic range finder. It's going to enable a clock setup eventually that will measure the length of the pulse. All this is being done without VHDL or Verilog as our instructor wants the project built primarily using primitives. I've got to the point where I can get GPIO[0] assigned to an input and my test circuit looks like this: GPIO[0] (input) ==> LEDR[0] (output). My intention was to test the reception of the signal by connecting a jumper between the 3.3v vcc on a nearby pin to cause the LED to light up. That's not how things are working, however.

As soon as the board is programmed, LEDR[0] lights up indicating it's receiving a voltage from somewhere even when nothing is connected to the input pin GPIO[0]. It stays lit until I connect a jumper from that pin to ground to short the signal at which time the LED goes out. It is my suspicion that I have something configured wrong, maybe in the pin planner, and I'm hoping someone can help. I've been playing around with different settings to no avail. If anyone could offer suggestions I'd greatly appreciate it. It seems like such a simple thing - just receive one 3.3v signal.

Cyclone V E Development Kit failed on Active Serial Configuration via JTAG

$
0
0
Hi All,
I am currently working on Cyclone V E Development Kit. I tried to save configuration file into EPCQ256SI16N. I did follow the youtube https://www.youtube.com/watch?v=dPSFCGNQOCU to generate .jic file. I set up MSEL[4-0] pin is
MSEL 4 : 1
MSEL 2: 0
MSEL 1: 1
MSEl 0: 0

as shown in Table 7-2: MSEL Pin Settings for Each Configuration Scheme of Cyclone V Devices of Cyclone V Handbook Device. But I am still get programmer process failed around 80 and 90%. I used Quartus 13.1 service pack 1. On the Quartus, it shows error "Can't recognize silicon ID for device 1"

Does anyone have any ideas what happens on it? Thanks.

Asynchronous counter

$
0
0
Hey!

I'm doing a school project and I got problem which I have hard to solve so I hope for your help.
Basicly when I try to test my block diagram on my SW[2] output I get undefined value X.
I really don't know what is wrong in it. But I will add picture of how is diagram looking and what result do I get.

I also will add a ling to my diagram I wanted to look http://tinyurl.com/yaejw9a9

Thanks for all help and I also hope I used right subforum.
Attached Images

Cyclone 10 GX LVDS clock buffer

$
0
0
When working with Cyclone 5 I remember having to buffer PLL output clocks before I can feed them to ALTLVDS. There's a cyclonev_pll_lvds_output in cyclonev_atoms.v I can use.

cyclonev_pll_lvds_output #(
.pll_loaden_enable_disable("true"),
.pll_lvdsclk_enable_disable("true"))
cyclonev_pll_lvds_output_inst (
.ccout({load_unbuf, clk_unbuf}),
.loaden(load_buffed),
.lvdsclk(clk_buffed)
);

Cyclone 10GX appears to require this too. After searching a bit there's a cyclone10gx_lvds_clock_tree inside cyclone10gx_atoms.v that looks suspiciously similar to the Cyclone5 version. So I tried this:


cyclone10gx_lvds_clock_tree lvds_clkbuf (
.lvdsfclk_in(clk_unbuf), .loaden_in(load_unbuf
),
.lvdsfclk_out(clk_buffed), .loaden_out(load_buffed),
.lvdsfclk_top_out(), .loaden_top_out(),
.lvdsfclk_bot_out(), .loaden_bot_out()
);

However Quartus crashed when compiling. Submitted automated crash report and everything.

But am I on the right track though?

Why does the same path have different timing in TimeQuest?

$
0
0
Hello!
I'm trying to constraint a source-synchronous output on my FPGA but I'm getting some timing numbers I can't quite understand (I feel they should be different).
I've read Rysc's pdfs on both TimeQuest and Source-Synch interfaces (which are great, awesome contribution!) and Altera's application note (AN433) and I think I understand how it should work.

My system has 2 SDI transceiver inputs, both recovered clocks are running at a nominal 148.5MHz. This two clocks are then multiplexed through logic, I know ripple clocks are frowned upon but I didn't know how else to do it, I couldn't feed those clocks into a clock control block because they come from channel PLLs (which can't feed ctrl blocks) and there's actually another reason which I'm leaving out to simplify the description of the system.

In any case, since I won't be doing any synchronous transfer between the recovered and the ripple clocks (there's a dc FIFO in between) I don't think it should be a problem. AND to be sure (and drive the source synch output) there a PLL right after the logic MUX. This PLL is the one I'm using to read from the dc FIFO and output data into ALTDDIO registers with clock_0 and a second PLL output (clock_180) shifted by 180 to drive another ALTDDIO register with the output clock. The interface is actually SDR, but I figured having both data and clock go through ALTDDIO registers would help with keeping timing similar between them (I've added a false_path from the falling edge of clock_0).

Now, to my question and the reason why I'm confused. I'm running TimeQuest trying to constraint the output and I keep getting some numbers which I feel should be the same -although I'm not entirely sure- but are quite different. For example, when I generate a report of hold timing on the output (clock_0 to clock_180) I get the following (this would be for one of the clocks being muxed, there's basically two sets of identical constraints one for each SDI recovered clock):


I've drawn a blue line where the paths diverge, you can see the required path is using one PLL counter (clock_0) and the arrival path is using the other PLL counter (clock_180). Above this line is the path of the recovered clock all the way from the transceiver's channel PLL. Why is it that the increments are so different between both paths? If everything above the blue line is the same, shouldn't the increments be at least similar? I've highlighted with red two that are remarkably different.

I'm just trying to understand what's going on, this is the first time I've had to constrain something this complex and would like to know what's actually happening inside.

Thank you all!
Attached Images

No logic elements although I have an output

$
0
0
Hello
Please guide me why I don't see any logic element for the current code :

LIBRARY ieee;
USE ieee.std_logic_1164.all;
Use ieee.numeric_std.all;
USE work.my_data_types.all; -- to define array of input ( package )

ENTITY test IS
PORT (
clk: in std_logic;

OutResult: out signed(9 downto 0));
end test;

Architecture behave of test is

Signal Im : Array2D:=(("0010000111","0001111110","0001001101", "0000000000","0000000000"),
("0001001111","0010000100","0000101100","000001101 1","0000000000"),
("0001011101","0010000100","0000100111","000010100 1","0000000000"),
("0001011101","0010000100","0000100111","000010100 1","0000000000"),
("0000000000","0000000000","0000000000","000000000 0","0000000000"));

signal Bufftemp:Array2D;
signal Buffsig:signed(9 DOWNTO 0);
begin


Process (clk)

variable i,j:integer range 0 to 7:=0;

begin
if (clk' event and clk='1') then
for j in 0 to 1 loop
for i in 0 to 1 loop

Bufftemp(2*j,2*i+1)<= Im(2*j,2*i+1) - 5;


end loop;
end loop;
end if;
Buffsig<=Bufftemp(i,j);
end process;


OutResult<=Buffsig;


end behave;

Would you recommend "new" Cyclone 10 GX now for a new design??

$
0
0
Hi,
I have seen that Cyclone 10GX are being available. As they are comparable to the smallest & low grade A10GX, but for a much lower cost, they can be very interesting I think.

Pro:
- Low price
- Some parts are stocked (36 pieces of 10CX220YF780I6G and 10CX220YF780E6G)
- 1 dev kit available
Cons:
- Less documentation than older FPGA (compare to A10GX for example)
- Almost no entry on Altera forum (+1 now :-) ) and only 1 on Altera wiki
- Only 1 dev kit with only the schematic pdf available. No Quartus ref design to prove tools/chips are working and have been tested (golden top, transceiver, BTS, …).
- Q17.1pro (no licence) is crashing a lot and compiling a former Q17.0standard A10GX project does not work (all ip re-created manually in Q17.1pro).
Analysis&Synthesis is stuck at 4%, then PC RAM grows till the max 32GB available and then SW ends.
But Altera wiki "simple" example compiles.

As I need several demanding features regarding tools (configuration, pinout and timing analysis), I am afraid that it is too soon to use cyclone 10GX.
- Several 12.5Gbps RX/TX
- >80LVDS inputs (serialize x10, ~1gbps)
- Remote update

What do you think? Do you already design boards with C10GX?

Thanks for feedbacks.

Links:
Dev kit:
https://www.altera.com/products/boar...ntent=NA_gxkit
Altera wiki project:
http://www.alterawiki.com/wiki/File:...DemoDesign.zip

[COMPILE] Error: DSP Builder

$
0
0
Hi again!

I get an error when tying to compile with the flag -c:
aoc -v -c cluster_k.cl
then:
Internal Error: DSP Builder for Intel(R) FPGAs - Advanced Blockset Internal Restriction: 'm_startVec.size() > 0' in commonBackend::EnumerateLatencyConstraints::Privat e::beginSetIteration at p4/ip/aion/src/mip_common/latency_constraint_iterator.cpp:268.
Error: DSP Builder for Intel(R) FPGAs - Advanced Blockset Internal Restriction: 'm_startVec.size() > 0' in commonBackend::EnumerateLatencyConstraints::Privat e::beginSetIteration at p4/ip/aion/src/mip_common/latency_constraint_iterator.cpp:268.

the line that is causing this error is:
b2 = ceil(components * tolerance);


components is an integer that is incremented through a loop, tolerance is a constant double.
Whats the problem with the above line? (Also b2 is integer)

Thanks in advance

Any easy way to get a bare metal image on SD card?

$
0
0
Hello:

I am the hardware guy working on a Cyclone V design. I have prototype boards that we are trying to bring up and then hand off to the software guys.

Currently, I have checked out the power supplies on the board and have managed to configure the FPGA with an image that simply blinks an LED and configures the ARM HPS system.

I was careful to keep match the HPS configuration that was used on one of the evaluation boards as much as possible, such as the selection of UART0, SD card, etc. My hope was that the same preloader image that was used on the eval board would work on my board.

So now I would like to see if the ARM is actually alive. I have read various documents that refer to a 'bare metal preloader' that has 'hello world' option. I would really like one of these now!

Okay, I also read the documents that describe how to create such a beast. Unfortunately, I am the hardware guy, and most of it is greek to me.

Is there any way that I can just buy a micro SD card with the bare metal preloader image on it?

thanks
Rod

Can a Quartus Prime Pro license run Quartus Standard Edition?

$
0
0
Hello, management has released some funds to upgrade our Quartus software so I'm looking at the Prime Pro and the Standard editions. Can anyone tell me if I purchase a Prime Pro license that I will be able to run the Standard edition? It looks to me that I will need to install the Prime Pro and the Standard edition because the Prime Pro doesn't support all the devices. Am I correct?

Thanks,
Joe

Error (23031): Evaluation of Tcl script import_compile.tcl unsuccessful

$
0
0
Info: Command: quartus_cdb -t import_compile.tcl
Info: Using INI file /home/temp/Desktop/workspace/wisconsin5/wisconsin5/bin/conv/quartus.ini
Info (125061): Changed top-level design entity name to "top"
Info (125061): Changed top-level design entity name to "kernel_system"
Info (16677): Loading synthesized database
Info (16734): Loading "synthesized" snapshot for partition "|".
Info (16678): Successfully loaded synthesized database: elapsed time is 00:00:29
Error (23031): Evaluation of Tcl script import_compile.tcl unsuccessful
Error: Quartus Prime Compiler Database Interface was unsuccessful. 1 error, 0 warnings
Error: Peak virtual memory: 12152 megabytes
Error: Processing ended: Wed Nov 15 01:19:43 2017
Error: Elapsed time: 10:30:25
Error: Total CPU time (on all processors): 11:41:19



I have this error in my quartus_sh_compile.log. But this only happens to my designs with large size (70% utilization). It will say 'failed to generate hardware' after around 10 hour's compilation. And by the way, the "<installation directory>/quartus/bin" directory was not in my PATH variable when that happend, but the hardware could be generated for this kernel with small size. I have the quartus_sh_compile.log and <kernel_name>.log attached.

aoc --version
Intel(R) FPGA SDK for OpenCL(TM), 64-Bit Offline Compiler
Version 16.1.0 Build 196
Copyright (C) 2016 Intel Corporation

quartus_map --version
Quartus Prime Analysis & Synthesis
Version 16.1.0 Build 196 10/24/2016 SJ Pro Edition
Copyright (C) 2016 Intel Corporation. All rights reserved
Attached Files

Terasic DE10 Standard, No boting from FPGA

$
0
0
Hi.
I have a Terasic De10 Standard and I did exactly as they wrote on the site "http://www.alterawiki.com/wiki/SocBootFromFPGA" and the result is:
Attached Images

Code Gerneration for DSP

$
0
0
Hi.

I have several operations on signed and unsigned long in my kernel, but only multiplication on signed long appears to use 8 DSP blocks.
For example, division and modulo on long or unsigned long appear to produce costly logic instead of using DSP blocks.

Is this expected behaviour in aoc version 16.0.X or an indicator for a bug in my code?

Upgrade IP (t)error, when using two (different) instances of the LPM_compare

$
0
0
For a circuit that includes two LPM_compare components generated by the MegaWizard, I suddenly get the IP Upgrade required prompted.
However, when I launch the IP Upgrade Tool, then only one of the instances are listed and I cannot resolve the error...
There seems to be some bug, because this issue occurs only occasionally


Any others experienced this ?
Attached Images

MAX10 constraining IO problems

$
0
0
Hello,
I am fairly new to FPGA development and learning about constraining my system but am really struggling. My system 'works' at certain clock frequencies but change something and I have I/O glitches so I clearly haven't constrained the IO properly.
I've read and tried to understand http://www.alterawiki.com/wiki/TimeQuest_User_Guide by Rysc and while that helped a lot I am struggling with generating the constraints.

I've done quite a bit of googling to try to find examples or references I can use as a base but my system doesn't fit the normal source synchronous simple examples.

Paint representation of the system:



The system is an 8 bit 5v micro "host" and an 8-bit 5v processor unit "parasite" connected via the MAX10 FPGA which implements various FIFO buffers as well as the boot ROM (via user FLASH) for the parasite uP. For the curious both uPs are 6502 variants. The 2MHzE clock comes from the host via buffers. The 8MHz FPGA clock is unrelated to the 2MHz clock. The FPGA generates the output clock for the parasite CPU using the PLL again via buffers (delay). All signal lines are buffered with delays.

I've tried to create the clocks but don't think I've got them defined right because TQ lists my clock input CLK_0n_p25 in the unconstrained inputs list.

The CPUs address timing goes from falling to falling which I think I have OK. The CPU read (FPGA out) goes from falling edge so I think that is OK too. The CPU write (FPGA in) setup is from the rising edge and hold is falling edge. I can't work out how to constrain this. The PLL will be reprogramable at runtime to change the parasite clock frequency so I don't want to hard code magic numbers for periods into the constraints but istead do it properly from the correct edges.

PLL[1] is the parasite CPU clock out skewed -5ns by the PLL.
PLL[2] is the parasite CPU clock no skew for internal timing.

I understand the setup errors I get as a result of the skewed clocks - I need to set up the multicycle paths between the clocks properly.

SDC (it is in a bit of a state because I have hacked at it a lot to try to get it working/understand what I'm doing..)
Code:

# needed?
set_time_format -unit ns -decimal_places 3

# physical clocks
create_clock -name clk_2MHzE -period 500 [get_ports {CLK_0n_p25}]
create_clock -name clk_8M_in -period 125 [get_ports {CLK_8meg_in_p26}]


# derived
create_generated_clock -name clk_flash -source [get_nets {cg|u0|int_osc_0|wire_clkout}] -divide_by 16 [get_nets {cg|clk_flash}]

# parasite clock at the pin
create_generated_clock -name parasite_phi0_out -source [get_pins {cg|internal_pll_inst|altpll_component|auto_generated|pll1|clk[1]}] [get_ports {parasite_phi0}]

# create external parasite cpu clock n ns delay
create_generated_clock -name parasite_phi0_ext -source [get_ports {parasite_phi0}] -offset 4.5

# virtual
#create_clock -name host_2MHzE_ext -period 500
#set_clock_latency -source -30 [get_clocks {host_2MHzE_ext}]
#set_clock_latency -source -5 [get_clocks {host_2MHzE_ext}]
#set_clock_latency seems to do nothing on virtual clocks
create_generated_clock -name host_2MHzE_ext -source [get_ports {CLK_0n_p25}] -offset -5


# name pll clocks
create_generated_clock -name parasite_phi0 -source [get_pins {cg|internal_pll_inst|altpll_component|auto_generated|pll1|clk[2]}]

# pll
derive_pll_clocks -create_base_clocks
derive_clock_uncertainty

# clock groups
set_clock_groups -asynchronous \
    -group [get_clocks {clk_8M_in}] \
    -group [get_clocks {int_osc_clk clk_flash}] \
    -group [get_clocks {clk_2MHzE host_2MHzE_ext}] \
    -group [get_clocks { \
        cg|internal_pll_inst|altpll_component|auto_generated|pll1|clk[1] \
        cg|internal_pll_inst|altpll_component|auto_generated|pll1|clk[2] \
        parasite_phi0 parasite_phi0_out parasite_phi0_ext  \
        }]

#
# host i/o

# HOST->FPGA addr : 100ns setup + 5ns board delay, 15ns hold 100+5 & 15-5
set_input_delay -clock { host_2MHzE_ext } -clock_fall -max 105 [get_ports {host_a[*] host_r_nw host_tube_n}]
set_input_delay -clock { host_2MHzE_ext } -clock_fall -min 10 [get_ports {host_a[*] host_r_nw host_tube_n}]

# HOST->FPGA data : (500-110)ns setup, 30ns hold + 5ns board delay. 390+5 & 30-5
set_input_delay -clock { host_2MHzE_ext } -clock_fall -max 395 [get_ports {host_d[*]}]
set_input_delay -clock { host_2MHzE_ext } -clock_fall -min 25 [get_ports {host_d[*]}]

# FPGA->HOST data : 60ns setup + 5ns board delay, 10ns hold. 65+5 & -10+5
set_output_delay -clock { host_2MHzE_ext } -clock_fall -max 70 [get_ports {host_d[*]}]
set_output_delay -clock { host_2MHzE_ext } -clock_fall -min -5 [get_ports {host_d[*]}]

##
## parasite i/o

# PARA->FPGA addr : ~12 setup, ~10ns hold, ? delay. originally measured
set_input_delay -clock { parasite_phi0_ext } -clock_fall -max 12 [get_ports {parasite_a[*] parasite_r_nw}]
set_input_delay -clock { parasite_phi0_ext } -clock_fall -min 0 [get_ports {parasite_a[*] parasite_r_nw}]

# PARA->FPGA data : 5 setup, 10 hold, 3? delay.
set_input_delay -clock { parasite_phi0_ext } -max 13 [get_ports {parasite_d[*]}]
set_input_delay -clock { parasite_phi0_ext } -clock_fall -add_delay -min 0 [get_ports {parasite_d[*]}]

# FPGA->PARA data : 10 setup, 10 hold. 3? delay 10+3 & -10+3
set_output_delay -clock { parasite_phi0_ext } -clock_fall -max 15 [get_ports {parasite_d[*]}]
set_output_delay -clock { parasite_phi0_ext } -clock_fall -min -5 [get_ports {parasite_d[*]}]


#
# SRAM i/o

# FPGA->SRAM wren :
set_output_delay -clock { parasite_phi0 } -clock_fall -max 10 [get_ports {mem_we}]
set_output_delay -clock { parasite_phi0 } -clock_fall -min 0 [get_ports {mem_we}]

So questions:
1) Have I correctly created the 2MHz clock(s)? (TQ places my input pin CLK_0n_p25 on unconstrained input report)
2) How do I constrain the data IO from rising egde launch & falling edge latch? (this is not right in my SDC)
3) My min parasite clock is 3MHz and max 25Mhz. How do I manage a variant since since the clock is currently derived from the PLL megafunction settings?

Any help appreciated, I am vey confused at the moment.

Thanks,
Chris
Attached Images

EMIF oct_rzqin compile error!

$
0
0
Hi,

I have generated a Qsys design of NIOS + EMIF(DDR4), when running synthesis in Quartus Prim Pro v17.0, it reports error:

Error(17044): Illegal connection on I/O input buffer primitive i_nios|nios_emif_0|nios_emif_0|arch|arch_inst|bufs _inst|gen_mem_dqs.inst[2].b|cal_oct.ibuf. Source I/O pin i_nios|nios_emif_0|nios_emif_0|arch|arch_inst|bufs _inst|gen_mem_dqs.inst[2].b|cal_oct.obuf drives out to destinations other than the specified I/O input buffer primitive.
Modify your design so the specified source I/O pin drives only the specified I/O input buffer primitive.

I'm sure the EMIF pin oct_rzqin is connected to top level input, not driving anything else in my RTL.


Thanks.

Questions Regarding Profiling of OpenCL Kernels

$
0
0
Hi,

I have some basic questions regarding profiling metrics being reported after kernel execution. Let me mention, I have already took a look at Intel FPGA documentation, regarding profiling metrics, but some specific things are still vague for me.

1) What exactly is the stall percentage, and which factors can cause stall in the pipeline?

2) Which factors can play with occupancy factors? In cases with 0% stall and occupancy smaller than 100%, can we conclude there is an existence of overhead of scheduling threads on the compute units?

3) The profiling shows execution time of the kernel, which is completely different from OpenCL event timing and the wall-clock execution time. What's the reason for that?

Thanks,
Saman
Viewing all 19390 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>