Fixed format detection bug and adapted VCD loader to Arteris specifics

This commit is contained in:
2019-03-14 20:51:02 +01:00
parent a49842a119
commit b78d8bea45
2 changed files with 49 additions and 19 deletions

View File

@ -22,10 +22,12 @@ class VCDFileParser {
private HashMap<String, Integer> nameToNetMap = new HashMap<String, Integer>();
private long picoSecondsPerIncrement;
private boolean stripNetWidth;
private boolean replaceColon;
long currentTime;
public VCDFileParser(boolean stripNetWidth) {
this.stripNetWidth=stripNetWidth;
this.replaceColon=false;
}
public boolean load(InputStream is, IVCDDatabaseBuilder builder) {
@ -76,11 +78,17 @@ class VCDFileParser {
}
Integer net = nameToNetMap.get(id);
if (net == null) {
// We've never seen this net before
if (net == null) { // We've never seen this net before
int openBracket = netName.indexOf('[');
if(stripNetWidth){
int openBracket = netName.indexOf('[');
if (openBracket != -1) netName = netName.substring(0, openBracket);
openBracket = -1;
}
if(replaceColon) {
if (openBracket != -1) {
netName = netName.substring(0, openBracket).replaceAll(":", ".")+netName.substring(openBracket);
} else
netName=netName.replaceAll(":", ".");
}
nameToNetMap.put(id, traceBuilder.newNet(netName, -1, width));
} else {
@ -89,6 +97,17 @@ class VCDFileParser {
}
}
private void parseComment() throws Exception {
nextToken();
String s = tokenizer.sval;
nextToken();
while(!tokenizer.sval.equals("$end")){
s+=" "+tokenizer.sval;
nextToken();
}
replaceColon|=s.contains("ARTERIS Architecture");
}
private void parseTimescale() throws Exception {
nextToken();
String s = tokenizer.sval;
@ -132,6 +151,8 @@ class VCDFileParser {
parseUpscope();
else if (tokenizer.sval.equals("$timescale"))
parseTimescale();
else if (tokenizer.sval.equals("$comment"))
parseComment();
else if (tokenizer.sval.equals("$enddefinitions")) {
match("$end");
return false;