The process has a driver for that signal if any of its procedures makes
an assignment to the signal. The process drives the leftmost value,
which is 'U', until another value is given, but since you never call the
procedure that gives it a value, it stays at 'U'.
Fix: put an assignment in at the first line of the process:
SCL <= 'Z';
Regards,
Allan