UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
384 Views
Registered: ‎11-05-2018

Partially updating bits in BRAM elements from pipeline loops causes incorrect results when co-simulation in Vivado HLS 2018.2

The following HLS C++ program causes a wrong result when synthesized & co-simulation with Vivado HLS 2018.2 on linux, a synthesize error in Vivado HLS 2018.2 on Windows, but works correctly in Vivado HLS 2019.1 on Windows.

 

#include <ap_int.h>
#include <hls_stream.h>

void copy_mio_ob(ap_uint<8>* in, ap_uint<16>* out, int w, int h) {
	for (int y = 0; y < h; ++y) {
		for (int x = 0; x < w; ++x) {
#pragma HLS pipeline II=1
			int i = y * w + x;
			ap_uint<8> v = in[i];
			int ii = i % 2;
			out[i / 2].range(8 * ii + 7, 8 * ii) = v;
		}
	}
}

void copy_mio_ob_root(hls::stream<ap_uint<8> >& in, hls::stream<ap_uint<8> >& out) {
#pragma HLS dataflow
#pragma HLS interface axis port=in
#pragma HLS interface axis port=out
	static const int w = 32, h = 16;
	ap_uint<8> in_buf[w * h];
	ap_uint<16> out_buf[w * h / 2];
	for (int y = 0; y < h; ++y) {
		for (int x = 0; x < w; ++x) {
#pragma HLS pipeline II=1
			int i = y * w + x;
			in_buf[i] = in.read();
		}
	}
	
	copy_mio_ob(in_buf, out_buf, w, h);
	
	for (int y = 0; y < h; ++y) {
		for (int x = 0; x < w; ++x) {
#pragma HLS pipeline II=1
			int i = y * w + x;
			int ii = i % 2;
			out.write(out_buf[i / 2].range(8 * ii + 7, 8 * ii));
		}
	}
	return;
} 
// Test bench
#include <cassert> #include <hls_stream.h> #include <ap_int.h> void copy_mio_ob_root(hls::stream<ap_uint<8> >& in, hls::stream<ap_uint<8> >& out); int main() { static const int w = 32, h = 16; hls::stream<ap_uint<8> > in; hls::stream<ap_uint<8> > out; for (int y = 0; y < h; ++y) { for (int x = 0; x < w; ++x) { in.write(y * w + x); } } copy_mio_ob_root(in, out); bool ok = true; for (int y = 0; y < h; ++y) { for (int x = 0; x < w; ++x) { ap_uint<8> v = out.read(); ap_uint<8> tv = y * w + x; if (v != tv) { printf("%d != %d\n", static_cast<int>(v), static_cast<int>(tv)); ok = false; } } } assert(ok); printf("Test Passed!\n"); return 0; }

The following is the excerpted co-simulation output on Vivado HLS 2018.2 on Linux.

