semi func