le SystemC est un langage de description matériel(comme VHDL et Verilog) mais de plus haut niveau,il permet une modélisation de systèmes au niveau comportemental et il n'est pas un langage à part entière mais un ensemble de classes C++.c'est presque un mélange de VHDL et c++.
parcontre le HadelC est un langage de programmation haut niveau qui cible des hardware bas niveau(FPGA principalement),c'est comme programmer un microcontrôleur Arduino ou stm32 en utilisant le langage C.
le principe c'est qu'il faut faire la différence entre langage de programmation et langage de description.
concernant le codesign,c'est le développement séparé de la partie hard et la partie soft,et en suite le mélange de ces deux parties.
par exemple dans un système on peut programmer un DSP et un CPU en utilisant C ou C++(partie soft),et implémenter une GPIO,RAM et ROM sur une FPGA ou CPLD(partie hard),et ensuite faire la liaison des deux parties.mais c'est très très dur faire et ça nécessite une très grande connaissance en électronique analogique/numérique.