When you say syntax check do you mean compilation?
I believe your intention is to have a slice of the control_field. Lets say if control_field is a vector [31:0] then you may want to assign only the lower byte to frame_length? i.e. frame_length <= control_field[7:0]
If that is the case then I guess you have the concept a bit muddled up.
Type frame_length_range will help you define variables or signals of that type and it can't be used to generate a size as far as I can tell.
Let me see if I can find an example to do this generic slicing.