std_ulogic isn't recommended, unless you're sure that only one source drives your signal
if not, then you must use std_logic...since it's a resolved type..which means that it has a function that solves the "quarrel" between the values of different driving signals and gives you a final signal value (no need to make your own resolution function)