I am migrating from Quartus 13.1 on a 32 bit Windows 7 to 17.1 on 64 bit Windows 10.
My 1000 lines of AHDL code involving LVDS at 960MHz with a Nios II processor and tons of altera megafunctions have done well and I should thank Intel for the continued support for AHDL. I am continuing to use AHDL in my new design with Cyclone 10. Well all work fine except ALTACCUMULATE. This is a pretty simple block. INCLUDE "Altaccumulate"; acc : ALTACCUMULATE WITH (WIDTH_IN = 16, WIDTH_OUT = 18, LPM_REPRESENTATION = "UNSIGNED"); The outputs are always stuck to Gnd. Any help making this megafunction continue to work is future editions is appreciated. RaviLink Copied
ALTACCUMULATE is working fine. Actually it was some timing issue writing to a TRI_STATE_BUS which feeds internal logic. Strangely this behavior occurs for loop lengths of greater than 10.
When I added the nop below everything became alright! psrc = (PUSHORT)(DPR_BASE); pdest = (PUSHORT)(AHDL_IFACE_BASE); for (i=0; i<15; i++) { *pdest++ = *psrc++; asm("nop"); } These pointers are always more elegant than the macros: IOWR_16DIRECT(DPR_BASE, offset, val) IORD_16DIRECT(DPR_BASE, offset) Regards, RaviFor more complete information about compiler optimizations, see our Optimization Notice.