+++ title = "Input language specification" author = "Yann Herklotz" tags = [] categories = [] backlinks = ["1f3a", "1f1"] forwardlinks = ["1f3", "1f2a"] zettelid = "1f2" +++ The first reason a HLS tool might be seen as unreliable is because when coming from C, the behaviour of the input is often unspecified. This means that it can be defined by the compiler, resulting in different behaviour in different compilers. HLS tools take great advantage of this, to allow for hardware specific optimisations. In addition to that, HLS tools will define various different subsets of the language that will get compiled correctly. One example of this is that if a pointer is used multiple times it may not be valid anymore: > using pointers which are updated multiple times is not recommended. > HLS would optimize the redundant assignments. Please look at this > section in UG902. > > Using pointers which are accessed multiple times can introduce > unexpected behavior after synthesis. In the following example pointer > d~i~ is read four times and pointer d~o~ is written to twice: the > pointers perform multiple accesses. — nithink, Xilinx forum[^1] [^1]: