Could be my lack of experience with VHDL but I noticed the following possible issues with dac_dsm3_top.vhd
16/15 is hard coded in a couple places instead of using nbits and nbits is not defaulted to anything in the dac_dsm3_top generic definition
The dac_dsm3_1 port map may be incorrect:
Should: dout => dout, be: dout => dac_dout,
Extremely useful core though - works great