anchor.diff:  
     (** Constant from a string using verilog style constant formatting ie 32'd12 *)
     let constv (s:string) : Signal = 
  -    let slen, sval = match String.split [ '\'' ] s with [s0;s1] -> s0,s1 | _ -> failwith ("Invalid verilog style constant: " ^ s) in
  +    let slen, sval = match s.Split('\'') with [|s0;s1|] -> s0,s1 | _ -> failwith ("Invalid verilog style constant: " ^ s) in
       let len = int slen in
       let ctrl = sval.[0] in
  -    let sval = String.sub sval 1 (String.length sval - 1) in
  +    let sval = sval.Substring(1, (String.length sval - 1)) in
       match ctrl with
       | 'd' -> constd len sval
       | 'x' | 'h' -> consthu len sval
  
positive.code:     in
  
      (* now wire up the signals *)
      iter2 (fun code target ->
        let code, opt = run_optimiser code in 
        let dependants = unique_signal_list (dependants_list [] code) in
        let behave_signal = { su = Signal_behave(signal_incr_uid(), width target, code, dependants) } in
  
negative.code:     | 'b' -> 
        let slen = String.length sval in
        if slen < len then constb ((String('0', (len-slen))) ^ sval)
        else if slen > len then constb (sval.Substring((slen-len), len))
        else constb sval
      | 'B' ->
        let slen = String.length sval in
        if slen < len then constb ((String(sval.[0], (len-slen))) ^ sval)
        else if slen > len then constb (sval.Substring((slen-len), len))
        else constb sval
      | _ -> failwith ("Invalid verilog style constant" ^ s ^ " - bad control character")
  
  