WARNING: [SIM 212-201] RTL produces unknown value 'X' on port 'out_V_V', possible cause: There are uninitialized variables in the C design.
WARNING: [SIM 212-201] RTL produces unknown value 'X' on port 'out_V_V', possible cause: There are uninitialized variables in the C design.
WARNING: [SIM 212-201] RTL produces unknown value 'X' on port 'out_V_V', possible cause: There are uninitialized variables in the C design.
...
cosim.pc.exe: /home/izumi.asakura/tmp/copy_mio_ob/copy_mio_ob_tb.cc:30: int main(): Assertion `ok' failed.
0 != 1
0 != 3
0 != 5
0 != 7
0 != 9
0 != 11
0 != 13
0 != 15
0 != 17
0 != 19
0 != 21
0 != 23
0 != 25
0 != 27
0 != 29
0 != 31
0 != 33
0 != 35
...

The following is the synthesize error on Vivado HLS 2018.2 on Windows.

Starting C synthesis ...
C:/Xilinx/Vivado/2018.2/bin/vivado_hls.bat C:/Users/izumi.asakura/AppData/Roaming/Xilinx/Vivado/copy_mio_ob_2018_2/solution1/csynth.tcl
INFO: [HLS 200-10] Running 'C:/Xilinx/Vivado/2018.2/bin/unwrapped/win64.o/vivado_hls.exe'
INFO: [HLS 200-10] For user 'izumi.asakura' on host 'f180807dt05' (Windows NT_amd64 version 6.2) on Fri Jul 26 12:46:38 +0900 2019
INFO: [HLS 200-10] In directory 'C:/Users/izumi.asakura/AppData/Roaming/Xilinx/Vivado'
INFO: [HLS 200-10] Opening project 'C:/Users/izumi.asakura/AppData/Roaming/Xilinx/Vivado/copy_mio_ob_2018_2'.
INFO: [HLS 200-10] Adding design file '../../../../vivado-hls/copy_mio_ob/copy_mio_ob.cc' to the project
INFO: [HLS 200-10] Adding test bench file '../../../../vivado-hls/copy_mio_ob/copy_mio_ob_tb.cc' to the project
INFO: [HLS 200-10] Opening solution 'C:/Users/izumi.asakura/AppData/Roaming/Xilinx/Vivado/copy_mio_ob_2018_2/solution1'.
INFO: [SYN 201-201] Setting up clock 'default' with a period of 10ns.
INFO: [HLS 200-10] Setting target device to 'xa7a12tcsg325-1q'
INFO: [HLS 200-10] Analyzing design file '../../../../vivado-hls/copy_mio_ob/copy_mio_ob.cc' ... 
WARNING: [HLS 214-111] Static variables and non-static stream cannot be used inside a dataflow region: ../../../../vivado-hls/copy_mio_ob/copy_mio_ob.cc:20:19
INFO: [HLS 200-111] Finished Linking Time (s): cpu = 00:00:01 ; elapsed = 00:00:10 . Memory (MB): peak = 102.840 ; gain = 45.656
INFO: [HLS 200-111] Finished Checking Pragmas Time (s): cpu = 00:00:01 ; elapsed = 00:00:10 . Memory (MB): peak = 102.840 ; gain = 45.656
INFO: [HLS 200-10] Starting code transformations ...
INFO: [HLS 200-111] Finished Standard Transforms Time (s): cpu = 00:00:01 ; elapsed = 00:00:10 . Memory (MB): peak = 110.254 ; gain = 53.070
INFO: [HLS 200-10] Checking synthesizability ...
WARNING: [SYNCHK 200-23] ../../../../vivado-hls/copy_mio_ob/copy_mio_ob.cc:38: variable-indexed range selection may cause suboptimal QoR.
INFO: [SYNCHK 200-10] 0 error(s), 1 warning(s).
INFO: [HLS 200-111] Finished Checking Synthesizability Time (s): cpu = 00:00:01 ; elapsed = 00:00:10 . Memory (MB): peak = 114.313 ; gain = 57.129
INFO: [XFORM 203-721] Changing loop 'Loop_1_proc' (../../../../vivado-hls/copy_mio_ob/copy_mio_ob.cc:23) to a process function for dataflow in function 'copy_mio_ob_root'.
INFO: [XFORM 203-721] Changing loop 'Loop_2_proc' (../../../../vivado-hls/copy_mio_ob/copy_mio_ob.cc:33) to a process function for dataflow in function 'copy_mio_ob_root'.
WARNING: [XFORM 203-713] All the elements of global array 'out_buf'  should be updated in process function 'copy_mio_ob', otherwise it may not be synthesized correctly.
INFO: [XFORM 203-712] Applying dataflow to function 'copy_mio_ob_root', detected/extracted 3 process function(s): 
	 'Loop_1_proc17'
	 'copy_mio_ob'
	 'Loop_2_proc18'.
INFO: [HLS 200-111] Finished Pre-synthesis Time (s): cpu = 00:00:01 ; elapsed = 00:00:10 . Memory (MB): peak = 140.020 ; gain = 82.836
INFO: [XFORM 203-541] Flattening a loop nest 'Loop-1' (../../../../vivado-hls/copy_mio_ob/copy_mio_ob.cc:5:16) in function 'copy_mio_ob'.
INFO: [XFORM 203-541] Flattening a loop nest 'Loop-1' (../../../../vivado-hls/copy_mio_ob/copy_mio_ob.cc:33:16) in function 'Loop_2_proc18'.
INFO: [XFORM 203-541] Flattening a loop nest 'Loop-1' (../../../../vivado-hls/copy_mio_ob/copy_mio_ob.cc:23:16) in function 'Loop_1_proc17'.
INFO: [HLS 200-472] Inferring partial write operation for 'out.V' (../../../../vivado-hls/copy_mio_ob/copy_mio_ob.cc:11:4)
Stack dump:
0.	Running pass 'Generate BRAM Byte Enable specs' on module 'C:/Users/izumi.asakura/AppData/Roaming/Xilinx/Vivado/copy_mio_ob_2018_2/solution1/.autopilot/db/a.o.2.bc'.
0x00007FFD0209EB78 (0x000001F634910290 0xFFFFFFFFFFFFFFFE 0xFFFFFFFFFFFFFFFE 0x00007FFD01E4912E), ?main@Syn@@YAHHPEAPEAD@Z() + 0x372CF8 bytes(s)
0x00007FFD025F2DD0 (0x000001F63490F480 0x000001F6353D1320 0x000001F6352B5F00 0x00007FFD023E4156), ?save_object_ptr@?$pointer_oserializer@Vxml_oarchive@archive@boost@@VTransition@DBFsm@fsmd@@@detail@archive@boost@@EEBAXAEAVbasic_oarchive@234@PEBX@Z() + 0x287B70 bytes(s)
0x00007FFD025F2F5A (0x000001F63490F480 0x000001F634910290 0x000001F634910200 0x0000000000000001), ?save_object_ptr@?$pointer_oserializer@Vxml_oarchive@archive@boost@@VTransition@DBFsm@fsmd@@@detail@archive@boost@@EEBAXAEAVbasic_oarchive@234@PEBX@Z() + 0x287CFA bytes(s)
0x00007FFD025F2F5A (0x000001F63490F480 0x000001F6351B4E28 0x000001F6352BF601 0x000001F634871FA0), ?save_object_ptr@?$pointer_oserializer@Vxml_oarchive@archive@boost@@VTransition@DBFsm@fsmd@@@detail@archive@boost@@EEBAXAEAVbasic_oarchive@234@PEBX@Z() + 0x287CFA bytes(s)
0x00007FFD025F37FB (0x000001F634B3B608 0x000001F6350A1720 0x0000000000000000 0x000001F63507AC48), ?save_object_ptr@?$pointer_oserializer@Vxml_oarchive@archive@boost@@VTransition@DBFsm@fsmd@@@detail@archive@boost@@EEBAXAEAVbasic_oarchive@234@PEBX@Z() + 0x28859B bytes(s)
0x00007FFD025F3674 (0x0000000000000000 0x00000060F9AF0E79 0x000001F634B3B710 0x0000000000000000), ?save_object_ptr@?$pointer_oserializer@Vxml_oarchive@archive@boost@@VTransition@DBFsm@fsmd@@@detail@archive@boost@@EEBAXAEAVbasic_oarchive@234@PEBX@Z() + 0x288414 bytes(s)
0x00007FFD0201B779 (0x0000000000000000 0x000001F6327C9750 0x0000000000000000 0x0000813FDA1DF0E5), ?main@Syn@@YAHHPEAPEAD@Z() + 0x2EF8F9 bytes(s)
0x00007FFD0201A660 (0x0000000000000000 0x00000060F9AF1800 0x000001F6327C9750 0x000001F634B3B640), ?main@Syn@@YAHHPEAPEAD@Z() + 0x2EE7E0 bytes(s)
0x00007FFD01CD84FC (0x0000000000000914 0x0000000000000914 0x00000060F9AF1800 0x000000000000090B)
0x00007FFD520BA85C (0x0000000000000000 0x0000000000000000 0x0000000000000000 0x000001F62FEF76D0), ?addOwnedOption@TclCommand@xpcl@@QEAAXPEAVOption@2@@Z() + 0x4AC bytes(s)
0x00007FFD520BEC42 (0x000001F6342F79E5 0x000001F6342F79DB 0x000001F63432B7B0 0x00000000759F0E7B), ?setResultObj@TclCommand@xpcl@@QEAAXPEAUTcl_Obj@@@Z() + 0x52 bytes(s)
0x00000000759411FC (0x000001F600000000 0x000001F6000000B6 0x000001F62FF0F308 0xFFFFFFFFFFFFFFFF), Tcl_ListMathFuncs() + 0x58C bytes(s)
0x0000000075986238 (0x000001F62FEF76D0 0x000001F6343063F0 0x0000000000000000 0x000001F600000000), Tcl_ExprObj() + 0x1868 bytes(s)
0x0000000075984FEC (0x000001F62FE4E0B0 0x000001F62FEF76D0 0x0000000000000001 0x000001F62FEF76D0), Tcl_ExprObj() + 0x61C bytes(s)
0x0000000075942E8D (0x000001F631EF69B0 0x0000000000000003 0x000001F62FEF76D0 0x000001F631F7EE30), TclEvalObjEx() + 0x3AD bytes(s)
0x0000000075942ACD (0x000001F62FF0F2B0 0x000001F62E2FD460 0x000001F62FE4E0B0 0x00000000759D4790), Tcl_EvalObjEx() + 0x1D bytes(s)
0x00007FFD3A90FDDB (0x000001F62FEF76D0 0x000001F62FEF76D0 0x000001F62FF0F298 0x0000000075A0AC7D)
0x00000000759411FC (0x0000000000000000 0x0000000000000003 0x000001F62FF0F298 0xFFFFFFFFFFFFFFFF), Tcl_ListMathFuncs() + 0x58C bytes(s)
0x0000000075986238 (0x000001F62FEF76D0 0x000001F63431A940 0x000001F62FF0F020 0x0000000000000000), Tcl_ExprObj() + 0x1868 bytes(s)
0x00000000759D12F4 (0x0000000000000000 0x000001F62FEF76D0 0x000001F62FF0F020 0x00000000759F0E7B), TclObjInterpProcCore() + 0x74 bytes(s)
0x00000000759411FC (0x0000000000000000 0x0000000000000005 0x000001F62FF0F020 0xFFFFFFFFFFFFFFFF), Tcl_ListMathFuncs() + 0x58C bytes(s)
0x0000000075986238 (0x000001F62FEF76D0 0x000001F6342F10A0 0x0000000000000000 0x000001F600000000), Tcl_ExprObj() + 0x1868 bytes(s)
0x0000000075984FEC (0x000001F62FE4E0B0 0x000001F62FEF76D0 0x0000000000000001 0x000001F62FEF76D0), Tcl_ExprObj() + 0x61C bytes(s)
0x0000000075942E8D (0x000001F63419D890 0x0000000000000003 0x000001F62FEF76D0 0x000001F631F7EE30), TclEvalObjEx() + 0x3AD bytes(s)
0x0000000075942ACD (0x000001F62FF0EFC0 0x000001F62E2FD460 0x000001F62FE4E0B0 0x00000000759D4790), Tcl_EvalObjEx() + 0x1D bytes(s)
0x00007FFD3A90FDDB (0x000001F62FEF76D0 0x000001F62FEF76D0 0x000001F62FF0EFA8 0x0000000075A0AC7D)
0x00000000759411FC (0x000001F600000000 0x0000000000000003 0x000001F62FF0EFA8 0xFFFFFFFFFFFFFFFF), Tcl_ListMathFuncs() + 0x58C bytes(s)
0x0000000075986238 (0x000001F62FEF76D0 0x000001F634282CF0 0x000001F62FF0EE18 0x0000000000000000), Tcl_ExprObj() + 0x1868 bytes(s)
0x00000000759D12F4 (0x0000000000000000 0x000001F62FEF76D0 0x000001F62FF0EE18 0x000000007599460F), TclObjInterpProcCore() + 0x74 bytes(s)
0x00000000759411FC (0x000001F600000000 0x0000006000000006 0x000001F62FF0EE18 0xFFFFFFFFFFFFFFFF), Tcl_ListMathFuncs() + 0x58C bytes(s)
0x0000000075986238 (0x000001F62FEF76D0 0x000001F6342434F0 0x000001F62FF0ECA8 0x0000000000000000), Tcl_ExprObj() + 0x1868 bytes(s)
0x00000000759D12F4 (0x0000000000000000 0x000001F62FEF76D0 0x000001F62FF0ECA8 0xFFFFFFFFFFFFFFFF), TclObjInterpProcCore() + 0x74 bytes(s)
0x00000000759411FC (0x000001F600000000 0x000001F600000001 0x000001F62FF0ECA8 0xFFFFFFFFFFFFFFFF), Tcl_ListMathFuncs() + 0x58C bytes(s)
0x0000000075986238 (0x000001F62FEF76D0 0x000001F6342FB5C0 0x0000000000000000 0x000001F600000000), Tcl_ExprObj() + 0x1868 bytes(s)
0x0000000075984FEC (0x000001F62FE4E0B0 0x000001F62FEF76D0 0x00000060F9AF49C0 0x00000060F9AF4970), Tcl_ExprObj() + 0x61C bytes(s)
0x0000000075942E8D (0x000001F62FF0C720 0x0000000000000003 0x000001F62FEF76D0 0x000001F6322916F0), TclEvalObjEx() + 0x3AD bytes(s)
0x0000000075942ACD (0x0000000000000000 0x000001F62E2FD460 0x000001F62FE4E0B0 0x00000000759D4790), Tcl_EvalObjEx() + 0x1D bytes(s)
0x00007FFD3A90FDDB (0x000001F62FEF76D0 0x000001F62FEF76D0 0x000001F63071DE60 0x0000000075A0AC7D)
0x00000000759411FC (0x000001F600000000 0x0000000000000003 0x000001F62FF0EC38 0xFFFFFFFFFFFFFFFF), Tcl_ListMathFuncs() + 0x58C bytes(s)
0x0000000075986238 (0x000001F62FEF76D0 0x000001F6342FB6C0 0x000001F6341B5F10 0x000001F600000000), Tcl_ExprObj() + 0x1868 bytes(s)
0x0000000075984D5D (0x000001F6341B5EE0 0x000001F6342CA300 0x0000000000000000 0x0000000000000001), Tcl_ExprObj() + 0x38D bytes(s)
0x000000007594D73B (0x000001F62FEF76D0 0x0000000000000000 0x000001F632F9B4F0 0x000001F62FF0EA80), TclDumpMemoryInfo() + 0x5D6B bytes(s)
0x00000000759411FC (0x0000000000000000 0x000001F600000003 0x000001F62FF0EA80 0x000001F632F9B7F2), Tcl_ListMathFuncs() + 0x58C bytes(s)
0x000000007594218E (0x000001F62FEF76D0 0x000001F632F9B4F0 0x0000006000000003 0x0000000000000003), Tcl_EvalEx() + 0x99E bytes(s)
0x0000000075942A38 (0x000001F62FEF76D0 0x0000000000000000 0x00007FFD02C34BC4 0x0000000000000000), Tcl_Eval() + 0x38 bytes(s)
0x00007FFD01CB145C (0x00000060F9AF62A0 0x000000000000004D 0x0000000000000000 0x0000000000000000)
0x00007FFD520BA8A0 (0x000001F631EF9020 0x00000000759F0E7B 0x000001F62FF0E5C0 0x000001F62FEF76D0), ?addOwnedOption@TclCommand@xpcl@@QEAAXPEAVOption@2@@Z() + 0x4F0 bytes(s)
0x00007FFD520BEC42 (0x0000000000000000 0x000001F62FEF76D0 0x000001F62FF0E7B0 0x0000000075A0AC7D), ?setResultObj@TclCommand@xpcl@@QEAAXPEAUTcl_Obj@@@Z() + 0x52 bytes(s)
0x00000000759411FC (0x0000000000000000 0x000001F600000006 0x000001F62FF0E7A8 0xFFFFFFFFFFFFFFFF), Tcl_ListMathFuncs() + 0x58C bytes(s)
0x0000000075986238 (0x000001F62FEF76D0 0x000001F632F420F0 0x000001F62FF0E5A8 0x0000000000000000), Tcl_ExprObj() + 0x1868 bytes(s)
0x00000000759D12F4 (0x0000000000000000 0x000001F62FEF76D0 0x000001F62FF0E5A8 0x0000000075A6336B), TclObjInterpProcCore() + 0x74 bytes(s)
0x00000000759411FC (0x000001F600000000 0x0000006000000001 0x000001F62FF0E5A8 0xFFFFFFFFFFFFFFFF), Tcl_ListMathFuncs() + 0x58C bytes(s)
0x0000000075986238 (0x000001F62FEF76D0 0x000001F634145960 0x0000000000000000 0x000001F600000000), Tcl_ExprObj() + 0x1868 bytes(s)
0x0000000075984FEC (0x000001F62FE4E0B0 0x000001F62FEF76D0 0x00000060F9AF75D0 0x00000060F9AF7580), Tcl_ExprObj() + 0x61C bytes(s)
0x0000000075942E8D (0x000001F634147570 0x0000000000000003 0x000001F62FEF76D0 0x000001F6322916F0), TclEvalObjEx() + 0x3AD bytes(s)
0x0000000075942ACD (0x000001F62FEF76D0 0x000001F62E2FD460 0x000001F62FE4E0B0 0x00000000759D4790), Tcl_EvalObjEx() + 0x1D bytes(s)
0x00007FFD3A90FDDB (0x000001F62FEF76D0 0x000001F62FEF76D0 0x000001F633EE4C80 0x0000000075A0AC7D)
0x00000000759411FC (0x000001F600000000 0x0000000000000003 0x000001F62FF0E538 0xFFFFFFFFFFFFFFFF), Tcl_ListMathFuncs() + 0x58C bytes(s)
0x0000000075986238 (0x000001F62FEF76D0 0x000001F634145C60 0x000001F634150BB0 0x000001F600000000), Tcl_ExprObj() + 0x1868 bytes(s)
0x0000000075984D5D (0x000001F634150EB0 0x000001F6341314D0 0x0000000000000000 0x0000000000000001), Tcl_ExprObj() + 0x38D bytes(s)
0x000000007594D73B (0x000001F62FEF76D0 0x0000000000000000 0x000001F6304809A0 0x000001F62FF0E380), TclDumpMemoryInfo() + 0x5D6B bytes(s)
0x00000000759411FC (0x0000000000000000 0x000001F600000003 0x000001F62FF0E380 0x000001F630481BA6), Tcl_ListMathFuncs() + 0x58C bytes(s)
0x000000007594218E (0x000001F62FEF76D0 0x000001F6304809A0 0x0000006000000003 0x0000000000000003), Tcl_EvalEx() + 0x99E bytes(s)
0x0000000075942A38 (0x000001F62FEF76D0 0x0000000000000000 0x00007FFD02C34BC4 0x0000000000000000), Tcl_Eval() + 0x38 bytes(s)
0x00007FFD01CB145C (0x00000060F9AF8EB0 0x000000000000008D 0x0000000000000000 0x0000000000000000)
0x00007FFD520BA8A0 (0x000001F62FEEBDF0 0x0000000075970AE5 0x000001F634028B89 0x000001F62FEF76D0), ?addOwnedOption@TclCommand@xpcl@@QEAAXPEAVOption@2@@Z() + 0x4F0 bytes(s)
0x00007FFD520BEC42 (0x0000000000000000 0x000001F62FEF76D0 0x000001F62FF0E078 0x0000000075A0AC7D), ?setResultObj@TclCommand@xpcl@@QEAAXPEAUTcl_Obj@@@Z() + 0x52 bytes(s)
0x00000000759411FC (0x0000000000000000 0x000001F60000000B 0x000001F62FF0E078 0xFFFFFFFFFFFFFFFF), Tcl_ListMathFuncs() + 0x58C bytes(s)
0x0000000075986238 (0x000001F62FEF76D0 0x000001F634028940 0x000001F62FF0DEA8 0x0000000000000000), Tcl_ExprObj() + 0x1868 bytes(s)
0x00000000759D12F4 (0x0000000000000000 0x000001F62FEF76D0 0x000001F62FF0DEA8 0x0000000075A0AC7D), TclObjInterpProcCore() + 0x74 bytes(s)
0x00000000759411FC (0x000001F600000000 0x000001F600000001 0x000001F62FF0DEA8 0xFFFFFFFFFFFFFFFF), Tcl_ListMathFuncs() + 0x58C bytes(s)
0x0000000075986238 (0x000001F62FEF76D0 0x000001F6326E9950 0x0000000000000000 0x000001F600000000), Tcl_ExprObj() + 0x1868 bytes(s)
0x0000000075984FEC (0x000001F62FE4E0B0 0x000001F62FEF76D0 0x00000060F9AFA1E0 0x00000060F9AFA190), Tcl_ExprObj() + 0x61C bytes(s)
0x0000000075942E8D (0x000001F63410AF00 0x0000000000000003 0x000001F62FEF76D0 0x000001F6322916F0), TclEvalObjEx() + 0x3AD bytes(s)
0x0000000075942ACD (0x000001F62FEF76D0 0x000001F62E2FD460 0x000001F62FE4E0B0 0x00000000759D4790), Tcl_EvalObjEx() + 0x1D bytes(s)
0x00007FFD3A90FDDB (0x000001F62FEF76D0 0x000001F62FEF76D0 0x0000000000000470 0x0000000075A0AC7D)
0x00000000759411FC (0x000001F600000000 0x0000000000000003 0x000001F62FF0DE38 0xFFFFFFFFFFFFFFFF), Tcl_ListMathFuncs() + 0x58C bytes(s)
0x0000000075986238 (0x000001F62FEF76D0 0x000001F6326B7490 0x000001F63228CB90 0x000001F600000000), Tcl_ExprObj() + 0x1868 bytes(s)
0x0000000075984D5D (0x000001F631EF1FA0 0x000001F6326DD440 0x0000000000000000 0x0000000000000001), Tcl_ExprObj() + 0x38D bytes(s)
0x000000007594D73B (0x000001F62FEF76D0 0x0000000000000000 0x000001F632E42130 0x000001F62FF0DC80), TclDumpMemoryInfo() + 0x5D6B bytes(s)
0x00000000759411FC (0x0000000000000000 0x000001F600000003 0x000001F62FF0DC80 0x000001F632E427DE), Tcl_ListMathFuncs() + 0x58C bytes(s)
0x000000007594218E (0x000001F62FEF76D0 0x000001F632E42130 0x0000006000000003 0x0000000000000003), Tcl_EvalEx() + 0x99E bytes(s)
0x0000000075942A38 (0x000001F62FEF76D0 0x0000000000000000 0x00007FFD02C34BC4 0x0000000000000000), Tcl_Eval() + 0x38 bytes(s)
0x00007FFD01CB145C (0x00000060F9AFBAC0 0x0000000000000011 0x0000000000000000 0x0000000000000000)
0x00007FFD520BA8A0 (0x0000000000000000 0x0000000000000000 0x0000000000000000 0x000001F62FEF76D0), ?addOwnedOption@TclCommand@xpcl@@QEAAXPEAVOption@2@@Z() + 0x4F0 bytes(s)
0x00007FFD520BEC42 (0x000001F63402EF50 0x0000000000000000 0x0000000000000000 0x0000000000000002), ?setResultObj@TclCommand@xpcl@@QEAAXPEAUTcl_Obj@@@Z() + 0x52 bytes(s)
0x00000000759411FC (0x000001F600000000 0x0000000000000001 0x000001F62FF0D870 0x000001F63291BB83), Tcl_ListMathFuncs() + 0x58C bytes(s)
0x000000007594218E (0x000001F62FEF76D0 0x000001F63291B910 0x000001F600000001 0x0000000000000001), Tcl_EvalEx() + 0x99E bytes(s)
0x00000000759AB660 (0x0000000000000000 0x00007FFD03103F90 0x0000000000000000 0x0000000000000000), Tcl_FSEvalFileEx() + 0x250 bytes(s)
0x00007FFD01CAD163 (0x0000000000000000 0x0000000000000000 0x0000000000000000 0xFFFFFFFFFFFFFFFE)
0x00007FFD01CB0BBA (0x00000060F9AFC370 0x0000000000000065 0x00000060F9AFC340 0x0000000000000065)
0x00007FFD520BA8A0 (0x0000000000000001 0x000000007598478C 0x0000000000000002 0x000001F62FEF76D0), ?addOwnedOption@TclCommand@xpcl@@QEAAXPEAVOption@2@@Z() + 0x4F0 bytes(s)
0x00007FFD520BEC42 (0x00000060F9AFC898 0x0000000075A0AC7D 0x582F676E696D616F 0x0000000000000001), ?setResultObj@TclCommand@xpcl@@QEAAXPEAUTcl_Obj@@@Z() + 0x52 bytes(s)
0x00000000759411FC (0x000001F600000000 0x000001F600000002 0x000001F632811280 0x0000000000000000), Tcl_ListMathFuncs() + 0x58C bytes(s)
0x0000000075941681 (0x000001F632A07630 0x0000000000000002 0x0000000000000007 0x00000060F9AFC8F9), Tcl_EvalObjv() + 0x51 bytes(s)
0x0000000075942C37 (0x000000000000005C 0x00000060F9AFC8F9 0x000000000000005C 0x000001F6304585B0), TclEvalObjEx() + 0x157 bytes(s)
0x0000000075942ACD (0x0000000000000002 0x0000000000000000 0x0000000000000000 0x0000000000000000), Tcl_EvalObjEx() + 0x1D bytes(s)
0x00007FFD54E76465 (0x00000060F9AFCCD8 0x0000000075970AA2 0x00000060F9AFCCD8 0x0000000000000060), Rdi_hlstasks_Init() + 0x3635 bytes(s)
0x00007FFD045F14E4 (0x000001F62FEF76D0 0x00000060F9AFCCD8 0xFFFFFFFFFFFFFFFF 0x00000000759944E3), ?eval_in_tcl_throw@task_manager@tcltasks@hdi@@SAHPEBD0_N@Z() + 0x254 bytes(s)
0x00007FFD045F42F6 (0x0000000075A45A20 0x0000000000000000 0x000001F62FDB97C0 0x0000000075A0AC3C), ?retrieve_except_msg_instance@task_manager@tcltasks@hdi@@SA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z() + 0x4C6 bytes(s)
0x00000000759411FC (0x0000000000000000 0x000001F600000002 0x000001F62FF0D410 0x000001F62FDB97C0), Tcl_ListMathFuncs() + 0x58C bytes(s)
0x000000007594218E (0x000001F62FEF76D0 0x000001F62FDB97C0 0x0000000000000002 0x000001F600000002), Tcl_EvalEx() + 0x99E bytes(s)
0x0000000075942D1E (0x0000000000000000 0x0000000000000000 0x0000000000000002 0x0000000000000004), TclEvalObjEx() + 0x23E bytes(s)
0x00000000759D05F9 (0x0000000000000001 0x000001F62FEEAB30 0x000001F62FEF76D0 0x000001F6304A337C), TclObjGetFrame() + 0x339 bytes(s)
0x00000000759411FC (0x000001F600000000 0x0000006000000004 0x000001F62FF0D148 0xFFFFFFFFFFFFFFFF), Tcl_ListMathFuncs() + 0x58C bytes(s)
0x0000000075986238 (0x000001F62FEF76D0 0x000001F6304A32A0 0x000001F62FF0D058 0x0000000000000000), Tcl_ExprObj() + 0x1868 bytes(s)
0x00000000759D12F4 (0x0000000000000000 0x000001F62FEF76D0 0x000001F62FF0D058 0x00000000759F0E7B), TclObjInterpProcCore() + 0x74 bytes(s)
0x00000000759411FC (0x000001F600000000 0x0000000000000002 0x000001F62FF0D058 0xFFFFFFFFFFFFFFFF), Tcl_ListMathFuncs() + 0x58C bytes(s)
0x0000000075986238 (0x000001F62FEF76D0 0x000001F6304558A0 0x000001F62FE4C900 0x0000000000000000), Tcl_ExprObj() + 0x1868 bytes(s)
0x0000000075984FEC (0x000001F62E2FD460 0x000001F62FEF76D0 0xFFFFFFFFFFFFFFFE 0x00000060F9AFDFB0), Tcl_ExprObj() + 0x61C bytes(s)
0x0000000075942E8D (0x00000060F9AFE078 0x0000000000000004 0x000001F62FEF76D0 0x000001F62FEF3250), TclEvalObjEx() + 0x3AD bytes(s)
0x0000000075942ACD (0x000001F62FE4E0B0 0x000001F62E2FD460 0x000001F62E2FD460 0x000001F62E347F60), Tcl_EvalObjEx() + 0x1D bytes(s)
0x00007FFD3A90FDDB (0x000001F62FEF76D0 0x000001F62FEF76D0 0x000001F6304A34A0 0x0000000075A0AC3C)
0x00000000759411FC (0x0000000000000000 0x000001F600000004 0x000001F62FF0CEA0 0x000001F6304A354A), Tcl_ListMathFuncs() + 0x58C bytes(s)
0x000000007594218E (0x000001F62FEF76D0 0x000001F6304A354A 0x0000000000000004 0x0000000000000004), Tcl_EvalEx() + 0x99E bytes(s)
0x00000000759C6A82 (0x000001F62FEF76D0 0x0000000000000001 0x000001F600000001 0x0000000000000000), Tcl_SubstObj() + 0x832 bytes(s)
0x0000000075941D94 (0x000001F62FEF76D0 0x000001F6304A34A0 0x000001F600000001 0x0000000000000001), Tcl_EvalEx() + 0x5A4 bytes(s)
0x00000000759AB660 (0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000), Tcl_FSEvalFileEx() + 0x250 bytes(s)
0x00007FFD3A930383 (0x00007FFD04A31DF0 0x000001F63000D9F8 0x000001F62FEF76D0 0x0000ED2F440A6B43)
0x00007FFD3A92F83C (0x00000060F9AFEAA8 0x0000000000000040 0x00000060F9AFEAA8 0x0000000000000060)
0x00007FFD045F14E4 (0x000001F62FEF76D0 0x00000060F9AFEAA8 0xFFFFFFFFFFFFFFFF 0x000000C800000000), ?eval_in_tcl_throw@task_manager@tcltasks@hdi@@SAHPEBD0_N@Z() + 0x254 bytes(s)
0x00007FFD045F42F6 (0x00000060F9AFEE40 0x0000000075A0AC7D 0x685F6F6461766976 0x0000000000000001), ?retrieve_except_msg_instance@task_manager@tcltasks@hdi@@SA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z() + 0x4C6 bytes(s)
0x00000000759411FC (0x000001F600000000 0x0000006000000003 0x000001F62E34A180 0x0000000000000000), Tcl_ListMathFuncs() + 0x58C bytes(s)
0x0000000075941681 (0x000001F62FEF2D70 0x0000000000000003 0x0000000000000002 0x00000060F9AFEEB9), Tcl_EvalObjv() + 0x51 bytes(s)
0x0000000075942C37 (0x000001F62FEF76D0 0x00000060F9AFEEB9 0x000001F62FEF76D0 0x0000000000000001), TclEvalObjEx() + 0x157 bytes(s)
0x0000000075942ACD (0x000001F62FE4D570 0x0000000000000000 0x00000060F9AFEF48 0x00000060F9AFEF01), Tcl_EvalObjEx() + 0x1D bytes(s)
0x00007FFD3A96299F (0x000001F62FE4D570 0x000001F62FE4DC90 0x000001F62FE4D570 0x0000000000000000), Java_ui_frmwork_commandi_undo() + 0x2259F bytes(s)
0x00007FFD3A962B3E (0x00007FFD3ACFF318 0x0000000000000000 0x000001F62FE4D570 0x0000000000000000), Java_ui_frmwork_commandi_undo() + 0x2273E bytes(s)
0x00007FFD3A9586EA (0x000001F62FE067F0 0x000001F600000000 0x000001F62E35CD20 0x000000000000000B), Java_ui_frmwork_commandi_undo() + 0x182EA bytes(s)
0x00007FFD3A958AB7 (0x000001F62FE184F0 0x000000000000021B 0x00000060F9AFF628 0x0000000000000060), Java_ui_frmwork_commandi_undo() + 0x186B7 bytes(s)
0x00007FFD045F14E4 (0x000001F62FEF76D0 0x00000060F9AFF628 0xFFFFFFFFFFFFFFFF 0x5F736B7361746E6F), ?eval_in_tcl_throw@task_manager@tcltasks@hdi@@SAHPEBD0_N@Z() + 0x254 bytes(s)
0x00007FFD045F42F6 (0x412F6172756B6173 0x522F617461447070 0x582F676E696D616F 0x69562F786E696C69), ?retrieve_except_msg_instance@task_manager@tcltasks@hdi@@SA_NAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z() + 0x4C6 bytes(s)
0x00000000759411FC (0x000001F600000000 0x000001F60000000B 0x000001F62E335C30 0x0000000000000000), Tcl_ListMathFuncs() + 0x58C bytes(s)
0x0000000075941681 (0x000001F62FEF3970 0x000000000000000B 0x0000000000000001 0x00000060F9AFFA39), Tcl_EvalObjv() + 0x51 bytes(s)
0x0000000075942C37 (0x000000000000000B 0x00000060F9AFFA39 0x000000000000000B 0x000001F62FEF76D0), TclEvalObjEx() + 0x157 bytes(s)
0x0000000075942ACD (0x0000000000000050 0x0000000000000000 0x0000000000000050 0x000001F62FEF0100), Tcl_EvalObjEx() + 0x1D bytes(s)
0x00007FFD887146AA (0x0000000000000000 0x000001F62FEF2E30 0x000001F62FEF76D0 0x0000000000000000)
0x00000000759B6BE1 (0x000001F62E2FD130 0x00007FFD8BD32CE0 0x00007FFD8C1D7A98 0x0000000000000000), Tcl_Main() + 0x471 bytes(s)
0x00007FFD0461F369 (0x000001F62E2FD130 0x0000000000000000 0x0000000000000000 0x0000000000000000), ?join@HCTNativeThread@@QEAAXXZ() + 0x39 bytes(s)
0x00007FFD8C13E3FE (0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000), _o_strcat_s() + 0x5E bytes(s)
0x00007FFD8EF94034 (0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000), BaseThreadInitThunk() + 0x14 bytes(s)
0x00007FFD8FA63691 (0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000), RtlUserThreadStart() + 0x21 bytes(s)
Abnormal program termination (EXCEPTION_ACCESS_VIOLATION)
Please check 'C:/Users/izumi.asakura/AppData/Roaming/Xilinx/Vivado/hs_err_pid10712.log' for details
Finished C synthesis.

I found that the cosim error is because 2bit byte write enable signal for BRAM out_buf is incorrectly truncated to 1bit (Actually, it worked correctly when I fixed the generated verilog code manually.)

Is the fix in 2019.1 intended one? I'm afraid that if the fix is not intended then the bug may be reproduced in the futere version.

 

Thank you in advance.

0 Kudos
2 Replies
Moderator
Moderator
345 Views
Registered: ‎05-31-2017

Re: Partially updating bits in BRAM elements from pipeline loops causes incorrect results when co-simulation in Vivado HLS 2018.2

HI @izumi.asakura ,

Generally, latest version of the tools would have bug fixes due to which the crash would not have occured in HLS 2019.1.

Are you seeing the cosim issue in HLS 2019.1, to overcome which you are editing the generated verilog code ?

0 Kudos
Moderator
Moderator
297 Views
Registered: ‎11-21-2018

Re: Partially updating bits in BRAM elements from pipeline loops causes incorrect results when co-simulation in Vivado HLS 2018.2

Hi @izumi.asakura 

 

Could you update us on your progress with this? 

If your problem is fixed, could you share your solution? 

 

Regards, 

Aoife
Product Application Engineer - Xilinx Technical Support EMEA
**~ Don't forget to reply, give kudos, and accept as solution.~**
0 Kudos