2015-01-15 1114 views

回答

2

您可以使用最近已建立SystemVerilog的工具庫之一。

ClueLib

svlib

或者,您也可以通過比較單個字符用普通的SystemVerilog做到這一點:

function automatic string search_replace(string original, string old, string replacement); 
    // First find the index of the old string 
    int start_index = 0; 
    int original_index = 0; 
    int replace_index = 0; 
    bit found = 0; 

    while(1) begin 
     if (original[original_index] == old[replace_index]) begin 
     if (replace_index == 0) begin 
      start_index = original_index; 
     end 
     replace_index++; 
     original_index++; 
     if (replace_index == old.len()) begin 
      found = 1; 
      break; 
     end 
     end else if (replace_index != 0) begin 
     replace_index = 0; 
     original_index = start_index + 1; 
     end else begin 
     original_index++; 
     end 
     if (original_index == original.len()) begin 
     // Not found 
     break; 
     end 
    end 

    if (!found) return original; 

    return { 
     original.substr(0, start_index-1), 
     replacement, 
     original.substr(start_index+old.len(), original.len()-1) 
    }; 

    endfunction 

SystemVerilog replace example on EDA Playground